diff --git a/ncurses.plist b/ncurses.plist new file mode 100644 index 0000000..8070360 --- /dev/null +++ b/ncurses.plist @@ -0,0 +1,26 @@ + + + + + OpenSourceProject + ncurses + OpenSourceVersion + 5.5 + OpenSourceWebsiteURL + + OpenSourceURL + ftp://invisible-island.net/ncurses/ncurses-5.7.tar.gz + OpenSourceSHA1 + 8233ee56ed84ae05421e4e6d6db6c1fe72ee6797 + OpenSourceImportDate + 2008-12-15 + OpenSourceModifications + + + + OpenSourceLicense + MIT + OpenSourceLicenseFile + ncurses.txt + + diff --git a/ncurses.txt b/ncurses.txt new file mode 100644 index 0000000..fb27d27 --- /dev/null +++ b/ncurses.txt @@ -0,0 +1,27 @@ +############################################################################## +# Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## diff --git a/ncurses.xcodeproj/project.pbxproj b/ncurses.xcodeproj/project.pbxproj new file mode 100644 index 0000000..57ac3ae --- /dev/null +++ b/ncurses.xcodeproj/project.pbxproj @@ -0,0 +1,4428 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXAggregateTarget section */ + 4C29FA601020DDBD001D8279 /* libraries */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4C29FA631020DDDB001D8279 /* Build configuration list for PBXAggregateTarget "libraries" */; + buildPhases = ( + 4CC76FDD1027BDCB00C87ED0 /* link_libs.sh */, + 4CC76FD11027B24900C87ED0 /* install_headers.sh */, + 4CC76F2E102762BC00C87ED0 /* install_man_misc.sh */, + 4CC76FBF1027A79600C87ED0 /* run_tic.sh */, + ); + dependencies = ( + 4CC76F071027517A00C87ED0 /* PBXTargetDependency */, + 4C00663D103F5670008F286F /* PBXTargetDependency */, + 4C00663F103F5676008F286F /* PBXTargetDependency */, + 4C00663B103F566D008F286F /* PBXTargetDependency */, + ); + name = libraries; + productName = programs; + }; + 4C5C3FD7102CD13500B4B066 /* native_make_keys */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4C5C3FD9102CD15300B4B066 /* Build configuration list for PBXAggregateTarget "native_make_keys" */; + buildPhases = ( + 4C5C3FD6102CD13500B4B066 /* Run Script */, + ); + dependencies = ( + ); + name = native_make_keys; + productName = "native executables"; + }; + FC00FC7314E9FB09000AD1B3 /* All */ = { + isa = PBXAggregateTarget; + buildConfigurationList = FC00FC7414E9FB09000AD1B3 /* Build configuration list for PBXAggregateTarget "All" */; + buildPhases = ( + ); + dependencies = ( + FC00FC7A14E9FB27000AD1B3 /* PBXTargetDependency */, + FC00FC7C14E9FB27000AD1B3 /* PBXTargetDependency */, + ); + name = All; + productName = All; + }; + FC00FC7614E9FB13000AD1B3 /* executables */ = { + isa = PBXAggregateTarget; + buildConfigurationList = FC00FC7714E9FB13000AD1B3 /* Build configuration list for PBXAggregateTarget "executables" */; + buildPhases = ( + FC00FC8914E9FB80000AD1B3 /* fix_bin.sh */, + ); + dependencies = ( + FC00FC7E14E9FB36000AD1B3 /* PBXTargetDependency */, + FC00FC8014E9FB36000AD1B3 /* PBXTargetDependency */, + FC00FC8214E9FB36000AD1B3 /* PBXTargetDependency */, + FC00FC8414E9FB36000AD1B3 /* PBXTargetDependency */, + FC00FC8614E9FB36000AD1B3 /* PBXTargetDependency */, + FC00FC8814E9FB36000AD1B3 /* PBXTargetDependency */, + ); + name = executables; + productName = executables; + }; + FCD5D3F414E4F61700752D20 /* Bootstrap Sources */ = { + isa = PBXAggregateTarget; + buildConfigurationList = FCD5D3F514E4F61700752D20 /* Build configuration list for PBXAggregateTarget "Bootstrap Sources" */; + buildPhases = ( + FCD5D44B14E5DB3E00752D20 /* ShellScript */, + ); + dependencies = ( + ); + name = "Bootstrap Sources"; + productName = "Derived Sources"; + }; + FCD5D43214E5C99D00752D20 /* Derived Sources */ = { + isa = PBXAggregateTarget; + buildConfigurationList = FCD5D43314E5C99D00752D20 /* Build configuration list for PBXAggregateTarget "Derived Sources" */; + buildPhases = ( + FCD5D43714E5CA1F00752D20 /* Run Script */, + ); + dependencies = ( + FCD5D43D14E5CB2F00752D20 /* PBXTargetDependency */, + FCD5D44A14E5D15000752D20 /* PBXTargetDependency */, + FCD5D43614E5CA0700752D20 /* PBXTargetDependency */, + ); + name = "Derived Sources"; + productName = "Derived Sources 2"; + }; + FCD5D44214E5CC4F00752D20 /* native_make_hash */ = { + isa = PBXAggregateTarget; + buildConfigurationList = FCD5D44314E5CC4F00752D20 /* Build configuration list for PBXAggregateTarget "native_make_hash" */; + buildPhases = ( + FCD5D44514E5CC5500752D20 /* ShellScript */, + ); + dependencies = ( + ); + name = native_make_hash; + productName = native_make_hash; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 3FB35B98206F82620097BE22 /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 3FB35B9A206F82710097BE22 /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 3FB35B9C206F82950097BE22 /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 3FB35B9E206F829F0097BE22 /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 3FB35BA0206F82A70097BE22 /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 3FB35BA2206F82B10097BE22 /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 4C00665A103F5982008F286F /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 4C00665B103F598D008F286F /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 4C00665C103F59B5008F286F /* libncurses.5.4.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; }; + 4C006679103F6CA7008F286F /* lib_trace.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0896D0FFC2BB200CE4372 /* lib_trace.c */; }; + 4C29FA6E1020E6CC001D8279 /* clear.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089B30FFC2BB200CE4372 /* clear.c */; }; + 4C29FABA1020EC80001D8279 /* tic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089BC0FFC2BB200CE4372 /* tic.c */; }; + 4C29FABE1020EC98001D8279 /* tput.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089BE0FFC2BB200CE4372 /* tput.c */; }; + 4C29FAC31020ECAB001D8279 /* tset.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089BF0FFC2BB200CE4372 /* tset.c */; }; + 4C29FAC81020ECBD001D8279 /* toe.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089BD0FFC2BB200CE4372 /* toe.c */; }; + 4C29FACD1020ECE8001D8279 /* dump_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089B50FFC2BB200CE4372 /* dump_entry.c */; }; + 4C29FBD7102236CB001D8279 /* comp_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893D0FFC2BB200CE4372 /* comp_hash.c */; }; + 4C29FC33102257C6001D8279 /* access.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089360FFC2BB200CE4372 /* access.c */; }; + 4C29FC34102257C6001D8279 /* add_tries.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089370FFC2BB200CE4372 /* add_tries.c */; }; + 4C29FC35102257C6001D8279 /* alloc_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089380FFC2BB200CE4372 /* alloc_entry.c */; }; + 4C29FC36102257C6001D8279 /* alloc_ttype.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089390FFC2BB200CE4372 /* alloc_ttype.c */; }; + 4C29FC37102257C6001D8279 /* captoinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893A0FFC2BB200CE4372 /* captoinfo.c */; }; + 4C29FC38102257C6001D8279 /* charable.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089850FFC2BB200CE4372 /* charable.c */; }; + 4C29FC39102257C6001D8279 /* codes.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FB5010211A0B001D8279 /* codes.c */; }; + 4C29FC3A102257C6001D8279 /* comp_captab.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FBE710223A64001D8279 /* comp_captab.c */; }; + 4C29FC3B102257C6001D8279 /* comp_error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893B0FFC2BB200CE4372 /* comp_error.c */; }; + 4C29FC3C102257C6001D8279 /* comp_expand.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893C0FFC2BB200CE4372 /* comp_expand.c */; }; + 4C29FC3D102257C6001D8279 /* comp_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893D0FFC2BB200CE4372 /* comp_hash.c */; }; + 4C29FC3E102257C6001D8279 /* comp_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893E0FFC2BB200CE4372 /* comp_parse.c */; }; + 4C29FC3F102257C6001D8279 /* comp_scan.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893F0FFC2BB200CE4372 /* comp_scan.c */; }; + 4C29FC40102257C6001D8279 /* db_iterator.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089400FFC2BB200CE4372 /* db_iterator.c */; }; + 4C29FC41102257C6001D8279 /* define_key.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D20FFC2BB100CE4372 /* define_key.c */; }; + 4C29FC42102257C6001D8279 /* doalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089410FFC2BB200CE4372 /* doalloc.c */; }; + 4C29FC43102257C6001D8279 /* entries.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089420FFC2BB200CE4372 /* entries.c */; }; + 4C29FC45102257C6001D8279 /* fallback.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FBF4102247F1001D8279 /* fallback.c */; }; + 4C29FC59102257C6001D8279 /* free_ttype.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089430FFC2BB200CE4372 /* free_ttype.c */; }; + 4C29FC6E102257C6001D8279 /* getenv_num.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089440FFC2BB200CE4372 /* getenv_num.c */; }; + 4C29FC6F102257C6001D8279 /* hardscroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0897A0FFC2BB200CE4372 /* hardscroll.c */; }; + 4C29FC71102257C6001D8279 /* hashmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0897B0FFC2BB200CE4372 /* hashmap.c */; }; + 4C29FC72102257C6001D8279 /* home_terminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089460FFC2BB200CE4372 /* home_terminfo.c */; }; + 4C29FC73102257C6001D8279 /* init_keytry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089470FFC2BB200CE4372 /* init_keytry.c */; }; + 4C29FC74102257C6001D8279 /* key_defined.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D30FFC2BB100CE4372 /* key_defined.c */; }; + 4C29FC75102257C6001D8279 /* keybound.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D40FFC2BB100CE4372 /* keybound.c */; }; + 4C29FC76102257C6001D8279 /* keyok.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D50FFC2BB100CE4372 /* keyok.c */; }; + 4C29FC77102257C6001D8279 /* legacy_coding.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D60FFC2BB100CE4372 /* legacy_coding.c */; }; + 4C29FC78102257C6001D8279 /* lib_acs.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089480FFC2BB200CE4372 /* lib_acs.c */; }; + 4C29FC79102257C6001D8279 /* lib_add_wch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089860FFC2BB200CE4372 /* lib_add_wch.c */; }; + 4C29FC7A102257C6001D8279 /* lib_addch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D70FFC2BB100CE4372 /* lib_addch.c */; }; + 4C29FC7B102257C6001D8279 /* lib_addstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D80FFC2BB100CE4372 /* lib_addstr.c */; }; + 4C29FC7C102257C6001D8279 /* lib_baudrate.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089490FFC2BB200CE4372 /* lib_baudrate.c */; }; + 4C29FC7D102257C6001D8279 /* lib_beep.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D90FFC2BB100CE4372 /* lib_beep.c */; }; + 4C29FC7E102257C6001D8279 /* lib_bkgd.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088DA0FFC2BB100CE4372 /* lib_bkgd.c */; }; + 4C29FC7F102257C6001D8279 /* lib_box.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088DB0FFC2BB100CE4372 /* lib_box.c */; }; + 4C29FC80102257C6001D8279 /* lib_box_set.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089870FFC2BB200CE4372 /* lib_box_set.c */; }; + 4C29FC81102257C6001D8279 /* lib_cchar.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089880FFC2BB200CE4372 /* lib_cchar.c */; }; + 4C29FC82102257C6001D8279 /* lib_chgat.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088DC0FFC2BB100CE4372 /* lib_chgat.c */; }; + 4C29FC83102257C6001D8279 /* lib_clear.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088DD0FFC2BB100CE4372 /* lib_clear.c */; }; + 4C29FC84102257C6001D8279 /* lib_clearok.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088DE0FFC2BB100CE4372 /* lib_clearok.c */; }; + 4C29FC85102257C6001D8279 /* lib_clrbot.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088DF0FFC2BB100CE4372 /* lib_clrbot.c */; }; + 4C29FC86102257C6001D8279 /* lib_clreol.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E00FFC2BB100CE4372 /* lib_clreol.c */; }; + 4C29FC87102257C6001D8279 /* lib_color.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E10FFC2BB100CE4372 /* lib_color.c */; }; + 4C29FC88102257C6001D8279 /* lib_colorset.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E20FFC2BB100CE4372 /* lib_colorset.c */; }; + 4C29FC89102257C6001D8279 /* lib_cur_term.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894A0FFC2BB200CE4372 /* lib_cur_term.c */; }; + 4C29FC8A102257C6001D8279 /* lib_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894B0FFC2BB200CE4372 /* lib_data.c */; }; + 4C29FC8B102257C6001D8279 /* lib_delch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E30FFC2BB100CE4372 /* lib_delch.c */; }; + 4C29FC8C102257C6001D8279 /* lib_delwin.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E40FFC2BB100CE4372 /* lib_delwin.c */; }; + 4C29FC8D102257C6001D8279 /* lib_dft_fgbg.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E50FFC2BB100CE4372 /* lib_dft_fgbg.c */; }; + 4C29FC8E102257C6001D8279 /* lib_echo.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E60FFC2BB100CE4372 /* lib_echo.c */; }; + 4C29FC8F102257C6001D8279 /* lib_endwin.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E70FFC2BB100CE4372 /* lib_endwin.c */; }; + 4C29FC90102257C6001D8279 /* lib_erase.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E80FFC2BB100CE4372 /* lib_erase.c */; }; + 4C29FC91102257C6001D8279 /* lib_erasewchar.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089890FFC2BB200CE4372 /* lib_erasewchar.c */; }; + 4C29FC92102257C6001D8279 /* lib_flash.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088E90FFC2BB100CE4372 /* lib_flash.c */; }; + 4C29FC93102257C6001D8279 /* lib_freeall.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088EA0FFC2BB100CE4372 /* lib_freeall.c */; }; + 4C29FC94102257C6001D8279 /* lib_get_wch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0898A0FFC2BB200CE4372 /* lib_get_wch.c */; }; + 4C29FC95102257C6001D8279 /* lib_get_wstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0898B0FFC2BB200CE4372 /* lib_get_wstr.c */; }; + 4C29FC96102257C6001D8279 /* lib_getch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088EB0FFC2BB100CE4372 /* lib_getch.c */; }; + 4C29FC97102257C6001D8279 /* lib_getstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088EC0FFC2BB100CE4372 /* lib_getstr.c */; }; + 4C29FC98102257C6001D8279 /* lib_has_cap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894C0FFC2BB200CE4372 /* lib_has_cap.c */; }; + 4C29FC99102257C6001D8279 /* lib_hline.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088ED0FFC2BB100CE4372 /* lib_hline.c */; }; + 4C29FC9A102257C6001D8279 /* lib_hline_set.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0898C0FFC2BB200CE4372 /* lib_hline_set.c */; }; + 4C29FC9B102257C6001D8279 /* lib_immedok.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088EE0FFC2BB100CE4372 /* lib_immedok.c */; }; + 4C29FC9C102257C6001D8279 /* lib_in_wch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0898D0FFC2BB200CE4372 /* lib_in_wch.c */; }; + 4C29FC9D102257C6001D8279 /* lib_in_wchnstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0898E0FFC2BB200CE4372 /* lib_in_wchnstr.c */; }; + 4C29FC9E102257C6001D8279 /* lib_inchstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088EF0FFC2BB100CE4372 /* lib_inchstr.c */; }; + 4C29FC9F102257C6001D8279 /* lib_initscr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F00FFC2BB100CE4372 /* lib_initscr.c */; }; + 4C29FCA0102257C6001D8279 /* lib_ins_wch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0898F0FFC2BB200CE4372 /* lib_ins_wch.c */; }; + 4C29FCA1102257C6001D8279 /* lib_insch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F10FFC2BB100CE4372 /* lib_insch.c */; }; + 4C29FCA2102257C6001D8279 /* lib_insdel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F20FFC2BB100CE4372 /* lib_insdel.c */; }; + 4C29FCA3102257C6001D8279 /* lib_insnstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F30FFC2BB100CE4372 /* lib_insnstr.c */; }; + 4C29FCA4102257C6001D8279 /* lib_instr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F40FFC2BB100CE4372 /* lib_instr.c */; }; + 4C29FCA5102257C6001D8279 /* lib_inwstr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089900FFC2BB200CE4372 /* lib_inwstr.c */; }; + 4C29FCA6102257C6001D8279 /* lib_isendwin.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F50FFC2BB100CE4372 /* lib_isendwin.c */; }; + 4C29FCA7102257C6001D8279 /* lib_kernel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894D0FFC2BB200CE4372 /* lib_kernel.c */; }; + 4C29FCA8102257C6001D8279 /* lib_key_name.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089910FFC2BB200CE4372 /* lib_key_name.c */; }; + 4C29FCA9102257C6001D8279 /* lib_leaveok.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F60FFC2BB100CE4372 /* lib_leaveok.c */; }; + 4C29FCAA102257C6001D8279 /* lib_longname.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894E0FFC2BB200CE4372 /* lib_longname.c */; }; + 4C29FCAB102257C6001D8279 /* lib_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F70FFC2BB100CE4372 /* lib_mouse.c */; }; + 4C29FCAC102257C6001D8279 /* lib_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F80FFC2BB100CE4372 /* lib_move.c */; }; + 4C29FCAD102257C6001D8279 /* lib_mvcur.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0897C0FFC2BB200CE4372 /* lib_mvcur.c */; }; + 4C29FCAE102257C6001D8279 /* lib_mvwin.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088F90FFC2BB100CE4372 /* lib_mvwin.c */; }; + 4C29FCAF102257C6001D8279 /* lib_napms.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894F0FFC2BB200CE4372 /* lib_napms.c */; }; + 4C29FCB0102257C6001D8279 /* lib_newterm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088FA0FFC2BB100CE4372 /* lib_newterm.c */; }; + 4C29FCB1102257C6001D8279 /* lib_newwin.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088FB0FFC2BB100CE4372 /* lib_newwin.c */; }; + 4C29FCB2102257C6001D8279 /* lib_nl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088FC0FFC2BB100CE4372 /* lib_nl.c */; }; + 4C29FCB3102257C6001D8279 /* lib_options.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089500FFC2BB200CE4372 /* lib_options.c */; }; + 4C29FCB4102257C6001D8279 /* lib_overlay.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088FD0FFC2BB100CE4372 /* lib_overlay.c */; }; + 4C29FCB5102257C6001D8279 /* lib_pad.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088FE0FFC2BB100CE4372 /* lib_pad.c */; }; + 4C29FCB6102257C6001D8279 /* lib_pecho_wchar.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089920FFC2BB200CE4372 /* lib_pecho_wchar.c */; }; + 4C29FCB7102257C6001D8279 /* lib_print.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089510FFC2BB200CE4372 /* lib_print.c */; }; + 4C29FCB8102257C6001D8279 /* lib_printw.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088FF0FFC2BB100CE4372 /* lib_printw.c */; }; + 4C29FCB9102257C6001D8279 /* lib_raw.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089520FFC2BB200CE4372 /* lib_raw.c */; }; + 4C29FCBA102257C6001D8279 /* lib_redrawln.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089000FFC2BB100CE4372 /* lib_redrawln.c */; }; + 4C29FCBB102257C6001D8279 /* lib_refresh.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089010FFC2BB100CE4372 /* lib_refresh.c */; }; + 4C29FCBC102257C6001D8279 /* lib_restart.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089020FFC2BB100CE4372 /* lib_restart.c */; }; + 4C29FCBD102257C6001D8279 /* lib_scanw.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089030FFC2BB100CE4372 /* lib_scanw.c */; }; + 4C29FCBE102257C6001D8279 /* lib_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089040FFC2BB100CE4372 /* lib_screen.c */; }; + 4C29FCBF102257C6001D8279 /* lib_scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089050FFC2BB100CE4372 /* lib_scroll.c */; }; + 4C29FCC0102257C6001D8279 /* lib_scrollok.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089060FFC2BB100CE4372 /* lib_scrollok.c */; }; + 4C29FCC1102257C6001D8279 /* lib_scrreg.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089070FFC2BB100CE4372 /* lib_scrreg.c */; }; + 4C29FCC2102257C6001D8279 /* lib_set_term.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089080FFC2BB100CE4372 /* lib_set_term.c */; }; + 4C29FCC3102257C6001D8279 /* lib_setup.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089530FFC2BB200CE4372 /* lib_setup.c */; }; + 4C29FCC4102257C6001D8279 /* lib_slk.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089090FFC2BB100CE4372 /* lib_slk.c */; }; + 4C29FCC5102257C6001D8279 /* lib_slk_wset.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089930FFC2BB200CE4372 /* lib_slk_wset.c */; }; + 4C29FCC6102257C6001D8279 /* lib_slkatr_set.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0890A0FFC2BB100CE4372 /* lib_slkatr_set.c */; }; + 4C29FCC7102257C6001D8279 /* lib_slkatrof.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0890B0FFC2BB100CE4372 /* lib_slkatrof.c */; }; + 4C29FCC8102257C6001D8279 /* lib_slkatron.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0890C0FFC2BB100CE4372 /* lib_slkatron.c */; }; + 4C29FCC9102257C6001D8279 /* lib_slkatrset.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0890D0FFC2BB100CE4372 /* lib_slkatrset.c */; }; + 4C29FCCA102257C6001D8279 /* lib_slkattr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0890E0FFC2BB100CE4372 /* lib_slkattr.c */; }; + 4C29FCCB102257C6001D8279 /* lib_slkclear.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0890F0FFC2BB100CE4372 /* lib_slkclear.c */; }; + 4C29FCCC102257C6001D8279 /* lib_slkcolor.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089100FFC2BB100CE4372 /* lib_slkcolor.c */; }; + 4C29FCCD102257C6001D8279 /* lib_slkinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089110FFC2BB100CE4372 /* lib_slkinit.c */; }; + 4C29FCCE102257C6001D8279 /* lib_slklab.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089120FFC2BB100CE4372 /* lib_slklab.c */; }; + 4C29FCCF102257C6001D8279 /* lib_slkrefr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089130FFC2BB100CE4372 /* lib_slkrefr.c */; }; + 4C29FCD0102257C6001D8279 /* lib_slkset.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089140FFC2BB100CE4372 /* lib_slkset.c */; }; + 4C29FCD1102257C6001D8279 /* lib_slktouch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089150FFC2BB100CE4372 /* lib_slktouch.c */; }; + 4C29FCD2102257C6001D8279 /* lib_termcap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089540FFC2BB200CE4372 /* lib_termcap.c */; }; + 4C29FCD3102257C6001D8279 /* lib_termname.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089550FFC2BB200CE4372 /* lib_termname.c */; }; + 4C29FCD4102257C6001D8279 /* lib_tgoto.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089560FFC2BB200CE4372 /* lib_tgoto.c */; }; + 4C29FCD5102257C6001D8279 /* lib_ti.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089570FFC2BB200CE4372 /* lib_ti.c */; }; + 4C29FCD6102257C6001D8279 /* lib_touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089160FFC2BB100CE4372 /* lib_touch.c */; }; + 4C29FCD7102257C6001D8279 /* lib_tparm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089580FFC2BB200CE4372 /* lib_tparm.c */; }; + 4C29FCD8102257C6001D8279 /* lib_tputs.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089590FFC2BB200CE4372 /* lib_tputs.c */; }; + 4C29FCDA102257C6001D8279 /* lib_tstp.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0897D0FFC2BB200CE4372 /* lib_tstp.c */; }; + 4C29FCDB102257C6001D8279 /* lib_ttyflags.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0895A0FFC2BB200CE4372 /* lib_ttyflags.c */; }; + 4C29FCDC102257C6001D8279 /* lib_twait.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0897E0FFC2BB200CE4372 /* lib_twait.c */; }; + 4C29FCDD102257C6001D8279 /* lib_unget_wch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089940FFC2BB200CE4372 /* lib_unget_wch.c */; }; + 4C29FCDE102257C6001D8279 /* lib_ungetch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089170FFC2BB100CE4372 /* lib_ungetch.c */; }; + 4C29FCDF102257C6001D8279 /* lib_vid_attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089950FFC2BB200CE4372 /* lib_vid_attr.c */; }; + 4C29FCE0102257C6001D8279 /* lib_vidattr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0897F0FFC2BB200CE4372 /* lib_vidattr.c */; }; + 4C29FCE1102257C6001D8279 /* lib_vline.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089180FFC2BB100CE4372 /* lib_vline.c */; }; + 4C29FCE2102257C6001D8279 /* lib_vline_set.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089960FFC2BB200CE4372 /* lib_vline_set.c */; }; + 4C29FCE3102257C6001D8279 /* lib_wacs.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089970FFC2BB200CE4372 /* lib_wacs.c */; }; + 4C29FCE4102257C6001D8279 /* lib_wattroff.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089190FFC2BB100CE4372 /* lib_wattroff.c */; }; + 4C29FCE5102257C6001D8279 /* lib_wattron.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0891A0FFC2BB100CE4372 /* lib_wattron.c */; }; + 4C29FCE6102257C6001D8279 /* lib_winch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0891B0FFC2BB100CE4372 /* lib_winch.c */; }; + 4C29FCE7102257C6001D8279 /* lib_window.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0891C0FFC2BB100CE4372 /* lib_window.c */; }; + 4C29FCE8102257C6001D8279 /* lib_wunctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089980FFC2BB200CE4372 /* lib_wunctrl.c */; }; + 4C29FD05102257C7001D8279 /* name_match.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089620FFC2BB200CE4372 /* name_match.c */; }; + 4C29FD06102257C7001D8279 /* names.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C609E4E101652A300971540 /* names.c */; }; + 4C29FD07102257C7001D8279 /* nc_panel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089210FFC2BB100CE4372 /* nc_panel.c */; }; + 4C29FD17102257C7001D8279 /* parse_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089630FFC2BB200CE4372 /* parse_entry.c */; }; + 4C29FD18102257C7001D8279 /* read_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089640FFC2BB200CE4372 /* read_entry.c */; }; + 4C29FD19102257C7001D8279 /* read_termcap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089650FFC2BB200CE4372 /* read_termcap.c */; }; + 4C29FD1A102257C7001D8279 /* resizeterm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089230FFC2BB100CE4372 /* resizeterm.c */; }; + 4C29FD1B102257C7001D8279 /* safe_sprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089240FFC2BB100CE4372 /* safe_sprintf.c */; }; + 4C29FD1C102257C7001D8279 /* setbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089670FFC2BB200CE4372 /* setbuf.c */; }; + 4C29FD1D102257C7001D8279 /* strings.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089680FFC2BB200CE4372 /* strings.c */; }; + 4C29FD1E102257C7001D8279 /* tries.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089260FFC2BB100CE4372 /* tries.c */; }; + 4C29FD1F102257C7001D8279 /* trim_sgr0.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089690FFC2BB200CE4372 /* trim_sgr0.c */; }; + 4C29FD20102257C7001D8279 /* tty_update.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089830FFC2BB200CE4372 /* tty_update.c */; }; + 4C29FD21102257C7001D8279 /* unctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FB271021124D001D8279 /* unctrl.c */; }; + 4C29FD22102257C7001D8279 /* use_screen.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0896A0FFC2BB200CE4372 /* use_screen.c */; }; + 4C29FD23102257C7001D8279 /* use_window.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089270FFC2BB100CE4372 /* use_window.c */; }; + 4C29FD25102257C7001D8279 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089280FFC2BB100CE4372 /* version.c */; }; + 4C29FD26102257C7001D8279 /* visbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089780FFC2BB200CE4372 /* visbuf.c */; }; + 4C29FD28102257C7001D8279 /* wresize.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0892A0FFC2BB100CE4372 /* wresize.c */; }; + 4C29FD29102257C7001D8279 /* write_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0896B0FFC2BB200CE4372 /* write_entry.c */; }; + 4C609E4110163BA900971540 /* make_keys.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0895B0FFC2BB200CE4372 /* make_keys.c */; }; + 4C9BE7B1104330A100182AEE /* expanded.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BE7AF104330A100182AEE /* expanded.c */; }; + 4CC76EEB10274EB700C87ED0 /* infocmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089B70FFC2BB200CE4372 /* infocmp.c */; }; + 4CC76EF410274F0A00C87ED0 /* dump_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089B50FFC2BB200CE4372 /* dump_entry.c */; }; + 4CCA0C13102386830073B661 /* lib_keyname.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA0C11102386830073B661 /* lib_keyname.c */; }; + 4CD04EE5103DE113001C87D5 /* lib_gen.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CD04EE4103DE113001C87D5 /* lib_gen.c */; }; + 4CD04F17103F1BEB001C87D5 /* fld_arg.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087AF0FFC2BAE00CE4372 /* fld_arg.c */; }; + 4CD04F18103F1BEB001C87D5 /* fld_attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B00FFC2BAE00CE4372 /* fld_attr.c */; }; + 4CD04F19103F1BEB001C87D5 /* fld_current.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B10FFC2BAE00CE4372 /* fld_current.c */; }; + 4CD04F1A103F1BEB001C87D5 /* fld_def.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B20FFC2BAE00CE4372 /* fld_def.c */; }; + 4CD04F1B103F1BEB001C87D5 /* fld_dup.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B30FFC2BAE00CE4372 /* fld_dup.c */; }; + 4CD04F1C103F1BEB001C87D5 /* fld_ftchoice.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B40FFC2BAE00CE4372 /* fld_ftchoice.c */; }; + 4CD04F1D103F1BEB001C87D5 /* fld_ftlink.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B50FFC2BAE00CE4372 /* fld_ftlink.c */; }; + 4CD04F1E103F1BEB001C87D5 /* fld_info.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B60FFC2BAE00CE4372 /* fld_info.c */; }; + 4CD04F1F103F1BEB001C87D5 /* fld_just.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B70FFC2BAE00CE4372 /* fld_just.c */; }; + 4CD04F20103F1BEB001C87D5 /* fld_link.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B80FFC2BAE00CE4372 /* fld_link.c */; }; + 4CD04F21103F1BEB001C87D5 /* fld_max.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087B90FFC2BAE00CE4372 /* fld_max.c */; }; + 4CD04F22103F1BEB001C87D5 /* fld_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087BA0FFC2BAE00CE4372 /* fld_move.c */; }; + 4CD04F23103F1BEB001C87D5 /* fld_newftyp.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087BB0FFC2BAE00CE4372 /* fld_newftyp.c */; }; + 4CD04F24103F1BEB001C87D5 /* fld_opts.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087BC0FFC2BAE00CE4372 /* fld_opts.c */; }; + 4CD04F25103F1BEB001C87D5 /* fld_pad.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087BD0FFC2BAE00CE4372 /* fld_pad.c */; }; + 4CD04F26103F1BEB001C87D5 /* fld_page.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087BE0FFC2BAE00CE4372 /* fld_page.c */; }; + 4CD04F27103F1BEB001C87D5 /* fld_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087BF0FFC2BAE00CE4372 /* fld_stat.c */; }; + 4CD04F28103F1BEB001C87D5 /* fld_type.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C00FFC2BAE00CE4372 /* fld_type.c */; }; + 4CD04F29103F1BEB001C87D5 /* fld_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C10FFC2BAE00CE4372 /* fld_user.c */; }; + 4CD04F2B103F1BEB001C87D5 /* frm_cursor.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C40FFC2BAE00CE4372 /* frm_cursor.c */; }; + 4CD04F2C103F1BEB001C87D5 /* frm_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C50FFC2BAE00CE4372 /* frm_data.c */; }; + 4CD04F2D103F1BEB001C87D5 /* frm_def.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C60FFC2BAE00CE4372 /* frm_def.c */; }; + 4CD04F2E103F1BEB001C87D5 /* frm_driver.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C70FFC2BAE00CE4372 /* frm_driver.c */; }; + 4CD04F2F103F1BEB001C87D5 /* frm_hook.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C80FFC2BAE00CE4372 /* frm_hook.c */; }; + 4CD04F30103F1BEB001C87D5 /* frm_opts.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087C90FFC2BAE00CE4372 /* frm_opts.c */; }; + 4CD04F31103F1BEB001C87D5 /* frm_page.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087CA0FFC2BAE00CE4372 /* frm_page.c */; }; + 4CD04F32103F1BEB001C87D5 /* frm_post.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087CB0FFC2BAE00CE4372 /* frm_post.c */; }; + 4CD04F33103F1BEB001C87D5 /* frm_req_name.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087CC0FFC2BAE00CE4372 /* frm_req_name.c */; }; + 4CD04F34103F1BEB001C87D5 /* frm_scale.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087CD0FFC2BAE00CE4372 /* frm_scale.c */; }; + 4CD04F35103F1BEB001C87D5 /* frm_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087CE0FFC2BAE00CE4372 /* frm_sub.c */; }; + 4CD04F36103F1BEB001C87D5 /* frm_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087CF0FFC2BAE00CE4372 /* frm_user.c */; }; + 4CD04F37103F1BEB001C87D5 /* frm_win.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D00FFC2BAE00CE4372 /* frm_win.c */; }; + 4CD04F38103F1BEB001C87D5 /* fty_alnum.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D10FFC2BAE00CE4372 /* fty_alnum.c */; }; + 4CD04F39103F1BEB001C87D5 /* fty_alpha.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D20FFC2BAE00CE4372 /* fty_alpha.c */; }; + 4CD04F3A103F1BEB001C87D5 /* fty_enum.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D30FFC2BAE00CE4372 /* fty_enum.c */; }; + 4CD04F3B103F1BEB001C87D5 /* fty_int.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D40FFC2BAE00CE4372 /* fty_int.c */; }; + 4CD04F3C103F1BEB001C87D5 /* fty_ipv4.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D50FFC2BAE00CE4372 /* fty_ipv4.c */; }; + 4CD04F3D103F1BEB001C87D5 /* fty_num.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D60FFC2BAE00CE4372 /* fty_num.c */; }; + 4CD04F3E103F1BEB001C87D5 /* fty_regex.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF087D70FFC2BAE00CE4372 /* fty_regex.c */; }; + 4CD050BE103F1BFD001C87D5 /* m_attribs.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0888B0FFC2BB100CE4372 /* m_attribs.c */; }; + 4CD050BF103F1BFD001C87D5 /* m_cursor.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0888C0FFC2BB100CE4372 /* m_cursor.c */; }; + 4CD050C0103F1BFD001C87D5 /* m_driver.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0888D0FFC2BB100CE4372 /* m_driver.c */; }; + 4CD050C1103F1BFD001C87D5 /* m_format.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0888E0FFC2BB100CE4372 /* m_format.c */; }; + 4CD050C2103F1BFD001C87D5 /* m_global.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0888F0FFC2BB100CE4372 /* m_global.c */; }; + 4CD050C3103F1BFD001C87D5 /* m_hook.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088900FFC2BB100CE4372 /* m_hook.c */; }; + 4CD050C4103F1BFD001C87D5 /* m_item_cur.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088910FFC2BB100CE4372 /* m_item_cur.c */; }; + 4CD050C5103F1BFD001C87D5 /* m_item_nam.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088920FFC2BB100CE4372 /* m_item_nam.c */; }; + 4CD050C6103F1BFD001C87D5 /* m_item_new.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088930FFC2BB100CE4372 /* m_item_new.c */; }; + 4CD050C7103F1BFD001C87D5 /* m_item_opt.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088940FFC2BB100CE4372 /* m_item_opt.c */; }; + 4CD050C8103F1BFD001C87D5 /* m_item_top.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088950FFC2BB100CE4372 /* m_item_top.c */; }; + 4CD050CA103F1BFD001C87D5 /* m_item_val.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088970FFC2BB100CE4372 /* m_item_val.c */; }; + 4CD050CB103F1BFD001C87D5 /* m_item_vis.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088980FFC2BB100CE4372 /* m_item_vis.c */; }; + 4CD050CC103F1BFD001C87D5 /* m_items.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088990FFC2BB100CE4372 /* m_items.c */; }; + 4CD050CD103F1BFD001C87D5 /* m_new.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0889A0FFC2BB100CE4372 /* m_new.c */; }; + 4CD050CE103F1BFD001C87D5 /* m_opts.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0889B0FFC2BB100CE4372 /* m_opts.c */; }; + 4CD050CF103F1BFD001C87D5 /* m_pad.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0889C0FFC2BB100CE4372 /* m_pad.c */; }; + 4CD050D0103F1BFD001C87D5 /* m_pattern.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0889D0FFC2BB100CE4372 /* m_pattern.c */; }; + 4CD050D1103F1BFD001C87D5 /* m_post.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0889E0FFC2BB100CE4372 /* m_post.c */; }; + 4CD050D2103F1BFD001C87D5 /* m_req_name.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0889F0FFC2BB100CE4372 /* m_req_name.c */; }; + 4CD050D3103F1BFD001C87D5 /* m_scale.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088A00FFC2BB100CE4372 /* m_scale.c */; }; + 4CD050D4103F1BFD001C87D5 /* m_spacing.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088A10FFC2BB100CE4372 /* m_spacing.c */; }; + 4CD050D5103F1BFD001C87D5 /* m_sub.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088A20FFC2BB100CE4372 /* m_sub.c */; }; + 4CD050D7103F1BFD001C87D5 /* m_userptr.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088A40FFC2BB100CE4372 /* m_userptr.c */; }; + 4CD050D8103F1BFD001C87D5 /* m_win.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088A50FFC2BB100CE4372 /* m_win.c */; }; + 4CD051E1103F1C12001C87D5 /* p_above.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A00FFC2BB200CE4372 /* p_above.c */; }; + 4CD051E2103F1C12001C87D5 /* p_below.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A10FFC2BB200CE4372 /* p_below.c */; }; + 4CD051E3103F1C12001C87D5 /* p_bottom.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A20FFC2BB200CE4372 /* p_bottom.c */; }; + 4CD051E4103F1C12001C87D5 /* p_delete.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A30FFC2BB200CE4372 /* p_delete.c */; }; + 4CD051E5103F1C12001C87D5 /* p_hidden.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A40FFC2BB200CE4372 /* p_hidden.c */; }; + 4CD051E6103F1C12001C87D5 /* p_hide.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A50FFC2BB200CE4372 /* p_hide.c */; }; + 4CD051E7103F1C12001C87D5 /* p_move.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A60FFC2BB200CE4372 /* p_move.c */; }; + 4CD051E8103F1C12001C87D5 /* p_new.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A70FFC2BB200CE4372 /* p_new.c */; }; + 4CD051E9103F1C12001C87D5 /* p_replace.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A80FFC2BB200CE4372 /* p_replace.c */; }; + 4CD051EA103F1C12001C87D5 /* p_show.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089A90FFC2BB200CE4372 /* p_show.c */; }; + 4CD051EB103F1C12001C87D5 /* p_top.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089AA0FFC2BB200CE4372 /* p_top.c */; }; + 4CD051EC103F1C12001C87D5 /* p_update.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089AB0FFC2BB200CE4372 /* p_update.c */; }; + 4CD051ED103F1C12001C87D5 /* p_user.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089AC0FFC2BB200CE4372 /* p_user.c */; }; + 4CD051EE103F1C12001C87D5 /* p_win.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089AD0FFC2BB200CE4372 /* p_win.c */; }; + 4CD051EF103F1C12001C87D5 /* panel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089AE0FFC2BB200CE4372 /* panel.c */; }; + 4CD0539B103F3E92001C87D5 /* m_item_use.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088960FFC2BB100CE4372 /* m_item_use.c */; }; + 4CE9808B1034D62D00BA0D88 /* tic.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089BC0FFC2BB200CE4372 /* tic.c */; }; + 4CE9808C1034D62D00BA0D88 /* dump_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089B50FFC2BB200CE4372 /* dump_entry.c */; }; + FC00FC3C14E9E5E9000AD1B3 /* comp_error.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893B0FFC2BB200CE4372 /* comp_error.c */; }; + FC00FC3F14E9E6CF000AD1B3 /* comp_scan.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893F0FFC2BB200CE4372 /* comp_scan.c */; }; + FC00FC4014E9E6F8000AD1B3 /* name_match.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089620FFC2BB200CE4372 /* name_match.c */; }; + FC00FC4114E9E711000AD1B3 /* access.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089360FFC2BB200CE4372 /* access.c */; }; + FC00FC4214E9E739000AD1B3 /* free_ttype.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089430FFC2BB200CE4372 /* free_ttype.c */; }; + FC00FC4314E9E755000AD1B3 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089280FFC2BB100CE4372 /* version.c */; }; + FC00FC4414E9E7B6000AD1B3 /* doalloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089410FFC2BB200CE4372 /* doalloc.c */; }; + FC00FC4514E9E80E000AD1B3 /* comp_hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893D0FFC2BB200CE4372 /* comp_hash.c */; }; + FC00FC4614E9E82D000AD1B3 /* comp_parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893E0FFC2BB200CE4372 /* comp_parse.c */; }; + FC00FC4714E9E84C000AD1B3 /* entries.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089420FFC2BB200CE4372 /* entries.c */; }; + FC00FC4814E9E865000AD1B3 /* lib_trace.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0896D0FFC2BB200CE4372 /* lib_trace.c */; }; + FC00FC4914E9E876000AD1B3 /* write_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0896B0FFC2BB200CE4372 /* write_entry.c */; }; + FC00FC4A14E9E8B4000AD1B3 /* visbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089780FFC2BB200CE4372 /* visbuf.c */; }; + FC00FC4B14E9E8C4000AD1B3 /* lib_termcap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089540FFC2BB200CE4372 /* lib_termcap.c */; }; + FC00FC4C14E9E8F8000AD1B3 /* init_keytry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089470FFC2BB200CE4372 /* init_keytry.c */; }; + FC00FC4D14E9E90C000AD1B3 /* alloc_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089380FFC2BB200CE4372 /* alloc_entry.c */; }; + FC00FC4E14E9E933000AD1B3 /* lib_tparm.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089580FFC2BB200CE4372 /* lib_tparm.c */; }; + FC00FC4F14E9E950000AD1B3 /* read_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089640FFC2BB200CE4372 /* read_entry.c */; }; + FC00FC5014E9E966000AD1B3 /* home_terminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089460FFC2BB200CE4372 /* home_terminfo.c */; }; + FC00FC5114E9EA0F000AD1B3 /* lib_cur_term.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894A0FFC2BB200CE4372 /* lib_cur_term.c */; }; + FC00FC5214E9EA2C000AD1B3 /* lib_data.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894B0FFC2BB200CE4372 /* lib_data.c */; }; + FC00FC5314E9EA44000AD1B3 /* lib_baudrate.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089490FFC2BB200CE4372 /* lib_baudrate.c */; }; + FC00FC5414E9EA59000AD1B3 /* add_tries.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089370FFC2BB200CE4372 /* add_tries.c */; }; + FC00FC5514E9EA72000AD1B3 /* alloc_ttype.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089390FFC2BB200CE4372 /* alloc_ttype.c */; }; + FC00FC5614E9EA84000AD1B3 /* key_defined.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D30FFC2BB100CE4372 /* key_defined.c */; }; + FC00FC5714E9EA9C000AD1B3 /* comp_captab.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FBE710223A64001D8279 /* comp_captab.c */; }; + FC00FC5814E9EAB4000AD1B3 /* db_iterator.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089400FFC2BB200CE4372 /* db_iterator.c */; }; + FC00FC5914E9EAC5000AD1B3 /* read_termcap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089650FFC2BB200CE4372 /* read_termcap.c */; }; + FC00FC5A14E9EADA000AD1B3 /* comp_expand.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893C0FFC2BB200CE4372 /* comp_expand.c */; }; + FC00FC5B14E9EAEC000AD1B3 /* parse_entry.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089630FFC2BB200CE4372 /* parse_entry.c */; }; + FC00FC5C14E9EB01000AD1B3 /* trim_sgr0.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089690FFC2BB200CE4372 /* trim_sgr0.c */; }; + FC00FC5D14E9EB18000AD1B3 /* captoinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0893A0FFC2BB200CE4372 /* captoinfo.c */; }; + FC00FC5E14E9EB4D000AD1B3 /* lib_tputs.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089590FFC2BB200CE4372 /* lib_tputs.c */; }; + FC00FC5F14E9EB6B000AD1B3 /* strings.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089680FFC2BB200CE4372 /* strings.c */; }; + FC00FC6014E9EB8A000AD1B3 /* lib_napms.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894F0FFC2BB200CE4372 /* lib_napms.c */; }; + FC00FC6114E9EBC2000AD1B3 /* unctrl.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FB271021124D001D8279 /* unctrl.c */; }; + FC00FC6214E9EBF1000AD1B3 /* lib_setup.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089530FFC2BB200CE4372 /* lib_setup.c */; }; + FC00FC6314E9EC0E000AD1B3 /* getenv_num.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089440FFC2BB200CE4372 /* getenv_num.c */; }; + FC00FC6414E9EC2F000AD1B3 /* lib_ttyflags.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0895A0FFC2BB200CE4372 /* lib_ttyflags.c */; }; + FC00FC6514E9EC42000AD1B3 /* fallback.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FBF4102247F1001D8279 /* fallback.c */; }; + FC00FC6614E9EC59000AD1B3 /* setbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089670FFC2BB200CE4372 /* setbuf.c */; }; + FC00FC6714E9EC71000AD1B3 /* lib_options.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089500FFC2BB200CE4372 /* lib_options.c */; }; + FC00FC6814E9EC94000AD1B3 /* lib_raw.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089520FFC2BB200CE4372 /* lib_raw.c */; }; + FC00FC6914E9ECAB000AD1B3 /* lib_has_cap.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0894C0FFC2BB200CE4372 /* lib_has_cap.c */; }; + FC00FC6A14E9ECD3000AD1B3 /* lib_keyname.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA0C11102386830073B661 /* lib_keyname.c */; }; + FC00FC6B14E9ECEB000AD1B3 /* names.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C609E4E101652A300971540 /* names.c */; }; + FC00FC6C14E9ED00000AD1B3 /* codes.c in Sources */ = {isa = PBXBuildFile; fileRef = 4C29FB5010211A0B001D8279 /* codes.c */; }; + FC00FC6D14E9ED1A000AD1B3 /* keybound.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF088D40FFC2BB100CE4372 /* keybound.c */; }; + FC00FC6E14E9ED31000AD1B3 /* tries.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CF089260FFC2BB100CE4372 /* tries.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4C00663A103F566D008F286F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4CD04EFE103F1BEB001C87D5; + remoteInfo = libform; + }; + 4C00663C103F5670008F286F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4CD05002103F1BFD001C87D5; + remoteInfo = libmenu; + }; + 4C00663E103F5676008F286F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4CD05106103F1C12001C87D5; + remoteInfo = libpanel; + }; + 4C006647103F5791008F286F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FC2E10225768001D8279; + remoteInfo = libncurses; + }; + 4C006649103F579C008F286F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FC2E10225768001D8279; + remoteInfo = libncurses; + }; + 4C00664B103F57A5008F286F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FC2E10225768001D8279; + remoteInfo = libncurses; + }; + 4CC76F061027517A00C87ED0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FC2E10225768001D8279; + remoteInfo = libncurses; + }; + FC00FC7914E9FB27000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FA601020DDBD001D8279; + remoteInfo = libraries; + }; + FC00FC7B14E9FB27000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FC00FC7614E9FB13000AD1B3; + remoteInfo = executables; + }; + FC00FC7D14E9FB36000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FA661020E62B001D8279; + remoteInfo = clear; + }; + FC00FC7F14E9FB36000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FA781020E959001D8279; + remoteInfo = infocmp; + }; + FC00FC8114E9FB36000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FAA21020EBED001D8279; + remoteInfo = tic; + }; + FC00FC8314E9FB36000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FA921020EB52001D8279; + remoteInfo = toe; + }; + FC00FC8514E9FB36000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FA801020EB4A001D8279; + remoteInfo = tput; + }; + FC00FC8714E9FB36000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C29FA891020EB4E001D8279; + remoteInfo = tset; + }; + FC00FC9E14E9FDC7000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FC00FCA014E9FDD7000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FC00FCA214E9FDDE000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FC00FCA414E9FDE2000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FC00FCA614E9FDE6000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FC00FCA814E9FDEB000AD1B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FCD5D43514E5CA0700752D20 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4C5C3FD7102CD13500B4B066; + remoteInfo = native_make_keys; + }; + FCD5D43814E5CB0F00752D20 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D43214E5C99D00752D20; + remoteInfo = "Derived Sources"; + }; + FCD5D43C14E5CB2F00752D20 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D3F414E4F61700752D20; + remoteInfo = "Derived Sources [boostrap]"; + }; + FCD5D44914E5D15000752D20 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FCD5D44214E5CC4F00752D20; + remoteInfo = native_make_hash; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4C29FA671020E62B001D8279 /* clear */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = clear; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FA791020E959001D8279 /* infocmp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = infocmp; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FA871020EB4A001D8279 /* tput */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tput; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FA901020EB4E001D8279 /* tset */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tset; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FA991020EB52001D8279 /* toe */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = toe; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FAA91020EBED001D8279 /* tic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tic; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FB271021124D001D8279 /* unctrl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unctrl.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FB5010211A0B001D8279 /* codes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = codes.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FBBA10223559001D8279 /* make_hash */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = make_hash; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FBE710223A64001D8279 /* comp_captab.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = comp_captab.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FBF4102247F1001D8279 /* fallback.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fallback.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libncurses.5.4.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C609E3410163B4500971540 /* make_keys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = make_keys; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C609E4E101652A300971540 /* names.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = names.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C9BE7AF104330A100182AEE /* expanded.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = expanded.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CC76F6C102791C300C87ED0 /* ncurses.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ncurses.plist; sourceTree = ""; }; + 4CC76F6D102791C300C87ED0 /* ncurses.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses.txt; sourceTree = ""; }; + 4CCA0C11102386830073B661 /* lib_keyname.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_keyname.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CD04EE4103DE113001C87D5 /* lib_gen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_gen.c; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CD05000103F1BEB001C87D5 /* libform.5.4.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libform.5.4.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CD05104103F1BFD001C87D5 /* libmenu.5.4.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libmenu.5.4.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CD05208103F1C12001C87D5 /* libpanel.5.4.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libpanel.5.4.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CE980911034D62D00BA0D88 /* tic_static */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tic_static; sourceTree = BUILT_PRODUCTS_DIR; }; + 4CF085F00FFC2BA900CE4372 /* aclocal.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aclocal.m4; sourceTree = ""; }; + 4CF085F30FFC2BA900CE4372 /* adacurses-config.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "adacurses-config.in"; sourceTree = ""; }; + 4CF085F40FFC2BA900CE4372 /* gen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gen.c; sourceTree = ""; }; + 4CF085F50FFC2BA900CE4372 /* html.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = html.m4; sourceTree = ""; }; + 4CF085F60FFC2BAA00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF085F70FFC2BAA00CE4372 /* normal.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = normal.m4; sourceTree = ""; }; + 4CF085F80FFC2BAA00CE4372 /* table.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = table.m4; sourceTree = ""; }; + 4CF085F90FFC2BAA00CE4372 /* terminal_interface-curses-aux.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-aux.ads.m4"; sourceTree = ""; }; + 4CF085FA0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-forms-field_types.ads.m4"; sourceTree = ""; }; + 4CF085FB0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_user_data.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-forms-field_user_data.ads.m4"; sourceTree = ""; }; + 4CF085FC0FFC2BAA00CE4372 /* terminal_interface-curses-forms-form_user_data.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-forms-form_user_data.ads.m4"; sourceTree = ""; }; + 4CF085FD0FFC2BAA00CE4372 /* terminal_interface-curses-forms.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-forms.ads.m4"; sourceTree = ""; }; + 4CF085FE0FFC2BAA00CE4372 /* terminal_interface-curses-menus-item_user_data.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-menus-item_user_data.ads.m4"; sourceTree = ""; }; + 4CF085FF0FFC2BAA00CE4372 /* terminal_interface-curses-menus-menu_user_data.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-menus-menu_user_data.ads.m4"; sourceTree = ""; }; + 4CF086000FFC2BAA00CE4372 /* terminal_interface-curses-menus.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-menus.ads.m4"; sourceTree = ""; }; + 4CF086010FFC2BAA00CE4372 /* terminal_interface-curses-mouse.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-mouse.ads.m4"; sourceTree = ""; }; + 4CF086020FFC2BAA00CE4372 /* terminal_interface-curses-panels-user_data.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-panels-user_data.ads.m4"; sourceTree = ""; }; + 4CF086030FFC2BAA00CE4372 /* terminal_interface-curses-panels.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-panels.ads.m4"; sourceTree = ""; }; + 4CF086040FFC2BAA00CE4372 /* terminal_interface-curses-trace.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-trace.ads.m4"; sourceTree = ""; }; + 4CF086050FFC2BAA00CE4372 /* terminal_interface-curses.adb.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses.adb.m4"; sourceTree = ""; }; + 4CF086060FFC2BAA00CE4372 /* terminal_interface-curses.ads.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses.ads.m4"; sourceTree = ""; }; + 4CF086070FFC2BAA00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF086080FFC2BAA00CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF0860A0FFC2BAA00CE4372 /* explain.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = explain.txt; sourceTree = ""; }; + 4CF0860B0FFC2BAA00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF0860C0FFC2BAA00CE4372 /* ncurses.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = ncurses.adb; sourceTree = ""; }; + 4CF0860D0FFC2BAA00CE4372 /* ncurses2-acs_and_scroll.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-acs_and_scroll.adb"; sourceTree = ""; }; + 4CF0860E0FFC2BAA00CE4372 /* ncurses2-acs_and_scroll.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-acs_and_scroll.ads"; sourceTree = ""; }; + 4CF0860F0FFC2BAA00CE4372 /* ncurses2-acs_display.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-acs_display.adb"; sourceTree = ""; }; + 4CF086100FFC2BAA00CE4372 /* ncurses2-acs_display.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-acs_display.ads"; sourceTree = ""; }; + 4CF086110FFC2BAA00CE4372 /* ncurses2-attr_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-attr_test.adb"; sourceTree = ""; }; + 4CF086120FFC2BAA00CE4372 /* ncurses2-attr_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-attr_test.ads"; sourceTree = ""; }; + 4CF086130FFC2BAA00CE4372 /* ncurses2-color_edit.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-color_edit.adb"; sourceTree = ""; }; + 4CF086140FFC2BAA00CE4372 /* ncurses2-color_edit.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-color_edit.ads"; sourceTree = ""; }; + 4CF086150FFC2BAA00CE4372 /* ncurses2-color_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-color_test.adb"; sourceTree = ""; }; + 4CF086160FFC2BAA00CE4372 /* ncurses2-color_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-color_test.ads"; sourceTree = ""; }; + 4CF086170FFC2BAA00CE4372 /* ncurses2-demo_forms.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-demo_forms.adb"; sourceTree = ""; }; + 4CF086180FFC2BAA00CE4372 /* ncurses2-demo_forms.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-demo_forms.ads"; sourceTree = ""; }; + 4CF086190FFC2BAA00CE4372 /* ncurses2-demo_pad.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-demo_pad.adb"; sourceTree = ""; }; + 4CF0861A0FFC2BAA00CE4372 /* ncurses2-demo_pad.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-demo_pad.ads"; sourceTree = ""; }; + 4CF0861B0FFC2BAA00CE4372 /* ncurses2-demo_panels.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-demo_panels.adb"; sourceTree = ""; }; + 4CF0861C0FFC2BAA00CE4372 /* ncurses2-demo_panels.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-demo_panels.ads"; sourceTree = ""; }; + 4CF0861D0FFC2BAA00CE4372 /* ncurses2-flushinp_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-flushinp_test.adb"; sourceTree = ""; }; + 4CF0861E0FFC2BAA00CE4372 /* ncurses2-flushinp_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-flushinp_test.ads"; sourceTree = ""; }; + 4CF0861F0FFC2BAA00CE4372 /* ncurses2-genericputs.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-genericputs.adb"; sourceTree = ""; }; + 4CF086200FFC2BAA00CE4372 /* ncurses2-genericputs.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-genericputs.ads"; sourceTree = ""; }; + 4CF086210FFC2BAA00CE4372 /* ncurses2-getch.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-getch.ads"; sourceTree = ""; }; + 4CF086220FFC2BAA00CE4372 /* ncurses2-getch_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-getch_test.adb"; sourceTree = ""; }; + 4CF086230FFC2BAA00CE4372 /* ncurses2-getch_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-getch_test.ads"; sourceTree = ""; }; + 4CF086240FFC2BAA00CE4372 /* ncurses2-getopt.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-getopt.adb"; sourceTree = ""; }; + 4CF086250FFC2BAA00CE4372 /* ncurses2-getopt.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-getopt.ads"; sourceTree = ""; }; + 4CF086260FFC2BAA00CE4372 /* ncurses2-m.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-m.adb"; sourceTree = ""; }; + 4CF086270FFC2BAA00CE4372 /* ncurses2-m.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-m.ads"; sourceTree = ""; }; + 4CF086280FFC2BAA00CE4372 /* ncurses2-menu_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-menu_test.adb"; sourceTree = ""; }; + 4CF086290FFC2BAA00CE4372 /* ncurses2-menu_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-menu_test.ads"; sourceTree = ""; }; + 4CF0862A0FFC2BAA00CE4372 /* ncurses2-overlap_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-overlap_test.adb"; sourceTree = ""; }; + 4CF0862B0FFC2BAA00CE4372 /* ncurses2-overlap_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-overlap_test.ads"; sourceTree = ""; }; + 4CF0862C0FFC2BAA00CE4372 /* ncurses2-slk_test.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-slk_test.adb"; sourceTree = ""; }; + 4CF0862D0FFC2BAA00CE4372 /* ncurses2-slk_test.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-slk_test.ads"; sourceTree = ""; }; + 4CF0862E0FFC2BAA00CE4372 /* ncurses2-test_sgr_attributes.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-test_sgr_attributes.adb"; sourceTree = ""; }; + 4CF0862F0FFC2BAA00CE4372 /* ncurses2-test_sgr_attributes.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-test_sgr_attributes.ads"; sourceTree = ""; }; + 4CF086300FFC2BAA00CE4372 /* ncurses2-trace_set.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-trace_set.adb"; sourceTree = ""; }; + 4CF086310FFC2BAA00CE4372 /* ncurses2-trace_set.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-trace_set.ads"; sourceTree = ""; }; + 4CF086320FFC2BAA00CE4372 /* ncurses2-util.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-util.adb"; sourceTree = ""; }; + 4CF086330FFC2BAA00CE4372 /* ncurses2-util.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "ncurses2-util.ads"; sourceTree = ""; }; + 4CF086340FFC2BAA00CE4372 /* ncurses2.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = ncurses2.ads; sourceTree = ""; }; + 4CF086350FFC2BAA00CE4372 /* rain.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = rain.adb; sourceTree = ""; }; + 4CF086360FFC2BAA00CE4372 /* rain.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = rain.ads; sourceTree = ""; }; + 4CF086370FFC2BAA00CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF086380FFC2BAA00CE4372 /* sample-curses_demo-attributes.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-curses_demo-attributes.adb"; sourceTree = ""; }; + 4CF086390FFC2BAA00CE4372 /* sample-curses_demo-attributes.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-curses_demo-attributes.ads"; sourceTree = ""; }; + 4CF0863A0FFC2BAA00CE4372 /* sample-curses_demo-mouse.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-curses_demo-mouse.adb"; sourceTree = ""; }; + 4CF0863B0FFC2BAA00CE4372 /* sample-curses_demo-mouse.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-curses_demo-mouse.ads"; sourceTree = ""; }; + 4CF0863C0FFC2BAA00CE4372 /* sample-curses_demo.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-curses_demo.adb"; sourceTree = ""; }; + 4CF0863D0FFC2BAA00CE4372 /* sample-curses_demo.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-curses_demo.ads"; sourceTree = ""; }; + 4CF0863E0FFC2BAA00CE4372 /* sample-explanation.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-explanation.adb"; sourceTree = ""; }; + 4CF0863F0FFC2BAA00CE4372 /* sample-explanation.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-explanation.ads"; sourceTree = ""; }; + 4CF086400FFC2BAA00CE4372 /* sample-form_demo-aux.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-form_demo-aux.adb"; sourceTree = ""; }; + 4CF086410FFC2BAA00CE4372 /* sample-form_demo-aux.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-form_demo-aux.ads"; sourceTree = ""; }; + 4CF086420FFC2BAA00CE4372 /* sample-form_demo-handler.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-form_demo-handler.adb"; sourceTree = ""; }; + 4CF086430FFC2BAA00CE4372 /* sample-form_demo-handler.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-form_demo-handler.ads"; sourceTree = ""; }; + 4CF086440FFC2BAA00CE4372 /* sample-form_demo.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-form_demo.adb"; sourceTree = ""; }; + 4CF086450FFC2BAA00CE4372 /* sample-form_demo.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-form_demo.ads"; sourceTree = ""; }; + 4CF086460FFC2BAA00CE4372 /* sample-function_key_setting.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-function_key_setting.adb"; sourceTree = ""; }; + 4CF086470FFC2BAA00CE4372 /* sample-function_key_setting.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-function_key_setting.ads"; sourceTree = ""; }; + 4CF086480FFC2BAA00CE4372 /* sample-header_handler.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-header_handler.adb"; sourceTree = ""; }; + 4CF086490FFC2BAA00CE4372 /* sample-header_handler.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-header_handler.ads"; sourceTree = ""; }; + 4CF0864A0FFC2BAA00CE4372 /* sample-helpers.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-helpers.adb"; sourceTree = ""; }; + 4CF0864B0FFC2BAA00CE4372 /* sample-helpers.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-helpers.ads"; sourceTree = ""; }; + 4CF0864C0FFC2BAA00CE4372 /* sample-keyboard_handler.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-keyboard_handler.adb"; sourceTree = ""; }; + 4CF0864D0FFC2BAA00CE4372 /* sample-keyboard_handler.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-keyboard_handler.ads"; sourceTree = ""; }; + 4CF0864E0FFC2BAA00CE4372 /* sample-manifest.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-manifest.ads"; sourceTree = ""; }; + 4CF0864F0FFC2BAA00CE4372 /* sample-menu_demo-aux.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-menu_demo-aux.adb"; sourceTree = ""; }; + 4CF086500FFC2BAA00CE4372 /* sample-menu_demo-aux.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-menu_demo-aux.ads"; sourceTree = ""; }; + 4CF086510FFC2BAA00CE4372 /* sample-menu_demo-handler.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-menu_demo-handler.adb"; sourceTree = ""; }; + 4CF086520FFC2BAA00CE4372 /* sample-menu_demo-handler.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-menu_demo-handler.ads"; sourceTree = ""; }; + 4CF086530FFC2BAA00CE4372 /* sample-menu_demo.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-menu_demo.adb"; sourceTree = ""; }; + 4CF086540FFC2BAA00CE4372 /* sample-menu_demo.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-menu_demo.ads"; sourceTree = ""; }; + 4CF086550FFC2BAA00CE4372 /* sample-my_field_type.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-my_field_type.adb"; sourceTree = ""; }; + 4CF086560FFC2BAA00CE4372 /* sample-my_field_type.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-my_field_type.ads"; sourceTree = ""; }; + 4CF086570FFC2BAA00CE4372 /* sample-text_io_demo.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-text_io_demo.adb"; sourceTree = ""; }; + 4CF086580FFC2BAA00CE4372 /* sample-text_io_demo.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "sample-text_io_demo.ads"; sourceTree = ""; }; + 4CF086590FFC2BAA00CE4372 /* sample.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = sample.adb; sourceTree = ""; }; + 4CF0865A0FFC2BAA00CE4372 /* sample.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = sample.ads; sourceTree = ""; }; + 4CF0865B0FFC2BAA00CE4372 /* status.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = status.adb; sourceTree = ""; }; + 4CF0865C0FFC2BAA00CE4372 /* status.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = status.ads; sourceTree = ""; }; + 4CF0865D0FFC2BAA00CE4372 /* tour.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = tour.adb; sourceTree = ""; }; + 4CF0865E0FFC2BAA00CE4372 /* tour.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = tour.ads; sourceTree = ""; }; + 4CF086600FFC2BAA00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF086610FFC2BAA00CE4372 /* terminal_interface-curses-aux.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-aux.adb"; sourceTree = ""; }; + 4CF086620FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alpha.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-alpha.adb"; sourceTree = ""; }; + 4CF086630FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alpha.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-alpha.ads"; sourceTree = ""; }; + 4CF086640FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-alphanumeric.adb"; sourceTree = ""; }; + 4CF086650FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-alphanumeric.ads"; sourceTree = ""; }; + 4CF086660FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-enumeration-ada.adb"; sourceTree = ""; }; + 4CF086670FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-enumeration-ada.ads"; sourceTree = ""; }; + 4CF086680FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-enumeration.adb"; sourceTree = ""; }; + 4CF086690FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-enumeration.ads"; sourceTree = ""; }; + 4CF0866A0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-intfield.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-intfield.adb"; sourceTree = ""; }; + 4CF0866B0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-intfield.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-intfield.ads"; sourceTree = ""; }; + 4CF0866C0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-ipv4_address.adb"; sourceTree = ""; }; + 4CF0866D0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-ipv4_address.ads"; sourceTree = ""; }; + 4CF0866E0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-numeric.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-numeric.adb"; sourceTree = ""; }; + 4CF0866F0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-numeric.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-numeric.ads"; sourceTree = ""; }; + 4CF086700FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-regexp.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-regexp.adb"; sourceTree = ""; }; + 4CF086710FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-regexp.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-regexp.ads"; sourceTree = ""; }; + 4CF086720FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user-choice.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-user-choice.adb"; sourceTree = ""; }; + 4CF086730FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user-choice.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-user-choice.ads"; sourceTree = ""; }; + 4CF086740FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-user.adb"; sourceTree = ""; }; + 4CF086750FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types-user.ads"; sourceTree = ""; }; + 4CF086760FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_types.adb"; sourceTree = ""; }; + 4CF086770FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_user_data.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-field_user_data.adb"; sourceTree = ""; }; + 4CF086780FFC2BAA00CE4372 /* terminal_interface-curses-forms-form_user_data.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms-form_user_data.adb"; sourceTree = ""; }; + 4CF086790FFC2BAA00CE4372 /* terminal_interface-curses-forms.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-forms.adb"; sourceTree = ""; }; + 4CF0867A0FFC2BAA00CE4372 /* terminal_interface-curses-menus-item_user_data.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-menus-item_user_data.adb"; sourceTree = ""; }; + 4CF0867B0FFC2BAA00CE4372 /* terminal_interface-curses-menus-menu_user_data.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-menus-menu_user_data.adb"; sourceTree = ""; }; + 4CF0867C0FFC2BAA00CE4372 /* terminal_interface-curses-menus.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-menus.adb"; sourceTree = ""; }; + 4CF0867D0FFC2BAA00CE4372 /* terminal_interface-curses-mouse.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-mouse.adb"; sourceTree = ""; }; + 4CF0867E0FFC2BAA00CE4372 /* terminal_interface-curses-panels-user_data.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-panels-user_data.adb"; sourceTree = ""; }; + 4CF0867F0FFC2BAA00CE4372 /* terminal_interface-curses-panels.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-panels.adb"; sourceTree = ""; }; + 4CF086800FFC2BAA00CE4372 /* terminal_interface-curses-putwin.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-putwin.adb"; sourceTree = ""; }; + 4CF086810FFC2BAA00CE4372 /* terminal_interface-curses-putwin.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-putwin.ads"; sourceTree = ""; }; + 4CF086820FFC2BAA00CE4372 /* terminal_interface-curses-termcap.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-termcap.adb"; sourceTree = ""; }; + 4CF086830FFC2BAA00CE4372 /* terminal_interface-curses-termcap.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-termcap.ads"; sourceTree = ""; }; + 4CF086840FFC2BAA00CE4372 /* terminal_interface-curses-terminfo.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-terminfo.adb"; sourceTree = ""; }; + 4CF086850FFC2BAA00CE4372 /* terminal_interface-curses-terminfo.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-terminfo.ads"; sourceTree = ""; }; + 4CF086860FFC2BAA00CE4372 /* terminal_interface-curses-text_io-aux.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-aux.adb"; sourceTree = ""; }; + 4CF086870FFC2BAA00CE4372 /* terminal_interface-curses-text_io-aux.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-aux.ads"; sourceTree = ""; }; + 4CF086880FFC2BAA00CE4372 /* terminal_interface-curses-text_io-complex_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-complex_io.adb"; sourceTree = ""; }; + 4CF086890FFC2BAA00CE4372 /* terminal_interface-curses-text_io-complex_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-complex_io.ads"; sourceTree = ""; }; + 4CF0868A0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-decimal_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-decimal_io.adb"; sourceTree = ""; }; + 4CF0868B0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-decimal_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-decimal_io.ads"; sourceTree = ""; }; + 4CF0868C0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-enumeration_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-enumeration_io.adb"; sourceTree = ""; }; + 4CF0868D0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-enumeration_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-enumeration_io.ads"; sourceTree = ""; }; + 4CF0868E0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-fixed_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-fixed_io.adb"; sourceTree = ""; }; + 4CF0868F0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-fixed_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-fixed_io.ads"; sourceTree = ""; }; + 4CF086900FFC2BAA00CE4372 /* terminal_interface-curses-text_io-float_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-float_io.adb"; sourceTree = ""; }; + 4CF086910FFC2BAA00CE4372 /* terminal_interface-curses-text_io-float_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-float_io.ads"; sourceTree = ""; }; + 4CF086920FFC2BAA00CE4372 /* terminal_interface-curses-text_io-integer_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-integer_io.adb"; sourceTree = ""; }; + 4CF086930FFC2BAA00CE4372 /* terminal_interface-curses-text_io-integer_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-integer_io.ads"; sourceTree = ""; }; + 4CF086940FFC2BAA00CE4372 /* terminal_interface-curses-text_io-modular_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-modular_io.adb"; sourceTree = ""; }; + 4CF086950FFC2BAA00CE4372 /* terminal_interface-curses-text_io-modular_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io-modular_io.ads"; sourceTree = ""; }; + 4CF086960FFC2BAA00CE4372 /* terminal_interface-curses-text_io.adb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io.adb"; sourceTree = ""; }; + 4CF086970FFC2BAA00CE4372 /* terminal_interface-curses-text_io.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = "terminal_interface-curses-text_io.ads"; sourceTree = ""; }; + 4CF086980FFC2BAA00CE4372 /* terminal_interface-curses-trace.adb_p */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "terminal_interface-curses-trace.adb_p"; sourceTree = ""; }; + 4CF086990FFC2BAA00CE4372 /* terminal_interface.ads */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.ada; path = terminal_interface.ads; sourceTree = ""; }; + 4CF0869A0FFC2BAA00CE4372 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = ""; }; + 4CF0869B0FFC2BAA00CE4372 /* ANNOUNCE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ANNOUNCE; sourceTree = ""; }; + 4CF0869C0FFC2BAA00CE4372 /* announce.html.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = announce.html.in; sourceTree = ""; }; + 4CF0869D0FFC2BAA00CE4372 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; + 4CF0869F0FFC2BAA00CE4372 /* cursesapp.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursesapp.cc; sourceTree = ""; }; + 4CF086A00FFC2BAA00CE4372 /* cursesapp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursesapp.h; sourceTree = ""; }; + 4CF086A10FFC2BAA00CE4372 /* cursesf.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursesf.cc; sourceTree = ""; }; + 4CF086A20FFC2BAA00CE4372 /* cursesf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursesf.h; sourceTree = ""; }; + 4CF086A30FFC2BAA00CE4372 /* cursesm.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursesm.cc; sourceTree = ""; }; + 4CF086A40FFC2BAA00CE4372 /* cursesm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursesm.h; sourceTree = ""; }; + 4CF086A50FFC2BAA00CE4372 /* cursesmain.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursesmain.cc; sourceTree = ""; }; + 4CF086A60FFC2BAA00CE4372 /* cursesp.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursesp.cc; sourceTree = ""; }; + 4CF086A70FFC2BAA00CE4372 /* cursesp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursesp.h; sourceTree = ""; }; + 4CF086A80FFC2BAA00CE4372 /* cursespad.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursespad.cc; sourceTree = ""; }; + 4CF086A90FFC2BAA00CE4372 /* cursesw.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursesw.cc; sourceTree = ""; }; + 4CF086AA0FFC2BAA00CE4372 /* cursesw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursesw.h; sourceTree = ""; }; + 4CF086AB0FFC2BAA00CE4372 /* cursslk.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cursslk.cc; sourceTree = ""; }; + 4CF086AC0FFC2BAA00CE4372 /* cursslk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cursslk.h; sourceTree = ""; }; + 4CF086AD0FFC2BAA00CE4372 /* demo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = demo.cc; sourceTree = ""; }; + 4CF086AE0FFC2BAA00CE4372 /* edit_cfg.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = edit_cfg.sh; sourceTree = ""; }; + 4CF086AF0FFC2BAA00CE4372 /* etip.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = etip.h.in; sourceTree = ""; }; + 4CF086B00FFC2BAA00CE4372 /* headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = headers; sourceTree = ""; }; + 4CF086B10FFC2BAA00CE4372 /* internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; + 4CF086B20FFC2BAA00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF086B30FFC2BAA00CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF086B40FFC2BAA00CE4372 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + 4CF086B50FFC2BAA00CE4372 /* PROBLEMS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PROBLEMS; sourceTree = ""; }; + 4CF086B60FFC2BAA00CE4372 /* README-first */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "README-first"; sourceTree = ""; }; + 4CF086B70FFC2BAA00CE4372 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = config.guess; sourceTree = ""; }; + 4CF086B80FFC2BAA00CE4372 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = config.sub; sourceTree = ""; }; + 4CF086B90FFC2BAA00CE4372 /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + 4CF086BA0FFC2BAA00CE4372 /* configure.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = configure.in; sourceTree = ""; }; + 4CF086BC0FFC2BAB00CE4372 /* convert_configure.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = convert_configure.pl; sourceTree = ""; }; + 4CF086BD0FFC2BAB00CE4372 /* dist.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dist.mk; sourceTree = ""; }; + 4CF086BF0FFC2BAD00CE4372 /* hackguide.doc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hackguide.doc; sourceTree = ""; }; + 4CF086C30FFC2BAD00CE4372 /* T.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = T.htm; sourceTree = ""; }; + 4CF086C40FFC2BAD00CE4372 /* files.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = files.htm; sourceTree = ""; }; + 4CF086C60FFC2BAD00CE4372 /* A.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = A.htm; sourceTree = ""; }; + 4CF086C70FFC2BAD00CE4372 /* B.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = B.htm; sourceTree = ""; }; + 4CF086C80FFC2BAD00CE4372 /* C.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = C.htm; sourceTree = ""; }; + 4CF086C90FFC2BAD00CE4372 /* D.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = D.htm; sourceTree = ""; }; + 4CF086CA0FFC2BAD00CE4372 /* E.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = E.htm; sourceTree = ""; }; + 4CF086CB0FFC2BAD00CE4372 /* F.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = F.htm; sourceTree = ""; }; + 4CF086CC0FFC2BAD00CE4372 /* G.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = G.htm; sourceTree = ""; }; + 4CF086CD0FFC2BAD00CE4372 /* H.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = H.htm; sourceTree = ""; }; + 4CF086CE0FFC2BAD00CE4372 /* I.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = I.htm; sourceTree = ""; }; + 4CF086CF0FFC2BAD00CE4372 /* K.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = K.htm; sourceTree = ""; }; + 4CF086D00FFC2BAD00CE4372 /* L.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = L.htm; sourceTree = ""; }; + 4CF086D10FFC2BAD00CE4372 /* M.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = M.htm; sourceTree = ""; }; + 4CF086D20FFC2BAD00CE4372 /* N.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = N.htm; sourceTree = ""; }; + 4CF086D30FFC2BAD00CE4372 /* O.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = O.htm; sourceTree = ""; }; + 4CF086D40FFC2BAD00CE4372 /* P.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = P.htm; sourceTree = ""; }; + 4CF086D50FFC2BAD00CE4372 /* Q.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Q.htm; sourceTree = ""; }; + 4CF086D60FFC2BAD00CE4372 /* R.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = R.htm; sourceTree = ""; }; + 4CF086D70FFC2BAD00CE4372 /* S.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = S.htm; sourceTree = ""; }; + 4CF086D80FFC2BAD00CE4372 /* T.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = T.htm; sourceTree = ""; }; + 4CF086D90FFC2BAD00CE4372 /* U.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = U.htm; sourceTree = ""; }; + 4CF086DA0FFC2BAD00CE4372 /* V.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = V.htm; sourceTree = ""; }; + 4CF086DB0FFC2BAD00CE4372 /* W.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = W.htm; sourceTree = ""; }; + 4CF086DC0FFC2BAD00CE4372 /* funcs.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = funcs.htm; sourceTree = ""; }; + 4CF086DD0FFC2BAD00CE4372 /* index.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.htm; sourceTree = ""; }; + 4CF086DE0FFC2BAD00CE4372 /* main.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = main.htm; sourceTree = ""; }; + 4CF086DF0FFC2BAD00CE4372 /* table.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = table.html; sourceTree = ""; }; + 4CF086E00FFC2BAD00CE4372 /* terminal_interface-curses-aux__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-aux__adb.htm"; sourceTree = ""; }; + 4CF086E10FFC2BAD00CE4372 /* terminal_interface-curses-aux__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-aux__ads.htm"; sourceTree = ""; }; + 4CF086E20FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alpha__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-alpha__adb.htm"; sourceTree = ""; }; + 4CF086E30FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alpha__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-alpha__ads.htm"; sourceTree = ""; }; + 4CF086E40FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-alphanumeric__adb.htm"; sourceTree = ""; }; + 4CF086E50FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-alphanumeric__ads.htm"; sourceTree = ""; }; + 4CF086E60FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm"; sourceTree = ""; }; + 4CF086E70FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm"; sourceTree = ""; }; + 4CF086E80FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-enumeration__adb.htm"; sourceTree = ""; }; + 4CF086E90FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-enumeration__ads.htm"; sourceTree = ""; }; + 4CF086EA0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-intfield__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-intfield__adb.htm"; sourceTree = ""; }; + 4CF086EB0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-intfield__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-intfield__ads.htm"; sourceTree = ""; }; + 4CF086EC0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-ipv4_address__adb.htm"; sourceTree = ""; }; + 4CF086ED0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-ipv4_address__ads.htm"; sourceTree = ""; }; + 4CF086EE0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-numeric__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-numeric__adb.htm"; sourceTree = ""; }; + 4CF086EF0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-numeric__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-numeric__ads.htm"; sourceTree = ""; }; + 4CF086F00FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-regexp__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-regexp__adb.htm"; sourceTree = ""; }; + 4CF086F10FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-regexp__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-regexp__ads.htm"; sourceTree = ""; }; + 4CF086F20FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user-choice__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-user-choice__adb.htm"; sourceTree = ""; }; + 4CF086F30FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user-choice__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-user-choice__ads.htm"; sourceTree = ""; }; + 4CF086F40FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-user__adb.htm"; sourceTree = ""; }; + 4CF086F50FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types-user__ads.htm"; sourceTree = ""; }; + 4CF086F60FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types__adb.htm"; sourceTree = ""; }; + 4CF086F70FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_types__ads.htm"; sourceTree = ""; }; + 4CF086F80FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_user_data__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_user_data__adb.htm"; sourceTree = ""; }; + 4CF086F90FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_user_data__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-field_user_data__ads.htm"; sourceTree = ""; }; + 4CF086FA0FFC2BAD00CE4372 /* terminal_interface-curses-forms-form_user_data__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-form_user_data__adb.htm"; sourceTree = ""; }; + 4CF086FB0FFC2BAD00CE4372 /* terminal_interface-curses-forms-form_user_data__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms-form_user_data__ads.htm"; sourceTree = ""; }; + 4CF086FC0FFC2BAD00CE4372 /* terminal_interface-curses-forms__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms__adb.htm"; sourceTree = ""; }; + 4CF086FD0FFC2BAD00CE4372 /* terminal_interface-curses-forms__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-forms__ads.htm"; sourceTree = ""; }; + 4CF086FE0FFC2BAD00CE4372 /* terminal_interface-curses-menus-item_user_data__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-menus-item_user_data__adb.htm"; sourceTree = ""; }; + 4CF086FF0FFC2BAD00CE4372 /* terminal_interface-curses-menus-item_user_data__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-menus-item_user_data__ads.htm"; sourceTree = ""; }; + 4CF087000FFC2BAD00CE4372 /* terminal_interface-curses-menus-menu_user_data__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-menus-menu_user_data__adb.htm"; sourceTree = ""; }; + 4CF087010FFC2BAD00CE4372 /* terminal_interface-curses-menus-menu_user_data__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-menus-menu_user_data__ads.htm"; sourceTree = ""; }; + 4CF087020FFC2BAD00CE4372 /* terminal_interface-curses-menus__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-menus__adb.htm"; sourceTree = ""; }; + 4CF087030FFC2BAD00CE4372 /* terminal_interface-curses-menus__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-menus__ads.htm"; sourceTree = ""; }; + 4CF087040FFC2BAD00CE4372 /* terminal_interface-curses-mouse__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-mouse__adb.htm"; sourceTree = ""; }; + 4CF087050FFC2BAD00CE4372 /* terminal_interface-curses-mouse__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-mouse__ads.htm"; sourceTree = ""; }; + 4CF087060FFC2BAD00CE4372 /* terminal_interface-curses-panels-user_data__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-panels-user_data__adb.htm"; sourceTree = ""; }; + 4CF087070FFC2BAD00CE4372 /* terminal_interface-curses-panels-user_data__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-panels-user_data__ads.htm"; sourceTree = ""; }; + 4CF087080FFC2BAD00CE4372 /* terminal_interface-curses-panels__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-panels__adb.htm"; sourceTree = ""; }; + 4CF087090FFC2BAD00CE4372 /* terminal_interface-curses-panels__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-panels__ads.htm"; sourceTree = ""; }; + 4CF0870A0FFC2BAD00CE4372 /* terminal_interface-curses-putwin__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-putwin__adb.htm"; sourceTree = ""; }; + 4CF0870B0FFC2BAD00CE4372 /* terminal_interface-curses-putwin__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-putwin__ads.htm"; sourceTree = ""; }; + 4CF0870C0FFC2BAD00CE4372 /* terminal_interface-curses-termcap__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-termcap__adb.htm"; sourceTree = ""; }; + 4CF0870D0FFC2BAD00CE4372 /* terminal_interface-curses-termcap__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-termcap__ads.htm"; sourceTree = ""; }; + 4CF0870E0FFC2BAD00CE4372 /* terminal_interface-curses-terminfo__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-terminfo__adb.htm"; sourceTree = ""; }; + 4CF0870F0FFC2BAD00CE4372 /* terminal_interface-curses-terminfo__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-terminfo__ads.htm"; sourceTree = ""; }; + 4CF087100FFC2BAD00CE4372 /* terminal_interface-curses-text_io-aux__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-aux__adb.htm"; sourceTree = ""; }; + 4CF087110FFC2BAD00CE4372 /* terminal_interface-curses-text_io-aux__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-aux__ads.htm"; sourceTree = ""; }; + 4CF087120FFC2BAD00CE4372 /* terminal_interface-curses-text_io-complex_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-complex_io__adb.htm"; sourceTree = ""; }; + 4CF087130FFC2BAD00CE4372 /* terminal_interface-curses-text_io-complex_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-complex_io__ads.htm"; sourceTree = ""; }; + 4CF087140FFC2BAD00CE4372 /* terminal_interface-curses-text_io-decimal_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-decimal_io__adb.htm"; sourceTree = ""; }; + 4CF087150FFC2BAD00CE4372 /* terminal_interface-curses-text_io-decimal_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-decimal_io__ads.htm"; sourceTree = ""; }; + 4CF087160FFC2BAD00CE4372 /* terminal_interface-curses-text_io-enumeration_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-enumeration_io__adb.htm"; sourceTree = ""; }; + 4CF087170FFC2BAD00CE4372 /* terminal_interface-curses-text_io-enumeration_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-enumeration_io__ads.htm"; sourceTree = ""; }; + 4CF087180FFC2BAD00CE4372 /* terminal_interface-curses-text_io-fixed_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-fixed_io__adb.htm"; sourceTree = ""; }; + 4CF087190FFC2BAD00CE4372 /* terminal_interface-curses-text_io-fixed_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-fixed_io__ads.htm"; sourceTree = ""; }; + 4CF0871A0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-float_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-float_io__adb.htm"; sourceTree = ""; }; + 4CF0871B0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-float_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-float_io__ads.htm"; sourceTree = ""; }; + 4CF0871C0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-integer_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-integer_io__adb.htm"; sourceTree = ""; }; + 4CF0871D0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-integer_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-integer_io__ads.htm"; sourceTree = ""; }; + 4CF0871E0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-modular_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-modular_io__adb.htm"; sourceTree = ""; }; + 4CF0871F0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-modular_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io-modular_io__ads.htm"; sourceTree = ""; }; + 4CF087200FFC2BAD00CE4372 /* terminal_interface-curses-text_io__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io__adb.htm"; sourceTree = ""; }; + 4CF087210FFC2BAD00CE4372 /* terminal_interface-curses-text_io__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-text_io__ads.htm"; sourceTree = ""; }; + 4CF087220FFC2BAD00CE4372 /* terminal_interface-curses-trace__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-trace__adb.htm"; sourceTree = ""; }; + 4CF087230FFC2BAD00CE4372 /* terminal_interface-curses-trace__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses-trace__ads.htm"; sourceTree = ""; }; + 4CF087240FFC2BAD00CE4372 /* terminal_interface-curses__adb.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses__adb.htm"; sourceTree = ""; }; + 4CF087250FFC2BAD00CE4372 /* terminal_interface-curses__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "terminal_interface-curses__ads.htm"; sourceTree = ""; }; + 4CF087260FFC2BAD00CE4372 /* terminal_interface__ads.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = terminal_interface__ads.htm; sourceTree = ""; }; + 4CF087270FFC2BAD00CE4372 /* Ada95.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Ada95.html; sourceTree = ""; }; + 4CF087280FFC2BAD00CE4372 /* announce.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = announce.html; sourceTree = ""; }; + 4CF087290FFC2BAD00CE4372 /* hackguide.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = hackguide.html; sourceTree = ""; }; + 4CF0872A0FFC2BAD00CE4372 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 4CF0872C0FFC2BAD00CE4372 /* captoinfo.1m.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = captoinfo.1m.html; sourceTree = ""; }; + 4CF0872D0FFC2BAD00CE4372 /* clear.1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = clear.1.html; sourceTree = ""; }; + 4CF0872E0FFC2BAD00CE4372 /* curs_add_wch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_add_wch.3x.html; sourceTree = ""; }; + 4CF0872F0FFC2BAD00CE4372 /* curs_add_wchstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_add_wchstr.3x.html; sourceTree = ""; }; + 4CF087300FFC2BAD00CE4372 /* curs_addch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_addch.3x.html; sourceTree = ""; }; + 4CF087310FFC2BAD00CE4372 /* curs_addchstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_addchstr.3x.html; sourceTree = ""; }; + 4CF087320FFC2BAD00CE4372 /* curs_addstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_addstr.3x.html; sourceTree = ""; }; + 4CF087330FFC2BAD00CE4372 /* curs_addwstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_addwstr.3x.html; sourceTree = ""; }; + 4CF087340FFC2BAD00CE4372 /* curs_attr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_attr.3x.html; sourceTree = ""; }; + 4CF087350FFC2BAD00CE4372 /* curs_beep.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_beep.3x.html; sourceTree = ""; }; + 4CF087360FFC2BAD00CE4372 /* curs_bkgd.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_bkgd.3x.html; sourceTree = ""; }; + 4CF087370FFC2BAD00CE4372 /* curs_bkgrnd.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_bkgrnd.3x.html; sourceTree = ""; }; + 4CF087380FFC2BAD00CE4372 /* curs_border.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_border.3x.html; sourceTree = ""; }; + 4CF087390FFC2BAD00CE4372 /* curs_border_set.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_border_set.3x.html; sourceTree = ""; }; + 4CF0873A0FFC2BAD00CE4372 /* curs_clear.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_clear.3x.html; sourceTree = ""; }; + 4CF0873B0FFC2BAD00CE4372 /* curs_color.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_color.3x.html; sourceTree = ""; }; + 4CF0873C0FFC2BAD00CE4372 /* curs_delch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_delch.3x.html; sourceTree = ""; }; + 4CF0873D0FFC2BAD00CE4372 /* curs_deleteln.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_deleteln.3x.html; sourceTree = ""; }; + 4CF0873E0FFC2BAD00CE4372 /* curs_extend.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_extend.3x.html; sourceTree = ""; }; + 4CF0873F0FFC2BAD00CE4372 /* curs_get_wch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_get_wch.3x.html; sourceTree = ""; }; + 4CF087400FFC2BAD00CE4372 /* curs_get_wstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_get_wstr.3x.html; sourceTree = ""; }; + 4CF087410FFC2BAD00CE4372 /* curs_getcchar.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_getcchar.3x.html; sourceTree = ""; }; + 4CF087420FFC2BAD00CE4372 /* curs_getch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_getch.3x.html; sourceTree = ""; }; + 4CF087430FFC2BAD00CE4372 /* curs_getstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_getstr.3x.html; sourceTree = ""; }; + 4CF087440FFC2BAD00CE4372 /* curs_getyx.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_getyx.3x.html; sourceTree = ""; }; + 4CF087450FFC2BAD00CE4372 /* curs_in_wch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_in_wch.3x.html; sourceTree = ""; }; + 4CF087460FFC2BAD00CE4372 /* curs_in_wchstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_in_wchstr.3x.html; sourceTree = ""; }; + 4CF087470FFC2BAD00CE4372 /* curs_inch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_inch.3x.html; sourceTree = ""; }; + 4CF087480FFC2BAD00CE4372 /* curs_inchstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_inchstr.3x.html; sourceTree = ""; }; + 4CF087490FFC2BAD00CE4372 /* curs_initscr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_initscr.3x.html; sourceTree = ""; }; + 4CF0874A0FFC2BAD00CE4372 /* curs_inopts.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_inopts.3x.html; sourceTree = ""; }; + 4CF0874B0FFC2BAD00CE4372 /* curs_ins_wch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_ins_wch.3x.html; sourceTree = ""; }; + 4CF0874C0FFC2BAD00CE4372 /* curs_ins_wstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_ins_wstr.3x.html; sourceTree = ""; }; + 4CF0874D0FFC2BAD00CE4372 /* curs_insch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_insch.3x.html; sourceTree = ""; }; + 4CF0874E0FFC2BAD00CE4372 /* curs_insstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_insstr.3x.html; sourceTree = ""; }; + 4CF0874F0FFC2BAD00CE4372 /* curs_instr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_instr.3x.html; sourceTree = ""; }; + 4CF087500FFC2BAD00CE4372 /* curs_inwstr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_inwstr.3x.html; sourceTree = ""; }; + 4CF087510FFC2BAD00CE4372 /* curs_kernel.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_kernel.3x.html; sourceTree = ""; }; + 4CF087520FFC2BAD00CE4372 /* curs_legacy.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_legacy.3x.html; sourceTree = ""; }; + 4CF087530FFC2BAD00CE4372 /* curs_mouse.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_mouse.3x.html; sourceTree = ""; }; + 4CF087540FFC2BAD00CE4372 /* curs_move.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_move.3x.html; sourceTree = ""; }; + 4CF087550FFC2BAD00CE4372 /* curs_opaque.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_opaque.3x.html; sourceTree = ""; }; + 4CF087560FFC2BAD00CE4372 /* curs_outopts.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_outopts.3x.html; sourceTree = ""; }; + 4CF087570FFC2BAD00CE4372 /* curs_overlay.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_overlay.3x.html; sourceTree = ""; }; + 4CF087580FFC2BAD00CE4372 /* curs_pad.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_pad.3x.html; sourceTree = ""; }; + 4CF087590FFC2BAD00CE4372 /* curs_print.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_print.3x.html; sourceTree = ""; }; + 4CF0875A0FFC2BAD00CE4372 /* curs_printw.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_printw.3x.html; sourceTree = ""; }; + 4CF0875B0FFC2BAD00CE4372 /* curs_refresh.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_refresh.3x.html; sourceTree = ""; }; + 4CF0875C0FFC2BAD00CE4372 /* curs_scanw.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_scanw.3x.html; sourceTree = ""; }; + 4CF0875D0FFC2BAD00CE4372 /* curs_scr_dump.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_scr_dump.3x.html; sourceTree = ""; }; + 4CF0875E0FFC2BAD00CE4372 /* curs_scroll.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_scroll.3x.html; sourceTree = ""; }; + 4CF0875F0FFC2BAD00CE4372 /* curs_slk.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_slk.3x.html; sourceTree = ""; }; + 4CF087600FFC2BAD00CE4372 /* curs_termattrs.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_termattrs.3x.html; sourceTree = ""; }; + 4CF087610FFC2BAD00CE4372 /* curs_termcap.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_termcap.3x.html; sourceTree = ""; }; + 4CF087620FFC2BAD00CE4372 /* curs_terminfo.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_terminfo.3x.html; sourceTree = ""; }; + 4CF087630FFC2BAD00CE4372 /* curs_threads.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_threads.3x.html; sourceTree = ""; }; + 4CF087640FFC2BAD00CE4372 /* curs_touch.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_touch.3x.html; sourceTree = ""; }; + 4CF087650FFC2BAD00CE4372 /* curs_trace.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_trace.3x.html; sourceTree = ""; }; + 4CF087660FFC2BAD00CE4372 /* curs_util.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_util.3x.html; sourceTree = ""; }; + 4CF087670FFC2BAD00CE4372 /* curs_window.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = curs_window.3x.html; sourceTree = ""; }; + 4CF087680FFC2BAD00CE4372 /* default_colors.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = default_colors.3x.html; sourceTree = ""; }; + 4CF087690FFC2BAE00CE4372 /* define_key.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = define_key.3x.html; sourceTree = ""; }; + 4CF0876A0FFC2BAE00CE4372 /* form.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form.3x.html; sourceTree = ""; }; + 4CF0876B0FFC2BAE00CE4372 /* form_cursor.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_cursor.3x.html; sourceTree = ""; }; + 4CF0876C0FFC2BAE00CE4372 /* form_data.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_data.3x.html; sourceTree = ""; }; + 4CF0876D0FFC2BAE00CE4372 /* form_driver.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_driver.3x.html; sourceTree = ""; }; + 4CF0876E0FFC2BAE00CE4372 /* form_field.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field.3x.html; sourceTree = ""; }; + 4CF0876F0FFC2BAE00CE4372 /* form_field_attributes.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_attributes.3x.html; sourceTree = ""; }; + 4CF087700FFC2BAE00CE4372 /* form_field_buffer.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_buffer.3x.html; sourceTree = ""; }; + 4CF087710FFC2BAE00CE4372 /* form_field_info.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_info.3x.html; sourceTree = ""; }; + 4CF087720FFC2BAE00CE4372 /* form_field_just.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_just.3x.html; sourceTree = ""; }; + 4CF087730FFC2BAE00CE4372 /* form_field_new.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_new.3x.html; sourceTree = ""; }; + 4CF087740FFC2BAE00CE4372 /* form_field_opts.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_opts.3x.html; sourceTree = ""; }; + 4CF087750FFC2BAE00CE4372 /* form_field_userptr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_userptr.3x.html; sourceTree = ""; }; + 4CF087760FFC2BAE00CE4372 /* form_field_validation.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_field_validation.3x.html; sourceTree = ""; }; + 4CF087770FFC2BAE00CE4372 /* form_fieldtype.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_fieldtype.3x.html; sourceTree = ""; }; + 4CF087780FFC2BAE00CE4372 /* form_hook.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_hook.3x.html; sourceTree = ""; }; + 4CF087790FFC2BAE00CE4372 /* form_new.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_new.3x.html; sourceTree = ""; }; + 4CF0877A0FFC2BAE00CE4372 /* form_new_page.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_new_page.3x.html; sourceTree = ""; }; + 4CF0877B0FFC2BAE00CE4372 /* form_opts.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_opts.3x.html; sourceTree = ""; }; + 4CF0877C0FFC2BAE00CE4372 /* form_page.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_page.3x.html; sourceTree = ""; }; + 4CF0877D0FFC2BAE00CE4372 /* form_post.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_post.3x.html; sourceTree = ""; }; + 4CF0877E0FFC2BAE00CE4372 /* form_requestname.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_requestname.3x.html; sourceTree = ""; }; + 4CF0877F0FFC2BAE00CE4372 /* form_userptr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_userptr.3x.html; sourceTree = ""; }; + 4CF087800FFC2BAE00CE4372 /* form_win.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = form_win.3x.html; sourceTree = ""; }; + 4CF087810FFC2BAE00CE4372 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 4CF087820FFC2BAE00CE4372 /* infocmp.1m.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = infocmp.1m.html; sourceTree = ""; }; + 4CF087830FFC2BAE00CE4372 /* infotocap.1m.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = infotocap.1m.html; sourceTree = ""; }; + 4CF087840FFC2BAE00CE4372 /* key_defined.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = key_defined.3x.html; sourceTree = ""; }; + 4CF087850FFC2BAE00CE4372 /* keybound.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = keybound.3x.html; sourceTree = ""; }; + 4CF087860FFC2BAE00CE4372 /* keyok.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = keyok.3x.html; sourceTree = ""; }; + 4CF087870FFC2BAE00CE4372 /* legacy_coding.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = legacy_coding.3x.html; sourceTree = ""; }; + 4CF087880FFC2BAE00CE4372 /* menu.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu.3x.html; sourceTree = ""; }; + 4CF087890FFC2BAE00CE4372 /* menu_attributes.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_attributes.3x.html; sourceTree = ""; }; + 4CF0878A0FFC2BAE00CE4372 /* menu_cursor.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_cursor.3x.html; sourceTree = ""; }; + 4CF0878B0FFC2BAE00CE4372 /* menu_driver.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_driver.3x.html; sourceTree = ""; }; + 4CF0878C0FFC2BAE00CE4372 /* menu_format.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_format.3x.html; sourceTree = ""; }; + 4CF0878D0FFC2BAE00CE4372 /* menu_hook.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_hook.3x.html; sourceTree = ""; }; + 4CF0878E0FFC2BAE00CE4372 /* menu_items.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_items.3x.html; sourceTree = ""; }; + 4CF0878F0FFC2BAE00CE4372 /* menu_mark.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_mark.3x.html; sourceTree = ""; }; + 4CF087900FFC2BAE00CE4372 /* menu_new.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_new.3x.html; sourceTree = ""; }; + 4CF087910FFC2BAE00CE4372 /* menu_opts.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_opts.3x.html; sourceTree = ""; }; + 4CF087920FFC2BAE00CE4372 /* menu_pattern.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_pattern.3x.html; sourceTree = ""; }; + 4CF087930FFC2BAE00CE4372 /* menu_post.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_post.3x.html; sourceTree = ""; }; + 4CF087940FFC2BAE00CE4372 /* menu_requestname.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_requestname.3x.html; sourceTree = ""; }; + 4CF087950FFC2BAE00CE4372 /* menu_spacing.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_spacing.3x.html; sourceTree = ""; }; + 4CF087960FFC2BAE00CE4372 /* menu_userptr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_userptr.3x.html; sourceTree = ""; }; + 4CF087970FFC2BAE00CE4372 /* menu_win.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = menu_win.3x.html; sourceTree = ""; }; + 4CF087980FFC2BAE00CE4372 /* mitem_current.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_current.3x.html; sourceTree = ""; }; + 4CF087990FFC2BAE00CE4372 /* mitem_name.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_name.3x.html; sourceTree = ""; }; + 4CF0879A0FFC2BAE00CE4372 /* mitem_new.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_new.3x.html; sourceTree = ""; }; + 4CF0879B0FFC2BAE00CE4372 /* mitem_opts.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_opts.3x.html; sourceTree = ""; }; + 4CF0879C0FFC2BAE00CE4372 /* mitem_userptr.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_userptr.3x.html; sourceTree = ""; }; + 4CF0879D0FFC2BAE00CE4372 /* mitem_value.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_value.3x.html; sourceTree = ""; }; + 4CF0879E0FFC2BAE00CE4372 /* mitem_visible.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = mitem_visible.3x.html; sourceTree = ""; }; + 4CF0879F0FFC2BAE00CE4372 /* ncurses.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = ncurses.3x.html; sourceTree = ""; }; + 4CF087A00FFC2BAE00CE4372 /* panel.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = panel.3x.html; sourceTree = ""; }; + 4CF087A10FFC2BAE00CE4372 /* resizeterm.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = resizeterm.3x.html; sourceTree = ""; }; + 4CF087A20FFC2BAE00CE4372 /* term.5.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = term.5.html; sourceTree = ""; }; + 4CF087A30FFC2BAE00CE4372 /* term.7.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = term.7.html; sourceTree = ""; }; + 4CF087A40FFC2BAE00CE4372 /* terminfo.5.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = terminfo.5.html; sourceTree = ""; }; + 4CF087A50FFC2BAE00CE4372 /* tic.1m.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tic.1m.html; sourceTree = ""; }; + 4CF087A60FFC2BAE00CE4372 /* toe.1m.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = toe.1m.html; sourceTree = ""; }; + 4CF087A70FFC2BAE00CE4372 /* tput.1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tput.1.html; sourceTree = ""; }; + 4CF087A80FFC2BAE00CE4372 /* tset.1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tset.1.html; sourceTree = ""; }; + 4CF087A90FFC2BAE00CE4372 /* wresize.3x.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = wresize.3x.html; sourceTree = ""; }; + 4CF087AA0FFC2BAE00CE4372 /* ncurses-intro.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "ncurses-intro.html"; sourceTree = ""; }; + 4CF087AB0FFC2BAE00CE4372 /* NCURSES-Programming-HOWTO.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "NCURSES-Programming-HOWTO.html"; sourceTree = ""; }; + 4CF087AC0FFC2BAE00CE4372 /* ncurses-intro.doc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "ncurses-intro.doc"; sourceTree = ""; }; + 4CF087AE0FFC2BAE00CE4372 /* f_trace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = f_trace.c; sourceTree = ""; }; + 4CF087AF0FFC2BAE00CE4372 /* fld_arg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_arg.c; sourceTree = ""; }; + 4CF087B00FFC2BAE00CE4372 /* fld_attr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_attr.c; sourceTree = ""; }; + 4CF087B10FFC2BAE00CE4372 /* fld_current.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_current.c; sourceTree = ""; }; + 4CF087B20FFC2BAE00CE4372 /* fld_def.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_def.c; sourceTree = ""; }; + 4CF087B30FFC2BAE00CE4372 /* fld_dup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_dup.c; sourceTree = ""; }; + 4CF087B40FFC2BAE00CE4372 /* fld_ftchoice.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_ftchoice.c; sourceTree = ""; }; + 4CF087B50FFC2BAE00CE4372 /* fld_ftlink.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_ftlink.c; sourceTree = ""; }; + 4CF087B60FFC2BAE00CE4372 /* fld_info.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_info.c; sourceTree = ""; }; + 4CF087B70FFC2BAE00CE4372 /* fld_just.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_just.c; sourceTree = ""; }; + 4CF087B80FFC2BAE00CE4372 /* fld_link.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_link.c; sourceTree = ""; }; + 4CF087B90FFC2BAE00CE4372 /* fld_max.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_max.c; sourceTree = ""; }; + 4CF087BA0FFC2BAE00CE4372 /* fld_move.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_move.c; sourceTree = ""; }; + 4CF087BB0FFC2BAE00CE4372 /* fld_newftyp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_newftyp.c; sourceTree = ""; }; + 4CF087BC0FFC2BAE00CE4372 /* fld_opts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_opts.c; sourceTree = ""; }; + 4CF087BD0FFC2BAE00CE4372 /* fld_pad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_pad.c; sourceTree = ""; }; + 4CF087BE0FFC2BAE00CE4372 /* fld_page.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_page.c; sourceTree = ""; }; + 4CF087BF0FFC2BAE00CE4372 /* fld_stat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_stat.c; sourceTree = ""; }; + 4CF087C00FFC2BAE00CE4372 /* fld_type.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_type.c; sourceTree = ""; }; + 4CF087C10FFC2BAE00CE4372 /* fld_user.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fld_user.c; sourceTree = ""; }; + 4CF087C20FFC2BAE00CE4372 /* form.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = form.h; sourceTree = ""; }; + 4CF087C30FFC2BAE00CE4372 /* form.priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = form.priv.h; sourceTree = ""; }; + 4CF087C40FFC2BAE00CE4372 /* frm_cursor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_cursor.c; sourceTree = ""; }; + 4CF087C50FFC2BAE00CE4372 /* frm_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_data.c; sourceTree = ""; }; + 4CF087C60FFC2BAE00CE4372 /* frm_def.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_def.c; sourceTree = ""; }; + 4CF087C70FFC2BAE00CE4372 /* frm_driver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_driver.c; sourceTree = ""; }; + 4CF087C80FFC2BAE00CE4372 /* frm_hook.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_hook.c; sourceTree = ""; }; + 4CF087C90FFC2BAE00CE4372 /* frm_opts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_opts.c; sourceTree = ""; }; + 4CF087CA0FFC2BAE00CE4372 /* frm_page.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_page.c; sourceTree = ""; }; + 4CF087CB0FFC2BAE00CE4372 /* frm_post.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_post.c; sourceTree = ""; }; + 4CF087CC0FFC2BAE00CE4372 /* frm_req_name.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_req_name.c; sourceTree = ""; }; + 4CF087CD0FFC2BAE00CE4372 /* frm_scale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_scale.c; sourceTree = ""; }; + 4CF087CE0FFC2BAE00CE4372 /* frm_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_sub.c; sourceTree = ""; }; + 4CF087CF0FFC2BAE00CE4372 /* frm_user.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_user.c; sourceTree = ""; }; + 4CF087D00FFC2BAE00CE4372 /* frm_win.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = frm_win.c; sourceTree = ""; }; + 4CF087D10FFC2BAE00CE4372 /* fty_alnum.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_alnum.c; sourceTree = ""; }; + 4CF087D20FFC2BAE00CE4372 /* fty_alpha.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_alpha.c; sourceTree = ""; }; + 4CF087D30FFC2BAE00CE4372 /* fty_enum.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_enum.c; sourceTree = ""; }; + 4CF087D40FFC2BAE00CE4372 /* fty_int.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_int.c; sourceTree = ""; }; + 4CF087D50FFC2BAE00CE4372 /* fty_ipv4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_ipv4.c; sourceTree = ""; }; + 4CF087D60FFC2BAE00CE4372 /* fty_num.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_num.c; sourceTree = ""; }; + 4CF087D70FFC2BAE00CE4372 /* fty_regex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fty_regex.c; sourceTree = ""; }; + 4CF087D80FFC2BAE00CE4372 /* headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = headers; sourceTree = ""; }; + 4CF087D90FFC2BAE00CE4372 /* llib-lform */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lform"; sourceTree = ""; }; + 4CF087DA0FFC2BAE00CE4372 /* llib-lformw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lformw"; sourceTree = ""; }; + 4CF087DB0FFC2BAE00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF087DC0FFC2BAE00CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF087DD0FFC2BAE00CE4372 /* READ.ME */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = READ.ME; sourceTree = ""; }; + 4CF087DF0FFC2BAE00CE4372 /* capdefaults.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = capdefaults.c; sourceTree = ""; }; + 4CF087E00FFC2BAE00CE4372 /* Caps */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Caps; sourceTree = ""; }; + 4CF087E10FFC2BAE00CE4372 /* Caps.aix4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Caps.aix4; sourceTree = ""; }; + 4CF087E20FFC2BAE00CE4372 /* Caps.hpux11 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Caps.hpux11; sourceTree = ""; }; + 4CF087E30FFC2BAE00CE4372 /* Caps.keys */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Caps.keys; sourceTree = ""; }; + 4CF087E40FFC2BAE00CE4372 /* Caps.osf1r5 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Caps.osf1r5; sourceTree = ""; }; + 4CF087E50FFC2BAE00CE4372 /* Caps.uwin */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Caps.uwin; sourceTree = ""; }; + 4CF087E60FFC2BAE00CE4372 /* curses.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curses.h.in; sourceTree = ""; }; + 4CF087E70FFC2BAE00CE4372 /* curses.tail */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curses.tail; sourceTree = ""; }; + 4CF087E80FFC2BAE00CE4372 /* curses.wide */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curses.wide; sourceTree = ""; }; + 4CF087E90FFC2BAE00CE4372 /* edit_cfg.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = edit_cfg.sh; sourceTree = ""; }; + 4CF087EA0FFC2BAE00CE4372 /* hashed_db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hashed_db.h; sourceTree = ""; }; + 4CF087EB0FFC2BAE00CE4372 /* headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = headers; sourceTree = ""; }; + 4CF087EC0FFC2BAE00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF087ED0FFC2BAE00CE4372 /* MKhashsize.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKhashsize.sh; sourceTree = ""; }; + 4CF087EE0FFC2BAE00CE4372 /* MKkey_defs.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKkey_defs.sh; sourceTree = ""; }; + 4CF087EF0FFC2BAE00CE4372 /* MKncurses_def.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKncurses_def.sh; sourceTree = ""; }; + 4CF087F00FFC2BAE00CE4372 /* MKparametrized.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKparametrized.sh; sourceTree = ""; }; + 4CF087F10FFC2BAE00CE4372 /* MKterm.h.awk.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MKterm.h.awk.in; sourceTree = ""; }; + 4CF087F20FFC2BAE00CE4372 /* nc_alloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nc_alloc.h; sourceTree = ""; }; + 4CF087F30FFC2BAE00CE4372 /* nc_panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nc_panel.h; sourceTree = ""; }; + 4CF087F40FFC2BAE00CE4372 /* nc_tparm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nc_tparm.h; sourceTree = ""; }; + 4CF087F50FFC2BAE00CE4372 /* ncurses_cfg.hin */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses_cfg.hin; sourceTree = ""; }; + 4CF087F60FFC2BAE00CE4372 /* ncurses_defs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses_defs; sourceTree = ""; }; + 4CF087F70FFC2BAE00CE4372 /* ncurses_dll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ncurses_dll.h; sourceTree = ""; }; + 4CF087F80FFC2BAE00CE4372 /* term_entry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = term_entry.h; sourceTree = ""; }; + 4CF087F90FFC2BAE00CE4372 /* termcap.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = termcap.h.in; sourceTree = ""; }; + 4CF087FA0FFC2BAE00CE4372 /* tic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tic.h; sourceTree = ""; }; + 4CF087FB0FFC2BAE00CE4372 /* unctrl.h.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = unctrl.h.in; sourceTree = ""; }; + 4CF087FC0FFC2BAE00CE4372 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; + 4CF087FD0FFC2BAE00CE4372 /* install-sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "install-sh"; sourceTree = ""; }; + 4CF087FE0FFC2BAE00CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF087FF0FFC2BAE00CE4372 /* Makefile.os2 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.os2; sourceTree = ""; }; + 4CF088010FFC2BAE00CE4372 /* captoinfo.1m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = captoinfo.1m; sourceTree = ""; }; + 4CF088020FFC2BAE00CE4372 /* clear.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = clear.1; sourceTree = ""; }; + 4CF088030FFC2BAE00CE4372 /* curs_add_wch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_add_wch.3x; sourceTree = ""; }; + 4CF088040FFC2BAE00CE4372 /* curs_add_wchstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_add_wchstr.3x; sourceTree = ""; }; + 4CF088050FFC2BAE00CE4372 /* curs_addch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_addch.3x; sourceTree = ""; }; + 4CF088060FFC2BAE00CE4372 /* curs_addchstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_addchstr.3x; sourceTree = ""; }; + 4CF088070FFC2BAE00CE4372 /* curs_addstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_addstr.3x; sourceTree = ""; }; + 4CF088080FFC2BAE00CE4372 /* curs_addwstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_addwstr.3x; sourceTree = ""; }; + 4CF088090FFC2BAE00CE4372 /* curs_attr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_attr.3x; sourceTree = ""; }; + 4CF0880A0FFC2BAE00CE4372 /* curs_beep.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_beep.3x; sourceTree = ""; }; + 4CF0880B0FFC2BAE00CE4372 /* curs_bkgd.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_bkgd.3x; sourceTree = ""; }; + 4CF0880C0FFC2BAE00CE4372 /* curs_bkgrnd.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_bkgrnd.3x; sourceTree = ""; }; + 4CF0880D0FFC2BAE00CE4372 /* curs_border.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_border.3x; sourceTree = ""; }; + 4CF0880E0FFC2BAE00CE4372 /* curs_border_set.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_border_set.3x; sourceTree = ""; }; + 4CF0880F0FFC2BAE00CE4372 /* curs_clear.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_clear.3x; sourceTree = ""; }; + 4CF088100FFC2BAE00CE4372 /* curs_color.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_color.3x; sourceTree = ""; }; + 4CF088110FFC2BAE00CE4372 /* curs_delch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_delch.3x; sourceTree = ""; }; + 4CF088120FFC2BAE00CE4372 /* curs_deleteln.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_deleteln.3x; sourceTree = ""; }; + 4CF088130FFC2BAE00CE4372 /* curs_extend.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_extend.3x; sourceTree = ""; }; + 4CF088140FFC2BAE00CE4372 /* curs_get_wch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_get_wch.3x; sourceTree = ""; }; + 4CF088150FFC2BAE00CE4372 /* curs_get_wstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_get_wstr.3x; sourceTree = ""; }; + 4CF088160FFC2BAE00CE4372 /* curs_getcchar.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_getcchar.3x; sourceTree = ""; }; + 4CF088170FFC2BAE00CE4372 /* curs_getch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_getch.3x; sourceTree = ""; }; + 4CF088180FFC2BAE00CE4372 /* curs_getstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_getstr.3x; sourceTree = ""; }; + 4CF088190FFC2BAE00CE4372 /* curs_getyx.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_getyx.3x; sourceTree = ""; }; + 4CF0881A0FFC2BAE00CE4372 /* curs_in_wch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_in_wch.3x; sourceTree = ""; }; + 4CF0881B0FFC2BAE00CE4372 /* curs_in_wchstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_in_wchstr.3x; sourceTree = ""; }; + 4CF0881C0FFC2BAE00CE4372 /* curs_inch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_inch.3x; sourceTree = ""; }; + 4CF0881D0FFC2BAE00CE4372 /* curs_inchstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_inchstr.3x; sourceTree = ""; }; + 4CF0881E0FFC2BAE00CE4372 /* curs_initscr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_initscr.3x; sourceTree = ""; }; + 4CF0881F0FFC2BAE00CE4372 /* curs_inopts.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_inopts.3x; sourceTree = ""; }; + 4CF088200FFC2BAE00CE4372 /* curs_ins_wch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_ins_wch.3x; sourceTree = ""; }; + 4CF088210FFC2BAE00CE4372 /* curs_ins_wstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_ins_wstr.3x; sourceTree = ""; }; + 4CF088220FFC2BAE00CE4372 /* curs_insch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_insch.3x; sourceTree = ""; }; + 4CF088230FFC2BAE00CE4372 /* curs_insstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_insstr.3x; sourceTree = ""; }; + 4CF088240FFC2BAE00CE4372 /* curs_instr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_instr.3x; sourceTree = ""; }; + 4CF088250FFC2BAE00CE4372 /* curs_inwstr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_inwstr.3x; sourceTree = ""; }; + 4CF088260FFC2BAE00CE4372 /* curs_kernel.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_kernel.3x; sourceTree = ""; }; + 4CF088270FFC2BAE00CE4372 /* curs_legacy.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_legacy.3x; sourceTree = ""; }; + 4CF088280FFC2BAE00CE4372 /* curs_memleaks.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_memleaks.3x; sourceTree = ""; }; + 4CF088290FFC2BAE00CE4372 /* curs_mouse.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_mouse.3x; sourceTree = ""; }; + 4CF0882A0FFC2BAE00CE4372 /* curs_move.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_move.3x; sourceTree = ""; }; + 4CF0882B0FFC2BAE00CE4372 /* curs_opaque.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_opaque.3x; sourceTree = ""; }; + 4CF0882C0FFC2BAE00CE4372 /* curs_outopts.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_outopts.3x; sourceTree = ""; }; + 4CF0882D0FFC2BAF00CE4372 /* curs_overlay.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_overlay.3x; sourceTree = ""; }; + 4CF0882E0FFC2BAF00CE4372 /* curs_pad.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_pad.3x; sourceTree = ""; }; + 4CF0882F0FFC2BAF00CE4372 /* curs_print.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_print.3x; sourceTree = ""; }; + 4CF088300FFC2BAF00CE4372 /* curs_printw.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_printw.3x; sourceTree = ""; }; + 4CF088310FFC2BAF00CE4372 /* curs_refresh.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_refresh.3x; sourceTree = ""; }; + 4CF088320FFC2BAF00CE4372 /* curs_scanw.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_scanw.3x; sourceTree = ""; }; + 4CF088330FFC2BAF00CE4372 /* curs_scr_dump.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_scr_dump.3x; sourceTree = ""; }; + 4CF088340FFC2BAF00CE4372 /* curs_scroll.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_scroll.3x; sourceTree = ""; }; + 4CF088350FFC2BAF00CE4372 /* curs_slk.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_slk.3x; sourceTree = ""; }; + 4CF088360FFC2BAF00CE4372 /* curs_termattrs.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_termattrs.3x; sourceTree = ""; }; + 4CF088370FFC2BAF00CE4372 /* curs_termcap.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_termcap.3x; sourceTree = ""; }; + 4CF088380FFC2BAF00CE4372 /* curs_terminfo.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_terminfo.3x; sourceTree = ""; }; + 4CF088390FFC2BAF00CE4372 /* curs_threads.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_threads.3x; sourceTree = ""; }; + 4CF0883A0FFC2BAF00CE4372 /* curs_touch.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_touch.3x; sourceTree = ""; }; + 4CF0883B0FFC2BAF00CE4372 /* curs_trace.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_trace.3x; sourceTree = ""; }; + 4CF0883C0FFC2BAF00CE4372 /* curs_util.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_util.3x; sourceTree = ""; }; + 4CF0883D0FFC2BAF00CE4372 /* curs_window.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = curs_window.3x; sourceTree = ""; }; + 4CF0883E0FFC2BAF00CE4372 /* default_colors.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = default_colors.3x; sourceTree = ""; }; + 4CF0883F0FFC2BAF00CE4372 /* define_key.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = define_key.3x; sourceTree = ""; }; + 4CF088400FFC2BAF00CE4372 /* form.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form.3x; sourceTree = ""; }; + 4CF088410FFC2BAF00CE4372 /* form_cursor.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_cursor.3x; sourceTree = ""; }; + 4CF088420FFC2BAF00CE4372 /* form_data.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_data.3x; sourceTree = ""; }; + 4CF088430FFC2BAF00CE4372 /* form_driver.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_driver.3x; sourceTree = ""; }; + 4CF088440FFC2BAF00CE4372 /* form_field.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field.3x; sourceTree = ""; }; + 4CF088450FFC2BAF00CE4372 /* form_field_attributes.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_attributes.3x; sourceTree = ""; }; + 4CF088460FFC2BAF00CE4372 /* form_field_buffer.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_buffer.3x; sourceTree = ""; }; + 4CF088470FFC2BAF00CE4372 /* form_field_info.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_info.3x; sourceTree = ""; }; + 4CF088480FFC2BAF00CE4372 /* form_field_just.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_just.3x; sourceTree = ""; }; + 4CF088490FFC2BAF00CE4372 /* form_field_new.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_new.3x; sourceTree = ""; }; + 4CF0884A0FFC2BAF00CE4372 /* form_field_opts.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_opts.3x; sourceTree = ""; }; + 4CF0884B0FFC2BAF00CE4372 /* form_field_userptr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_userptr.3x; sourceTree = ""; }; + 4CF0884C0FFC2BAF00CE4372 /* form_field_validation.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_field_validation.3x; sourceTree = ""; }; + 4CF0884D0FFC2BAF00CE4372 /* form_fieldtype.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_fieldtype.3x; sourceTree = ""; }; + 4CF0884E0FFC2BAF00CE4372 /* form_hook.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_hook.3x; sourceTree = ""; }; + 4CF0884F0FFC2BAF00CE4372 /* form_new.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_new.3x; sourceTree = ""; }; + 4CF088500FFC2BAF00CE4372 /* form_new_page.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_new_page.3x; sourceTree = ""; }; + 4CF088510FFC2BAF00CE4372 /* form_opts.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_opts.3x; sourceTree = ""; }; + 4CF088520FFC2BAF00CE4372 /* form_page.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_page.3x; sourceTree = ""; }; + 4CF088530FFC2BAF00CE4372 /* form_post.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_post.3x; sourceTree = ""; }; + 4CF088540FFC2BAF00CE4372 /* form_requestname.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_requestname.3x; sourceTree = ""; }; + 4CF088550FFC2BAF00CE4372 /* form_userptr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_userptr.3x; sourceTree = ""; }; + 4CF088560FFC2BAF00CE4372 /* form_win.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form_win.3x; sourceTree = ""; }; + 4CF088570FFC2BAF00CE4372 /* infocmp.1m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = infocmp.1m; sourceTree = ""; }; + 4CF088580FFC2BAF00CE4372 /* infotocap.1m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = infotocap.1m; sourceTree = ""; }; + 4CF088590FFC2BAF00CE4372 /* key_defined.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = key_defined.3x; sourceTree = ""; }; + 4CF0885A0FFC2BAF00CE4372 /* keybound.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = keybound.3x; sourceTree = ""; }; + 4CF0885B0FFC2BAF00CE4372 /* keyok.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = keyok.3x; sourceTree = ""; }; + 4CF0885C0FFC2BAF00CE4372 /* legacy_coding.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = legacy_coding.3x; sourceTree = ""; }; + 4CF0885D0FFC2BAF00CE4372 /* make_sed.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = make_sed.sh; sourceTree = ""; }; + 4CF0885E0FFC2BB100CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF0885F0FFC2BB100CE4372 /* man_db.renames */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = man_db.renames; sourceTree = ""; }; + 4CF088600FFC2BB100CE4372 /* manlinks.sed */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = manlinks.sed; sourceTree = ""; }; + 4CF088610FFC2BB100CE4372 /* menu.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu.3x; sourceTree = ""; }; + 4CF088620FFC2BB100CE4372 /* menu_attributes.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_attributes.3x; sourceTree = ""; }; + 4CF088630FFC2BB100CE4372 /* menu_cursor.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_cursor.3x; sourceTree = ""; }; + 4CF088640FFC2BB100CE4372 /* menu_driver.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_driver.3x; sourceTree = ""; }; + 4CF088650FFC2BB100CE4372 /* menu_format.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_format.3x; sourceTree = ""; }; + 4CF088660FFC2BB100CE4372 /* menu_hook.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_hook.3x; sourceTree = ""; }; + 4CF088670FFC2BB100CE4372 /* menu_items.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_items.3x; sourceTree = ""; }; + 4CF088680FFC2BB100CE4372 /* menu_mark.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_mark.3x; sourceTree = ""; }; + 4CF088690FFC2BB100CE4372 /* menu_new.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_new.3x; sourceTree = ""; }; + 4CF0886A0FFC2BB100CE4372 /* menu_opts.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_opts.3x; sourceTree = ""; }; + 4CF0886B0FFC2BB100CE4372 /* menu_pattern.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_pattern.3x; sourceTree = ""; }; + 4CF0886C0FFC2BB100CE4372 /* menu_post.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_post.3x; sourceTree = ""; }; + 4CF0886D0FFC2BB100CE4372 /* menu_requestname.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_requestname.3x; sourceTree = ""; }; + 4CF0886E0FFC2BB100CE4372 /* menu_spacing.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_spacing.3x; sourceTree = ""; }; + 4CF0886F0FFC2BB100CE4372 /* menu_userptr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_userptr.3x; sourceTree = ""; }; + 4CF088700FFC2BB100CE4372 /* menu_win.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu_win.3x; sourceTree = ""; }; + 4CF088710FFC2BB100CE4372 /* mitem_current.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_current.3x; sourceTree = ""; }; + 4CF088720FFC2BB100CE4372 /* mitem_name.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_name.3x; sourceTree = ""; }; + 4CF088730FFC2BB100CE4372 /* mitem_new.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_new.3x; sourceTree = ""; }; + 4CF088740FFC2BB100CE4372 /* mitem_opts.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_opts.3x; sourceTree = ""; }; + 4CF088750FFC2BB100CE4372 /* mitem_userptr.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_userptr.3x; sourceTree = ""; }; + 4CF088760FFC2BB100CE4372 /* mitem_value.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_value.3x; sourceTree = ""; }; + 4CF088770FFC2BB100CE4372 /* mitem_visible.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mitem_visible.3x; sourceTree = ""; }; + 4CF088780FFC2BB100CE4372 /* MKterminfo.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKterminfo.sh; sourceTree = ""; }; + 4CF088790FFC2BB100CE4372 /* ncurses.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses.3x; sourceTree = ""; }; + 4CF0887A0FFC2BB100CE4372 /* panel.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = panel.3x; sourceTree = ""; }; + 4CF0887B0FFC2BB100CE4372 /* resizeterm.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = resizeterm.3x; sourceTree = ""; }; + 4CF0887C0FFC2BB100CE4372 /* term.5 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = term.5; sourceTree = ""; }; + 4CF0887D0FFC2BB100CE4372 /* term.7 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = term.7; sourceTree = ""; }; + 4CF0887E0FFC2BB100CE4372 /* terminfo.head */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = terminfo.head; sourceTree = ""; }; + 4CF0887F0FFC2BB100CE4372 /* terminfo.tail */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = terminfo.tail; sourceTree = ""; }; + 4CF088800FFC2BB100CE4372 /* tic.1m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = tic.1m; sourceTree = ""; }; + 4CF088810FFC2BB100CE4372 /* toe.1m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = toe.1m; sourceTree = ""; }; + 4CF088820FFC2BB100CE4372 /* tput.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = tput.1; sourceTree = ""; }; + 4CF088830FFC2BB100CE4372 /* tset.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = tset.1; sourceTree = ""; }; + 4CF088840FFC2BB100CE4372 /* wresize.3x */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = wresize.3x; sourceTree = ""; }; + 4CF088850FFC2BB100CE4372 /* MANIFEST */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MANIFEST; sourceTree = ""; }; + 4CF088870FFC2BB100CE4372 /* eti.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eti.h; sourceTree = ""; }; + 4CF088880FFC2BB100CE4372 /* headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = headers; sourceTree = ""; }; + 4CF088890FFC2BB100CE4372 /* llib-lmenu */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lmenu"; sourceTree = ""; }; + 4CF0888A0FFC2BB100CE4372 /* llib-lmenuw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lmenuw"; sourceTree = ""; }; + 4CF0888B0FFC2BB100CE4372 /* m_attribs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_attribs.c; sourceTree = ""; }; + 4CF0888C0FFC2BB100CE4372 /* m_cursor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_cursor.c; sourceTree = ""; }; + 4CF0888D0FFC2BB100CE4372 /* m_driver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_driver.c; sourceTree = ""; }; + 4CF0888E0FFC2BB100CE4372 /* m_format.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_format.c; sourceTree = ""; }; + 4CF0888F0FFC2BB100CE4372 /* m_global.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_global.c; sourceTree = ""; }; + 4CF088900FFC2BB100CE4372 /* m_hook.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_hook.c; sourceTree = ""; }; + 4CF088910FFC2BB100CE4372 /* m_item_cur.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_cur.c; sourceTree = ""; }; + 4CF088920FFC2BB100CE4372 /* m_item_nam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_nam.c; sourceTree = ""; }; + 4CF088930FFC2BB100CE4372 /* m_item_new.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_new.c; sourceTree = ""; }; + 4CF088940FFC2BB100CE4372 /* m_item_opt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_opt.c; sourceTree = ""; }; + 4CF088950FFC2BB100CE4372 /* m_item_top.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_top.c; sourceTree = ""; }; + 4CF088960FFC2BB100CE4372 /* m_item_use.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_use.c; sourceTree = ""; }; + 4CF088970FFC2BB100CE4372 /* m_item_val.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_val.c; sourceTree = ""; }; + 4CF088980FFC2BB100CE4372 /* m_item_vis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_item_vis.c; sourceTree = ""; }; + 4CF088990FFC2BB100CE4372 /* m_items.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_items.c; sourceTree = ""; }; + 4CF0889A0FFC2BB100CE4372 /* m_new.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_new.c; sourceTree = ""; }; + 4CF0889B0FFC2BB100CE4372 /* m_opts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_opts.c; sourceTree = ""; }; + 4CF0889C0FFC2BB100CE4372 /* m_pad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_pad.c; sourceTree = ""; }; + 4CF0889D0FFC2BB100CE4372 /* m_pattern.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_pattern.c; sourceTree = ""; }; + 4CF0889E0FFC2BB100CE4372 /* m_post.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_post.c; sourceTree = ""; }; + 4CF0889F0FFC2BB100CE4372 /* m_req_name.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_req_name.c; sourceTree = ""; }; + 4CF088A00FFC2BB100CE4372 /* m_scale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_scale.c; sourceTree = ""; }; + 4CF088A10FFC2BB100CE4372 /* m_spacing.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_spacing.c; sourceTree = ""; }; + 4CF088A20FFC2BB100CE4372 /* m_sub.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_sub.c; sourceTree = ""; }; + 4CF088A30FFC2BB100CE4372 /* m_trace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_trace.c; sourceTree = ""; }; + 4CF088A40FFC2BB100CE4372 /* m_userptr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_userptr.c; sourceTree = ""; }; + 4CF088A50FFC2BB100CE4372 /* m_win.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = m_win.c; sourceTree = ""; }; + 4CF088A60FFC2BB100CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF088A70FFC2BB100CE4372 /* menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = ""; }; + 4CF088A80FFC2BB100CE4372 /* menu.priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = menu.priv.h; sourceTree = ""; }; + 4CF088A90FFC2BB100CE4372 /* mf_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mf_common.h; sourceTree = ""; }; + 4CF088AA0FFC2BB100CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF088AB0FFC2BB100CE4372 /* READ.ME */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = READ.ME; sourceTree = ""; }; + 4CF088AD0FFC2BB100CE4372 /* chkdef.cmd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = chkdef.cmd; sourceTree = ""; }; + 4CF088AE0FFC2BB100CE4372 /* cleantic.cmd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = cleantic.cmd; sourceTree = ""; }; + 4CF088AF0FFC2BB100CE4372 /* cmpdef.cmd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = cmpdef.cmd; sourceTree = ""; }; + 4CF088B00FFC2BB100CE4372 /* csort */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = csort; sourceTree = ""; }; + 4CF088B10FFC2BB100CE4372 /* emx.src */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emx.src; sourceTree = ""; }; + 4CF088B20FFC2BB100CE4372 /* form.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form.def; sourceTree = ""; }; + 4CF088B30FFC2BB100CE4372 /* form.ref */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = form.ref; sourceTree = ""; }; + 4CF088B40FFC2BB100CE4372 /* gen_edit.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = gen_edit.sh; sourceTree = ""; }; + 4CF088B50FFC2BB100CE4372 /* jpf-indent */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "jpf-indent"; sourceTree = ""; }; + 4CF088B60FFC2BB100CE4372 /* makedef.cmd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = makedef.cmd; sourceTree = ""; }; + 4CF088B70FFC2BB100CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF088B80FFC2BB100CE4372 /* makellib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = makellib; sourceTree = ""; }; + 4CF088B90FFC2BB100CE4372 /* menu.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu.def; sourceTree = ""; }; + 4CF088BA0FFC2BB100CE4372 /* menu.ref */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = menu.ref; sourceTree = ""; }; + 4CF088BB0FFC2BB100CE4372 /* ncu-indent */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "ncu-indent"; sourceTree = ""; }; + 4CF088BC0FFC2BB100CE4372 /* ncurses-config.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "ncurses-config.in"; sourceTree = ""; }; + 4CF088BD0FFC2BB100CE4372 /* ncurses.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses.def; sourceTree = ""; }; + 4CF088BE0FFC2BB100CE4372 /* ncurses.ref */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses.ref; sourceTree = ""; }; + 4CF088BF0FFC2BB100CE4372 /* ncurses.supp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses.supp; sourceTree = ""; }; + 4CF088C00FFC2BB100CE4372 /* panel.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = panel.def; sourceTree = ""; }; + 4CF088C10FFC2BB100CE4372 /* panel.ref */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = panel.ref; sourceTree = ""; }; + 4CF088C20FFC2BB100CE4372 /* run_tic.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = run_tic.in; sourceTree = ""; }; + 4CF088C30FFC2BB100CE4372 /* shlib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = shlib; sourceTree = ""; }; + 4CF088C50FFC2BB100CE4372 /* std */ = {isa = PBXFileReference; lastKnownFileType = file; path = std; sourceTree = ""; }; + 4CF088C60FFC2BB100CE4372 /* stdcrt */ = {isa = PBXFileReference; lastKnownFileType = file; path = stdcrt; sourceTree = ""; }; + 4CF088C70FFC2BB100CE4372 /* vt100 */ = {isa = PBXFileReference; lastKnownFileType = file; path = vt100; sourceTree = ""; }; + 4CF088C80FFC2BB100CE4372 /* vt300 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vt300; sourceTree = ""; }; + 4CF088C90FFC2BB100CE4372 /* tdlint */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = tdlint; sourceTree = ""; }; + 4CF088CA0FFC2BB100CE4372 /* terminfo.src */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = terminfo.src; sourceTree = ""; }; + 4CF088CB0FFC2BB100CE4372 /* mk-0th.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mk-0th.awk"; sourceTree = ""; }; + 4CF088CC0FFC2BB100CE4372 /* mk-1st.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mk-1st.awk"; sourceTree = ""; }; + 4CF088CD0FFC2BB100CE4372 /* mk-2nd.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mk-2nd.awk"; sourceTree = ""; }; + 4CF088CE0FFC2BB100CE4372 /* mk-hdr.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mk-hdr.awk"; sourceTree = ""; }; + 4CF088CF0FFC2BB100CE4372 /* mkdirs.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = mkdirs.sh; sourceTree = ""; }; + 4CF088D20FFC2BB100CE4372 /* define_key.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = define_key.c; sourceTree = ""; }; + 4CF088D30FFC2BB100CE4372 /* key_defined.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = key_defined.c; sourceTree = ""; }; + 4CF088D40FFC2BB100CE4372 /* keybound.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = keybound.c; sourceTree = ""; }; + 4CF088D50FFC2BB100CE4372 /* keyok.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = keyok.c; sourceTree = ""; }; + 4CF088D60FFC2BB100CE4372 /* legacy_coding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = legacy_coding.c; sourceTree = ""; }; + 4CF088D70FFC2BB100CE4372 /* lib_addch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_addch.c; sourceTree = ""; }; + 4CF088D80FFC2BB100CE4372 /* lib_addstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_addstr.c; sourceTree = ""; }; + 4CF088D90FFC2BB100CE4372 /* lib_beep.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_beep.c; sourceTree = ""; }; + 4CF088DA0FFC2BB100CE4372 /* lib_bkgd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_bkgd.c; sourceTree = ""; }; + 4CF088DB0FFC2BB100CE4372 /* lib_box.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_box.c; sourceTree = ""; }; + 4CF088DC0FFC2BB100CE4372 /* lib_chgat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_chgat.c; sourceTree = ""; }; + 4CF088DD0FFC2BB100CE4372 /* lib_clear.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_clear.c; sourceTree = ""; }; + 4CF088DE0FFC2BB100CE4372 /* lib_clearok.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_clearok.c; sourceTree = ""; }; + 4CF088DF0FFC2BB100CE4372 /* lib_clrbot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_clrbot.c; sourceTree = ""; }; + 4CF088E00FFC2BB100CE4372 /* lib_clreol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_clreol.c; sourceTree = ""; }; + 4CF088E10FFC2BB100CE4372 /* lib_color.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_color.c; sourceTree = ""; }; + 4CF088E20FFC2BB100CE4372 /* lib_colorset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_colorset.c; sourceTree = ""; }; + 4CF088E30FFC2BB100CE4372 /* lib_delch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_delch.c; sourceTree = ""; }; + 4CF088E40FFC2BB100CE4372 /* lib_delwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_delwin.c; sourceTree = ""; }; + 4CF088E50FFC2BB100CE4372 /* lib_dft_fgbg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_dft_fgbg.c; sourceTree = ""; }; + 4CF088E60FFC2BB100CE4372 /* lib_echo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_echo.c; sourceTree = ""; }; + 4CF088E70FFC2BB100CE4372 /* lib_endwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_endwin.c; sourceTree = ""; }; + 4CF088E80FFC2BB100CE4372 /* lib_erase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_erase.c; sourceTree = ""; }; + 4CF088E90FFC2BB100CE4372 /* lib_flash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_flash.c; sourceTree = ""; }; + 4CF088EA0FFC2BB100CE4372 /* lib_freeall.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_freeall.c; sourceTree = ""; }; + 4CF088EB0FFC2BB100CE4372 /* lib_getch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_getch.c; sourceTree = ""; }; + 4CF088EC0FFC2BB100CE4372 /* lib_getstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_getstr.c; sourceTree = ""; }; + 4CF088ED0FFC2BB100CE4372 /* lib_hline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_hline.c; sourceTree = ""; }; + 4CF088EE0FFC2BB100CE4372 /* lib_immedok.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_immedok.c; sourceTree = ""; }; + 4CF088EF0FFC2BB100CE4372 /* lib_inchstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_inchstr.c; sourceTree = ""; }; + 4CF088F00FFC2BB100CE4372 /* lib_initscr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_initscr.c; sourceTree = ""; }; + 4CF088F10FFC2BB100CE4372 /* lib_insch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_insch.c; sourceTree = ""; }; + 4CF088F20FFC2BB100CE4372 /* lib_insdel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_insdel.c; sourceTree = ""; }; + 4CF088F30FFC2BB100CE4372 /* lib_insnstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_insnstr.c; sourceTree = ""; }; + 4CF088F40FFC2BB100CE4372 /* lib_instr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_instr.c; sourceTree = ""; }; + 4CF088F50FFC2BB100CE4372 /* lib_isendwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_isendwin.c; sourceTree = ""; }; + 4CF088F60FFC2BB100CE4372 /* lib_leaveok.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_leaveok.c; sourceTree = ""; }; + 4CF088F70FFC2BB100CE4372 /* lib_mouse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_mouse.c; sourceTree = ""; }; + 4CF088F80FFC2BB100CE4372 /* lib_move.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_move.c; sourceTree = ""; }; + 4CF088F90FFC2BB100CE4372 /* lib_mvwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_mvwin.c; sourceTree = ""; }; + 4CF088FA0FFC2BB100CE4372 /* lib_newterm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_newterm.c; sourceTree = ""; }; + 4CF088FB0FFC2BB100CE4372 /* lib_newwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_newwin.c; sourceTree = ""; }; + 4CF088FC0FFC2BB100CE4372 /* lib_nl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_nl.c; sourceTree = ""; }; + 4CF088FD0FFC2BB100CE4372 /* lib_overlay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_overlay.c; sourceTree = ""; }; + 4CF088FE0FFC2BB100CE4372 /* lib_pad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_pad.c; sourceTree = ""; }; + 4CF088FF0FFC2BB100CE4372 /* lib_printw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_printw.c; sourceTree = ""; }; + 4CF089000FFC2BB100CE4372 /* lib_redrawln.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_redrawln.c; sourceTree = ""; }; + 4CF089010FFC2BB100CE4372 /* lib_refresh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_refresh.c; sourceTree = ""; }; + 4CF089020FFC2BB100CE4372 /* lib_restart.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_restart.c; sourceTree = ""; }; + 4CF089030FFC2BB100CE4372 /* lib_scanw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_scanw.c; sourceTree = ""; }; + 4CF089040FFC2BB100CE4372 /* lib_screen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_screen.c; sourceTree = ""; }; + 4CF089050FFC2BB100CE4372 /* lib_scroll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_scroll.c; sourceTree = ""; }; + 4CF089060FFC2BB100CE4372 /* lib_scrollok.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_scrollok.c; sourceTree = ""; }; + 4CF089070FFC2BB100CE4372 /* lib_scrreg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_scrreg.c; sourceTree = ""; }; + 4CF089080FFC2BB100CE4372 /* lib_set_term.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_set_term.c; sourceTree = ""; }; + 4CF089090FFC2BB100CE4372 /* lib_slk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slk.c; sourceTree = ""; }; + 4CF0890A0FFC2BB100CE4372 /* lib_slkatr_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkatr_set.c; sourceTree = ""; }; + 4CF0890B0FFC2BB100CE4372 /* lib_slkatrof.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkatrof.c; sourceTree = ""; }; + 4CF0890C0FFC2BB100CE4372 /* lib_slkatron.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkatron.c; sourceTree = ""; }; + 4CF0890D0FFC2BB100CE4372 /* lib_slkatrset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkatrset.c; sourceTree = ""; }; + 4CF0890E0FFC2BB100CE4372 /* lib_slkattr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkattr.c; sourceTree = ""; }; + 4CF0890F0FFC2BB100CE4372 /* lib_slkclear.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkclear.c; sourceTree = ""; }; + 4CF089100FFC2BB100CE4372 /* lib_slkcolor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkcolor.c; sourceTree = ""; }; + 4CF089110FFC2BB100CE4372 /* lib_slkinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkinit.c; sourceTree = ""; }; + 4CF089120FFC2BB100CE4372 /* lib_slklab.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slklab.c; sourceTree = ""; }; + 4CF089130FFC2BB100CE4372 /* lib_slkrefr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkrefr.c; sourceTree = ""; }; + 4CF089140FFC2BB100CE4372 /* lib_slkset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slkset.c; sourceTree = ""; }; + 4CF089150FFC2BB100CE4372 /* lib_slktouch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slktouch.c; sourceTree = ""; }; + 4CF089160FFC2BB100CE4372 /* lib_touch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_touch.c; sourceTree = ""; }; + 4CF089170FFC2BB100CE4372 /* lib_ungetch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_ungetch.c; sourceTree = ""; }; + 4CF089180FFC2BB100CE4372 /* lib_vline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_vline.c; sourceTree = ""; }; + 4CF089190FFC2BB100CE4372 /* lib_wattroff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_wattroff.c; sourceTree = ""; }; + 4CF0891A0FFC2BB100CE4372 /* lib_wattron.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_wattron.c; sourceTree = ""; }; + 4CF0891B0FFC2BB100CE4372 /* lib_winch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_winch.c; sourceTree = ""; }; + 4CF0891C0FFC2BB100CE4372 /* lib_window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_window.c; sourceTree = ""; }; + 4CF0891D0FFC2BB100CE4372 /* memmove.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = memmove.c; sourceTree = ""; }; + 4CF0891E0FFC2BB100CE4372 /* MKkeyname.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MKkeyname.awk; sourceTree = ""; }; + 4CF0891F0FFC2BB100CE4372 /* MKlib_gen.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKlib_gen.sh; sourceTree = ""; }; + 4CF089200FFC2BB100CE4372 /* MKunctrl.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MKunctrl.awk; sourceTree = ""; }; + 4CF089210FFC2BB100CE4372 /* nc_panel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nc_panel.c; sourceTree = ""; }; + 4CF089220FFC2BB100CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF089230FFC2BB100CE4372 /* resizeterm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resizeterm.c; sourceTree = ""; }; + 4CF089240FFC2BB100CE4372 /* safe_sprintf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = safe_sprintf.c; sourceTree = ""; }; + 4CF089250FFC2BB100CE4372 /* sigaction.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sigaction.c; sourceTree = ""; }; + 4CF089260FFC2BB100CE4372 /* tries.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tries.c; sourceTree = ""; }; + 4CF089270FFC2BB100CE4372 /* use_window.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = use_window.c; sourceTree = ""; }; + 4CF089280FFC2BB100CE4372 /* version.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = version.c; sourceTree = ""; }; + 4CF089290FFC2BB100CE4372 /* vsscanf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vsscanf.c; sourceTree = ""; }; + 4CF0892A0FFC2BB100CE4372 /* wresize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wresize.c; sourceTree = ""; }; + 4CF0892B0FFC2BB200CE4372 /* curses.priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = curses.priv.h; sourceTree = ""; }; + 4CF0892C0FFC2BB200CE4372 /* fifo_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fifo_defs.h; sourceTree = ""; }; + 4CF0892D0FFC2BB200CE4372 /* llib-lncurses */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lncurses"; sourceTree = ""; }; + 4CF0892E0FFC2BB200CE4372 /* llib-lncursest */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lncursest"; sourceTree = ""; }; + 4CF0892F0FFC2BB200CE4372 /* llib-lncursesw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lncursesw"; sourceTree = ""; }; + 4CF089300FFC2BB200CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF089310FFC2BB200CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF089320FFC2BB200CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF089330FFC2BB200CE4372 /* README.IZ */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.IZ; sourceTree = ""; }; + 4CF089340FFC2BB200CE4372 /* SigAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SigAction.h; sourceTree = ""; }; + 4CF089360FFC2BB200CE4372 /* access.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = access.c; sourceTree = ""; }; + 4CF089370FFC2BB200CE4372 /* add_tries.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = add_tries.c; sourceTree = ""; }; + 4CF089380FFC2BB200CE4372 /* alloc_entry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alloc_entry.c; sourceTree = ""; }; + 4CF089390FFC2BB200CE4372 /* alloc_ttype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alloc_ttype.c; sourceTree = ""; }; + 4CF0893A0FFC2BB200CE4372 /* captoinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = captoinfo.c; sourceTree = ""; }; + 4CF0893B0FFC2BB200CE4372 /* comp_error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = comp_error.c; sourceTree = ""; }; + 4CF0893C0FFC2BB200CE4372 /* comp_expand.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = comp_expand.c; sourceTree = ""; }; + 4CF0893D0FFC2BB200CE4372 /* comp_hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = comp_hash.c; sourceTree = ""; }; + 4CF0893E0FFC2BB200CE4372 /* comp_parse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = comp_parse.c; sourceTree = ""; }; + 4CF0893F0FFC2BB200CE4372 /* comp_scan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = comp_scan.c; sourceTree = ""; }; + 4CF089400FFC2BB200CE4372 /* db_iterator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = db_iterator.c; sourceTree = ""; }; + 4CF089410FFC2BB200CE4372 /* doalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = doalloc.c; sourceTree = ""; }; + 4CF089420FFC2BB200CE4372 /* entries.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = entries.c; sourceTree = ""; }; + 4CF089430FFC2BB200CE4372 /* free_ttype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = free_ttype.c; sourceTree = ""; }; + 4CF089440FFC2BB200CE4372 /* getenv_num.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = getenv_num.c; sourceTree = ""; }; + 4CF089450FFC2BB200CE4372 /* hashed_db.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashed_db.c; sourceTree = ""; }; + 4CF089460FFC2BB200CE4372 /* home_terminfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = home_terminfo.c; sourceTree = ""; }; + 4CF089470FFC2BB200CE4372 /* init_keytry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = init_keytry.c; sourceTree = ""; }; + 4CF089480FFC2BB200CE4372 /* lib_acs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_acs.c; sourceTree = ""; }; + 4CF089490FFC2BB200CE4372 /* lib_baudrate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_baudrate.c; sourceTree = ""; }; + 4CF0894A0FFC2BB200CE4372 /* lib_cur_term.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_cur_term.c; sourceTree = ""; }; + 4CF0894B0FFC2BB200CE4372 /* lib_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_data.c; sourceTree = ""; }; + 4CF0894C0FFC2BB200CE4372 /* lib_has_cap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_has_cap.c; sourceTree = ""; }; + 4CF0894D0FFC2BB200CE4372 /* lib_kernel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_kernel.c; sourceTree = ""; }; + 4CF0894E0FFC2BB200CE4372 /* lib_longname.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_longname.c; sourceTree = ""; }; + 4CF0894F0FFC2BB200CE4372 /* lib_napms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_napms.c; sourceTree = ""; }; + 4CF089500FFC2BB200CE4372 /* lib_options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_options.c; sourceTree = ""; }; + 4CF089510FFC2BB200CE4372 /* lib_print.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_print.c; sourceTree = ""; }; + 4CF089520FFC2BB200CE4372 /* lib_raw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_raw.c; sourceTree = ""; }; + 4CF089530FFC2BB200CE4372 /* lib_setup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_setup.c; sourceTree = ""; }; + 4CF089540FFC2BB200CE4372 /* lib_termcap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_termcap.c; sourceTree = ""; }; + 4CF089550FFC2BB200CE4372 /* lib_termname.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_termname.c; sourceTree = ""; }; + 4CF089560FFC2BB200CE4372 /* lib_tgoto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tgoto.c; sourceTree = ""; }; + 4CF089570FFC2BB200CE4372 /* lib_ti.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_ti.c; sourceTree = ""; }; + 4CF089580FFC2BB200CE4372 /* lib_tparm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tparm.c; sourceTree = ""; }; + 4CF089590FFC2BB200CE4372 /* lib_tputs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tputs.c; sourceTree = ""; }; + 4CF0895A0FFC2BB200CE4372 /* lib_ttyflags.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_ttyflags.c; sourceTree = ""; }; + 4CF0895B0FFC2BB200CE4372 /* make_keys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = make_keys.c; sourceTree = ""; }; + 4CF0895C0FFC2BB200CE4372 /* MKcaptab.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MKcaptab.awk; sourceTree = ""; }; + 4CF0895D0FFC2BB200CE4372 /* MKcaptab.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKcaptab.sh; sourceTree = ""; }; + 4CF0895E0FFC2BB200CE4372 /* MKcodes.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MKcodes.awk; sourceTree = ""; }; + 4CF0895F0FFC2BB200CE4372 /* MKfallback.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKfallback.sh; sourceTree = ""; }; + 4CF089600FFC2BB200CE4372 /* MKkeys_list.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKkeys_list.sh; sourceTree = ""; }; + 4CF089610FFC2BB200CE4372 /* MKnames.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MKnames.awk; sourceTree = ""; }; + 4CF089620FFC2BB200CE4372 /* name_match.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = name_match.c; sourceTree = ""; }; + 4CF089630FFC2BB200CE4372 /* parse_entry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = parse_entry.c; sourceTree = ""; }; + 4CF089640FFC2BB200CE4372 /* read_entry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = read_entry.c; sourceTree = ""; }; + 4CF089650FFC2BB200CE4372 /* read_termcap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = read_termcap.c; sourceTree = ""; }; + 4CF089660FFC2BB200CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF089670FFC2BB200CE4372 /* setbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = setbuf.c; sourceTree = ""; }; + 4CF089680FFC2BB200CE4372 /* strings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = strings.c; sourceTree = ""; }; + 4CF089690FFC2BB200CE4372 /* trim_sgr0.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trim_sgr0.c; sourceTree = ""; }; + 4CF0896A0FFC2BB200CE4372 /* use_screen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = use_screen.c; sourceTree = ""; }; + 4CF0896B0FFC2BB200CE4372 /* write_entry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = write_entry.c; sourceTree = ""; }; + 4CF0896D0FFC2BB200CE4372 /* lib_trace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_trace.c; sourceTree = ""; }; + 4CF0896E0FFC2BB200CE4372 /* lib_traceatr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_traceatr.c; sourceTree = ""; }; + 4CF0896F0FFC2BB200CE4372 /* lib_tracebits.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tracebits.c; sourceTree = ""; }; + 4CF089700FFC2BB200CE4372 /* lib_tracechr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tracechr.c; sourceTree = ""; }; + 4CF089710FFC2BB200CE4372 /* lib_tracedmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tracedmp.c; sourceTree = ""; }; + 4CF089720FFC2BB200CE4372 /* lib_tracemse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tracemse.c; sourceTree = ""; }; + 4CF089730FFC2BB200CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF089740FFC2BB200CE4372 /* trace_buf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trace_buf.c; sourceTree = ""; }; + 4CF089750FFC2BB200CE4372 /* trace_tries.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trace_tries.c; sourceTree = ""; }; + 4CF089760FFC2BB200CE4372 /* trace_xnames.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trace_xnames.c; sourceTree = ""; }; + 4CF089770FFC2BB200CE4372 /* varargs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = varargs.c; sourceTree = ""; }; + 4CF089780FFC2BB200CE4372 /* visbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = visbuf.c; sourceTree = ""; }; + 4CF0897A0FFC2BB200CE4372 /* hardscroll.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hardscroll.c; sourceTree = ""; }; + 4CF0897B0FFC2BB200CE4372 /* hashmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashmap.c; sourceTree = ""; }; + 4CF0897C0FFC2BB200CE4372 /* lib_mvcur.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_mvcur.c; sourceTree = ""; }; + 4CF0897D0FFC2BB200CE4372 /* lib_tstp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_tstp.c; sourceTree = ""; }; + 4CF0897E0FFC2BB200CE4372 /* lib_twait.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_twait.c; sourceTree = ""; }; + 4CF0897F0FFC2BB200CE4372 /* lib_vidattr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_vidattr.c; sourceTree = ""; }; + 4CF089800FFC2BB200CE4372 /* MKexpanded.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKexpanded.sh; sourceTree = ""; }; + 4CF089810FFC2BB200CE4372 /* tty_display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tty_display.h; sourceTree = ""; }; + 4CF089820FFC2BB200CE4372 /* tty_input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tty_input.h; sourceTree = ""; }; + 4CF089830FFC2BB200CE4372 /* tty_update.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tty_update.c; sourceTree = ""; }; + 4CF089850FFC2BB200CE4372 /* charable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = charable.c; sourceTree = ""; }; + 4CF089860FFC2BB200CE4372 /* lib_add_wch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_add_wch.c; sourceTree = ""; }; + 4CF089870FFC2BB200CE4372 /* lib_box_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_box_set.c; sourceTree = ""; }; + 4CF089880FFC2BB200CE4372 /* lib_cchar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_cchar.c; sourceTree = ""; }; + 4CF089890FFC2BB200CE4372 /* lib_erasewchar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_erasewchar.c; sourceTree = ""; }; + 4CF0898A0FFC2BB200CE4372 /* lib_get_wch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_get_wch.c; sourceTree = ""; }; + 4CF0898B0FFC2BB200CE4372 /* lib_get_wstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_get_wstr.c; sourceTree = ""; }; + 4CF0898C0FFC2BB200CE4372 /* lib_hline_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_hline_set.c; sourceTree = ""; }; + 4CF0898D0FFC2BB200CE4372 /* lib_in_wch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_in_wch.c; sourceTree = ""; }; + 4CF0898E0FFC2BB200CE4372 /* lib_in_wchnstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_in_wchnstr.c; sourceTree = ""; }; + 4CF0898F0FFC2BB200CE4372 /* lib_ins_wch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_ins_wch.c; sourceTree = ""; }; + 4CF089900FFC2BB200CE4372 /* lib_inwstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_inwstr.c; sourceTree = ""; }; + 4CF089910FFC2BB200CE4372 /* lib_key_name.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_key_name.c; sourceTree = ""; }; + 4CF089920FFC2BB200CE4372 /* lib_pecho_wchar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_pecho_wchar.c; sourceTree = ""; }; + 4CF089930FFC2BB200CE4372 /* lib_slk_wset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_slk_wset.c; sourceTree = ""; }; + 4CF089940FFC2BB200CE4372 /* lib_unget_wch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_unget_wch.c; sourceTree = ""; }; + 4CF089950FFC2BB200CE4372 /* lib_vid_attr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_vid_attr.c; sourceTree = ""; }; + 4CF089960FFC2BB200CE4372 /* lib_vline_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_vline_set.c; sourceTree = ""; }; + 4CF089970FFC2BB200CE4372 /* lib_wacs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_wacs.c; sourceTree = ""; }; + 4CF089980FFC2BB200CE4372 /* lib_wunctrl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lib_wunctrl.c; sourceTree = ""; }; + 4CF089990FFC2BB200CE4372 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NEWS; sourceTree = ""; }; + 4CF0899B0FFC2BB200CE4372 /* headers */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = headers; sourceTree = ""; }; + 4CF0899C0FFC2BB200CE4372 /* llib-lpanel */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lpanel"; sourceTree = ""; }; + 4CF0899D0FFC2BB200CE4372 /* llib-lpanelw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "llib-lpanelw"; sourceTree = ""; }; + 4CF0899E0FFC2BB200CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF0899F0FFC2BB200CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF089A00FFC2BB200CE4372 /* p_above.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_above.c; sourceTree = ""; }; + 4CF089A10FFC2BB200CE4372 /* p_below.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_below.c; sourceTree = ""; }; + 4CF089A20FFC2BB200CE4372 /* p_bottom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_bottom.c; sourceTree = ""; }; + 4CF089A30FFC2BB200CE4372 /* p_delete.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_delete.c; sourceTree = ""; }; + 4CF089A40FFC2BB200CE4372 /* p_hidden.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_hidden.c; sourceTree = ""; }; + 4CF089A50FFC2BB200CE4372 /* p_hide.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_hide.c; sourceTree = ""; }; + 4CF089A60FFC2BB200CE4372 /* p_move.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_move.c; sourceTree = ""; }; + 4CF089A70FFC2BB200CE4372 /* p_new.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_new.c; sourceTree = ""; }; + 4CF089A80FFC2BB200CE4372 /* p_replace.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_replace.c; sourceTree = ""; }; + 4CF089A90FFC2BB200CE4372 /* p_show.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_show.c; sourceTree = ""; }; + 4CF089AA0FFC2BB200CE4372 /* p_top.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_top.c; sourceTree = ""; }; + 4CF089AB0FFC2BB200CE4372 /* p_update.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_update.c; sourceTree = ""; }; + 4CF089AC0FFC2BB200CE4372 /* p_user.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_user.c; sourceTree = ""; }; + 4CF089AD0FFC2BB200CE4372 /* p_win.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = p_win.c; sourceTree = ""; }; + 4CF089AE0FFC2BB200CE4372 /* panel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = panel.c; sourceTree = ""; }; + 4CF089AF0FFC2BB200CE4372 /* panel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = panel.h; sourceTree = ""; }; + 4CF089B00FFC2BB200CE4372 /* panel.priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = panel.priv.h; sourceTree = ""; }; + 4CF089B20FFC2BB200CE4372 /* capconvert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = capconvert; sourceTree = ""; }; + 4CF089B30FFC2BB200CE4372 /* clear.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = clear.c; sourceTree = ""; }; + 4CF089B40FFC2BB200CE4372 /* clear.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = clear.sh; sourceTree = ""; }; + 4CF089B50FFC2BB200CE4372 /* dump_entry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dump_entry.c; sourceTree = ""; }; + 4CF089B60FFC2BB200CE4372 /* dump_entry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dump_entry.h; sourceTree = ""; }; + 4CF089B70FFC2BB200CE4372 /* infocmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = infocmp.c; sourceTree = ""; }; + 4CF089B80FFC2BB200CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF089B90FFC2BB200CE4372 /* MKtermsort.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = MKtermsort.sh; sourceTree = ""; }; + 4CF089BA0FFC2BB200CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF089BB0FFC2BB200CE4372 /* progs.priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = progs.priv.h; sourceTree = ""; }; + 4CF089BC0FFC2BB200CE4372 /* tic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tic.c; sourceTree = ""; }; + 4CF089BD0FFC2BB200CE4372 /* toe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = toe.c; sourceTree = ""; }; + 4CF089BE0FFC2BB200CE4372 /* tput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tput.c; sourceTree = ""; }; + 4CF089BF0FFC2BB200CE4372 /* tset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tset.c; sourceTree = ""; }; + 4CF089C00FFC2BB200CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF089C10FFC2BB200CE4372 /* README.emx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.emx; sourceTree = ""; }; + 4CF089C20FFC2BB200CE4372 /* tar-copy.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "tar-copy.sh"; sourceTree = ""; }; + 4CF089C40FFC2BB200CE4372 /* aclocal.m4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aclocal.m4; sourceTree = ""; }; + 4CF089C50FFC2BB200CE4372 /* background.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = background.c; sourceTree = ""; }; + 4CF089C60FFC2BB200CE4372 /* blue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = blue.c; sourceTree = ""; }; + 4CF089C70FFC2BB200CE4372 /* bs.6 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bs.6; sourceTree = ""; }; + 4CF089C80FFC2BB200CE4372 /* bs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bs.c; sourceTree = ""; }; + 4CF089C90FFC2BB200CE4372 /* bulgarian-utf8.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "bulgarian-utf8.txt"; sourceTree = ""; }; + 4CF089CA0FFC2BB300CE4372 /* cardfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cardfile.c; sourceTree = ""; }; + 4CF089CB0FFC2BB300CE4372 /* cardfile.dat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = cardfile.dat; sourceTree = ""; }; + 4CF089CC0FFC2BB300CE4372 /* chgat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chgat.c; sourceTree = ""; }; + 4CF089CD0FFC2BB300CE4372 /* color_set.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = color_set.c; sourceTree = ""; }; + 4CF089CE0FFC2BB300CE4372 /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; + 4CF089CF0FFC2BB300CE4372 /* configure.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = configure.in; sourceTree = ""; }; + 4CF089D00FFC2BB300CE4372 /* demo_altkeys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_altkeys.c; sourceTree = ""; }; + 4CF089D10FFC2BB300CE4372 /* demo_defkey.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_defkey.c; sourceTree = ""; }; + 4CF089D20FFC2BB300CE4372 /* demo_forms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_forms.c; sourceTree = ""; }; + 4CF089D30FFC2BB300CE4372 /* demo_keyok.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_keyok.c; sourceTree = ""; }; + 4CF089D40FFC2BB300CE4372 /* demo_menus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_menus.c; sourceTree = ""; }; + 4CF089D50FFC2BB300CE4372 /* demo_panels.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_panels.c; sourceTree = ""; }; + 4CF089D60FFC2BB300CE4372 /* demo_termcap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = demo_termcap.c; sourceTree = ""; }; + 4CF089D70FFC2BB300CE4372 /* ditto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ditto.c; sourceTree = ""; }; + 4CF089D80FFC2BB300CE4372 /* dots.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dots.c; sourceTree = ""; }; + 4CF089D90FFC2BB300CE4372 /* dots_mvcur.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dots_mvcur.c; sourceTree = ""; }; + 4CF089DA0FFC2BB300CE4372 /* echochar.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = echochar.c; sourceTree = ""; }; + 4CF089DB0FFC2BB300CE4372 /* edit_field.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = edit_field.c; sourceTree = ""; }; + 4CF089DC0FFC2BB300CE4372 /* edit_field.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = edit_field.h; sourceTree = ""; }; + 4CF089DD0FFC2BB300CE4372 /* filter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = filter.c; sourceTree = ""; }; + 4CF089DE0FFC2BB300CE4372 /* firework.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = firework.c; sourceTree = ""; }; + 4CF089DF0FFC2BB300CE4372 /* firstlast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = firstlast.c; sourceTree = ""; }; + 4CF089E00FFC2BB300CE4372 /* foldkeys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = foldkeys.c; sourceTree = ""; }; + 4CF089E10FFC2BB300CE4372 /* gdc.6 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gdc.6; sourceTree = ""; }; + 4CF089E20FFC2BB300CE4372 /* gdc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gdc.c; sourceTree = ""; }; + 4CF089E30FFC2BB300CE4372 /* hanoi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hanoi.c; sourceTree = ""; }; + 4CF089E40FFC2BB300CE4372 /* hashtest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hashtest.c; sourceTree = ""; }; + 4CF089E50FFC2BB300CE4372 /* inch_wide.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inch_wide.c; sourceTree = ""; }; + 4CF089E60FFC2BB300CE4372 /* inchs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inchs.c; sourceTree = ""; }; + 4CF089E70FFC2BB300CE4372 /* ins_wide.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ins_wide.c; sourceTree = ""; }; + 4CF089E80FFC2BB300CE4372 /* inserts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inserts.c; sourceTree = ""; }; + 4CF089E90FFC2BB300CE4372 /* key_names.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = key_names.c; sourceTree = ""; }; + 4CF089EA0FFC2BB300CE4372 /* keynames.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = keynames.c; sourceTree = ""; }; + 4CF089EB0FFC2BB300CE4372 /* knight.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = knight.c; sourceTree = ""; }; + 4CF089EC0FFC2BB300CE4372 /* linux-color.dat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linux-color.dat"; sourceTree = ""; }; + 4CF089ED0FFC2BB300CE4372 /* listused.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = listused.sh; sourceTree = ""; }; + 4CF089EE0FFC2BB300CE4372 /* lrtest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lrtest.c; sourceTree = ""; }; + 4CF089EF0FFC2BB300CE4372 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; + 4CF089F00FFC2BB300CE4372 /* mk-test.awk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mk-test.awk"; sourceTree = ""; }; + 4CF089F10FFC2BB300CE4372 /* modules */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modules; sourceTree = ""; }; + 4CF089F20FFC2BB300CE4372 /* movewindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = movewindow.c; sourceTree = ""; }; + 4CF089F30FFC2BB300CE4372 /* ncurses.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ncurses.c; sourceTree = ""; }; + 4CF089F40FFC2BB300CE4372 /* ncurses_tst.hin */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ncurses_tst.hin; sourceTree = ""; }; + 4CF089F50FFC2BB300CE4372 /* newdemo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = newdemo.c; sourceTree = ""; }; + 4CF089F60FFC2BB300CE4372 /* programs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = programs; sourceTree = ""; }; + 4CF089F70FFC2BB300CE4372 /* railroad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = railroad.c; sourceTree = ""; }; + 4CF089F80FFC2BB300CE4372 /* rain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rain.c; sourceTree = ""; }; + 4CF089F90FFC2BB300CE4372 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; + 4CF089FA0FFC2BB300CE4372 /* redraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = redraw.c; sourceTree = ""; }; + 4CF089FB0FFC2BB300CE4372 /* savescreen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = savescreen.c; sourceTree = ""; }; + 4CF089FC0FFC2BB300CE4372 /* savescreen.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = savescreen.sh; sourceTree = ""; }; + 4CF089FD0FFC2BB300CE4372 /* tclock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tclock.c; sourceTree = ""; }; + 4CF089FE0FFC2BB300CE4372 /* test.priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = test.priv.h; sourceTree = ""; }; + 4CF089FF0FFC2BB300CE4372 /* test_arrays.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_arrays.c; sourceTree = ""; }; + 4CF08A000FFC2BB300CE4372 /* test_get_wstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_get_wstr.c; sourceTree = ""; }; + 4CF08A010FFC2BB300CE4372 /* test_getstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_getstr.c; sourceTree = ""; }; + 4CF08A020FFC2BB300CE4372 /* test_instr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_instr.c; sourceTree = ""; }; + 4CF08A030FFC2BB300CE4372 /* test_inwstr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_inwstr.c; sourceTree = ""; }; + 4CF08A040FFC2BB300CE4372 /* test_opaque.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = test_opaque.c; sourceTree = ""; }; + 4CF08A050FFC2BB300CE4372 /* testaddch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testaddch.c; sourceTree = ""; }; + 4CF08A060FFC2BB300CE4372 /* testcurs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testcurs.c; sourceTree = ""; }; + 4CF08A070FFC2BB300CE4372 /* testscanw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testscanw.c; sourceTree = ""; }; + 4CF08A080FFC2BB300CE4372 /* tracemunch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = tracemunch; sourceTree = ""; }; + 4CF08A090FFC2BB300CE4372 /* view.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = view.c; sourceTree = ""; }; + 4CF08A0A0FFC2BB300CE4372 /* widechars-utf8.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "widechars-utf8.txt"; sourceTree = ""; }; + 4CF08A0B0FFC2BB300CE4372 /* worm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = worm.c; sourceTree = ""; }; + 4CF08A0C0FFC2BB300CE4372 /* xmas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xmas.c; sourceTree = ""; }; + 4CF08A0D0FFC2BB300CE4372 /* xterm-16color.dat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xterm-16color.dat"; sourceTree = ""; }; + 4CF08A0E0FFC2BB300CE4372 /* xterm-88color.dat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "xterm-88color.dat"; sourceTree = ""; }; + 4CF08A0F0FFC2BB300CE4372 /* TO-DO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "TO-DO"; sourceTree = ""; }; + 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = libraries.xcconfig; path = xcodeconfig/libraries.xcconfig; sourceTree = ""; }; + 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = executables.xcconfig; path = xcodeconfig/executables.xcconfig; sourceTree = ""; }; + 81AAC2EF185E8D3F00B94A94 /* base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = base.xcconfig; path = xcodeconfig/base.xcconfig; sourceTree = ""; }; + FCD5D3E114E4A8F400752D20 /* init_keytry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = init_keytry.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/init_keytry.h"; sourceTree = ""; }; + FCD5D3E214E4A8F400752D20 /* parametrized.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parametrized.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/parametrized.h"; sourceTree = ""; }; + FCD5D40714E516EC00752D20 /* curses.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = curses.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/curses.h"; sourceTree = ""; }; + FCD5D40814E516EC00752D20 /* hashsize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = hashsize.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/hashsize.h"; sourceTree = ""; }; + FCD5D40914E516EC00752D20 /* ncurses_def.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ncurses_def.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/ncurses_def.h"; sourceTree = ""; }; + FCD5D40A14E516EC00752D20 /* term.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = term.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/term.h"; sourceTree = ""; }; + FCD5D40B14E516EC00752D20 /* termsort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = termsort.c; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/termsort.c"; sourceTree = ""; }; + FCD5D40C14E516EC00752D20 /* transform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = transform.h; path = "../../../Library/Developer/Xcode/DerivedData/ncurses-bpduobhbsbacipgyzlrmhydlmust/Build/Products/Release/transform.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3FB35B96206F82580097BE22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3FB35B98206F82620097BE22 /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3FB35B99206F826A0097BE22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3FB35B9A206F82710097BE22 /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3FB35B9B206F828F0097BE22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3FB35B9C206F82950097BE22 /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3FB35B9D206F82990097BE22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3FB35B9E206F829F0097BE22 /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3FB35B9F206F82A30097BE22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3FB35BA0206F82A70097BE22 /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3FB35BA1206F82AC0097BE22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3FB35BA2206F82B10097BE22 /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD04FFD103F1BEB001C87D5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C00665A103F5982008F286F /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD05101103F1BFD001C87D5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C00665C103F59B5008F286F /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD05205103F1C12001C87D5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C00665B103F598D008F286F /* libncurses.5.4.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FCD5D3E314E4AD7000752D20 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* ncurses */ = { + isa = PBXGroup; + children = ( + 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */, + 81AAC2EF185E8D3F00B94A94 /* base.xcconfig */, + 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */, + 4CF085EF0FFC2BA700CE4372 /* ncurses */, + 4CC76F6B1027919500C87ED0 /* Open Source */, + FCD5D3E014E4A88D00752D20 /* Derived Sources */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + 3FB35B97206F82620097BE22 /* Frameworks */, + ); + name = ncurses; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 4C609E3410163B4500971540 /* make_keys */, + 4C29FA671020E62B001D8279 /* clear */, + 4C29FA791020E959001D8279 /* infocmp */, + 4C29FA871020EB4A001D8279 /* tput */, + 4C29FA901020EB4E001D8279 /* tset */, + 4C29FA991020EB52001D8279 /* toe */, + 4C29FAA91020EBED001D8279 /* tic */, + 4C29FBBA10223559001D8279 /* make_hash */, + 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */, + 4CE980911034D62D00BA0D88 /* tic_static */, + 4CD05000103F1BEB001C87D5 /* libform.5.4.dylib */, + 4CD05104103F1BFD001C87D5 /* libmenu.5.4.dylib */, + 4CD05208103F1C12001C87D5 /* libpanel.5.4.dylib */, + ); + name = Products; + sourceTree = ""; + }; + 3FB35B97206F82620097BE22 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 4CC76F6B1027919500C87ED0 /* Open Source */ = { + isa = PBXGroup; + children = ( + 4CC76F6C102791C300C87ED0 /* ncurses.plist */, + 4CC76F6D102791C300C87ED0 /* ncurses.txt */, + ); + name = "Open Source"; + sourceTree = ""; + }; + 4CF085EF0FFC2BA700CE4372 /* ncurses */ = { + isa = PBXGroup; + children = ( + 4CF085F00FFC2BA900CE4372 /* aclocal.m4 */, + 4CF085F10FFC2BA900CE4372 /* Ada95 */, + 4CF0869B0FFC2BAA00CE4372 /* ANNOUNCE */, + 4CF0869C0FFC2BAA00CE4372 /* announce.html.in */, + 4CF0869D0FFC2BAA00CE4372 /* AUTHORS */, + 4CF0869E0FFC2BAA00CE4372 /* c++ */, + 4CF086B70FFC2BAA00CE4372 /* config.guess */, + 4CF086B80FFC2BAA00CE4372 /* config.sub */, + 4CF086B90FFC2BAA00CE4372 /* configure */, + 4CF086BA0FFC2BAA00CE4372 /* configure.in */, + 4CF086BC0FFC2BAB00CE4372 /* convert_configure.pl */, + 4CF086BD0FFC2BAB00CE4372 /* dist.mk */, + 4CF086BE0FFC2BAB00CE4372 /* doc */, + 4CF087AD0FFC2BAE00CE4372 /* form */, + 4CF087DE0FFC2BAE00CE4372 /* include */, + 4CF087FC0FFC2BAE00CE4372 /* INSTALL */, + 4CF087FD0FFC2BAE00CE4372 /* install-sh */, + 4CF087FE0FFC2BAE00CE4372 /* Makefile.in */, + 4CF087FF0FFC2BAE00CE4372 /* Makefile.os2 */, + 4CF088000FFC2BAE00CE4372 /* man */, + 4CF088850FFC2BB100CE4372 /* MANIFEST */, + 4CF088860FFC2BB100CE4372 /* menu */, + 4CF088AC0FFC2BB100CE4372 /* misc */, + 4CF088CB0FFC2BB100CE4372 /* mk-0th.awk */, + 4CF088CC0FFC2BB100CE4372 /* mk-1st.awk */, + 4CF088CD0FFC2BB100CE4372 /* mk-2nd.awk */, + 4CF088CE0FFC2BB100CE4372 /* mk-hdr.awk */, + 4CF088CF0FFC2BB100CE4372 /* mkdirs.sh */, + 4CF088D00FFC2BB100CE4372 /* ncurses */, + 4CF089990FFC2BB200CE4372 /* NEWS */, + 4CF0899A0FFC2BB200CE4372 /* panel */, + 4CF089B10FFC2BB200CE4372 /* progs */, + 4CF089C00FFC2BB200CE4372 /* README */, + 4CF089C10FFC2BB200CE4372 /* README.emx */, + 4CF089C20FFC2BB200CE4372 /* tar-copy.sh */, + 4CF089C30FFC2BB200CE4372 /* test */, + 4CF08A0F0FFC2BB300CE4372 /* TO-DO */, + ); + path = ncurses; + sourceTree = ""; + }; + 4CF085F10FFC2BA900CE4372 /* Ada95 */ = { + isa = PBXGroup; + children = ( + 4CF085F20FFC2BA900CE4372 /* gen */, + 4CF086070FFC2BAA00CE4372 /* Makefile.in */, + 4CF086080FFC2BAA00CE4372 /* README */, + 4CF086090FFC2BAA00CE4372 /* samples */, + 4CF0865F0FFC2BAA00CE4372 /* src */, + 4CF0869A0FFC2BAA00CE4372 /* TODO */, + ); + path = Ada95; + sourceTree = ""; + }; + 4CF085F20FFC2BA900CE4372 /* gen */ = { + isa = PBXGroup; + children = ( + 4CF085F30FFC2BA900CE4372 /* adacurses-config.in */, + 4CF085F40FFC2BA900CE4372 /* gen.c */, + 4CF085F50FFC2BA900CE4372 /* html.m4 */, + 4CF085F60FFC2BAA00CE4372 /* Makefile.in */, + 4CF085F70FFC2BAA00CE4372 /* normal.m4 */, + 4CF085F80FFC2BAA00CE4372 /* table.m4 */, + 4CF085F90FFC2BAA00CE4372 /* terminal_interface-curses-aux.ads.m4 */, + 4CF085FA0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types.ads.m4 */, + 4CF085FB0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_user_data.ads.m4 */, + 4CF085FC0FFC2BAA00CE4372 /* terminal_interface-curses-forms-form_user_data.ads.m4 */, + 4CF085FD0FFC2BAA00CE4372 /* terminal_interface-curses-forms.ads.m4 */, + 4CF085FE0FFC2BAA00CE4372 /* terminal_interface-curses-menus-item_user_data.ads.m4 */, + 4CF085FF0FFC2BAA00CE4372 /* terminal_interface-curses-menus-menu_user_data.ads.m4 */, + 4CF086000FFC2BAA00CE4372 /* terminal_interface-curses-menus.ads.m4 */, + 4CF086010FFC2BAA00CE4372 /* terminal_interface-curses-mouse.ads.m4 */, + 4CF086020FFC2BAA00CE4372 /* terminal_interface-curses-panels-user_data.ads.m4 */, + 4CF086030FFC2BAA00CE4372 /* terminal_interface-curses-panels.ads.m4 */, + 4CF086040FFC2BAA00CE4372 /* terminal_interface-curses-trace.ads.m4 */, + 4CF086050FFC2BAA00CE4372 /* terminal_interface-curses.adb.m4 */, + 4CF086060FFC2BAA00CE4372 /* terminal_interface-curses.ads.m4 */, + ); + path = gen; + sourceTree = ""; + }; + 4CF086090FFC2BAA00CE4372 /* samples */ = { + isa = PBXGroup; + children = ( + 4CF0860A0FFC2BAA00CE4372 /* explain.txt */, + 4CF0860B0FFC2BAA00CE4372 /* Makefile.in */, + 4CF0860C0FFC2BAA00CE4372 /* ncurses.adb */, + 4CF0860D0FFC2BAA00CE4372 /* ncurses2-acs_and_scroll.adb */, + 4CF0860E0FFC2BAA00CE4372 /* ncurses2-acs_and_scroll.ads */, + 4CF0860F0FFC2BAA00CE4372 /* ncurses2-acs_display.adb */, + 4CF086100FFC2BAA00CE4372 /* ncurses2-acs_display.ads */, + 4CF086110FFC2BAA00CE4372 /* ncurses2-attr_test.adb */, + 4CF086120FFC2BAA00CE4372 /* ncurses2-attr_test.ads */, + 4CF086130FFC2BAA00CE4372 /* ncurses2-color_edit.adb */, + 4CF086140FFC2BAA00CE4372 /* ncurses2-color_edit.ads */, + 4CF086150FFC2BAA00CE4372 /* ncurses2-color_test.adb */, + 4CF086160FFC2BAA00CE4372 /* ncurses2-color_test.ads */, + 4CF086170FFC2BAA00CE4372 /* ncurses2-demo_forms.adb */, + 4CF086180FFC2BAA00CE4372 /* ncurses2-demo_forms.ads */, + 4CF086190FFC2BAA00CE4372 /* ncurses2-demo_pad.adb */, + 4CF0861A0FFC2BAA00CE4372 /* ncurses2-demo_pad.ads */, + 4CF0861B0FFC2BAA00CE4372 /* ncurses2-demo_panels.adb */, + 4CF0861C0FFC2BAA00CE4372 /* ncurses2-demo_panels.ads */, + 4CF0861D0FFC2BAA00CE4372 /* ncurses2-flushinp_test.adb */, + 4CF0861E0FFC2BAA00CE4372 /* ncurses2-flushinp_test.ads */, + 4CF0861F0FFC2BAA00CE4372 /* ncurses2-genericputs.adb */, + 4CF086200FFC2BAA00CE4372 /* ncurses2-genericputs.ads */, + 4CF086210FFC2BAA00CE4372 /* ncurses2-getch.ads */, + 4CF086220FFC2BAA00CE4372 /* ncurses2-getch_test.adb */, + 4CF086230FFC2BAA00CE4372 /* ncurses2-getch_test.ads */, + 4CF086240FFC2BAA00CE4372 /* ncurses2-getopt.adb */, + 4CF086250FFC2BAA00CE4372 /* ncurses2-getopt.ads */, + 4CF086260FFC2BAA00CE4372 /* ncurses2-m.adb */, + 4CF086270FFC2BAA00CE4372 /* ncurses2-m.ads */, + 4CF086280FFC2BAA00CE4372 /* ncurses2-menu_test.adb */, + 4CF086290FFC2BAA00CE4372 /* ncurses2-menu_test.ads */, + 4CF0862A0FFC2BAA00CE4372 /* ncurses2-overlap_test.adb */, + 4CF0862B0FFC2BAA00CE4372 /* ncurses2-overlap_test.ads */, + 4CF0862C0FFC2BAA00CE4372 /* ncurses2-slk_test.adb */, + 4CF0862D0FFC2BAA00CE4372 /* ncurses2-slk_test.ads */, + 4CF0862E0FFC2BAA00CE4372 /* ncurses2-test_sgr_attributes.adb */, + 4CF0862F0FFC2BAA00CE4372 /* ncurses2-test_sgr_attributes.ads */, + 4CF086300FFC2BAA00CE4372 /* ncurses2-trace_set.adb */, + 4CF086310FFC2BAA00CE4372 /* ncurses2-trace_set.ads */, + 4CF086320FFC2BAA00CE4372 /* ncurses2-util.adb */, + 4CF086330FFC2BAA00CE4372 /* ncurses2-util.ads */, + 4CF086340FFC2BAA00CE4372 /* ncurses2.ads */, + 4CF086350FFC2BAA00CE4372 /* rain.adb */, + 4CF086360FFC2BAA00CE4372 /* rain.ads */, + 4CF086370FFC2BAA00CE4372 /* README */, + 4CF086380FFC2BAA00CE4372 /* sample-curses_demo-attributes.adb */, + 4CF086390FFC2BAA00CE4372 /* sample-curses_demo-attributes.ads */, + 4CF0863A0FFC2BAA00CE4372 /* sample-curses_demo-mouse.adb */, + 4CF0863B0FFC2BAA00CE4372 /* sample-curses_demo-mouse.ads */, + 4CF0863C0FFC2BAA00CE4372 /* sample-curses_demo.adb */, + 4CF0863D0FFC2BAA00CE4372 /* sample-curses_demo.ads */, + 4CF0863E0FFC2BAA00CE4372 /* sample-explanation.adb */, + 4CF0863F0FFC2BAA00CE4372 /* sample-explanation.ads */, + 4CF086400FFC2BAA00CE4372 /* sample-form_demo-aux.adb */, + 4CF086410FFC2BAA00CE4372 /* sample-form_demo-aux.ads */, + 4CF086420FFC2BAA00CE4372 /* sample-form_demo-handler.adb */, + 4CF086430FFC2BAA00CE4372 /* sample-form_demo-handler.ads */, + 4CF086440FFC2BAA00CE4372 /* sample-form_demo.adb */, + 4CF086450FFC2BAA00CE4372 /* sample-form_demo.ads */, + 4CF086460FFC2BAA00CE4372 /* sample-function_key_setting.adb */, + 4CF086470FFC2BAA00CE4372 /* sample-function_key_setting.ads */, + 4CF086480FFC2BAA00CE4372 /* sample-header_handler.adb */, + 4CF086490FFC2BAA00CE4372 /* sample-header_handler.ads */, + 4CF0864A0FFC2BAA00CE4372 /* sample-helpers.adb */, + 4CF0864B0FFC2BAA00CE4372 /* sample-helpers.ads */, + 4CF0864C0FFC2BAA00CE4372 /* sample-keyboard_handler.adb */, + 4CF0864D0FFC2BAA00CE4372 /* sample-keyboard_handler.ads */, + 4CF0864E0FFC2BAA00CE4372 /* sample-manifest.ads */, + 4CF0864F0FFC2BAA00CE4372 /* sample-menu_demo-aux.adb */, + 4CF086500FFC2BAA00CE4372 /* sample-menu_demo-aux.ads */, + 4CF086510FFC2BAA00CE4372 /* sample-menu_demo-handler.adb */, + 4CF086520FFC2BAA00CE4372 /* sample-menu_demo-handler.ads */, + 4CF086530FFC2BAA00CE4372 /* sample-menu_demo.adb */, + 4CF086540FFC2BAA00CE4372 /* sample-menu_demo.ads */, + 4CF086550FFC2BAA00CE4372 /* sample-my_field_type.adb */, + 4CF086560FFC2BAA00CE4372 /* sample-my_field_type.ads */, + 4CF086570FFC2BAA00CE4372 /* sample-text_io_demo.adb */, + 4CF086580FFC2BAA00CE4372 /* sample-text_io_demo.ads */, + 4CF086590FFC2BAA00CE4372 /* sample.adb */, + 4CF0865A0FFC2BAA00CE4372 /* sample.ads */, + 4CF0865B0FFC2BAA00CE4372 /* status.adb */, + 4CF0865C0FFC2BAA00CE4372 /* status.ads */, + 4CF0865D0FFC2BAA00CE4372 /* tour.adb */, + 4CF0865E0FFC2BAA00CE4372 /* tour.ads */, + ); + path = samples; + sourceTree = ""; + }; + 4CF0865F0FFC2BAA00CE4372 /* src */ = { + isa = PBXGroup; + children = ( + 4CF086600FFC2BAA00CE4372 /* Makefile.in */, + 4CF086610FFC2BAA00CE4372 /* terminal_interface-curses-aux.adb */, + 4CF086620FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alpha.adb */, + 4CF086630FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alpha.ads */, + 4CF086640FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric.adb */, + 4CF086650FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric.ads */, + 4CF086660FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada.adb */, + 4CF086670FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada.ads */, + 4CF086680FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration.adb */, + 4CF086690FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-enumeration.ads */, + 4CF0866A0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-intfield.adb */, + 4CF0866B0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-intfield.ads */, + 4CF0866C0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address.adb */, + 4CF0866D0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address.ads */, + 4CF0866E0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-numeric.adb */, + 4CF0866F0FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-numeric.ads */, + 4CF086700FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-regexp.adb */, + 4CF086710FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-regexp.ads */, + 4CF086720FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user-choice.adb */, + 4CF086730FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user-choice.ads */, + 4CF086740FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user.adb */, + 4CF086750FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types-user.ads */, + 4CF086760FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_types.adb */, + 4CF086770FFC2BAA00CE4372 /* terminal_interface-curses-forms-field_user_data.adb */, + 4CF086780FFC2BAA00CE4372 /* terminal_interface-curses-forms-form_user_data.adb */, + 4CF086790FFC2BAA00CE4372 /* terminal_interface-curses-forms.adb */, + 4CF0867A0FFC2BAA00CE4372 /* terminal_interface-curses-menus-item_user_data.adb */, + 4CF0867B0FFC2BAA00CE4372 /* terminal_interface-curses-menus-menu_user_data.adb */, + 4CF0867C0FFC2BAA00CE4372 /* terminal_interface-curses-menus.adb */, + 4CF0867D0FFC2BAA00CE4372 /* terminal_interface-curses-mouse.adb */, + 4CF0867E0FFC2BAA00CE4372 /* terminal_interface-curses-panels-user_data.adb */, + 4CF0867F0FFC2BAA00CE4372 /* terminal_interface-curses-panels.adb */, + 4CF086800FFC2BAA00CE4372 /* terminal_interface-curses-putwin.adb */, + 4CF086810FFC2BAA00CE4372 /* terminal_interface-curses-putwin.ads */, + 4CF086820FFC2BAA00CE4372 /* terminal_interface-curses-termcap.adb */, + 4CF086830FFC2BAA00CE4372 /* terminal_interface-curses-termcap.ads */, + 4CF086840FFC2BAA00CE4372 /* terminal_interface-curses-terminfo.adb */, + 4CF086850FFC2BAA00CE4372 /* terminal_interface-curses-terminfo.ads */, + 4CF086860FFC2BAA00CE4372 /* terminal_interface-curses-text_io-aux.adb */, + 4CF086870FFC2BAA00CE4372 /* terminal_interface-curses-text_io-aux.ads */, + 4CF086880FFC2BAA00CE4372 /* terminal_interface-curses-text_io-complex_io.adb */, + 4CF086890FFC2BAA00CE4372 /* terminal_interface-curses-text_io-complex_io.ads */, + 4CF0868A0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-decimal_io.adb */, + 4CF0868B0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-decimal_io.ads */, + 4CF0868C0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-enumeration_io.adb */, + 4CF0868D0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-enumeration_io.ads */, + 4CF0868E0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-fixed_io.adb */, + 4CF0868F0FFC2BAA00CE4372 /* terminal_interface-curses-text_io-fixed_io.ads */, + 4CF086900FFC2BAA00CE4372 /* terminal_interface-curses-text_io-float_io.adb */, + 4CF086910FFC2BAA00CE4372 /* terminal_interface-curses-text_io-float_io.ads */, + 4CF086920FFC2BAA00CE4372 /* terminal_interface-curses-text_io-integer_io.adb */, + 4CF086930FFC2BAA00CE4372 /* terminal_interface-curses-text_io-integer_io.ads */, + 4CF086940FFC2BAA00CE4372 /* terminal_interface-curses-text_io-modular_io.adb */, + 4CF086950FFC2BAA00CE4372 /* terminal_interface-curses-text_io-modular_io.ads */, + 4CF086960FFC2BAA00CE4372 /* terminal_interface-curses-text_io.adb */, + 4CF086970FFC2BAA00CE4372 /* terminal_interface-curses-text_io.ads */, + 4CF086980FFC2BAA00CE4372 /* terminal_interface-curses-trace.adb_p */, + 4CF086990FFC2BAA00CE4372 /* terminal_interface.ads */, + ); + path = src; + sourceTree = ""; + }; + 4CF0869E0FFC2BAA00CE4372 /* c++ */ = { + isa = PBXGroup; + children = ( + 4CF0869F0FFC2BAA00CE4372 /* cursesapp.cc */, + 4CF086A00FFC2BAA00CE4372 /* cursesapp.h */, + 4CF086A10FFC2BAA00CE4372 /* cursesf.cc */, + 4CF086A20FFC2BAA00CE4372 /* cursesf.h */, + 4CF086A30FFC2BAA00CE4372 /* cursesm.cc */, + 4CF086A40FFC2BAA00CE4372 /* cursesm.h */, + 4CF086A50FFC2BAA00CE4372 /* cursesmain.cc */, + 4CF086A60FFC2BAA00CE4372 /* cursesp.cc */, + 4CF086A70FFC2BAA00CE4372 /* cursesp.h */, + 4CF086A80FFC2BAA00CE4372 /* cursespad.cc */, + 4CF086A90FFC2BAA00CE4372 /* cursesw.cc */, + 4CF086AA0FFC2BAA00CE4372 /* cursesw.h */, + 4CF086AB0FFC2BAA00CE4372 /* cursslk.cc */, + 4CF086AC0FFC2BAA00CE4372 /* cursslk.h */, + 4CF086AD0FFC2BAA00CE4372 /* demo.cc */, + 4CF086AE0FFC2BAA00CE4372 /* edit_cfg.sh */, + 4CF086AF0FFC2BAA00CE4372 /* etip.h.in */, + 4CF086B00FFC2BAA00CE4372 /* headers */, + 4CF086B10FFC2BAA00CE4372 /* internal.h */, + 4CF086B20FFC2BAA00CE4372 /* Makefile.in */, + 4CF086B30FFC2BAA00CE4372 /* modules */, + 4CF086B40FFC2BAA00CE4372 /* NEWS */, + 4CF086B50FFC2BAA00CE4372 /* PROBLEMS */, + 4CF086B60FFC2BAA00CE4372 /* README-first */, + ); + path = "c++"; + sourceTree = ""; + }; + 4CF086BE0FFC2BAB00CE4372 /* doc */ = { + isa = PBXGroup; + children = ( + 4CF086BF0FFC2BAD00CE4372 /* hackguide.doc */, + 4CF086C00FFC2BAD00CE4372 /* html */, + 4CF087AC0FFC2BAE00CE4372 /* ncurses-intro.doc */, + ); + path = doc; + sourceTree = ""; + }; + 4CF086C00FFC2BAD00CE4372 /* html */ = { + isa = PBXGroup; + children = ( + 4CF086C10FFC2BAD00CE4372 /* ada */, + 4CF087270FFC2BAD00CE4372 /* Ada95.html */, + 4CF087280FFC2BAD00CE4372 /* announce.html */, + 4CF087290FFC2BAD00CE4372 /* hackguide.html */, + 4CF0872A0FFC2BAD00CE4372 /* index.html */, + 4CF0872B0FFC2BAD00CE4372 /* man */, + 4CF087AA0FFC2BAE00CE4372 /* ncurses-intro.html */, + 4CF087AB0FFC2BAE00CE4372 /* NCURSES-Programming-HOWTO.html */, + ); + path = html; + sourceTree = ""; + }; + 4CF086C10FFC2BAD00CE4372 /* ada */ = { + isa = PBXGroup; + children = ( + 4CF086C20FFC2BAD00CE4372 /* files */, + 4CF086C40FFC2BAD00CE4372 /* files.htm */, + 4CF086C50FFC2BAD00CE4372 /* funcs */, + 4CF086DC0FFC2BAD00CE4372 /* funcs.htm */, + 4CF086DD0FFC2BAD00CE4372 /* index.htm */, + 4CF086DE0FFC2BAD00CE4372 /* main.htm */, + 4CF086DF0FFC2BAD00CE4372 /* table.html */, + 4CF086E00FFC2BAD00CE4372 /* terminal_interface-curses-aux__adb.htm */, + 4CF086E10FFC2BAD00CE4372 /* terminal_interface-curses-aux__ads.htm */, + 4CF086E20FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alpha__adb.htm */, + 4CF086E30FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alpha__ads.htm */, + 4CF086E40FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric__adb.htm */, + 4CF086E50FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-alphanumeric__ads.htm */, + 4CF086E60FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm */, + 4CF086E70FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm */, + 4CF086E80FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration__adb.htm */, + 4CF086E90FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-enumeration__ads.htm */, + 4CF086EA0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-intfield__adb.htm */, + 4CF086EB0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-intfield__ads.htm */, + 4CF086EC0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address__adb.htm */, + 4CF086ED0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-ipv4_address__ads.htm */, + 4CF086EE0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-numeric__adb.htm */, + 4CF086EF0FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-numeric__ads.htm */, + 4CF086F00FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-regexp__adb.htm */, + 4CF086F10FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-regexp__ads.htm */, + 4CF086F20FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user-choice__adb.htm */, + 4CF086F30FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user-choice__ads.htm */, + 4CF086F40FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user__adb.htm */, + 4CF086F50FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types-user__ads.htm */, + 4CF086F60FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types__adb.htm */, + 4CF086F70FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_types__ads.htm */, + 4CF086F80FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_user_data__adb.htm */, + 4CF086F90FFC2BAD00CE4372 /* terminal_interface-curses-forms-field_user_data__ads.htm */, + 4CF086FA0FFC2BAD00CE4372 /* terminal_interface-curses-forms-form_user_data__adb.htm */, + 4CF086FB0FFC2BAD00CE4372 /* terminal_interface-curses-forms-form_user_data__ads.htm */, + 4CF086FC0FFC2BAD00CE4372 /* terminal_interface-curses-forms__adb.htm */, + 4CF086FD0FFC2BAD00CE4372 /* terminal_interface-curses-forms__ads.htm */, + 4CF086FE0FFC2BAD00CE4372 /* terminal_interface-curses-menus-item_user_data__adb.htm */, + 4CF086FF0FFC2BAD00CE4372 /* terminal_interface-curses-menus-item_user_data__ads.htm */, + 4CF087000FFC2BAD00CE4372 /* terminal_interface-curses-menus-menu_user_data__adb.htm */, + 4CF087010FFC2BAD00CE4372 /* terminal_interface-curses-menus-menu_user_data__ads.htm */, + 4CF087020FFC2BAD00CE4372 /* terminal_interface-curses-menus__adb.htm */, + 4CF087030FFC2BAD00CE4372 /* terminal_interface-curses-menus__ads.htm */, + 4CF087040FFC2BAD00CE4372 /* terminal_interface-curses-mouse__adb.htm */, + 4CF087050FFC2BAD00CE4372 /* terminal_interface-curses-mouse__ads.htm */, + 4CF087060FFC2BAD00CE4372 /* terminal_interface-curses-panels-user_data__adb.htm */, + 4CF087070FFC2BAD00CE4372 /* terminal_interface-curses-panels-user_data__ads.htm */, + 4CF087080FFC2BAD00CE4372 /* terminal_interface-curses-panels__adb.htm */, + 4CF087090FFC2BAD00CE4372 /* terminal_interface-curses-panels__ads.htm */, + 4CF0870A0FFC2BAD00CE4372 /* terminal_interface-curses-putwin__adb.htm */, + 4CF0870B0FFC2BAD00CE4372 /* terminal_interface-curses-putwin__ads.htm */, + 4CF0870C0FFC2BAD00CE4372 /* terminal_interface-curses-termcap__adb.htm */, + 4CF0870D0FFC2BAD00CE4372 /* terminal_interface-curses-termcap__ads.htm */, + 4CF0870E0FFC2BAD00CE4372 /* terminal_interface-curses-terminfo__adb.htm */, + 4CF0870F0FFC2BAD00CE4372 /* terminal_interface-curses-terminfo__ads.htm */, + 4CF087100FFC2BAD00CE4372 /* terminal_interface-curses-text_io-aux__adb.htm */, + 4CF087110FFC2BAD00CE4372 /* terminal_interface-curses-text_io-aux__ads.htm */, + 4CF087120FFC2BAD00CE4372 /* terminal_interface-curses-text_io-complex_io__adb.htm */, + 4CF087130FFC2BAD00CE4372 /* terminal_interface-curses-text_io-complex_io__ads.htm */, + 4CF087140FFC2BAD00CE4372 /* terminal_interface-curses-text_io-decimal_io__adb.htm */, + 4CF087150FFC2BAD00CE4372 /* terminal_interface-curses-text_io-decimal_io__ads.htm */, + 4CF087160FFC2BAD00CE4372 /* terminal_interface-curses-text_io-enumeration_io__adb.htm */, + 4CF087170FFC2BAD00CE4372 /* terminal_interface-curses-text_io-enumeration_io__ads.htm */, + 4CF087180FFC2BAD00CE4372 /* terminal_interface-curses-text_io-fixed_io__adb.htm */, + 4CF087190FFC2BAD00CE4372 /* terminal_interface-curses-text_io-fixed_io__ads.htm */, + 4CF0871A0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-float_io__adb.htm */, + 4CF0871B0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-float_io__ads.htm */, + 4CF0871C0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-integer_io__adb.htm */, + 4CF0871D0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-integer_io__ads.htm */, + 4CF0871E0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-modular_io__adb.htm */, + 4CF0871F0FFC2BAD00CE4372 /* terminal_interface-curses-text_io-modular_io__ads.htm */, + 4CF087200FFC2BAD00CE4372 /* terminal_interface-curses-text_io__adb.htm */, + 4CF087210FFC2BAD00CE4372 /* terminal_interface-curses-text_io__ads.htm */, + 4CF087220FFC2BAD00CE4372 /* terminal_interface-curses-trace__adb.htm */, + 4CF087230FFC2BAD00CE4372 /* terminal_interface-curses-trace__ads.htm */, + 4CF087240FFC2BAD00CE4372 /* terminal_interface-curses__adb.htm */, + 4CF087250FFC2BAD00CE4372 /* terminal_interface-curses__ads.htm */, + 4CF087260FFC2BAD00CE4372 /* terminal_interface__ads.htm */, + ); + path = ada; + sourceTree = ""; + }; + 4CF086C20FFC2BAD00CE4372 /* files */ = { + isa = PBXGroup; + children = ( + 4CF086C30FFC2BAD00CE4372 /* T.htm */, + ); + path = files; + sourceTree = ""; + }; + 4CF086C50FFC2BAD00CE4372 /* funcs */ = { + isa = PBXGroup; + children = ( + 4CF086C60FFC2BAD00CE4372 /* A.htm */, + 4CF086C70FFC2BAD00CE4372 /* B.htm */, + 4CF086C80FFC2BAD00CE4372 /* C.htm */, + 4CF086C90FFC2BAD00CE4372 /* D.htm */, + 4CF086CA0FFC2BAD00CE4372 /* E.htm */, + 4CF086CB0FFC2BAD00CE4372 /* F.htm */, + 4CF086CC0FFC2BAD00CE4372 /* G.htm */, + 4CF086CD0FFC2BAD00CE4372 /* H.htm */, + 4CF086CE0FFC2BAD00CE4372 /* I.htm */, + 4CF086CF0FFC2BAD00CE4372 /* K.htm */, + 4CF086D00FFC2BAD00CE4372 /* L.htm */, + 4CF086D10FFC2BAD00CE4372 /* M.htm */, + 4CF086D20FFC2BAD00CE4372 /* N.htm */, + 4CF086D30FFC2BAD00CE4372 /* O.htm */, + 4CF086D40FFC2BAD00CE4372 /* P.htm */, + 4CF086D50FFC2BAD00CE4372 /* Q.htm */, + 4CF086D60FFC2BAD00CE4372 /* R.htm */, + 4CF086D70FFC2BAD00CE4372 /* S.htm */, + 4CF086D80FFC2BAD00CE4372 /* T.htm */, + 4CF086D90FFC2BAD00CE4372 /* U.htm */, + 4CF086DA0FFC2BAD00CE4372 /* V.htm */, + 4CF086DB0FFC2BAD00CE4372 /* W.htm */, + ); + path = funcs; + sourceTree = ""; + }; + 4CF0872B0FFC2BAD00CE4372 /* man */ = { + isa = PBXGroup; + children = ( + 4CF0872C0FFC2BAD00CE4372 /* captoinfo.1m.html */, + 4CF0872D0FFC2BAD00CE4372 /* clear.1.html */, + 4CF0872E0FFC2BAD00CE4372 /* curs_add_wch.3x.html */, + 4CF0872F0FFC2BAD00CE4372 /* curs_add_wchstr.3x.html */, + 4CF087300FFC2BAD00CE4372 /* curs_addch.3x.html */, + 4CF087310FFC2BAD00CE4372 /* curs_addchstr.3x.html */, + 4CF087320FFC2BAD00CE4372 /* curs_addstr.3x.html */, + 4CF087330FFC2BAD00CE4372 /* curs_addwstr.3x.html */, + 4CF087340FFC2BAD00CE4372 /* curs_attr.3x.html */, + 4CF087350FFC2BAD00CE4372 /* curs_beep.3x.html */, + 4CF087360FFC2BAD00CE4372 /* curs_bkgd.3x.html */, + 4CF087370FFC2BAD00CE4372 /* curs_bkgrnd.3x.html */, + 4CF087380FFC2BAD00CE4372 /* curs_border.3x.html */, + 4CF087390FFC2BAD00CE4372 /* curs_border_set.3x.html */, + 4CF0873A0FFC2BAD00CE4372 /* curs_clear.3x.html */, + 4CF0873B0FFC2BAD00CE4372 /* curs_color.3x.html */, + 4CF0873C0FFC2BAD00CE4372 /* curs_delch.3x.html */, + 4CF0873D0FFC2BAD00CE4372 /* curs_deleteln.3x.html */, + 4CF0873E0FFC2BAD00CE4372 /* curs_extend.3x.html */, + 4CF0873F0FFC2BAD00CE4372 /* curs_get_wch.3x.html */, + 4CF087400FFC2BAD00CE4372 /* curs_get_wstr.3x.html */, + 4CF087410FFC2BAD00CE4372 /* curs_getcchar.3x.html */, + 4CF087420FFC2BAD00CE4372 /* curs_getch.3x.html */, + 4CF087430FFC2BAD00CE4372 /* curs_getstr.3x.html */, + 4CF087440FFC2BAD00CE4372 /* curs_getyx.3x.html */, + 4CF087450FFC2BAD00CE4372 /* curs_in_wch.3x.html */, + 4CF087460FFC2BAD00CE4372 /* curs_in_wchstr.3x.html */, + 4CF087470FFC2BAD00CE4372 /* curs_inch.3x.html */, + 4CF087480FFC2BAD00CE4372 /* curs_inchstr.3x.html */, + 4CF087490FFC2BAD00CE4372 /* curs_initscr.3x.html */, + 4CF0874A0FFC2BAD00CE4372 /* curs_inopts.3x.html */, + 4CF0874B0FFC2BAD00CE4372 /* curs_ins_wch.3x.html */, + 4CF0874C0FFC2BAD00CE4372 /* curs_ins_wstr.3x.html */, + 4CF0874D0FFC2BAD00CE4372 /* curs_insch.3x.html */, + 4CF0874E0FFC2BAD00CE4372 /* curs_insstr.3x.html */, + 4CF0874F0FFC2BAD00CE4372 /* curs_instr.3x.html */, + 4CF087500FFC2BAD00CE4372 /* curs_inwstr.3x.html */, + 4CF087510FFC2BAD00CE4372 /* curs_kernel.3x.html */, + 4CF087520FFC2BAD00CE4372 /* curs_legacy.3x.html */, + 4CF087530FFC2BAD00CE4372 /* curs_mouse.3x.html */, + 4CF087540FFC2BAD00CE4372 /* curs_move.3x.html */, + 4CF087550FFC2BAD00CE4372 /* curs_opaque.3x.html */, + 4CF087560FFC2BAD00CE4372 /* curs_outopts.3x.html */, + 4CF087570FFC2BAD00CE4372 /* curs_overlay.3x.html */, + 4CF087580FFC2BAD00CE4372 /* curs_pad.3x.html */, + 4CF087590FFC2BAD00CE4372 /* curs_print.3x.html */, + 4CF0875A0FFC2BAD00CE4372 /* curs_printw.3x.html */, + 4CF0875B0FFC2BAD00CE4372 /* curs_refresh.3x.html */, + 4CF0875C0FFC2BAD00CE4372 /* curs_scanw.3x.html */, + 4CF0875D0FFC2BAD00CE4372 /* curs_scr_dump.3x.html */, + 4CF0875E0FFC2BAD00CE4372 /* curs_scroll.3x.html */, + 4CF0875F0FFC2BAD00CE4372 /* curs_slk.3x.html */, + 4CF087600FFC2BAD00CE4372 /* curs_termattrs.3x.html */, + 4CF087610FFC2BAD00CE4372 /* curs_termcap.3x.html */, + 4CF087620FFC2BAD00CE4372 /* curs_terminfo.3x.html */, + 4CF087630FFC2BAD00CE4372 /* curs_threads.3x.html */, + 4CF087640FFC2BAD00CE4372 /* curs_touch.3x.html */, + 4CF087650FFC2BAD00CE4372 /* curs_trace.3x.html */, + 4CF087660FFC2BAD00CE4372 /* curs_util.3x.html */, + 4CF087670FFC2BAD00CE4372 /* curs_window.3x.html */, + 4CF087680FFC2BAD00CE4372 /* default_colors.3x.html */, + 4CF087690FFC2BAE00CE4372 /* define_key.3x.html */, + 4CF0876A0FFC2BAE00CE4372 /* form.3x.html */, + 4CF0876B0FFC2BAE00CE4372 /* form_cursor.3x.html */, + 4CF0876C0FFC2BAE00CE4372 /* form_data.3x.html */, + 4CF0876D0FFC2BAE00CE4372 /* form_driver.3x.html */, + 4CF0876E0FFC2BAE00CE4372 /* form_field.3x.html */, + 4CF0876F0FFC2BAE00CE4372 /* form_field_attributes.3x.html */, + 4CF087700FFC2BAE00CE4372 /* form_field_buffer.3x.html */, + 4CF087710FFC2BAE00CE4372 /* form_field_info.3x.html */, + 4CF087720FFC2BAE00CE4372 /* form_field_just.3x.html */, + 4CF087730FFC2BAE00CE4372 /* form_field_new.3x.html */, + 4CF087740FFC2BAE00CE4372 /* form_field_opts.3x.html */, + 4CF087750FFC2BAE00CE4372 /* form_field_userptr.3x.html */, + 4CF087760FFC2BAE00CE4372 /* form_field_validation.3x.html */, + 4CF087770FFC2BAE00CE4372 /* form_fieldtype.3x.html */, + 4CF087780FFC2BAE00CE4372 /* form_hook.3x.html */, + 4CF087790FFC2BAE00CE4372 /* form_new.3x.html */, + 4CF0877A0FFC2BAE00CE4372 /* form_new_page.3x.html */, + 4CF0877B0FFC2BAE00CE4372 /* form_opts.3x.html */, + 4CF0877C0FFC2BAE00CE4372 /* form_page.3x.html */, + 4CF0877D0FFC2BAE00CE4372 /* form_post.3x.html */, + 4CF0877E0FFC2BAE00CE4372 /* form_requestname.3x.html */, + 4CF0877F0FFC2BAE00CE4372 /* form_userptr.3x.html */, + 4CF087800FFC2BAE00CE4372 /* form_win.3x.html */, + 4CF087810FFC2BAE00CE4372 /* index.html */, + 4CF087820FFC2BAE00CE4372 /* infocmp.1m.html */, + 4CF087830FFC2BAE00CE4372 /* infotocap.1m.html */, + 4CF087840FFC2BAE00CE4372 /* key_defined.3x.html */, + 4CF087850FFC2BAE00CE4372 /* keybound.3x.html */, + 4CF087860FFC2BAE00CE4372 /* keyok.3x.html */, + 4CF087870FFC2BAE00CE4372 /* legacy_coding.3x.html */, + 4CF087880FFC2BAE00CE4372 /* menu.3x.html */, + 4CF087890FFC2BAE00CE4372 /* menu_attributes.3x.html */, + 4CF0878A0FFC2BAE00CE4372 /* menu_cursor.3x.html */, + 4CF0878B0FFC2BAE00CE4372 /* menu_driver.3x.html */, + 4CF0878C0FFC2BAE00CE4372 /* menu_format.3x.html */, + 4CF0878D0FFC2BAE00CE4372 /* menu_hook.3x.html */, + 4CF0878E0FFC2BAE00CE4372 /* menu_items.3x.html */, + 4CF0878F0FFC2BAE00CE4372 /* menu_mark.3x.html */, + 4CF087900FFC2BAE00CE4372 /* menu_new.3x.html */, + 4CF087910FFC2BAE00CE4372 /* menu_opts.3x.html */, + 4CF087920FFC2BAE00CE4372 /* menu_pattern.3x.html */, + 4CF087930FFC2BAE00CE4372 /* menu_post.3x.html */, + 4CF087940FFC2BAE00CE4372 /* menu_requestname.3x.html */, + 4CF087950FFC2BAE00CE4372 /* menu_spacing.3x.html */, + 4CF087960FFC2BAE00CE4372 /* menu_userptr.3x.html */, + 4CF087970FFC2BAE00CE4372 /* menu_win.3x.html */, + 4CF087980FFC2BAE00CE4372 /* mitem_current.3x.html */, + 4CF087990FFC2BAE00CE4372 /* mitem_name.3x.html */, + 4CF0879A0FFC2BAE00CE4372 /* mitem_new.3x.html */, + 4CF0879B0FFC2BAE00CE4372 /* mitem_opts.3x.html */, + 4CF0879C0FFC2BAE00CE4372 /* mitem_userptr.3x.html */, + 4CF0879D0FFC2BAE00CE4372 /* mitem_value.3x.html */, + 4CF0879E0FFC2BAE00CE4372 /* mitem_visible.3x.html */, + 4CF0879F0FFC2BAE00CE4372 /* ncurses.3x.html */, + 4CF087A00FFC2BAE00CE4372 /* panel.3x.html */, + 4CF087A10FFC2BAE00CE4372 /* resizeterm.3x.html */, + 4CF087A20FFC2BAE00CE4372 /* term.5.html */, + 4CF087A30FFC2BAE00CE4372 /* term.7.html */, + 4CF087A40FFC2BAE00CE4372 /* terminfo.5.html */, + 4CF087A50FFC2BAE00CE4372 /* tic.1m.html */, + 4CF087A60FFC2BAE00CE4372 /* toe.1m.html */, + 4CF087A70FFC2BAE00CE4372 /* tput.1.html */, + 4CF087A80FFC2BAE00CE4372 /* tset.1.html */, + 4CF087A90FFC2BAE00CE4372 /* wresize.3x.html */, + ); + path = man; + sourceTree = ""; + }; + 4CF087AD0FFC2BAE00CE4372 /* form */ = { + isa = PBXGroup; + children = ( + 4CF087AE0FFC2BAE00CE4372 /* f_trace.c */, + 4CF087AF0FFC2BAE00CE4372 /* fld_arg.c */, + 4CF087B00FFC2BAE00CE4372 /* fld_attr.c */, + 4CF087B10FFC2BAE00CE4372 /* fld_current.c */, + 4CF087B20FFC2BAE00CE4372 /* fld_def.c */, + 4CF087B30FFC2BAE00CE4372 /* fld_dup.c */, + 4CF087B40FFC2BAE00CE4372 /* fld_ftchoice.c */, + 4CF087B50FFC2BAE00CE4372 /* fld_ftlink.c */, + 4CF087B60FFC2BAE00CE4372 /* fld_info.c */, + 4CF087B70FFC2BAE00CE4372 /* fld_just.c */, + 4CF087B80FFC2BAE00CE4372 /* fld_link.c */, + 4CF087B90FFC2BAE00CE4372 /* fld_max.c */, + 4CF087BA0FFC2BAE00CE4372 /* fld_move.c */, + 4CF087BB0FFC2BAE00CE4372 /* fld_newftyp.c */, + 4CF087BC0FFC2BAE00CE4372 /* fld_opts.c */, + 4CF087BD0FFC2BAE00CE4372 /* fld_pad.c */, + 4CF087BE0FFC2BAE00CE4372 /* fld_page.c */, + 4CF087BF0FFC2BAE00CE4372 /* fld_stat.c */, + 4CF087C00FFC2BAE00CE4372 /* fld_type.c */, + 4CF087C10FFC2BAE00CE4372 /* fld_user.c */, + 4CF087C20FFC2BAE00CE4372 /* form.h */, + 4CF087C30FFC2BAE00CE4372 /* form.priv.h */, + 4CF087C40FFC2BAE00CE4372 /* frm_cursor.c */, + 4CF087C50FFC2BAE00CE4372 /* frm_data.c */, + 4CF087C60FFC2BAE00CE4372 /* frm_def.c */, + 4CF087C70FFC2BAE00CE4372 /* frm_driver.c */, + 4CF087C80FFC2BAE00CE4372 /* frm_hook.c */, + 4CF087C90FFC2BAE00CE4372 /* frm_opts.c */, + 4CF087CA0FFC2BAE00CE4372 /* frm_page.c */, + 4CF087CB0FFC2BAE00CE4372 /* frm_post.c */, + 4CF087CC0FFC2BAE00CE4372 /* frm_req_name.c */, + 4CF087CD0FFC2BAE00CE4372 /* frm_scale.c */, + 4CF087CE0FFC2BAE00CE4372 /* frm_sub.c */, + 4CF087CF0FFC2BAE00CE4372 /* frm_user.c */, + 4CF087D00FFC2BAE00CE4372 /* frm_win.c */, + 4CF087D10FFC2BAE00CE4372 /* fty_alnum.c */, + 4CF087D20FFC2BAE00CE4372 /* fty_alpha.c */, + 4CF087D30FFC2BAE00CE4372 /* fty_enum.c */, + 4CF087D40FFC2BAE00CE4372 /* fty_int.c */, + 4CF087D50FFC2BAE00CE4372 /* fty_ipv4.c */, + 4CF087D60FFC2BAE00CE4372 /* fty_num.c */, + 4CF087D70FFC2BAE00CE4372 /* fty_regex.c */, + 4CF087D80FFC2BAE00CE4372 /* headers */, + 4CF087D90FFC2BAE00CE4372 /* llib-lform */, + 4CF087DA0FFC2BAE00CE4372 /* llib-lformw */, + 4CF087DB0FFC2BAE00CE4372 /* Makefile.in */, + 4CF087DC0FFC2BAE00CE4372 /* modules */, + 4CF087DD0FFC2BAE00CE4372 /* READ.ME */, + ); + path = form; + sourceTree = ""; + }; + 4CF087DE0FFC2BAE00CE4372 /* include */ = { + isa = PBXGroup; + children = ( + 4CF087DF0FFC2BAE00CE4372 /* capdefaults.c */, + 4CF087E00FFC2BAE00CE4372 /* Caps */, + 4CF087E10FFC2BAE00CE4372 /* Caps.aix4 */, + 4CF087E20FFC2BAE00CE4372 /* Caps.hpux11 */, + 4CF087E30FFC2BAE00CE4372 /* Caps.keys */, + 4CF087E40FFC2BAE00CE4372 /* Caps.osf1r5 */, + 4CF087E50FFC2BAE00CE4372 /* Caps.uwin */, + 4CF087E60FFC2BAE00CE4372 /* curses.h.in */, + 4CF087E70FFC2BAE00CE4372 /* curses.tail */, + 4CF087E80FFC2BAE00CE4372 /* curses.wide */, + 4CF087E90FFC2BAE00CE4372 /* edit_cfg.sh */, + 4CF087EA0FFC2BAE00CE4372 /* hashed_db.h */, + 4CF087EB0FFC2BAE00CE4372 /* headers */, + 4CF087EC0FFC2BAE00CE4372 /* Makefile.in */, + 4CF087ED0FFC2BAE00CE4372 /* MKhashsize.sh */, + 4CF087EE0FFC2BAE00CE4372 /* MKkey_defs.sh */, + 4CF087EF0FFC2BAE00CE4372 /* MKncurses_def.sh */, + 4CF087F00FFC2BAE00CE4372 /* MKparametrized.sh */, + 4CF087F10FFC2BAE00CE4372 /* MKterm.h.awk.in */, + 4CF087F20FFC2BAE00CE4372 /* nc_alloc.h */, + 4CF087F30FFC2BAE00CE4372 /* nc_panel.h */, + 4CF087F40FFC2BAE00CE4372 /* nc_tparm.h */, + 4CF087F50FFC2BAE00CE4372 /* ncurses_cfg.hin */, + 4CF087F60FFC2BAE00CE4372 /* ncurses_defs */, + 4CF087F70FFC2BAE00CE4372 /* ncurses_dll.h */, + 4CF087F80FFC2BAE00CE4372 /* term_entry.h */, + 4CF087F90FFC2BAE00CE4372 /* termcap.h.in */, + 4CF087FA0FFC2BAE00CE4372 /* tic.h */, + 4CF087FB0FFC2BAE00CE4372 /* unctrl.h.in */, + ); + path = include; + sourceTree = ""; + }; + 4CF088000FFC2BAE00CE4372 /* man */ = { + isa = PBXGroup; + children = ( + 4CF088010FFC2BAE00CE4372 /* captoinfo.1m */, + 4CF088020FFC2BAE00CE4372 /* clear.1 */, + 4CF088030FFC2BAE00CE4372 /* curs_add_wch.3x */, + 4CF088040FFC2BAE00CE4372 /* curs_add_wchstr.3x */, + 4CF088050FFC2BAE00CE4372 /* curs_addch.3x */, + 4CF088060FFC2BAE00CE4372 /* curs_addchstr.3x */, + 4CF088070FFC2BAE00CE4372 /* curs_addstr.3x */, + 4CF088080FFC2BAE00CE4372 /* curs_addwstr.3x */, + 4CF088090FFC2BAE00CE4372 /* curs_attr.3x */, + 4CF0880A0FFC2BAE00CE4372 /* curs_beep.3x */, + 4CF0880B0FFC2BAE00CE4372 /* curs_bkgd.3x */, + 4CF0880C0FFC2BAE00CE4372 /* curs_bkgrnd.3x */, + 4CF0880D0FFC2BAE00CE4372 /* curs_border.3x */, + 4CF0880E0FFC2BAE00CE4372 /* curs_border_set.3x */, + 4CF0880F0FFC2BAE00CE4372 /* curs_clear.3x */, + 4CF088100FFC2BAE00CE4372 /* curs_color.3x */, + 4CF088110FFC2BAE00CE4372 /* curs_delch.3x */, + 4CF088120FFC2BAE00CE4372 /* curs_deleteln.3x */, + 4CF088130FFC2BAE00CE4372 /* curs_extend.3x */, + 4CF088140FFC2BAE00CE4372 /* curs_get_wch.3x */, + 4CF088150FFC2BAE00CE4372 /* curs_get_wstr.3x */, + 4CF088160FFC2BAE00CE4372 /* curs_getcchar.3x */, + 4CF088170FFC2BAE00CE4372 /* curs_getch.3x */, + 4CF088180FFC2BAE00CE4372 /* curs_getstr.3x */, + 4CF088190FFC2BAE00CE4372 /* curs_getyx.3x */, + 4CF0881A0FFC2BAE00CE4372 /* curs_in_wch.3x */, + 4CF0881B0FFC2BAE00CE4372 /* curs_in_wchstr.3x */, + 4CF0881C0FFC2BAE00CE4372 /* curs_inch.3x */, + 4CF0881D0FFC2BAE00CE4372 /* curs_inchstr.3x */, + 4CF0881E0FFC2BAE00CE4372 /* curs_initscr.3x */, + 4CF0881F0FFC2BAE00CE4372 /* curs_inopts.3x */, + 4CF088200FFC2BAE00CE4372 /* curs_ins_wch.3x */, + 4CF088210FFC2BAE00CE4372 /* curs_ins_wstr.3x */, + 4CF088220FFC2BAE00CE4372 /* curs_insch.3x */, + 4CF088230FFC2BAE00CE4372 /* curs_insstr.3x */, + 4CF088240FFC2BAE00CE4372 /* curs_instr.3x */, + 4CF088250FFC2BAE00CE4372 /* curs_inwstr.3x */, + 4CF088260FFC2BAE00CE4372 /* curs_kernel.3x */, + 4CF088270FFC2BAE00CE4372 /* curs_legacy.3x */, + 4CF088280FFC2BAE00CE4372 /* curs_memleaks.3x */, + 4CF088290FFC2BAE00CE4372 /* curs_mouse.3x */, + 4CF0882A0FFC2BAE00CE4372 /* curs_move.3x */, + 4CF0882B0FFC2BAE00CE4372 /* curs_opaque.3x */, + 4CF0882C0FFC2BAE00CE4372 /* curs_outopts.3x */, + 4CF0882D0FFC2BAF00CE4372 /* curs_overlay.3x */, + 4CF0882E0FFC2BAF00CE4372 /* curs_pad.3x */, + 4CF0882F0FFC2BAF00CE4372 /* curs_print.3x */, + 4CF088300FFC2BAF00CE4372 /* curs_printw.3x */, + 4CF088310FFC2BAF00CE4372 /* curs_refresh.3x */, + 4CF088320FFC2BAF00CE4372 /* curs_scanw.3x */, + 4CF088330FFC2BAF00CE4372 /* curs_scr_dump.3x */, + 4CF088340FFC2BAF00CE4372 /* curs_scroll.3x */, + 4CF088350FFC2BAF00CE4372 /* curs_slk.3x */, + 4CF088360FFC2BAF00CE4372 /* curs_termattrs.3x */, + 4CF088370FFC2BAF00CE4372 /* curs_termcap.3x */, + 4CF088380FFC2BAF00CE4372 /* curs_terminfo.3x */, + 4CF088390FFC2BAF00CE4372 /* curs_threads.3x */, + 4CF0883A0FFC2BAF00CE4372 /* curs_touch.3x */, + 4CF0883B0FFC2BAF00CE4372 /* curs_trace.3x */, + 4CF0883C0FFC2BAF00CE4372 /* curs_util.3x */, + 4CF0883D0FFC2BAF00CE4372 /* curs_window.3x */, + 4CF0883E0FFC2BAF00CE4372 /* default_colors.3x */, + 4CF0883F0FFC2BAF00CE4372 /* define_key.3x */, + 4CF088400FFC2BAF00CE4372 /* form.3x */, + 4CF088410FFC2BAF00CE4372 /* form_cursor.3x */, + 4CF088420FFC2BAF00CE4372 /* form_data.3x */, + 4CF088430FFC2BAF00CE4372 /* form_driver.3x */, + 4CF088440FFC2BAF00CE4372 /* form_field.3x */, + 4CF088450FFC2BAF00CE4372 /* form_field_attributes.3x */, + 4CF088460FFC2BAF00CE4372 /* form_field_buffer.3x */, + 4CF088470FFC2BAF00CE4372 /* form_field_info.3x */, + 4CF088480FFC2BAF00CE4372 /* form_field_just.3x */, + 4CF088490FFC2BAF00CE4372 /* form_field_new.3x */, + 4CF0884A0FFC2BAF00CE4372 /* form_field_opts.3x */, + 4CF0884B0FFC2BAF00CE4372 /* form_field_userptr.3x */, + 4CF0884C0FFC2BAF00CE4372 /* form_field_validation.3x */, + 4CF0884D0FFC2BAF00CE4372 /* form_fieldtype.3x */, + 4CF0884E0FFC2BAF00CE4372 /* form_hook.3x */, + 4CF0884F0FFC2BAF00CE4372 /* form_new.3x */, + 4CF088500FFC2BAF00CE4372 /* form_new_page.3x */, + 4CF088510FFC2BAF00CE4372 /* form_opts.3x */, + 4CF088520FFC2BAF00CE4372 /* form_page.3x */, + 4CF088530FFC2BAF00CE4372 /* form_post.3x */, + 4CF088540FFC2BAF00CE4372 /* form_requestname.3x */, + 4CF088550FFC2BAF00CE4372 /* form_userptr.3x */, + 4CF088560FFC2BAF00CE4372 /* form_win.3x */, + 4CF088570FFC2BAF00CE4372 /* infocmp.1m */, + 4CF088580FFC2BAF00CE4372 /* infotocap.1m */, + 4CF088590FFC2BAF00CE4372 /* key_defined.3x */, + 4CF0885A0FFC2BAF00CE4372 /* keybound.3x */, + 4CF0885B0FFC2BAF00CE4372 /* keyok.3x */, + 4CF0885C0FFC2BAF00CE4372 /* legacy_coding.3x */, + 4CF0885D0FFC2BAF00CE4372 /* make_sed.sh */, + 4CF0885E0FFC2BB100CE4372 /* Makefile.in */, + 4CF0885F0FFC2BB100CE4372 /* man_db.renames */, + 4CF088600FFC2BB100CE4372 /* manlinks.sed */, + 4CF088610FFC2BB100CE4372 /* menu.3x */, + 4CF088620FFC2BB100CE4372 /* menu_attributes.3x */, + 4CF088630FFC2BB100CE4372 /* menu_cursor.3x */, + 4CF088640FFC2BB100CE4372 /* menu_driver.3x */, + 4CF088650FFC2BB100CE4372 /* menu_format.3x */, + 4CF088660FFC2BB100CE4372 /* menu_hook.3x */, + 4CF088670FFC2BB100CE4372 /* menu_items.3x */, + 4CF088680FFC2BB100CE4372 /* menu_mark.3x */, + 4CF088690FFC2BB100CE4372 /* menu_new.3x */, + 4CF0886A0FFC2BB100CE4372 /* menu_opts.3x */, + 4CF0886B0FFC2BB100CE4372 /* menu_pattern.3x */, + 4CF0886C0FFC2BB100CE4372 /* menu_post.3x */, + 4CF0886D0FFC2BB100CE4372 /* menu_requestname.3x */, + 4CF0886E0FFC2BB100CE4372 /* menu_spacing.3x */, + 4CF0886F0FFC2BB100CE4372 /* menu_userptr.3x */, + 4CF088700FFC2BB100CE4372 /* menu_win.3x */, + 4CF088710FFC2BB100CE4372 /* mitem_current.3x */, + 4CF088720FFC2BB100CE4372 /* mitem_name.3x */, + 4CF088730FFC2BB100CE4372 /* mitem_new.3x */, + 4CF088740FFC2BB100CE4372 /* mitem_opts.3x */, + 4CF088750FFC2BB100CE4372 /* mitem_userptr.3x */, + 4CF088760FFC2BB100CE4372 /* mitem_value.3x */, + 4CF088770FFC2BB100CE4372 /* mitem_visible.3x */, + 4CF088780FFC2BB100CE4372 /* MKterminfo.sh */, + 4CF088790FFC2BB100CE4372 /* ncurses.3x */, + 4CF0887A0FFC2BB100CE4372 /* panel.3x */, + 4CF0887B0FFC2BB100CE4372 /* resizeterm.3x */, + 4CF0887C0FFC2BB100CE4372 /* term.5 */, + 4CF0887D0FFC2BB100CE4372 /* term.7 */, + 4CF0887E0FFC2BB100CE4372 /* terminfo.head */, + 4CF0887F0FFC2BB100CE4372 /* terminfo.tail */, + 4CF088800FFC2BB100CE4372 /* tic.1m */, + 4CF088810FFC2BB100CE4372 /* toe.1m */, + 4CF088820FFC2BB100CE4372 /* tput.1 */, + 4CF088830FFC2BB100CE4372 /* tset.1 */, + 4CF088840FFC2BB100CE4372 /* wresize.3x */, + ); + path = man; + sourceTree = ""; + }; + 4CF088860FFC2BB100CE4372 /* menu */ = { + isa = PBXGroup; + children = ( + 4CF088870FFC2BB100CE4372 /* eti.h */, + 4CF088880FFC2BB100CE4372 /* headers */, + 4CF088890FFC2BB100CE4372 /* llib-lmenu */, + 4CF0888A0FFC2BB100CE4372 /* llib-lmenuw */, + 4CF0888B0FFC2BB100CE4372 /* m_attribs.c */, + 4CF0888C0FFC2BB100CE4372 /* m_cursor.c */, + 4CF0888D0FFC2BB100CE4372 /* m_driver.c */, + 4CF0888E0FFC2BB100CE4372 /* m_format.c */, + 4CF0888F0FFC2BB100CE4372 /* m_global.c */, + 4CF088900FFC2BB100CE4372 /* m_hook.c */, + 4CF088910FFC2BB100CE4372 /* m_item_cur.c */, + 4CF088920FFC2BB100CE4372 /* m_item_nam.c */, + 4CF088930FFC2BB100CE4372 /* m_item_new.c */, + 4CF088940FFC2BB100CE4372 /* m_item_opt.c */, + 4CF088950FFC2BB100CE4372 /* m_item_top.c */, + 4CF088960FFC2BB100CE4372 /* m_item_use.c */, + 4CF088970FFC2BB100CE4372 /* m_item_val.c */, + 4CF088980FFC2BB100CE4372 /* m_item_vis.c */, + 4CF088990FFC2BB100CE4372 /* m_items.c */, + 4CF0889A0FFC2BB100CE4372 /* m_new.c */, + 4CF0889B0FFC2BB100CE4372 /* m_opts.c */, + 4CF0889C0FFC2BB100CE4372 /* m_pad.c */, + 4CF0889D0FFC2BB100CE4372 /* m_pattern.c */, + 4CF0889E0FFC2BB100CE4372 /* m_post.c */, + 4CF0889F0FFC2BB100CE4372 /* m_req_name.c */, + 4CF088A00FFC2BB100CE4372 /* m_scale.c */, + 4CF088A10FFC2BB100CE4372 /* m_spacing.c */, + 4CF088A20FFC2BB100CE4372 /* m_sub.c */, + 4CF088A30FFC2BB100CE4372 /* m_trace.c */, + 4CF088A40FFC2BB100CE4372 /* m_userptr.c */, + 4CF088A50FFC2BB100CE4372 /* m_win.c */, + 4CF088A60FFC2BB100CE4372 /* Makefile.in */, + 4CF088A70FFC2BB100CE4372 /* menu.h */, + 4CF088A80FFC2BB100CE4372 /* menu.priv.h */, + 4CF088A90FFC2BB100CE4372 /* mf_common.h */, + 4CF088AA0FFC2BB100CE4372 /* modules */, + 4CF088AB0FFC2BB100CE4372 /* READ.ME */, + ); + path = menu; + sourceTree = ""; + }; + 4CF088AC0FFC2BB100CE4372 /* misc */ = { + isa = PBXGroup; + children = ( + 4CF088AD0FFC2BB100CE4372 /* chkdef.cmd */, + 4CF088AE0FFC2BB100CE4372 /* cleantic.cmd */, + 4CF088AF0FFC2BB100CE4372 /* cmpdef.cmd */, + 4CF088B00FFC2BB100CE4372 /* csort */, + 4CF088B10FFC2BB100CE4372 /* emx.src */, + 4CF088B20FFC2BB100CE4372 /* form.def */, + 4CF088B30FFC2BB100CE4372 /* form.ref */, + 4CF088B40FFC2BB100CE4372 /* gen_edit.sh */, + 4CF088B50FFC2BB100CE4372 /* jpf-indent */, + 4CF088B60FFC2BB100CE4372 /* makedef.cmd */, + 4CF088B70FFC2BB100CE4372 /* Makefile.in */, + 4CF088B80FFC2BB100CE4372 /* makellib */, + 4CF088B90FFC2BB100CE4372 /* menu.def */, + 4CF088BA0FFC2BB100CE4372 /* menu.ref */, + 4CF088BB0FFC2BB100CE4372 /* ncu-indent */, + 4CF088BC0FFC2BB100CE4372 /* ncurses-config.in */, + 4CF088BD0FFC2BB100CE4372 /* ncurses.def */, + 4CF088BE0FFC2BB100CE4372 /* ncurses.ref */, + 4CF088BF0FFC2BB100CE4372 /* ncurses.supp */, + 4CF088C00FFC2BB100CE4372 /* panel.def */, + 4CF088C10FFC2BB100CE4372 /* panel.ref */, + 4CF088C20FFC2BB100CE4372 /* run_tic.in */, + 4CF088C30FFC2BB100CE4372 /* shlib */, + 4CF088C40FFC2BB100CE4372 /* tabset */, + 4CF088C90FFC2BB100CE4372 /* tdlint */, + 4CF088CA0FFC2BB100CE4372 /* terminfo.src */, + ); + path = misc; + sourceTree = ""; + }; + 4CF088C40FFC2BB100CE4372 /* tabset */ = { + isa = PBXGroup; + children = ( + 4CF088C50FFC2BB100CE4372 /* std */, + 4CF088C60FFC2BB100CE4372 /* stdcrt */, + 4CF088C70FFC2BB100CE4372 /* vt100 */, + 4CF088C80FFC2BB100CE4372 /* vt300 */, + ); + path = tabset; + sourceTree = ""; + }; + 4CF088D00FFC2BB100CE4372 /* ncurses */ = { + isa = PBXGroup; + children = ( + 4CF088D10FFC2BB100CE4372 /* base */, + 4CF0892B0FFC2BB200CE4372 /* curses.priv.h */, + 4CF0892C0FFC2BB200CE4372 /* fifo_defs.h */, + 4CF0892D0FFC2BB200CE4372 /* llib-lncurses */, + 4CF0892E0FFC2BB200CE4372 /* llib-lncursest */, + 4CF0892F0FFC2BB200CE4372 /* llib-lncursesw */, + 4CF089300FFC2BB200CE4372 /* Makefile.in */, + 4CF089310FFC2BB200CE4372 /* modules */, + 4CF089320FFC2BB200CE4372 /* README */, + 4CF089330FFC2BB200CE4372 /* README.IZ */, + 4CF089340FFC2BB200CE4372 /* SigAction.h */, + 4CF089350FFC2BB200CE4372 /* tinfo */, + 4CF0896C0FFC2BB200CE4372 /* trace */, + 4CF089790FFC2BB200CE4372 /* tty */, + 4CF089840FFC2BB200CE4372 /* widechar */, + ); + path = ncurses; + sourceTree = ""; + }; + 4CF088D10FFC2BB100CE4372 /* base */ = { + isa = PBXGroup; + children = ( + 4CF088D20FFC2BB100CE4372 /* define_key.c */, + 4CF088D30FFC2BB100CE4372 /* key_defined.c */, + 4CF088D40FFC2BB100CE4372 /* keybound.c */, + 4CF088D50FFC2BB100CE4372 /* keyok.c */, + 4CF088D60FFC2BB100CE4372 /* legacy_coding.c */, + 4CF088D70FFC2BB100CE4372 /* lib_addch.c */, + 4CF088D80FFC2BB100CE4372 /* lib_addstr.c */, + 4CF088D90FFC2BB100CE4372 /* lib_beep.c */, + 4CF088DA0FFC2BB100CE4372 /* lib_bkgd.c */, + 4CF088DB0FFC2BB100CE4372 /* lib_box.c */, + 4CF088DC0FFC2BB100CE4372 /* lib_chgat.c */, + 4CF088DD0FFC2BB100CE4372 /* lib_clear.c */, + 4CF088DE0FFC2BB100CE4372 /* lib_clearok.c */, + 4CF088DF0FFC2BB100CE4372 /* lib_clrbot.c */, + 4CF088E00FFC2BB100CE4372 /* lib_clreol.c */, + 4CF088E10FFC2BB100CE4372 /* lib_color.c */, + 4CF088E20FFC2BB100CE4372 /* lib_colorset.c */, + 4CF088E30FFC2BB100CE4372 /* lib_delch.c */, + 4CF088E40FFC2BB100CE4372 /* lib_delwin.c */, + 4CF088E50FFC2BB100CE4372 /* lib_dft_fgbg.c */, + 4CF088E60FFC2BB100CE4372 /* lib_echo.c */, + 4CF088E70FFC2BB100CE4372 /* lib_endwin.c */, + 4CF088E80FFC2BB100CE4372 /* lib_erase.c */, + 4CF088E90FFC2BB100CE4372 /* lib_flash.c */, + 4CF088EA0FFC2BB100CE4372 /* lib_freeall.c */, + 4CF088EB0FFC2BB100CE4372 /* lib_getch.c */, + 4CF088EC0FFC2BB100CE4372 /* lib_getstr.c */, + 4CF088ED0FFC2BB100CE4372 /* lib_hline.c */, + 4CF088EE0FFC2BB100CE4372 /* lib_immedok.c */, + 4CF088EF0FFC2BB100CE4372 /* lib_inchstr.c */, + 4CF088F00FFC2BB100CE4372 /* lib_initscr.c */, + 4CF088F10FFC2BB100CE4372 /* lib_insch.c */, + 4CF088F20FFC2BB100CE4372 /* lib_insdel.c */, + 4CF088F30FFC2BB100CE4372 /* lib_insnstr.c */, + 4CF088F40FFC2BB100CE4372 /* lib_instr.c */, + 4CF088F50FFC2BB100CE4372 /* lib_isendwin.c */, + 4CF088F60FFC2BB100CE4372 /* lib_leaveok.c */, + 4CF088F70FFC2BB100CE4372 /* lib_mouse.c */, + 4CF088F80FFC2BB100CE4372 /* lib_move.c */, + 4CF088F90FFC2BB100CE4372 /* lib_mvwin.c */, + 4CF088FA0FFC2BB100CE4372 /* lib_newterm.c */, + 4CF088FB0FFC2BB100CE4372 /* lib_newwin.c */, + 4CF088FC0FFC2BB100CE4372 /* lib_nl.c */, + 4CF088FD0FFC2BB100CE4372 /* lib_overlay.c */, + 4CF088FE0FFC2BB100CE4372 /* lib_pad.c */, + 4CF088FF0FFC2BB100CE4372 /* lib_printw.c */, + 4CF089000FFC2BB100CE4372 /* lib_redrawln.c */, + 4CF089010FFC2BB100CE4372 /* lib_refresh.c */, + 4CF089020FFC2BB100CE4372 /* lib_restart.c */, + 4CF089030FFC2BB100CE4372 /* lib_scanw.c */, + 4CF089040FFC2BB100CE4372 /* lib_screen.c */, + 4CF089050FFC2BB100CE4372 /* lib_scroll.c */, + 4CF089060FFC2BB100CE4372 /* lib_scrollok.c */, + 4CF089070FFC2BB100CE4372 /* lib_scrreg.c */, + 4CF089080FFC2BB100CE4372 /* lib_set_term.c */, + 4CF089090FFC2BB100CE4372 /* lib_slk.c */, + 4CF0890A0FFC2BB100CE4372 /* lib_slkatr_set.c */, + 4CF0890B0FFC2BB100CE4372 /* lib_slkatrof.c */, + 4CF0890C0FFC2BB100CE4372 /* lib_slkatron.c */, + 4CF0890D0FFC2BB100CE4372 /* lib_slkatrset.c */, + 4CF0890E0FFC2BB100CE4372 /* lib_slkattr.c */, + 4CF0890F0FFC2BB100CE4372 /* lib_slkclear.c */, + 4CF089100FFC2BB100CE4372 /* lib_slkcolor.c */, + 4CF089110FFC2BB100CE4372 /* lib_slkinit.c */, + 4CF089120FFC2BB100CE4372 /* lib_slklab.c */, + 4CF089130FFC2BB100CE4372 /* lib_slkrefr.c */, + 4CF089140FFC2BB100CE4372 /* lib_slkset.c */, + 4CF089150FFC2BB100CE4372 /* lib_slktouch.c */, + 4CF089160FFC2BB100CE4372 /* lib_touch.c */, + 4CF089170FFC2BB100CE4372 /* lib_ungetch.c */, + 4CF089180FFC2BB100CE4372 /* lib_vline.c */, + 4CF089190FFC2BB100CE4372 /* lib_wattroff.c */, + 4CF0891A0FFC2BB100CE4372 /* lib_wattron.c */, + 4CF0891B0FFC2BB100CE4372 /* lib_winch.c */, + 4CF0891C0FFC2BB100CE4372 /* lib_window.c */, + 4CF0891D0FFC2BB100CE4372 /* memmove.c */, + 4CF0891E0FFC2BB100CE4372 /* MKkeyname.awk */, + 4CF0891F0FFC2BB100CE4372 /* MKlib_gen.sh */, + 4CF089200FFC2BB100CE4372 /* MKunctrl.awk */, + 4CF089210FFC2BB100CE4372 /* nc_panel.c */, + 4CF089220FFC2BB100CE4372 /* README */, + 4CF089230FFC2BB100CE4372 /* resizeterm.c */, + 4CF089240FFC2BB100CE4372 /* safe_sprintf.c */, + 4CF089250FFC2BB100CE4372 /* sigaction.c */, + 4CF089260FFC2BB100CE4372 /* tries.c */, + 4CF089270FFC2BB100CE4372 /* use_window.c */, + 4CF089280FFC2BB100CE4372 /* version.c */, + 4CF089290FFC2BB100CE4372 /* vsscanf.c */, + 4CF0892A0FFC2BB100CE4372 /* wresize.c */, + ); + path = base; + sourceTree = ""; + }; + 4CF089350FFC2BB200CE4372 /* tinfo */ = { + isa = PBXGroup; + children = ( + 4CF089360FFC2BB200CE4372 /* access.c */, + 4CF089370FFC2BB200CE4372 /* add_tries.c */, + 4CF089380FFC2BB200CE4372 /* alloc_entry.c */, + 4CF089390FFC2BB200CE4372 /* alloc_ttype.c */, + 4CF0893A0FFC2BB200CE4372 /* captoinfo.c */, + 4CF0893B0FFC2BB200CE4372 /* comp_error.c */, + 4CF0893C0FFC2BB200CE4372 /* comp_expand.c */, + 4CF0893D0FFC2BB200CE4372 /* comp_hash.c */, + 4CF0893E0FFC2BB200CE4372 /* comp_parse.c */, + 4CF0893F0FFC2BB200CE4372 /* comp_scan.c */, + 4CF089400FFC2BB200CE4372 /* db_iterator.c */, + 4CF089410FFC2BB200CE4372 /* doalloc.c */, + 4CF089420FFC2BB200CE4372 /* entries.c */, + 4CF089430FFC2BB200CE4372 /* free_ttype.c */, + 4CF089440FFC2BB200CE4372 /* getenv_num.c */, + 4CF089450FFC2BB200CE4372 /* hashed_db.c */, + 4CF089460FFC2BB200CE4372 /* home_terminfo.c */, + 4CF089470FFC2BB200CE4372 /* init_keytry.c */, + 4CF089480FFC2BB200CE4372 /* lib_acs.c */, + 4CF089490FFC2BB200CE4372 /* lib_baudrate.c */, + 4CF0894A0FFC2BB200CE4372 /* lib_cur_term.c */, + 4CF0894B0FFC2BB200CE4372 /* lib_data.c */, + 4CF0894C0FFC2BB200CE4372 /* lib_has_cap.c */, + 4CF0894D0FFC2BB200CE4372 /* lib_kernel.c */, + 4CF0894E0FFC2BB200CE4372 /* lib_longname.c */, + 4CF0894F0FFC2BB200CE4372 /* lib_napms.c */, + 4CF089500FFC2BB200CE4372 /* lib_options.c */, + 4CF089510FFC2BB200CE4372 /* lib_print.c */, + 4CF089520FFC2BB200CE4372 /* lib_raw.c */, + 4CF089530FFC2BB200CE4372 /* lib_setup.c */, + 4CF089540FFC2BB200CE4372 /* lib_termcap.c */, + 4CF089550FFC2BB200CE4372 /* lib_termname.c */, + 4CF089560FFC2BB200CE4372 /* lib_tgoto.c */, + 4CF089570FFC2BB200CE4372 /* lib_ti.c */, + 4CF089580FFC2BB200CE4372 /* lib_tparm.c */, + 4CF089590FFC2BB200CE4372 /* lib_tputs.c */, + 4CF0895A0FFC2BB200CE4372 /* lib_ttyflags.c */, + 4CF0895B0FFC2BB200CE4372 /* make_keys.c */, + 4CF0895C0FFC2BB200CE4372 /* MKcaptab.awk */, + 4CF0895D0FFC2BB200CE4372 /* MKcaptab.sh */, + 4CF0895E0FFC2BB200CE4372 /* MKcodes.awk */, + 4CF0895F0FFC2BB200CE4372 /* MKfallback.sh */, + 4CF089600FFC2BB200CE4372 /* MKkeys_list.sh */, + 4CF089610FFC2BB200CE4372 /* MKnames.awk */, + 4CF089620FFC2BB200CE4372 /* name_match.c */, + 4CF089630FFC2BB200CE4372 /* parse_entry.c */, + 4CF089640FFC2BB200CE4372 /* read_entry.c */, + 4CF089650FFC2BB200CE4372 /* read_termcap.c */, + 4CF089660FFC2BB200CE4372 /* README */, + 4CF089670FFC2BB200CE4372 /* setbuf.c */, + 4CF089680FFC2BB200CE4372 /* strings.c */, + 4CF089690FFC2BB200CE4372 /* trim_sgr0.c */, + 4CF0896A0FFC2BB200CE4372 /* use_screen.c */, + 4CF0896B0FFC2BB200CE4372 /* write_entry.c */, + ); + path = tinfo; + sourceTree = ""; + }; + 4CF0896C0FFC2BB200CE4372 /* trace */ = { + isa = PBXGroup; + children = ( + 4CF0896D0FFC2BB200CE4372 /* lib_trace.c */, + 4CF0896E0FFC2BB200CE4372 /* lib_traceatr.c */, + 4CF0896F0FFC2BB200CE4372 /* lib_tracebits.c */, + 4CF089700FFC2BB200CE4372 /* lib_tracechr.c */, + 4CF089710FFC2BB200CE4372 /* lib_tracedmp.c */, + 4CF089720FFC2BB200CE4372 /* lib_tracemse.c */, + 4CF089730FFC2BB200CE4372 /* README */, + 4CF089740FFC2BB200CE4372 /* trace_buf.c */, + 4CF089750FFC2BB200CE4372 /* trace_tries.c */, + 4CF089760FFC2BB200CE4372 /* trace_xnames.c */, + 4CF089770FFC2BB200CE4372 /* varargs.c */, + 4CF089780FFC2BB200CE4372 /* visbuf.c */, + ); + path = trace; + sourceTree = ""; + }; + 4CF089790FFC2BB200CE4372 /* tty */ = { + isa = PBXGroup; + children = ( + 4CF0897A0FFC2BB200CE4372 /* hardscroll.c */, + 4CF0897B0FFC2BB200CE4372 /* hashmap.c */, + 4CF0897C0FFC2BB200CE4372 /* lib_mvcur.c */, + 4CF0897D0FFC2BB200CE4372 /* lib_tstp.c */, + 4CF0897E0FFC2BB200CE4372 /* lib_twait.c */, + 4CF0897F0FFC2BB200CE4372 /* lib_vidattr.c */, + 4CF089800FFC2BB200CE4372 /* MKexpanded.sh */, + 4CF089810FFC2BB200CE4372 /* tty_display.h */, + 4CF089820FFC2BB200CE4372 /* tty_input.h */, + 4CF089830FFC2BB200CE4372 /* tty_update.c */, + ); + path = tty; + sourceTree = ""; + }; + 4CF089840FFC2BB200CE4372 /* widechar */ = { + isa = PBXGroup; + children = ( + 4CF089850FFC2BB200CE4372 /* charable.c */, + 4CF089860FFC2BB200CE4372 /* lib_add_wch.c */, + 4CF089870FFC2BB200CE4372 /* lib_box_set.c */, + 4CF089880FFC2BB200CE4372 /* lib_cchar.c */, + 4CF089890FFC2BB200CE4372 /* lib_erasewchar.c */, + 4CF0898A0FFC2BB200CE4372 /* lib_get_wch.c */, + 4CF0898B0FFC2BB200CE4372 /* lib_get_wstr.c */, + 4CF0898C0FFC2BB200CE4372 /* lib_hline_set.c */, + 4CF0898D0FFC2BB200CE4372 /* lib_in_wch.c */, + 4CF0898E0FFC2BB200CE4372 /* lib_in_wchnstr.c */, + 4CF0898F0FFC2BB200CE4372 /* lib_ins_wch.c */, + 4CF089900FFC2BB200CE4372 /* lib_inwstr.c */, + 4CF089910FFC2BB200CE4372 /* lib_key_name.c */, + 4CF089920FFC2BB200CE4372 /* lib_pecho_wchar.c */, + 4CF089930FFC2BB200CE4372 /* lib_slk_wset.c */, + 4CF089940FFC2BB200CE4372 /* lib_unget_wch.c */, + 4CF089950FFC2BB200CE4372 /* lib_vid_attr.c */, + 4CF089960FFC2BB200CE4372 /* lib_vline_set.c */, + 4CF089970FFC2BB200CE4372 /* lib_wacs.c */, + 4CF089980FFC2BB200CE4372 /* lib_wunctrl.c */, + ); + path = widechar; + sourceTree = ""; + }; + 4CF0899A0FFC2BB200CE4372 /* panel */ = { + isa = PBXGroup; + children = ( + 4CF0899B0FFC2BB200CE4372 /* headers */, + 4CF0899C0FFC2BB200CE4372 /* llib-lpanel */, + 4CF0899D0FFC2BB200CE4372 /* llib-lpanelw */, + 4CF0899E0FFC2BB200CE4372 /* Makefile.in */, + 4CF0899F0FFC2BB200CE4372 /* modules */, + 4CF089A00FFC2BB200CE4372 /* p_above.c */, + 4CF089A10FFC2BB200CE4372 /* p_below.c */, + 4CF089A20FFC2BB200CE4372 /* p_bottom.c */, + 4CF089A30FFC2BB200CE4372 /* p_delete.c */, + 4CF089A40FFC2BB200CE4372 /* p_hidden.c */, + 4CF089A50FFC2BB200CE4372 /* p_hide.c */, + 4CF089A60FFC2BB200CE4372 /* p_move.c */, + 4CF089A70FFC2BB200CE4372 /* p_new.c */, + 4CF089A80FFC2BB200CE4372 /* p_replace.c */, + 4CF089A90FFC2BB200CE4372 /* p_show.c */, + 4CF089AA0FFC2BB200CE4372 /* p_top.c */, + 4CF089AB0FFC2BB200CE4372 /* p_update.c */, + 4CF089AC0FFC2BB200CE4372 /* p_user.c */, + 4CF089AD0FFC2BB200CE4372 /* p_win.c */, + 4CF089AE0FFC2BB200CE4372 /* panel.c */, + 4CF089AF0FFC2BB200CE4372 /* panel.h */, + 4CF089B00FFC2BB200CE4372 /* panel.priv.h */, + ); + path = panel; + sourceTree = ""; + }; + 4CF089B10FFC2BB200CE4372 /* progs */ = { + isa = PBXGroup; + children = ( + 4CF089B20FFC2BB200CE4372 /* capconvert */, + 4CF089B30FFC2BB200CE4372 /* clear.c */, + 4CF089B40FFC2BB200CE4372 /* clear.sh */, + 4CF089B50FFC2BB200CE4372 /* dump_entry.c */, + 4CF089B60FFC2BB200CE4372 /* dump_entry.h */, + 4CF089B70FFC2BB200CE4372 /* infocmp.c */, + 4CF089B80FFC2BB200CE4372 /* Makefile.in */, + 4CF089B90FFC2BB200CE4372 /* MKtermsort.sh */, + 4CF089BA0FFC2BB200CE4372 /* modules */, + 4CF089BB0FFC2BB200CE4372 /* progs.priv.h */, + 4CF089BC0FFC2BB200CE4372 /* tic.c */, + 4CF089BD0FFC2BB200CE4372 /* toe.c */, + 4CF089BE0FFC2BB200CE4372 /* tput.c */, + 4CF089BF0FFC2BB200CE4372 /* tset.c */, + ); + path = progs; + sourceTree = ""; + }; + 4CF089C30FFC2BB200CE4372 /* test */ = { + isa = PBXGroup; + children = ( + 4CF089C40FFC2BB200CE4372 /* aclocal.m4 */, + 4CF089C50FFC2BB200CE4372 /* background.c */, + 4CF089C60FFC2BB200CE4372 /* blue.c */, + 4CF089C70FFC2BB200CE4372 /* bs.6 */, + 4CF089C80FFC2BB200CE4372 /* bs.c */, + 4CF089C90FFC2BB200CE4372 /* bulgarian-utf8.txt */, + 4CF089CA0FFC2BB300CE4372 /* cardfile.c */, + 4CF089CB0FFC2BB300CE4372 /* cardfile.dat */, + 4CF089CC0FFC2BB300CE4372 /* chgat.c */, + 4CF089CD0FFC2BB300CE4372 /* color_set.c */, + 4CF089CE0FFC2BB300CE4372 /* configure */, + 4CF089CF0FFC2BB300CE4372 /* configure.in */, + 4CF089D00FFC2BB300CE4372 /* demo_altkeys.c */, + 4CF089D10FFC2BB300CE4372 /* demo_defkey.c */, + 4CF089D20FFC2BB300CE4372 /* demo_forms.c */, + 4CF089D30FFC2BB300CE4372 /* demo_keyok.c */, + 4CF089D40FFC2BB300CE4372 /* demo_menus.c */, + 4CF089D50FFC2BB300CE4372 /* demo_panels.c */, + 4CF089D60FFC2BB300CE4372 /* demo_termcap.c */, + 4CF089D70FFC2BB300CE4372 /* ditto.c */, + 4CF089D80FFC2BB300CE4372 /* dots.c */, + 4CF089D90FFC2BB300CE4372 /* dots_mvcur.c */, + 4CF089DA0FFC2BB300CE4372 /* echochar.c */, + 4CF089DB0FFC2BB300CE4372 /* edit_field.c */, + 4CF089DC0FFC2BB300CE4372 /* edit_field.h */, + 4CF089DD0FFC2BB300CE4372 /* filter.c */, + 4CF089DE0FFC2BB300CE4372 /* firework.c */, + 4CF089DF0FFC2BB300CE4372 /* firstlast.c */, + 4CF089E00FFC2BB300CE4372 /* foldkeys.c */, + 4CF089E10FFC2BB300CE4372 /* gdc.6 */, + 4CF089E20FFC2BB300CE4372 /* gdc.c */, + 4CF089E30FFC2BB300CE4372 /* hanoi.c */, + 4CF089E40FFC2BB300CE4372 /* hashtest.c */, + 4CF089E50FFC2BB300CE4372 /* inch_wide.c */, + 4CF089E60FFC2BB300CE4372 /* inchs.c */, + 4CF089E70FFC2BB300CE4372 /* ins_wide.c */, + 4CF089E80FFC2BB300CE4372 /* inserts.c */, + 4CF089E90FFC2BB300CE4372 /* key_names.c */, + 4CF089EA0FFC2BB300CE4372 /* keynames.c */, + 4CF089EB0FFC2BB300CE4372 /* knight.c */, + 4CF089EC0FFC2BB300CE4372 /* linux-color.dat */, + 4CF089ED0FFC2BB300CE4372 /* listused.sh */, + 4CF089EE0FFC2BB300CE4372 /* lrtest.c */, + 4CF089EF0FFC2BB300CE4372 /* Makefile.in */, + 4CF089F00FFC2BB300CE4372 /* mk-test.awk */, + 4CF089F10FFC2BB300CE4372 /* modules */, + 4CF089F20FFC2BB300CE4372 /* movewindow.c */, + 4CF089F30FFC2BB300CE4372 /* ncurses.c */, + 4CF089F40FFC2BB300CE4372 /* ncurses_tst.hin */, + 4CF089F50FFC2BB300CE4372 /* newdemo.c */, + 4CF089F60FFC2BB300CE4372 /* programs */, + 4CF089F70FFC2BB300CE4372 /* railroad.c */, + 4CF089F80FFC2BB300CE4372 /* rain.c */, + 4CF089F90FFC2BB300CE4372 /* README */, + 4CF089FA0FFC2BB300CE4372 /* redraw.c */, + 4CF089FB0FFC2BB300CE4372 /* savescreen.c */, + 4CF089FC0FFC2BB300CE4372 /* savescreen.sh */, + 4CF089FD0FFC2BB300CE4372 /* tclock.c */, + 4CF089FE0FFC2BB300CE4372 /* test.priv.h */, + 4CF089FF0FFC2BB300CE4372 /* test_arrays.c */, + 4CF08A000FFC2BB300CE4372 /* test_get_wstr.c */, + 4CF08A010FFC2BB300CE4372 /* test_getstr.c */, + 4CF08A020FFC2BB300CE4372 /* test_instr.c */, + 4CF08A030FFC2BB300CE4372 /* test_inwstr.c */, + 4CF08A040FFC2BB300CE4372 /* test_opaque.c */, + 4CF08A050FFC2BB300CE4372 /* testaddch.c */, + 4CF08A060FFC2BB300CE4372 /* testcurs.c */, + 4CF08A070FFC2BB300CE4372 /* testscanw.c */, + 4CF08A080FFC2BB300CE4372 /* tracemunch */, + 4CF08A090FFC2BB300CE4372 /* view.c */, + 4CF08A0A0FFC2BB300CE4372 /* widechars-utf8.txt */, + 4CF08A0B0FFC2BB300CE4372 /* worm.c */, + 4CF08A0C0FFC2BB300CE4372 /* xmas.c */, + 4CF08A0D0FFC2BB300CE4372 /* xterm-16color.dat */, + 4CF08A0E0FFC2BB300CE4372 /* xterm-88color.dat */, + ); + path = test; + sourceTree = ""; + }; + FCD5D3E014E4A88D00752D20 /* Derived Sources */ = { + isa = PBXGroup; + children = ( + 4C29FB5010211A0B001D8279 /* codes.c */, + 4C29FBE710223A64001D8279 /* comp_captab.c */, + FCD5D40714E516EC00752D20 /* curses.h */, + 4C9BE7AF104330A100182AEE /* expanded.c */, + 4C29FBF4102247F1001D8279 /* fallback.c */, + FCD5D40814E516EC00752D20 /* hashsize.h */, + FCD5D3E114E4A8F400752D20 /* init_keytry.h */, + 4CD04EE4103DE113001C87D5 /* lib_gen.c */, + 4CCA0C11102386830073B661 /* lib_keyname.c */, + 4C609E4E101652A300971540 /* names.c */, + FCD5D40914E516EC00752D20 /* ncurses_def.h */, + FCD5D3E214E4A8F400752D20 /* parametrized.h */, + FCD5D40A14E516EC00752D20 /* term.h */, + FCD5D40B14E516EC00752D20 /* termsort.c */, + FCD5D40C14E516EC00752D20 /* transform.h */, + 4C29FB271021124D001D8279 /* unctrl.c */, + ); + name = "Derived Sources"; + path = ncurses; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 4C29FC2B10225768001D8279 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD04F02103F1BEB001C87D5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD05006103F1BFD001C87D5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD0510A103F1C12001C87D5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 4C29FA661020E62B001D8279 /* clear */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FA6B1020E64A001D8279 /* Build configuration list for PBXNativeTarget "clear" */; + buildPhases = ( + 4C29FA641020E62B001D8279 /* Sources */, + 3FB35B96206F82580097BE22 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + FC00FCA114E9FDD7000AD1B3 /* PBXTargetDependency */, + ); + name = clear; + productName = clear; + productReference = 4C29FA671020E62B001D8279 /* clear */; + productType = "com.apple.product-type.tool"; + }; + 4C29FA781020E959001D8279 /* infocmp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FA7D1020E977001D8279 /* Build configuration list for PBXNativeTarget "infocmp" */; + buildPhases = ( + 4C29FA761020E959001D8279 /* Sources */, + 3FB35B99206F826A0097BE22 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + FC00FC9F14E9FDC7000AD1B3 /* PBXTargetDependency */, + ); + name = infocmp; + productName = infocmp; + productReference = 4C29FA791020E959001D8279 /* infocmp */; + productType = "com.apple.product-type.tool"; + }; + 4C29FA801020EB4A001D8279 /* tput */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FA841020EB4A001D8279 /* Build configuration list for PBXNativeTarget "tput" */; + buildPhases = ( + 4C29FA811020EB4A001D8279 /* Sources */, + 3FB35B9F206F82A30097BE22 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + FC00FCA714E9FDE6000AD1B3 /* PBXTargetDependency */, + ); + name = tput; + productName = clear; + productReference = 4C29FA871020EB4A001D8279 /* tput */; + productType = "com.apple.product-type.tool"; + }; + 4C29FA891020EB4E001D8279 /* tset */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FA8D1020EB4E001D8279 /* Build configuration list for PBXNativeTarget "tset" */; + buildPhases = ( + 4C29FA8A1020EB4E001D8279 /* Sources */, + 3FB35BA1206F82AC0097BE22 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + FC00FCA914E9FDEB000AD1B3 /* PBXTargetDependency */, + ); + name = tset; + productName = clear; + productReference = 4C29FA901020EB4E001D8279 /* tset */; + productType = "com.apple.product-type.tool"; + }; + 4C29FA921020EB52001D8279 /* toe */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FA961020EB52001D8279 /* Build configuration list for PBXNativeTarget "toe" */; + buildPhases = ( + 4C29FA931020EB52001D8279 /* Sources */, + 3FB35B9D206F82990097BE22 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + FC00FCA514E9FDE2000AD1B3 /* PBXTargetDependency */, + ); + name = toe; + productName = clear; + productReference = 4C29FA991020EB52001D8279 /* toe */; + productType = "com.apple.product-type.tool"; + }; + 4C29FAA21020EBED001D8279 /* tic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FAA61020EBED001D8279 /* Build configuration list for PBXNativeTarget "tic" */; + buildPhases = ( + 4C29FAA31020EBED001D8279 /* Sources */, + 3FB35B9B206F828F0097BE22 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + FC00FCA314E9FDDE000AD1B3 /* PBXTargetDependency */, + ); + name = tic; + productName = clear; + productReference = 4C29FAA91020EBED001D8279 /* tic */; + productType = "com.apple.product-type.tool"; + }; + 4C29FBA910223559001D8279 /* make_hash */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FBB710223559001D8279 /* Build configuration list for PBXNativeTarget "make_hash" */; + buildPhases = ( + 4C29FBAB10223559001D8279 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = make_hash; + productName = make_keys; + productReference = 4C29FBBA10223559001D8279 /* make_hash */; + productType = "com.apple.product-type.tool"; + }; + 4C29FC2E10225768001D8279 /* libncurses */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C29FC321022578A001D8279 /* Build configuration list for PBXNativeTarget "libncurses" */; + buildPhases = ( + 4C29FC2B10225768001D8279 /* Headers */, + 4C29FC2C10225768001D8279 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + FCD5D43914E5CB0F00752D20 /* PBXTargetDependency */, + ); + name = libncurses; + productName = libncurses; + productReference = 4C29FC2F10225768001D8279 /* libncurses.5.4.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 4C609E3310163B4500971540 /* make_keys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C609E4010163B6200971540 /* Build configuration list for PBXNativeTarget "make_keys" */; + buildPhases = ( + 4C609E3110163B4500971540 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = make_keys; + productName = make_keys; + productReference = 4C609E3410163B4500971540 /* make_keys */; + productType = "com.apple.product-type.tool"; + }; + 4CD04EFE103F1BEB001C87D5 /* libform */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4CD04FFE103F1BEB001C87D5 /* Build configuration list for PBXNativeTarget "libform" */; + buildPhases = ( + 4CD04F02103F1BEB001C87D5 /* Headers */, + 4CD04F03103F1BEB001C87D5 /* Sources */, + 4CD04FFD103F1BEB001C87D5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4C006648103F5791008F286F /* PBXTargetDependency */, + ); + name = libform; + productName = libncurses; + productReference = 4CD05000103F1BEB001C87D5 /* libform.5.4.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 4CD05002103F1BFD001C87D5 /* libmenu */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4CD05102103F1BFD001C87D5 /* Build configuration list for PBXNativeTarget "libmenu" */; + buildPhases = ( + 4CD05006103F1BFD001C87D5 /* Headers */, + 4CD05007103F1BFD001C87D5 /* Sources */, + 4CD05101103F1BFD001C87D5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4C00664A103F579C008F286F /* PBXTargetDependency */, + ); + name = libmenu; + productName = libncurses; + productReference = 4CD05104103F1BFD001C87D5 /* libmenu.5.4.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 4CD05106103F1C12001C87D5 /* libpanel */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4CD05206103F1C12001C87D5 /* Build configuration list for PBXNativeTarget "libpanel" */; + buildPhases = ( + 4CD0510A103F1C12001C87D5 /* Headers */, + 4CD0510B103F1C12001C87D5 /* Sources */, + 4CD05205103F1C12001C87D5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4C00664C103F57A5008F286F /* PBXTargetDependency */, + ); + name = libpanel; + productName = libncurses; + productReference = 4CD05208103F1C12001C87D5 /* libpanel.5.4.dylib */; + productType = "com.apple.product-type.library.dynamic"; + }; + 4CE980871034D62D00BA0D88 /* tic_static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4CE9808F1034D62D00BA0D88 /* Build configuration list for PBXNativeTarget "tic_static" */; + buildPhases = ( + 4CE9808A1034D62D00BA0D88 /* Sources */, + FCD5D3E314E4AD7000752D20 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = tic_static; + productName = clear; + productReference = 4CE980911034D62D00BA0D88 /* tic_static */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ncurses" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* ncurses */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + FC00FC7314E9FB09000AD1B3 /* All */, + 4C29FA601020DDBD001D8279 /* libraries */, + FC00FC7614E9FB13000AD1B3 /* executables */, + FCD5D3F414E4F61700752D20 /* Bootstrap Sources */, + FCD5D43214E5C99D00752D20 /* Derived Sources */, + 4C29FA661020E62B001D8279 /* clear */, + 4C29FA781020E959001D8279 /* infocmp */, + 4C29FAA21020EBED001D8279 /* tic */, + 4C29FA921020EB52001D8279 /* toe */, + 4C29FA801020EB4A001D8279 /* tput */, + 4C29FA891020EB4E001D8279 /* tset */, + 4C29FC2E10225768001D8279 /* libncurses */, + 4CD04EFE103F1BEB001C87D5 /* libform */, + 4CD05002103F1BFD001C87D5 /* libmenu */, + 4CD05106103F1C12001C87D5 /* libpanel */, + FCD5D44214E5CC4F00752D20 /* native_make_hash */, + 4C29FBA910223559001D8279 /* make_hash */, + 4C5C3FD7102CD13500B4B066 /* native_make_keys */, + 4C609E3310163B4500971540 /* make_keys */, + 4CE980871034D62D00BA0D88 /* tic_static */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 4C5C3FD6102CD13500B4B066 /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 12; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/native_execs.sh -target make_keys"; + showEnvVarsInLog = 0; + }; + 4CC76F2E102762BC00C87ED0 /* install_man_misc.sh */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + ); + name = install_man_misc.sh; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/install_man_misc.sh"; + showEnvVarsInLog = 0; + }; + 4CC76FBF1027A79600C87ED0 /* run_tic.sh */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + ); + name = run_tic.sh; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/run_tic.sh"; + showEnvVarsInLog = 0; + }; + 4CC76FD11027B24900C87ED0 /* install_headers.sh */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + ); + name = install_headers.sh; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/install_headers.sh"; + showEnvVarsInLog = 0; + }; + 4CC76FDD1027BDCB00C87ED0 /* link_libs.sh */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + ); + name = link_libs.sh; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/link_libs.sh"; + showEnvVarsInLog = 0; + }; + FC00FC8914E9FB80000AD1B3 /* fix_bin.sh */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 8; + files = ( + ); + inputPaths = ( + ); + name = fix_bin.sh; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/fix_bin.sh"; + showEnvVarsInLog = 0; + }; + FCD5D43714E5CA1F00752D20 /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + "$(BUILT_PRODUCTS_DIR)/codes.c", + "$(BUILT_PRODUCTS_DIR)/comp_captab.c", + "$(BUILT_PRODUCTS_DIR)/expanded.c", + "$(BUILT_PRODUCTS_DIR)/fallback.c", + "$(BUILT_PRODUCTS_DIR)/lib_gen.c", + "$(BUILT_PRODUCTS_DIR)/lib_keyname.c", + "$(BUILT_PRODUCTS_DIR)/names.c", + "$(BUILT_PRODUCTS_DIR)/termsort.c", + "$(BUILT_PRODUCTS_DIR)/unctrl.c", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/derived_headers.sh\n. \"$PROJECT_DIR\"/xcodescripts/derived_sources.sh\n"; + showEnvVarsInLog = 0; + }; + FCD5D44514E5CC5500752D20 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/native_execs.sh -target make_hash"; + showEnvVarsInLog = 0; + }; + FCD5D44B14E5DB3E00752D20 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = ". \"$PROJECT_DIR\"/xcodescripts/bootstrap_headers.sh\n. \"$PROJECT_DIR\"/xcodescripts/bootstrap_sources.sh"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4C29FA641020E62B001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FA6E1020E6CC001D8279 /* clear.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FA761020E959001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CC76EEB10274EB700C87ED0 /* infocmp.c in Sources */, + 4CC76EF410274F0A00C87ED0 /* dump_entry.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FA811020EB4A001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FABE1020EC98001D8279 /* tput.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FA8A1020EB4E001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FAC31020ECAB001D8279 /* tset.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FA931020EB52001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FAC81020ECBD001D8279 /* toe.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FAA31020EBED001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FABA1020EC80001D8279 /* tic.c in Sources */, + 4C29FACD1020ECE8001D8279 /* dump_entry.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FBAB10223559001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FBD7102236CB001D8279 /* comp_hash.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C29FC2C10225768001D8279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C29FC33102257C6001D8279 /* access.c in Sources */, + 4C29FC34102257C6001D8279 /* add_tries.c in Sources */, + 4C29FC35102257C6001D8279 /* alloc_entry.c in Sources */, + 4C29FC36102257C6001D8279 /* alloc_ttype.c in Sources */, + 4C29FC37102257C6001D8279 /* captoinfo.c in Sources */, + 4C29FC38102257C6001D8279 /* charable.c in Sources */, + 4C29FC39102257C6001D8279 /* codes.c in Sources */, + 4C29FC3A102257C6001D8279 /* comp_captab.c in Sources */, + 4C29FC3B102257C6001D8279 /* comp_error.c in Sources */, + 4C29FC3C102257C6001D8279 /* comp_expand.c in Sources */, + 4C29FC3D102257C6001D8279 /* comp_hash.c in Sources */, + 4C29FC3E102257C6001D8279 /* comp_parse.c in Sources */, + 4C29FC3F102257C6001D8279 /* comp_scan.c in Sources */, + 4C29FC40102257C6001D8279 /* db_iterator.c in Sources */, + 4C29FC41102257C6001D8279 /* define_key.c in Sources */, + 4C29FC42102257C6001D8279 /* doalloc.c in Sources */, + 4C29FC43102257C6001D8279 /* entries.c in Sources */, + 4C29FC45102257C6001D8279 /* fallback.c in Sources */, + 4C29FC59102257C6001D8279 /* free_ttype.c in Sources */, + 4C29FC6E102257C6001D8279 /* getenv_num.c in Sources */, + 4C29FC6F102257C6001D8279 /* hardscroll.c in Sources */, + 4C29FC71102257C6001D8279 /* hashmap.c in Sources */, + 4C29FC72102257C6001D8279 /* home_terminfo.c in Sources */, + 4C29FC73102257C6001D8279 /* init_keytry.c in Sources */, + 4C29FC74102257C6001D8279 /* key_defined.c in Sources */, + 4C29FC75102257C6001D8279 /* keybound.c in Sources */, + 4C29FC76102257C6001D8279 /* keyok.c in Sources */, + 4C29FC77102257C6001D8279 /* legacy_coding.c in Sources */, + 4C29FC78102257C6001D8279 /* lib_acs.c in Sources */, + 4C29FC79102257C6001D8279 /* lib_add_wch.c in Sources */, + 4C29FC7A102257C6001D8279 /* lib_addch.c in Sources */, + 4C29FC7B102257C6001D8279 /* lib_addstr.c in Sources */, + 4C29FC7C102257C6001D8279 /* lib_baudrate.c in Sources */, + 4C29FC7D102257C6001D8279 /* lib_beep.c in Sources */, + 4C29FC7E102257C6001D8279 /* lib_bkgd.c in Sources */, + 4C29FC7F102257C6001D8279 /* lib_box.c in Sources */, + 4C29FC80102257C6001D8279 /* lib_box_set.c in Sources */, + 4C29FC81102257C6001D8279 /* lib_cchar.c in Sources */, + 4C29FC82102257C6001D8279 /* lib_chgat.c in Sources */, + 4C29FC83102257C6001D8279 /* lib_clear.c in Sources */, + 4C29FC84102257C6001D8279 /* lib_clearok.c in Sources */, + 4C29FC85102257C6001D8279 /* lib_clrbot.c in Sources */, + 4C29FC86102257C6001D8279 /* lib_clreol.c in Sources */, + 4C29FC87102257C6001D8279 /* lib_color.c in Sources */, + 4C29FC88102257C6001D8279 /* lib_colorset.c in Sources */, + 4C29FC89102257C6001D8279 /* lib_cur_term.c in Sources */, + 4C29FC8A102257C6001D8279 /* lib_data.c in Sources */, + 4C29FC8B102257C6001D8279 /* lib_delch.c in Sources */, + 4C29FC8C102257C6001D8279 /* lib_delwin.c in Sources */, + 4C29FC8D102257C6001D8279 /* lib_dft_fgbg.c in Sources */, + 4C29FC8E102257C6001D8279 /* lib_echo.c in Sources */, + 4C29FC8F102257C6001D8279 /* lib_endwin.c in Sources */, + 4C29FC90102257C6001D8279 /* lib_erase.c in Sources */, + 4C29FC91102257C6001D8279 /* lib_erasewchar.c in Sources */, + 4C29FC92102257C6001D8279 /* lib_flash.c in Sources */, + 4C29FC93102257C6001D8279 /* lib_freeall.c in Sources */, + 4C29FC94102257C6001D8279 /* lib_get_wch.c in Sources */, + 4C29FC95102257C6001D8279 /* lib_get_wstr.c in Sources */, + 4C29FC96102257C6001D8279 /* lib_getch.c in Sources */, + 4C29FC97102257C6001D8279 /* lib_getstr.c in Sources */, + 4C29FC98102257C6001D8279 /* lib_has_cap.c in Sources */, + 4C29FC99102257C6001D8279 /* lib_hline.c in Sources */, + 4C29FC9A102257C6001D8279 /* lib_hline_set.c in Sources */, + 4C29FC9B102257C6001D8279 /* lib_immedok.c in Sources */, + 4C29FC9C102257C6001D8279 /* lib_in_wch.c in Sources */, + 4C29FC9D102257C6001D8279 /* lib_in_wchnstr.c in Sources */, + 4C29FC9E102257C6001D8279 /* lib_inchstr.c in Sources */, + 4C29FC9F102257C6001D8279 /* lib_initscr.c in Sources */, + 4C29FCA0102257C6001D8279 /* lib_ins_wch.c in Sources */, + 4C29FCA1102257C6001D8279 /* lib_insch.c in Sources */, + 4C29FCA2102257C6001D8279 /* lib_insdel.c in Sources */, + 4C29FCA3102257C6001D8279 /* lib_insnstr.c in Sources */, + 4C29FCA4102257C6001D8279 /* lib_instr.c in Sources */, + 4C29FCA5102257C6001D8279 /* lib_inwstr.c in Sources */, + 4C29FCA6102257C6001D8279 /* lib_isendwin.c in Sources */, + 4C29FCA7102257C6001D8279 /* lib_kernel.c in Sources */, + 4C29FCA8102257C6001D8279 /* lib_key_name.c in Sources */, + 4C29FCA9102257C6001D8279 /* lib_leaveok.c in Sources */, + 4C29FCAA102257C6001D8279 /* lib_longname.c in Sources */, + 4C29FCAB102257C6001D8279 /* lib_mouse.c in Sources */, + 4C29FCAC102257C6001D8279 /* lib_move.c in Sources */, + 4C29FCAD102257C6001D8279 /* lib_mvcur.c in Sources */, + 4C29FCAE102257C6001D8279 /* lib_mvwin.c in Sources */, + 4C29FCAF102257C6001D8279 /* lib_napms.c in Sources */, + 4C29FCB0102257C6001D8279 /* lib_newterm.c in Sources */, + 4C29FCB1102257C6001D8279 /* lib_newwin.c in Sources */, + 4C29FCB2102257C6001D8279 /* lib_nl.c in Sources */, + 4C29FCB3102257C6001D8279 /* lib_options.c in Sources */, + 4C29FCB4102257C6001D8279 /* lib_overlay.c in Sources */, + 4C29FCB5102257C6001D8279 /* lib_pad.c in Sources */, + 4C29FCB6102257C6001D8279 /* lib_pecho_wchar.c in Sources */, + 4C29FCB7102257C6001D8279 /* lib_print.c in Sources */, + 4C29FCB8102257C6001D8279 /* lib_printw.c in Sources */, + 4C29FCB9102257C6001D8279 /* lib_raw.c in Sources */, + 4C29FCBA102257C6001D8279 /* lib_redrawln.c in Sources */, + 4C29FCBB102257C6001D8279 /* lib_refresh.c in Sources */, + 4C29FCBC102257C6001D8279 /* lib_restart.c in Sources */, + 4C29FCBD102257C6001D8279 /* lib_scanw.c in Sources */, + 4C29FCBE102257C6001D8279 /* lib_screen.c in Sources */, + 4C29FCBF102257C6001D8279 /* lib_scroll.c in Sources */, + 4C29FCC0102257C6001D8279 /* lib_scrollok.c in Sources */, + 4C29FCC1102257C6001D8279 /* lib_scrreg.c in Sources */, + 4C29FCC2102257C6001D8279 /* lib_set_term.c in Sources */, + 4C29FCC3102257C6001D8279 /* lib_setup.c in Sources */, + 4C29FCC4102257C6001D8279 /* lib_slk.c in Sources */, + 4C29FCC5102257C6001D8279 /* lib_slk_wset.c in Sources */, + 4C29FCC6102257C6001D8279 /* lib_slkatr_set.c in Sources */, + 4C29FCC7102257C6001D8279 /* lib_slkatrof.c in Sources */, + 4C29FCC8102257C6001D8279 /* lib_slkatron.c in Sources */, + 4C29FCC9102257C6001D8279 /* lib_slkatrset.c in Sources */, + 4C29FCCA102257C6001D8279 /* lib_slkattr.c in Sources */, + 4C29FCCB102257C6001D8279 /* lib_slkclear.c in Sources */, + 4C29FCCC102257C6001D8279 /* lib_slkcolor.c in Sources */, + 4C29FCCD102257C6001D8279 /* lib_slkinit.c in Sources */, + 4C29FCCE102257C6001D8279 /* lib_slklab.c in Sources */, + 4C29FCCF102257C6001D8279 /* lib_slkrefr.c in Sources */, + 4C29FCD0102257C6001D8279 /* lib_slkset.c in Sources */, + 4C29FCD1102257C6001D8279 /* lib_slktouch.c in Sources */, + 4C29FCD2102257C6001D8279 /* lib_termcap.c in Sources */, + 4C29FCD3102257C6001D8279 /* lib_termname.c in Sources */, + 4C29FCD4102257C6001D8279 /* lib_tgoto.c in Sources */, + 4C29FCD5102257C6001D8279 /* lib_ti.c in Sources */, + 4C29FCD6102257C6001D8279 /* lib_touch.c in Sources */, + 4C29FCD7102257C6001D8279 /* lib_tparm.c in Sources */, + 4C29FCD8102257C6001D8279 /* lib_tputs.c in Sources */, + 4C29FCDA102257C6001D8279 /* lib_tstp.c in Sources */, + 4C29FCDB102257C6001D8279 /* lib_ttyflags.c in Sources */, + 4C29FCDC102257C6001D8279 /* lib_twait.c in Sources */, + 4C29FCDD102257C6001D8279 /* lib_unget_wch.c in Sources */, + 4C29FCDE102257C6001D8279 /* lib_ungetch.c in Sources */, + 4C29FCDF102257C6001D8279 /* lib_vid_attr.c in Sources */, + 4C29FCE0102257C6001D8279 /* lib_vidattr.c in Sources */, + 4C29FCE1102257C6001D8279 /* lib_vline.c in Sources */, + 4C29FCE2102257C6001D8279 /* lib_vline_set.c in Sources */, + 4C29FCE3102257C6001D8279 /* lib_wacs.c in Sources */, + 4C29FCE4102257C6001D8279 /* lib_wattroff.c in Sources */, + 4C29FCE5102257C6001D8279 /* lib_wattron.c in Sources */, + 4C29FCE6102257C6001D8279 /* lib_winch.c in Sources */, + 4C29FCE7102257C6001D8279 /* lib_window.c in Sources */, + 4C29FCE8102257C6001D8279 /* lib_wunctrl.c in Sources */, + 4C29FD05102257C7001D8279 /* name_match.c in Sources */, + 4C29FD06102257C7001D8279 /* names.c in Sources */, + 4C29FD07102257C7001D8279 /* nc_panel.c in Sources */, + 4C29FD17102257C7001D8279 /* parse_entry.c in Sources */, + 4C29FD18102257C7001D8279 /* read_entry.c in Sources */, + 4C29FD19102257C7001D8279 /* read_termcap.c in Sources */, + 4C29FD1A102257C7001D8279 /* resizeterm.c in Sources */, + 4C29FD1B102257C7001D8279 /* safe_sprintf.c in Sources */, + 4C29FD1C102257C7001D8279 /* setbuf.c in Sources */, + 4C29FD1D102257C7001D8279 /* strings.c in Sources */, + 4C29FD1E102257C7001D8279 /* tries.c in Sources */, + 4C29FD1F102257C7001D8279 /* trim_sgr0.c in Sources */, + 4C29FD20102257C7001D8279 /* tty_update.c in Sources */, + 4C29FD21102257C7001D8279 /* unctrl.c in Sources */, + 4C29FD22102257C7001D8279 /* use_screen.c in Sources */, + 4C29FD23102257C7001D8279 /* use_window.c in Sources */, + 4C29FD25102257C7001D8279 /* version.c in Sources */, + 4C29FD26102257C7001D8279 /* visbuf.c in Sources */, + 4C29FD28102257C7001D8279 /* wresize.c in Sources */, + 4C29FD29102257C7001D8279 /* write_entry.c in Sources */, + 4CCA0C13102386830073B661 /* lib_keyname.c in Sources */, + 4CD04EE5103DE113001C87D5 /* lib_gen.c in Sources */, + 4C006679103F6CA7008F286F /* lib_trace.c in Sources */, + 4C9BE7B1104330A100182AEE /* expanded.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4C609E3110163B4500971540 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C609E4110163BA900971540 /* make_keys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD04F03103F1BEB001C87D5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CD04F17103F1BEB001C87D5 /* fld_arg.c in Sources */, + 4CD04F18103F1BEB001C87D5 /* fld_attr.c in Sources */, + 4CD04F19103F1BEB001C87D5 /* fld_current.c in Sources */, + 4CD04F1A103F1BEB001C87D5 /* fld_def.c in Sources */, + 4CD04F1B103F1BEB001C87D5 /* fld_dup.c in Sources */, + 4CD04F1C103F1BEB001C87D5 /* fld_ftchoice.c in Sources */, + 4CD04F1D103F1BEB001C87D5 /* fld_ftlink.c in Sources */, + 4CD04F1E103F1BEB001C87D5 /* fld_info.c in Sources */, + 4CD04F1F103F1BEB001C87D5 /* fld_just.c in Sources */, + 4CD04F20103F1BEB001C87D5 /* fld_link.c in Sources */, + 4CD04F21103F1BEB001C87D5 /* fld_max.c in Sources */, + 4CD04F22103F1BEB001C87D5 /* fld_move.c in Sources */, + 4CD04F23103F1BEB001C87D5 /* fld_newftyp.c in Sources */, + 4CD04F24103F1BEB001C87D5 /* fld_opts.c in Sources */, + 4CD04F25103F1BEB001C87D5 /* fld_pad.c in Sources */, + 4CD04F26103F1BEB001C87D5 /* fld_page.c in Sources */, + 4CD04F27103F1BEB001C87D5 /* fld_stat.c in Sources */, + 4CD04F28103F1BEB001C87D5 /* fld_type.c in Sources */, + 4CD04F29103F1BEB001C87D5 /* fld_user.c in Sources */, + 4CD04F2B103F1BEB001C87D5 /* frm_cursor.c in Sources */, + 4CD04F2C103F1BEB001C87D5 /* frm_data.c in Sources */, + 4CD04F2D103F1BEB001C87D5 /* frm_def.c in Sources */, + 4CD04F2E103F1BEB001C87D5 /* frm_driver.c in Sources */, + 4CD04F2F103F1BEB001C87D5 /* frm_hook.c in Sources */, + 4CD04F30103F1BEB001C87D5 /* frm_opts.c in Sources */, + 4CD04F31103F1BEB001C87D5 /* frm_page.c in Sources */, + 4CD04F32103F1BEB001C87D5 /* frm_post.c in Sources */, + 4CD04F33103F1BEB001C87D5 /* frm_req_name.c in Sources */, + 4CD04F34103F1BEB001C87D5 /* frm_scale.c in Sources */, + 4CD04F35103F1BEB001C87D5 /* frm_sub.c in Sources */, + 4CD04F36103F1BEB001C87D5 /* frm_user.c in Sources */, + 4CD04F37103F1BEB001C87D5 /* frm_win.c in Sources */, + 4CD04F38103F1BEB001C87D5 /* fty_alnum.c in Sources */, + 4CD04F39103F1BEB001C87D5 /* fty_alpha.c in Sources */, + 4CD04F3A103F1BEB001C87D5 /* fty_enum.c in Sources */, + 4CD04F3B103F1BEB001C87D5 /* fty_int.c in Sources */, + 4CD04F3C103F1BEB001C87D5 /* fty_ipv4.c in Sources */, + 4CD04F3D103F1BEB001C87D5 /* fty_num.c in Sources */, + 4CD04F3E103F1BEB001C87D5 /* fty_regex.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD05007103F1BFD001C87D5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CD050BE103F1BFD001C87D5 /* m_attribs.c in Sources */, + 4CD050BF103F1BFD001C87D5 /* m_cursor.c in Sources */, + 4CD050C0103F1BFD001C87D5 /* m_driver.c in Sources */, + 4CD050C1103F1BFD001C87D5 /* m_format.c in Sources */, + 4CD050C2103F1BFD001C87D5 /* m_global.c in Sources */, + 4CD050C3103F1BFD001C87D5 /* m_hook.c in Sources */, + 4CD050C4103F1BFD001C87D5 /* m_item_cur.c in Sources */, + 4CD050C5103F1BFD001C87D5 /* m_item_nam.c in Sources */, + 4CD050C6103F1BFD001C87D5 /* m_item_new.c in Sources */, + 4CD050C7103F1BFD001C87D5 /* m_item_opt.c in Sources */, + 4CD050C8103F1BFD001C87D5 /* m_item_top.c in Sources */, + 4CD050CA103F1BFD001C87D5 /* m_item_val.c in Sources */, + 4CD050CB103F1BFD001C87D5 /* m_item_vis.c in Sources */, + 4CD050CC103F1BFD001C87D5 /* m_items.c in Sources */, + 4CD050CD103F1BFD001C87D5 /* m_new.c in Sources */, + 4CD050CE103F1BFD001C87D5 /* m_opts.c in Sources */, + 4CD050CF103F1BFD001C87D5 /* m_pad.c in Sources */, + 4CD050D0103F1BFD001C87D5 /* m_pattern.c in Sources */, + 4CD050D1103F1BFD001C87D5 /* m_post.c in Sources */, + 4CD050D2103F1BFD001C87D5 /* m_req_name.c in Sources */, + 4CD050D3103F1BFD001C87D5 /* m_scale.c in Sources */, + 4CD050D4103F1BFD001C87D5 /* m_spacing.c in Sources */, + 4CD050D5103F1BFD001C87D5 /* m_sub.c in Sources */, + 4CD050D7103F1BFD001C87D5 /* m_userptr.c in Sources */, + 4CD050D8103F1BFD001C87D5 /* m_win.c in Sources */, + 4CD0539B103F3E92001C87D5 /* m_item_use.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CD0510B103F1C12001C87D5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CD051E1103F1C12001C87D5 /* p_above.c in Sources */, + 4CD051E2103F1C12001C87D5 /* p_below.c in Sources */, + 4CD051E3103F1C12001C87D5 /* p_bottom.c in Sources */, + 4CD051E4103F1C12001C87D5 /* p_delete.c in Sources */, + 4CD051E5103F1C12001C87D5 /* p_hidden.c in Sources */, + 4CD051E6103F1C12001C87D5 /* p_hide.c in Sources */, + 4CD051E7103F1C12001C87D5 /* p_move.c in Sources */, + 4CD051E8103F1C12001C87D5 /* p_new.c in Sources */, + 4CD051E9103F1C12001C87D5 /* p_replace.c in Sources */, + 4CD051EA103F1C12001C87D5 /* p_show.c in Sources */, + 4CD051EB103F1C12001C87D5 /* p_top.c in Sources */, + 4CD051EC103F1C12001C87D5 /* p_update.c in Sources */, + 4CD051ED103F1C12001C87D5 /* p_user.c in Sources */, + 4CD051EE103F1C12001C87D5 /* p_win.c in Sources */, + 4CD051EF103F1C12001C87D5 /* panel.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4CE9808A1034D62D00BA0D88 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4CE9808B1034D62D00BA0D88 /* tic.c in Sources */, + 4CE9808C1034D62D00BA0D88 /* dump_entry.c in Sources */, + FC00FC4114E9E711000AD1B3 /* access.c in Sources */, + FC00FC5414E9EA59000AD1B3 /* add_tries.c in Sources */, + FC00FC4D14E9E90C000AD1B3 /* alloc_entry.c in Sources */, + FC00FC5514E9EA72000AD1B3 /* alloc_ttype.c in Sources */, + FC00FC5D14E9EB18000AD1B3 /* captoinfo.c in Sources */, + FC00FC6C14E9ED00000AD1B3 /* codes.c in Sources */, + FC00FC5714E9EA9C000AD1B3 /* comp_captab.c in Sources */, + FC00FC3C14E9E5E9000AD1B3 /* comp_error.c in Sources */, + FC00FC5A14E9EADA000AD1B3 /* comp_expand.c in Sources */, + FC00FC4514E9E80E000AD1B3 /* comp_hash.c in Sources */, + FC00FC4614E9E82D000AD1B3 /* comp_parse.c in Sources */, + FC00FC3F14E9E6CF000AD1B3 /* comp_scan.c in Sources */, + FC00FC5814E9EAB4000AD1B3 /* db_iterator.c in Sources */, + FC00FC4414E9E7B6000AD1B3 /* doalloc.c in Sources */, + FC00FC4714E9E84C000AD1B3 /* entries.c in Sources */, + FC00FC6514E9EC42000AD1B3 /* fallback.c in Sources */, + FC00FC4214E9E739000AD1B3 /* free_ttype.c in Sources */, + FC00FC6314E9EC0E000AD1B3 /* getenv_num.c in Sources */, + FC00FC5014E9E966000AD1B3 /* home_terminfo.c in Sources */, + FC00FC4C14E9E8F8000AD1B3 /* init_keytry.c in Sources */, + FC00FC5614E9EA84000AD1B3 /* key_defined.c in Sources */, + FC00FC6D14E9ED1A000AD1B3 /* keybound.c in Sources */, + FC00FC5314E9EA44000AD1B3 /* lib_baudrate.c in Sources */, + FC00FC5114E9EA0F000AD1B3 /* lib_cur_term.c in Sources */, + FC00FC5214E9EA2C000AD1B3 /* lib_data.c in Sources */, + FC00FC6914E9ECAB000AD1B3 /* lib_has_cap.c in Sources */, + FC00FC6A14E9ECD3000AD1B3 /* lib_keyname.c in Sources */, + FC00FC6014E9EB8A000AD1B3 /* lib_napms.c in Sources */, + FC00FC6714E9EC71000AD1B3 /* lib_options.c in Sources */, + FC00FC6814E9EC94000AD1B3 /* lib_raw.c in Sources */, + FC00FC6214E9EBF1000AD1B3 /* lib_setup.c in Sources */, + FC00FC4B14E9E8C4000AD1B3 /* lib_termcap.c in Sources */, + FC00FC4E14E9E933000AD1B3 /* lib_tparm.c in Sources */, + FC00FC5E14E9EB4D000AD1B3 /* lib_tputs.c in Sources */, + FC00FC4814E9E865000AD1B3 /* lib_trace.c in Sources */, + FC00FC6414E9EC2F000AD1B3 /* lib_ttyflags.c in Sources */, + FC00FC4014E9E6F8000AD1B3 /* name_match.c in Sources */, + FC00FC6B14E9ECEB000AD1B3 /* names.c in Sources */, + FC00FC5B14E9EAEC000AD1B3 /* parse_entry.c in Sources */, + FC00FC5914E9EAC5000AD1B3 /* read_termcap.c in Sources */, + FC00FC6614E9EC59000AD1B3 /* setbuf.c in Sources */, + FC00FC5F14E9EB6B000AD1B3 /* strings.c in Sources */, + FC00FC6E14E9ED31000AD1B3 /* tries.c in Sources */, + FC00FC5C14E9EB01000AD1B3 /* trim_sgr0.c in Sources */, + FC00FC6114E9EBC2000AD1B3 /* unctrl.c in Sources */, + FC00FC4314E9E755000AD1B3 /* version.c in Sources */, + FC00FC4A14E9E8B4000AD1B3 /* visbuf.c in Sources */, + FC00FC4F14E9E950000AD1B3 /* read_entry.c in Sources */, + FC00FC4914E9E876000AD1B3 /* write_entry.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 4C00663B103F566D008F286F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4CD04EFE103F1BEB001C87D5 /* libform */; + targetProxy = 4C00663A103F566D008F286F /* PBXContainerItemProxy */; + }; + 4C00663D103F5670008F286F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4CD05002103F1BFD001C87D5 /* libmenu */; + targetProxy = 4C00663C103F5670008F286F /* PBXContainerItemProxy */; + }; + 4C00663F103F5676008F286F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4CD05106103F1C12001C87D5 /* libpanel */; + targetProxy = 4C00663E103F5676008F286F /* PBXContainerItemProxy */; + }; + 4C006648103F5791008F286F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FC2E10225768001D8279 /* libncurses */; + targetProxy = 4C006647103F5791008F286F /* PBXContainerItemProxy */; + }; + 4C00664A103F579C008F286F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FC2E10225768001D8279 /* libncurses */; + targetProxy = 4C006649103F579C008F286F /* PBXContainerItemProxy */; + }; + 4C00664C103F57A5008F286F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FC2E10225768001D8279 /* libncurses */; + targetProxy = 4C00664B103F57A5008F286F /* PBXContainerItemProxy */; + }; + 4CC76F071027517A00C87ED0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FC2E10225768001D8279 /* libncurses */; + targetProxy = 4CC76F061027517A00C87ED0 /* PBXContainerItemProxy */; + }; + FC00FC7A14E9FB27000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FA601020DDBD001D8279 /* libraries */; + targetProxy = FC00FC7914E9FB27000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC7C14E9FB27000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FC00FC7614E9FB13000AD1B3 /* executables */; + targetProxy = FC00FC7B14E9FB27000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC7E14E9FB36000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FA661020E62B001D8279 /* clear */; + targetProxy = FC00FC7D14E9FB36000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC8014E9FB36000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FA781020E959001D8279 /* infocmp */; + targetProxy = FC00FC7F14E9FB36000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC8214E9FB36000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FAA21020EBED001D8279 /* tic */; + targetProxy = FC00FC8114E9FB36000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC8414E9FB36000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FA921020EB52001D8279 /* toe */; + targetProxy = FC00FC8314E9FB36000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC8614E9FB36000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FA801020EB4A001D8279 /* tput */; + targetProxy = FC00FC8514E9FB36000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC8814E9FB36000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C29FA891020EB4E001D8279 /* tset */; + targetProxy = FC00FC8714E9FB36000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FC9F14E9FDC7000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FC00FC9E14E9FDC7000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FCA114E9FDD7000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FC00FCA014E9FDD7000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FCA314E9FDDE000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FC00FCA214E9FDDE000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FCA514E9FDE2000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FC00FCA414E9FDE2000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FCA714E9FDE6000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FC00FCA614E9FDE6000AD1B3 /* PBXContainerItemProxy */; + }; + FC00FCA914E9FDEB000AD1B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FC00FCA814E9FDEB000AD1B3 /* PBXContainerItemProxy */; + }; + FCD5D43614E5CA0700752D20 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4C5C3FD7102CD13500B4B066 /* native_make_keys */; + targetProxy = FCD5D43514E5CA0700752D20 /* PBXContainerItemProxy */; + }; + FCD5D43914E5CB0F00752D20 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D43214E5C99D00752D20 /* Derived Sources */; + targetProxy = FCD5D43814E5CB0F00752D20 /* PBXContainerItemProxy */; + }; + FCD5D43D14E5CB2F00752D20 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D3F414E4F61700752D20 /* Bootstrap Sources */; + targetProxy = FCD5D43C14E5CB2F00752D20 /* PBXContainerItemProxy */; + }; + FCD5D44A14E5D15000752D20 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FCD5D44214E5CC4F00752D20 /* native_make_hash */; + targetProxy = FCD5D44914E5D15000752D20 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1DEB928B08733DD80010E9CD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EF185E8D3F00B94A94 /* base.xcconfig */; + buildSettings = { + ALTERNATE_MODE = "go-w,a+rX"; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CURRENT_PROJECT_VERSION = "$(RC_ProjectSourceVersion)"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_CW_ASM_SYNTAX = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_PASCAL_STRINGS = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(BUILT_PRODUCTS_DIR)", + "$(PROJECT_DIR)/ncurses/include", + "$(PROJECT_DIR)/ncurses/ncurses", + "$(PROJECT_DIR)/ncurses/progs", + ); + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 4C29FA621020DDBD001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 4C29FA6A1020E62C001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = clear; + }; + name = Release; + }; + 4C29FA7C1020E959001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = infocmp; + }; + name = Release; + }; + 4C29FA861020EB4A001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = tput; + }; + name = Release; + }; + 4C29FA8F1020EB4E001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = tset; + }; + name = Release; + }; + 4C29FA981020EB52001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = toe; + }; + name = Release; + }; + 4C29FAA81020EBED001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = tic; + }; + name = Release; + }; + 4C29FBB910223559001D8279 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + AD_HOC_CODE_SIGNING_ALLOWED = YES; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CODE_SIGN_IDENTITY = "-"; + GCC_PREPROCESSOR_DEFINITIONS = ( + MAIN_PROGRAM, + _XOPEN_SOURCE_EXTENDED, + "_DARWIN_C_SOURCE=_DARWIN_C_SOURCE", + ); + INSTALL_PATH = ""; + PRODUCT_NAME = make_hash; + }; + name = Release; + }; + 4C29FC3110225769001D8279 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 5.4; + DYLIB_CURRENT_VERSION = 5.4; + OTHER_TAPI_FLAGS = "-Xparser -include -Xparser $(SRCROOT)/ncurses/include/ncurses_cfg.h -extra-public-header $(BUILT_PRODUCTS_DIR)/curses.h -extra-public-header $(BUILT_PRODUCTS_DIR)/term.h -extra-public-header $(SRCROOT)/ncurses/include/nc_alloc.h -extra-public-header $(SRCROOT)/ncurses/include/termcap.h -extra-public-header $(SRCROOT)/ncurses/include/term_entry.h -extra-public-header $(SRCROOT)/ncurses/include/nc_panel.h -extra-public-header $(SRCROOT)/ncurses/include/tic.h -extra-public-header $(SRCROOT)/ncurses/include/unctrl.h -extra-private-header $(SRCROOT)/ncurses/ncurses/curses.priv.h"; + PRODUCT_NAME = ncurses.5.4; + }; + name = Release; + }; + 4C5C3FD8102CD13500B4B066 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + PRODUCT_NAME = native_make_keys; + ZERO_LINK = NO; + }; + name = Release; + }; + 4C609E3710163B4600971540 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + AD_HOC_CODE_SIGNING_ALLOWED = YES; + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CODE_SIGN_IDENTITY = "-"; + GCC_PREPROCESSOR_DEFINITIONS = ( + _XOPEN_SOURCE_EXTENDED, + "_DARWIN_C_SOURCE=_DARWIN_C_SOURCE", + ); + INSTALL_PATH = ""; + PRODUCT_NAME = make_keys; + }; + name = Release; + }; + 4CD04FFF103F1BEB001C87D5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 5.4; + DYLIB_CURRENT_VERSION = 5.4; + OTHER_TAPI_FLAGS = "-I$(SRCROOT)/ncurses/menu -extra-public-header $(SRCROOT)/ncurses/form/form.h -extra-private-header $(SRCROOT)/ncurses/form/form.priv.h"; + PRODUCT_NAME = form.5.4; + }; + name = Release; + }; + 4CD05103103F1BFD001C87D5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 5.4; + DYLIB_CURRENT_VERSION = 5.4; + PRODUCT_NAME = menu.5.4; + }; + name = Release; + }; + 4CD05207103F1C12001C87D5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2ED185E8B2400B94A94 /* libraries.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 5.4; + DYLIB_CURRENT_VERSION = 5.4; + OTHER_TAPI_FLAGS = "-extra-public-header $(SRCROOT)/ncurses/panel/panel.h"; + PRODUCT_NAME = panel.5.4; + }; + name = Release; + }; + 4CE980901034D62D00BA0D88 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_CONFIG_H, + "_XOPEN_SOURCE=600", + _XOPEN_SOURCE_EXTENDED, + ); + INSTALL_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + FC00FC7514E9FB09000AD1B3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + FC00FC7814E9FB13000AD1B3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81AAC2EE185E8C5F00B94A94 /* executables.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + FCD5D3F614E4F61700752D20 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + FCD5D43414E5C99D00752D20 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + FCD5D44414E5CC4F00752D20 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = native_make_hash; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ncurses" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB928B08733DD80010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FA631020DDDB001D8279 /* Build configuration list for PBXAggregateTarget "libraries" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FA621020DDBD001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FA6B1020E64A001D8279 /* Build configuration list for PBXNativeTarget "clear" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FA6A1020E62C001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FA7D1020E977001D8279 /* Build configuration list for PBXNativeTarget "infocmp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FA7C1020E959001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FA841020EB4A001D8279 /* Build configuration list for PBXNativeTarget "tput" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FA861020EB4A001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FA8D1020EB4E001D8279 /* Build configuration list for PBXNativeTarget "tset" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FA8F1020EB4E001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FA961020EB52001D8279 /* Build configuration list for PBXNativeTarget "toe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FA981020EB52001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FAA61020EBED001D8279 /* Build configuration list for PBXNativeTarget "tic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FAA81020EBED001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FBB710223559001D8279 /* Build configuration list for PBXNativeTarget "make_hash" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FBB910223559001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C29FC321022578A001D8279 /* Build configuration list for PBXNativeTarget "libncurses" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C29FC3110225769001D8279 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C5C3FD9102CD15300B4B066 /* Build configuration list for PBXAggregateTarget "native_make_keys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C5C3FD8102CD13500B4B066 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4C609E4010163B6200971540 /* Build configuration list for PBXNativeTarget "make_keys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C609E3710163B4600971540 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4CD04FFE103F1BEB001C87D5 /* Build configuration list for PBXNativeTarget "libform" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4CD04FFF103F1BEB001C87D5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4CD05102103F1BFD001C87D5 /* Build configuration list for PBXNativeTarget "libmenu" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4CD05103103F1BFD001C87D5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4CD05206103F1C12001C87D5 /* Build configuration list for PBXNativeTarget "libpanel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4CD05207103F1C12001C87D5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4CE9808F1034D62D00BA0D88 /* Build configuration list for PBXNativeTarget "tic_static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4CE980901034D62D00BA0D88 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FC00FC7414E9FB09000AD1B3 /* Build configuration list for PBXAggregateTarget "All" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FC00FC7514E9FB09000AD1B3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FC00FC7714E9FB13000AD1B3 /* Build configuration list for PBXAggregateTarget "executables" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FC00FC7814E9FB13000AD1B3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FCD5D3F514E4F61700752D20 /* Build configuration list for PBXAggregateTarget "Bootstrap Sources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FCD5D3F614E4F61700752D20 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FCD5D43314E5C99D00752D20 /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FCD5D43414E5C99D00752D20 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FCD5D44314E5CC4F00752D20 /* Build configuration list for PBXAggregateTarget "native_make_hash" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FCD5D44414E5CC4F00752D20 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/ncurses/.DS_Store b/ncurses/.DS_Store new file mode 100644 index 0000000..c48f262 Binary files /dev/null and b/ncurses/.DS_Store differ diff --git a/ncurses/Ada95/Makefile.in b/ncurses/Ada95/Makefile.in new file mode 100644 index 0000000..b1743cf --- /dev/null +++ b/ncurses/Ada95/Makefile.in @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 1998 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Juergen Pfeifer, 1996 +# +# Version Control +# $Revision: 1.15 $ +# +SHELL = /bin/sh +THIS = Makefile + +SUBDIRS = @ADA_SUBDIRS@ + +CF_MFLAGS = @cf_cv_makeflags@ +@SET_MAKE@ + +all \ +libs \ +sources \ +install \ +install.libs \ +uninstall \ +uninstall.libs :: + for d in $(SUBDIRS); do \ + (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\ + done + +clean \ +mostlyclean :: + for d in $(SUBDIRS); do \ + (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\ + done + +distclean \ +realclean :: + for d in $(SUBDIRS); do \ + (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\ + done + rm -f Makefile + +install.data : + @ diff --git a/ncurses/Ada95/README b/ncurses/Ada95/README new file mode 100644 index 0000000..be84259 --- /dev/null +++ b/ncurses/Ada95/README @@ -0,0 +1,33 @@ +------------------------------------------------------------------------------- +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- + +-- Author: Juergen Pfeifer, 1996 + +The documentation is provided in HTML format in the ./html +subdirectory. The main document is named index.html + diff --git a/ncurses/Ada95/TODO b/ncurses/Ada95/TODO new file mode 100644 index 0000000..f5c8acd --- /dev/null +++ b/ncurses/Ada95/TODO @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------- +-- Copyright (c) 1998-1999,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- +-- $Id: TODO,v 1.5 2006/04/22 22:23:21 tom Exp $ +------------------------------------------------------------------------------- + +-- Intensive testing + Perhaps the delivery of the Beta will help a bit. + +-- Documentation + Like most WEB pages: under continuous construction + +-- Style cleanup + +-- Alternate functions for procedures with out params + Comfort purpose + +-- Sample program + Under continuous construction (and it's not a WEB page!!!) + +-- Make the binding objects a shared library + They are rather large, so it would make sense, otherwise Ada95 + would look too large, although the generated code is as compact + as C or C++. I'll wait a bit until the GNAT people provide some + better support to construct shared libraries. + +-- Think about more inlining + +-- Check for memory leaks. + Oh I would like it so much if the GNAT guys would put an optional + GC into their system. diff --git a/ncurses/Ada95/gen/Makefile.in b/ncurses/Ada95/gen/Makefile.in new file mode 100644 index 0000000..b7e3bec --- /dev/null +++ b/ncurses/Ada95/gen/Makefile.in @@ -0,0 +1,474 @@ +############################################################################## +# Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Juergen Pfeifer, 1996 +# +# $Id: Makefile.in,v 1.61 2008/10/04 22:58:31 tom Exp $ +# +.SUFFIXES: + +SHELL = /bin/sh +THIS = Makefile + +x = @PROG_EXT@ + +top_srcdir = @top_srcdir@ +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ + +ADA_INCLUDE = $(DESTDIR)@ADA_INCLUDE@ +ADA_OBJECTS = $(DESTDIR)@ADA_OBJECTS@ + +INSTALL = @INSTALL@ +INSTALL_PROG = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +HOST_CC = @BUILD_CC@ +CFLAGS = @CFLAGS@ + +CPPFLAGS = @ACPPFLAGS@ \ + -DHAVE_CONFIG_H -I$(srcdir) + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) +CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ +LOCAL_LIBDIR = @top_builddir@/lib + +LINK = $(HOST_CC) +LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_ARGS2@ + +RANLIB = @RANLIB@ + +M4 = m4 +M4FLAGS = -DNCURSES_EXT_FUNCS=@NCURSES_EXT_FUNCS@ + +ADACURSES_CONFIG = adacurses-config + +WRAPPER = sh $(top_srcdir)/misc/shlib +GENERATE = ./gen$x '@DFT_ARG_SUFFIX@' +DEL_ADAMODE = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d' + +GNATHTML = `type -p gnathtml || type -p gnathtml.pl` +GNATHP = www.gnat.com + +################################################################################ +ALIB = @cf_ada_package@ +ABASE = $(ALIB)-curses + +ADA_SRCDIR = ../src + +GEN_FILES0 = Base_Defs + +GEN_FILES1 = ACS_Map \ + AC_Rep \ + Base_Defs \ + Character_Attribute_Set_Rep \ + Color_Defs \ + Key_Definitions \ + Linker_Options \ + Old_Keys \ + Public_Variables \ + Trace_Defs \ + Version_Info \ + Window_Offsets + +GEN_FILES2 = Menu_Opt_Rep \ + Menu_Base_Defs \ + Menu_Linker_Options \ + Item_Rep + +GEN_FILES3 = Form_Opt_Rep \ + Form_Base_Defs \ + Form_Linker_Options \ + Field_Rep + +GEN_FILES4 = Mouse_Base_Defs \ + Mouse_Event_Rep \ + Mouse_Events \ + Panel_Linker_Options + +GEN_FILES5 = Chtype_Def \ + Eti_Defs + +GEN_TARGETS = $(ADA_SRCDIR)/$(ABASE).ads \ + $(ADA_SRCDIR)/$(ABASE).adb \ + $(ADA_SRCDIR)/$(ABASE)-aux.ads \ + $(ADA_SRCDIR)/$(ABASE)-trace.ads \ + $(ADA_SRCDIR)/$(ABASE)-menus.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms.ads \ + $(ADA_SRCDIR)/$(ABASE)-mouse.ads \ + $(ADA_SRCDIR)/$(ABASE)-panels.ads \ + $(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads + +GEN_SRC = $(srcdir)/$(ABASE).ads.m4 \ + $(srcdir)/$(ABASE).adb.m4 \ + $(srcdir)/$(ABASE)-aux.ads.m4 \ + $(srcdir)/$(ABASE)-trace.ads.m4 \ + $(srcdir)/$(ABASE)-menus.ads.m4 \ + $(srcdir)/$(ABASE)-forms.ads.m4 \ + $(srcdir)/$(ABASE)-mouse.ads.m4 \ + $(srcdir)/$(ABASE)-panels.ads.m4 \ + $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \ + $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-panels-user_data.ads.m4 + + +all \ +libs : $(GEN_TARGETS) + @echo made $@ + +sources: + +$(ADA_INCLUDE) \ +$(ADA_OBJECTS) : + sh $(top_srcdir)/mkdirs.sh $@ + +install \ +install.libs :: $(ADA_INCLUDE) + @echo installing package $(ALIB) in $(ADA_INCLUDE) + @$(top_srcdir)/tar-copy.sh '$(ALIB)*.ad?' $(ADA_SRCDIR) $(ADA_INCLUDE) + @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ad?' $(ADA_SRCDIR) $(ADA_INCLUDE) + @test $(srcdir) != ./ && $(top_srcdir)/tar-copy.sh '$(ALIB)*.ad?' $(srcdir)/../src $(ADA_INCLUDE) + @test $(srcdir) != ./ && $(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ad?' $(srcdir)/../src $(ADA_INCLUDE) + +install \ +install.libs :: $(ADA_OBJECTS) + @echo installing package $(ALIB) in $(ADA_OBJECTS) + @-chmod a-wx $(ADA_SRCDIR)/*.ali + @$(top_srcdir)/tar-copy.sh '$(ALIB)*.ali' $(ADA_SRCDIR) $(ADA_OBJECTS) + @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ali' $(ADA_SRCDIR) $(ADA_OBJECTS) + @-chmod u+x $(ADA_SRCDIR)/*.ali + +install \ +install.libs :: $(DESTDIR)$(bindir) adacurses-config + $(INSTALL_PROG) adacurses-config $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG) + +uninstall \ +uninstall.libs :: + @echo removing package $(ALIB) from $(ADA_INCLUDE) + -@cd $(ADA_INCLUDE) && rm -f $(ALIB)[-.]* + +uninstall \ +uninstall.libs :: + @echo removing package $(ALIB) from $(ADA_OBJECTS) + -@cd $(ADA_OBJECTS) && rm -f $(ALIB)[-.]* + +uninstall \ +uninstall.libs :: + -rm -f $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG) + +gen$x: gen.o + @ECHO_LINK@ $(LINK) $(CFLAGS_NORMAL) gen.o $(LD_FLAGS) -o $@ + +gen.o: $(srcdir)/gen.c + $(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c +################################################################################ +Character_Attribute_Set_Rep: gen$x + $(WRAPPER) "$(GENERATE) B A" >$@ + +Base_Defs: gen$x + $(WRAPPER) "$(GENERATE) B B" >$@ + +Color_Defs: gen$x + $(WRAPPER) "$(GENERATE) B C" >$@ + +Window_Offsets: gen$x + $(WRAPPER) "$(GENERATE) B D" >$@ + +Key_Definitions: gen$x + $(WRAPPER) "$(GENERATE) B K" >$@ + +Linker_Options: gen$x + $(WRAPPER) "$(GENERATE) B L" >$@ + +ACS_Map: gen$x + $(WRAPPER) "$(GENERATE) B M" >$@ + +Old_Keys: gen$x + $(WRAPPER) "$(GENERATE) B O" >$@ + +Public_Variables: gen$x + $(WRAPPER) "$(GENERATE) B P" >$@ + +AC_Rep: gen$x + $(WRAPPER) "$(GENERATE) B R" >$@ + +Version_Info: gen$x + $(WRAPPER) "$(GENERATE) B V" >$@ + +Trace_Defs: gen$x + $(WRAPPER) "$(GENERATE) B T" >$@ +################################################################################ +Menu_Opt_Rep: gen$x + $(WRAPPER) "$(GENERATE) M R" >$@ + +Menu_Base_Defs: gen$x + $(WRAPPER) "$(GENERATE) M B" >$@ + +Menu_Linker_Options: gen$x + $(WRAPPER) "$(GENERATE) M L" >$@ + +Item_Rep: gen$x + $(WRAPPER) "$(GENERATE) M I" >$@ +################################################################################ +Form_Opt_Rep: gen$x + $(WRAPPER) "$(GENERATE) F R" >$@ + +Form_Base_Defs: gen$x + $(WRAPPER) "$(GENERATE) F B" >$@ + +Form_Linker_Options: gen$x + $(WRAPPER) "$(GENERATE) F L" >$@ + +Field_Rep: gen$x + $(WRAPPER) "$(GENERATE) F I" >$@ +################################################################################ +Mouse_Base_Defs: gen$x + $(WRAPPER) "$(GENERATE) P B" >$@ + +Mouse_Event_Rep: gen$x + $(WRAPPER) "$(GENERATE) P M" >$@ + +Mouse_Events: gen$x + $(WRAPPER) "$(GENERATE) B E" >$@ + +Panel_Linker_Options: gen$x + $(WRAPPER) "$(GENERATE) P L" >$@ + +Chtype_Def: gen$x + $(WRAPPER) "$(GENERATE) E C" >$@ + +Eti_Defs: gen$x + $(WRAPPER) "$(GENERATE) E E" >$@ +################################################################################ +$(ADA_SRCDIR)/$(ABASE).ads: $(srcdir)/$(ABASE).ads.m4 \ + $(GEN_FILES1) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE).ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE).adb: $(srcdir)/$(ABASE).adb.m4 \ + $(GEN_FILES1) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE).adb.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \ + $(GEN_FILES5) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-aux.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \ + $(GEN_FILES5) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-trace.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \ + $(GEN_FILES2) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-menus.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \ + $(GEN_FILES3) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \ + $(GEN_FILES4) $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-mouse.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-panels.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads: \ + $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads: \ + $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads: \ + $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads: \ + $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms-field_types.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads: \ + $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads: \ + $(srcdir)/$(ABASE)-panels-user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-panels-user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +install.progs :: + +tags: + ctags *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ etags *.[ch] + +mostlyclean :: + -rm -f a.out core gen$x *.o + -rm -f $(GEN_FILES1) + -rm -f $(GEN_FILES2) + -rm -f $(GEN_FILES3) + -rm -f $(GEN_FILES4) + -rm -f $(GEN_FILES5) + +clean :: mostlyclean + -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp + +distclean :: clean + -rm -f adacurses-config + -rm -f Makefile + +realclean :: distclean + +HTML_DIR = ../../doc/html/ada + +instab.tmp : table.m4 $(GEN_SRC) + @rm -f $@ + @for f in $(GEN_SRC) ; do \ + $(M4) $(M4FLAGS) -DM4MACRO=table.m4 $$f | $(DEL_ADAMODE) >> $@ ;\ + done; + +$(HTML_DIR)/table.html : instab.tmp + @-touch $@ + @-chmod +w $@ + @echo ' $@ + @echo 'PUBLIC "-//IETF//DTD HTML 3.0//EN">' >> $@ + @echo '' >> $@ + @echo '' >> $@ + @echo 'Correspondence between ncurses C and Ada functions' >>$@ + @echo '' >> $@ + @echo '' >> $@ + @echo '

Correspondence between ncurses C and Ada functions

' >>$@ + @echo '

Sorted by C function name

' >>$@ + @echo '' >>$@ + @echo '' >>$@ + @echo '' >>$@ + @sort < instab.tmp >> $@ + @echo '
C nameAda nameman page
' >>$@ + @rm -f instab.tmp + +adahtml: + @find $(HTML_DIR) -type f -exec rm -f {} \; + @mkdir -p $(HTML_DIR) + cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb] + ln -sf ../src/*.ali . + @echo "Filtering generated files" + @for f in $(GEN_SRC); do \ + h=`basename $$f` ;\ + g=`basename $$f .ads.m4` ;\ + if test "$$g" != "$$h" ; then \ + $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\ + echo "... $$g.ads" ;\ + fi \ + done + @-rm -f $(HTML_DIR)/$(ALIB)*.htm* + $(GNATHTML) -d -f $(ALIB)*.ads + for f in html/$(ALIB)*.htm*; do \ + a=`basename $$f` ; \ + sed -e 's/You may also.*body.*//' <$$f |\ + sed -e 's%GNAT%GNAT%g' |\ + sed -e 's%<A HREF%%g' |\ + sed -e 's/3X/3x/g' |\ + sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\ + sed -e 's%</A>%%g' > $$a.tmp ;\ + mv $$a.tmp $$f ;\ + done + @rm -f *.ad[sb] *.ali *.tmp + @for f in funcs.htm main.htm ; do \ + sed -e "\%\[ \]%d" < html/$$f > $$f ;\ + mv $$f html/$$f ;\ + done + @rm -f "html/funcs/ .htm" + @cp -pdrf html/* $(HTML_DIR)/ + @rm -rf html + +html : adahtml $(HTML_DIR)/table.html + @echo made $@ + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/ncurses/Ada95/gen/adacurses-config.in b/ncurses/Ada95/gen/adacurses-config.in new file mode 100644 index 0000000..c88d85b --- /dev/null +++ b/ncurses/Ada95/gen/adacurses-config.in @@ -0,0 +1,35 @@ +#! /bin/sh +# $Id: adacurses-config.in,v 1.2 2007/04/07 21:06:50 tom Exp $ +# +# This script will return the option to add to `gnatmake' for using +# AdaCurses. +# + +prefix="@prefix@" +exec_prefix="@exec_prefix@" +libdir="@libdir@" + +VERSION="@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@" + +CFLAGS="-I$libdir/adacurses -L$libdir/adacurses" +LIBS="-L$prefix/lib -lAdaCurses" + +case "x$1" in + x--version) + echo AdaCurses $VERSION + ;; + x--cflags) + echo $CFLAGS + ;; + x--libs) + echo $LIBS + ;; + x) + # if no parameter is given, give what gnatmake needs + echo $CFLAGS -largs $LIBS + ;; + *) + echo 'Usage: adacurses-config [--version | --cflags | --libs]' >&2 + exit 1 + ;; +esac diff --git a/ncurses/Ada95/gen/gen.c b/ncurses/Ada95/gen/gen.c new file mode 100644 index 0000000..d8ea44f --- /dev/null +++ b/ncurses/Ada95/gen/gen.c @@ -0,0 +1,1523 @@ +/**************************************************************************** + * Copyright (c) 1998,2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1996 * + ****************************************************************************/ + +/* + Version Control + $Id: gen.c,v 1.49 2008/10/04 21:59:37 tom Exp $ + --------------------------------------------------------------------------*/ +/* + This program generates various record structures and constants from the + ncurses header file for the Ada95 packages. Essentially it produces + Ada95 source on stdout, which is then merged using m4 into a template + to produce the real source. + */ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#define RES_NAME "Reserved" + +static const char *model = ""; +static int little_endian = 0; + +typedef struct + { + const char *name; + unsigned long attr; + } +name_attribute_pair; + +static int +find_pos(char *s, unsigned len, int *low, int *high) +{ + unsigned int i, j; + int l = 0; + + *high = -1; + *low = 8 * len; + + for (i = 0; i < len; i++, s++) + { + if (*s) + { + for (j = 0; j < 8 * sizeof(char); j++) + + { + if (((little_endian && ((*s) & 0x01)) || + (!little_endian && ((*s) & 0x80)))) + { + if (l > *high) + *high = l; + if (l < *low) + *low = l; + } + l++; + if (little_endian) + *s >>= 1; + else + *s <<= 1; + } + } + else + l += 8; + } + return (*high >= 0 && (*low <= *high)) ? *low : -1; +} + +/* + * This helper routine generates a representation clause for a + * record type defined in the binding. + * We are only dealing with record types which are of 32 or 16 + * bit size, i.e. they fit into an (u)int or a (u)short. + */ +static void + gen_reps + (const name_attribute_pair * nap, /* array of name_attribute_pair records */ + const char *name, /* name of the represented record type */ + int len, /* size of the record in bytes */ + int bias) +{ + int i, n, l, cnt = 0, low, high; + int width = strlen(RES_NAME) + 3; + unsigned long a; + unsigned long mask = 0; + + assert(nap != NULL); + + for (i = 0; nap[i].name != (char *)0; i++) + { + cnt++; + l = strlen(nap[i].name); + if (l > width) + width = l; + } + assert(width > 0); + + printf(" type %s is\n", name); + printf(" record\n"); + for (i = 0; nap[i].name != (char *)0; i++) + { + printf(" %-*s : Boolean;\n", width, nap[i].name); + } + printf(" end record;\n"); + printf(" pragma Convention (C, %s);\n\n", name); + + printf(" for %s use\n", name); + printf(" record\n"); + + for (i = 0; nap[i].name != (char *)0; i++) + { + a = nap[i].attr; + mask |= a; + l = find_pos((char *)&a, sizeof(a), &low, &high); + if (l >= 0) + printf(" %-*s at 0 range %2d .. %2d;\n", width, nap[i].name, + low - bias, high - bias); + } + i = 1; + n = cnt; + printf(" end record;\n"); + printf(" for %s'Size use %d;\n", name, 8 * len); + printf(" -- Please note: this rep. clause is generated and may be\n"); + printf(" -- different on your system."); +} + +static void +chtype_rep(const char *name, attr_t mask) +{ + attr_t x = -1; + attr_t t = x & mask; + int low, high; + int l = find_pos((char *)&t, sizeof(t), &low, &high); + + if (l >= 0) + printf(" %-5s at 0 range %2d .. %2d;\n", name, low, high); +} + +static void +gen_chtype_rep(const char *name) +{ + printf(" for %s use\n record\n", name); + chtype_rep("Ch", A_CHARTEXT); + chtype_rep("Color", A_COLOR); + chtype_rep("Attr", (A_ATTRIBUTES & ~A_COLOR)); + printf(" end record;\n for %s'Size use %ld;\n", + name, (long)(8 * sizeof(chtype))); + + printf(" -- Please note: this rep. clause is generated and may be\n"); + printf(" -- different on your system.\n"); +} + +static void +mrep_rep(const char *name, void *rec) +{ + int low, high; + int l = find_pos((char *)rec, sizeof(MEVENT), &low, &high); + + if (l >= 0) + printf(" %-7s at 0 range %3d .. %3d;\n", name, low, high); +} + +static void +gen_mrep_rep(const char *name) +{ + MEVENT x; + + printf(" for %s use\n record\n", name); + + memset(&x, 0, sizeof(x)); + x.id = -1; + mrep_rep("Id", &x); + + memset(&x, 0, sizeof(x)); + x.x = -1; + mrep_rep("X", &x); + + memset(&x, 0, sizeof(x)); + x.y = -1; + mrep_rep("Y", &x); + + memset(&x, 0, sizeof(x)); + x.z = -1; + mrep_rep("Z", &x); + + memset(&x, 0, sizeof(x)); + x.bstate = -1; + mrep_rep("Bstate", &x); + + printf(" end record;\n"); + printf(" -- Please note: this rep. clause is generated and may be\n"); + printf(" -- different on your system.\n"); +} + +static void +gen_attr_set(const char *name) +{ + /* All of the A_xxx symbols are defined in ncurses, but not all are nonzero + * if "configure --enable-widec" is specified. + */ + static const name_attribute_pair nap[] = + { +#if A_STANDOUT + {"Stand_Out", A_STANDOUT}, +#endif +#if A_UNDERLINE + {"Under_Line", A_UNDERLINE}, +#endif +#if A_REVERSE + {"Reverse_Video", A_REVERSE}, +#endif +#if A_BLINK + {"Blink", A_BLINK}, +#endif +#if A_DIM + {"Dim_Character", A_DIM}, +#endif +#if A_BOLD + {"Bold_Character", A_BOLD}, +#endif +#if A_ALTCHARSET + {"Alternate_Character_Set", A_ALTCHARSET}, +#endif +#if A_INVIS + {"Invisible_Character", A_INVIS}, +#endif +#if A_PROTECT + {"Protected_Character", A_PROTECT}, +#endif +#if A_HORIZONTAL + {"Horizontal", A_HORIZONTAL}, +#endif +#if A_LEFT + {"Left", A_LEFT}, +#endif +#if A_LOW + {"Low", A_LOW}, +#endif +#if A_RIGHT + {"Right", A_RIGHT}, +#endif +#if A_TOP + {"Top", A_TOP}, +#endif +#if A_VERTICAL + {"Vertical", A_VERTICAL}, +#endif + {(char *)0, 0} + }; + chtype attr = A_ATTRIBUTES & ~A_COLOR; + int start = -1; + int len = 0; + int i, set; + for (i = 0; i < (int)(8 * sizeof(chtype)); i++) + + { + set = attr & 1; + if (set) + { + if (start < 0) + start = i; + if (start >= 0) + { + len++; + } + } + attr = attr >> 1; + } + gen_reps(nap, name, (len + 7) / 8, little_endian ? start : 0); +} + +static void +gen_trace(const char *name) +{ + static const name_attribute_pair nap[] = + { + {"Times", TRACE_TIMES}, + {"Tputs", TRACE_TPUTS}, + {"Update", TRACE_UPDATE}, + {"Cursor_Move", TRACE_MOVE}, + {"Character_Output", TRACE_CHARPUT}, + {"Calls", TRACE_CALLS}, + {"Virtual_Puts", TRACE_VIRTPUT}, + {"Input_Events", TRACE_IEVENT}, + {"TTY_State", TRACE_BITS}, + {"Internal_Calls", TRACE_ICALLS}, + {"Character_Calls", TRACE_CCALLS}, + {"Termcap_TermInfo", TRACE_DATABASE}, + {(char *)0, 0} + }; + gen_reps(nap, name, sizeof(int), 0); +} + +static void +gen_menu_opt_rep(const char *name) +{ + static const name_attribute_pair nap[] = + { +#ifdef O_ONEVALUE + {"One_Valued", O_ONEVALUE}, +#endif +#ifdef O_SHOWDESC + {"Show_Descriptions", O_SHOWDESC}, +#endif +#ifdef O_ROWMAJOR + {"Row_Major_Order", O_ROWMAJOR}, +#endif +#ifdef O_IGNORECASE + {"Ignore_Case", O_IGNORECASE}, +#endif +#ifdef O_SHOWMATCH + {"Show_Matches", O_SHOWMATCH}, +#endif +#ifdef O_NONCYCLIC + {"Non_Cyclic", O_NONCYCLIC}, +#endif + {(char *)0, 0} + }; + gen_reps(nap, name, sizeof(int), 0); +} + +static void +gen_item_opt_rep(const char *name) +{ + static const name_attribute_pair nap[] = + { +#ifdef O_SELECTABLE + {"Selectable", O_SELECTABLE}, +#endif + {(char *)0, 0} + }; + gen_reps(nap, name, sizeof(int), 0); +} + +static void +gen_form_opt_rep(const char *name) +{ + static const name_attribute_pair nap[] = + { +#ifdef O_NL_OVERLOAD + {"NL_Overload", O_NL_OVERLOAD}, +#endif +#ifdef O_BS_OVERLOAD + {"BS_Overload", O_BS_OVERLOAD}, +#endif + {(char *)0, 0} + }; + gen_reps(nap, name, sizeof(int), 0); +} + +/* + * Generate the representation clause for the Field_Option_Set record + */ +static void +gen_field_opt_rep(const char *name) +{ + static const name_attribute_pair nap[] = + { +#ifdef O_VISIBLE + {"Visible", O_VISIBLE}, +#endif +#ifdef O_ACTIVE + {"Active", O_ACTIVE}, +#endif +#ifdef O_PUBLIC + {"Public", O_PUBLIC}, +#endif +#ifdef O_EDIT + {"Edit", O_EDIT}, +#endif +#ifdef O_WRAP + {"Wrap", O_WRAP}, +#endif +#ifdef O_BLANK + {"Blank", O_BLANK}, +#endif +#ifdef O_AUTOSKIP + {"Auto_Skip", O_AUTOSKIP}, +#endif +#ifdef O_NULLOK + {"Null_Ok", O_NULLOK}, +#endif +#ifdef O_PASSOK + {"Pass_Ok", O_PASSOK}, +#endif +#ifdef O_STATIC + {"Static", O_STATIC}, +#endif + {(char *)0, 0} + }; + gen_reps(nap, name, sizeof(int), 0); +} + +/* + * Generate a single key code constant definition. + */ +static void +keydef(const char *name, const char *old_name, int value, int mode) +{ + if (mode == 0) /* Generate the new name */ + printf(" %-30s : constant Special_Key_Code := 8#%3o#;\n", name, value); + else + { /* generate the old name, but only if it doesn't conflict with the old + * name (Ada95 isn't case sensitive!) + */ + const char *s = old_name; + const char *t = name; + + while (*s && *t && (toupper(*s++) == toupper(*t++))); + if (*s || *t) + printf(" %-16s : Special_Key_Code renames %s;\n", old_name, name); + } +} + +/* + * Generate constants for the key codes. When called with mode==0, a + * complete list with nice constant names in proper casing style will + * be generated. Otherwise a list of old (i.e. C-style) names will be + * generated, given that the name wasn't already defined in the "nice" + * list. + */ +static void +gen_keydefs(int mode) +{ + char buf[16]; + char obuf[16]; + int i; + +#ifdef KEY_CODE_YES + keydef("Key_Code_Yes", "KEY_CODE_YES", KEY_CODE_YES, mode); +#endif +#ifdef KEY_MIN + keydef("Key_Min", "KEY_MIN", KEY_MIN, mode); +#endif +#ifdef KEY_BREAK + keydef("Key_Break", "KEY_BREAK", KEY_BREAK, mode); +#endif +#ifdef KEY_DOWN + keydef("Key_Cursor_Down", "KEY_DOWN", KEY_DOWN, mode); +#endif +#ifdef KEY_UP + keydef("Key_Cursor_Up", "KEY_UP", KEY_UP, mode); +#endif +#ifdef KEY_LEFT + keydef("Key_Cursor_Left", "KEY_LEFT", KEY_LEFT, mode); +#endif +#ifdef KEY_RIGHT + keydef("Key_Cursor_Right", "KEY_RIGHT", KEY_RIGHT, mode); +#endif +#ifdef KEY_HOME + keydef("Key_Home", "KEY_HOME", KEY_HOME, mode); +#endif +#ifdef KEY_BACKSPACE + keydef("Key_Backspace", "KEY_BACKSPACE", KEY_BACKSPACE, mode); +#endif +#ifdef KEY_F0 + keydef("Key_F0", "KEY_F0", KEY_F0, mode); +#endif +#ifdef KEY_F + for (i = 1; i <= 24; i++) + { + sprintf(buf, "Key_F%d", i); + sprintf(obuf, "KEY_F%d", i); + keydef(buf, obuf, KEY_F(i), mode); + } +#endif +#ifdef KEY_DL + keydef("Key_Delete_Line", "KEY_DL", KEY_DL, mode); +#endif +#ifdef KEY_IL + keydef("Key_Insert_Line", "KEY_IL", KEY_IL, mode); +#endif +#ifdef KEY_DC + keydef("Key_Delete_Char", "KEY_DC", KEY_DC, mode); +#endif +#ifdef KEY_IC + keydef("Key_Insert_Char", "KEY_IC", KEY_IC, mode); +#endif +#ifdef KEY_EIC + keydef("Key_Exit_Insert_Mode", "KEY_EIC", KEY_EIC, mode); +#endif +#ifdef KEY_CLEAR + keydef("Key_Clear_Screen", "KEY_CLEAR", KEY_CLEAR, mode); +#endif +#ifdef KEY_EOS + keydef("Key_Clear_End_Of_Screen", "KEY_EOS", KEY_EOS, mode); +#endif +#ifdef KEY_EOL + keydef("Key_Clear_End_Of_Line", "KEY_EOL", KEY_EOL, mode); +#endif +#ifdef KEY_SF + keydef("Key_Scroll_1_Forward", "KEY_SF", KEY_SF, mode); +#endif +#ifdef KEY_SR + keydef("Key_Scroll_1_Backward", "KEY_SR", KEY_SR, mode); +#endif +#ifdef KEY_NPAGE + keydef("Key_Next_Page", "KEY_NPAGE", KEY_NPAGE, mode); +#endif +#ifdef KEY_PPAGE + keydef("Key_Previous_Page", "KEY_PPAGE", KEY_PPAGE, mode); +#endif +#ifdef KEY_STAB + keydef("Key_Set_Tab", "KEY_STAB", KEY_STAB, mode); +#endif +#ifdef KEY_CTAB + keydef("Key_Clear_Tab", "KEY_CTAB", KEY_CTAB, mode); +#endif +#ifdef KEY_CATAB + keydef("Key_Clear_All_Tabs", "KEY_CATAB", KEY_CATAB, mode); +#endif +#ifdef KEY_ENTER + keydef("Key_Enter_Or_Send", "KEY_ENTER", KEY_ENTER, mode); +#endif +#ifdef KEY_SRESET + keydef("Key_Soft_Reset", "KEY_SRESET", KEY_SRESET, mode); +#endif +#ifdef KEY_RESET + keydef("Key_Reset", "KEY_RESET", KEY_RESET, mode); +#endif +#ifdef KEY_PRINT + keydef("Key_Print", "KEY_PRINT", KEY_PRINT, mode); +#endif +#ifdef KEY_LL + keydef("Key_Bottom", "KEY_LL", KEY_LL, mode); +#endif +#ifdef KEY_A1 + keydef("Key_Upper_Left_Of_Keypad", "KEY_A1", KEY_A1, mode); +#endif +#ifdef KEY_A3 + keydef("Key_Upper_Right_Of_Keypad", "KEY_A3", KEY_A3, mode); +#endif +#ifdef KEY_B2 + keydef("Key_Center_Of_Keypad", "KEY_B2", KEY_B2, mode); +#endif +#ifdef KEY_C1 + keydef("Key_Lower_Left_Of_Keypad", "KEY_C1", KEY_C1, mode); +#endif +#ifdef KEY_C3 + keydef("Key_Lower_Right_Of_Keypad", "KEY_C3", KEY_C3, mode); +#endif +#ifdef KEY_BTAB + keydef("Key_Back_Tab", "KEY_BTAB", KEY_BTAB, mode); +#endif +#ifdef KEY_BEG + keydef("Key_Beginning", "KEY_BEG", KEY_BEG, mode); +#endif +#ifdef KEY_CANCEL + keydef("Key_Cancel", "KEY_CANCEL", KEY_CANCEL, mode); +#endif +#ifdef KEY_CLOSE + keydef("Key_Close", "KEY_CLOSE", KEY_CLOSE, mode); +#endif +#ifdef KEY_COMMAND + keydef("Key_Command", "KEY_COMMAND", KEY_COMMAND, mode); +#endif +#ifdef KEY_COPY + keydef("Key_Copy", "KEY_COPY", KEY_COPY, mode); +#endif +#ifdef KEY_CREATE + keydef("Key_Create", "KEY_CREATE", KEY_CREATE, mode); +#endif +#ifdef KEY_END + keydef("Key_End", "KEY_END", KEY_END, mode); +#endif +#ifdef KEY_EXIT + keydef("Key_Exit", "KEY_EXIT", KEY_EXIT, mode); +#endif +#ifdef KEY_FIND + keydef("Key_Find", "KEY_FIND", KEY_FIND, mode); +#endif +#ifdef KEY_HELP + keydef("Key_Help", "KEY_HELP", KEY_HELP, mode); +#endif +#ifdef KEY_MARK + keydef("Key_Mark", "KEY_MARK", KEY_MARK, mode); +#endif +#ifdef KEY_MESSAGE + keydef("Key_Message", "KEY_MESSAGE", KEY_MESSAGE, mode); +#endif +#ifdef KEY_MOVE + keydef("Key_Move", "KEY_MOVE", KEY_MOVE, mode); +#endif +#ifdef KEY_NEXT + keydef("Key_Next", "KEY_NEXT", KEY_NEXT, mode); +#endif +#ifdef KEY_OPEN + keydef("Key_Open", "KEY_OPEN", KEY_OPEN, mode); +#endif +#ifdef KEY_OPTIONS + keydef("Key_Options", "KEY_OPTIONS", KEY_OPTIONS, mode); +#endif +#ifdef KEY_PREVIOUS + keydef("Key_Previous", "KEY_PREVIOUS", KEY_PREVIOUS, mode); +#endif +#ifdef KEY_REDO + keydef("Key_Redo", "KEY_REDO", KEY_REDO, mode); +#endif +#ifdef KEY_REFERENCE + keydef("Key_Reference", "KEY_REFERENCE", KEY_REFERENCE, mode); +#endif +#ifdef KEY_REFRESH + keydef("Key_Refresh", "KEY_REFRESH", KEY_REFRESH, mode); +#endif +#ifdef KEY_REPLACE + keydef("Key_Replace", "KEY_REPLACE", KEY_REPLACE, mode); +#endif +#ifdef KEY_RESTART + keydef("Key_Restart", "KEY_RESTART", KEY_RESTART, mode); +#endif +#ifdef KEY_RESUME + keydef("Key_Resume", "KEY_RESUME", KEY_RESUME, mode); +#endif +#ifdef KEY_SAVE + keydef("Key_Save", "KEY_SAVE", KEY_SAVE, mode); +#endif +#ifdef KEY_SBEG + keydef("Key_Shift_Begin", "KEY_SBEG", KEY_SBEG, mode); +#endif +#ifdef KEY_SCANCEL + keydef("Key_Shift_Cancel", "KEY_SCANCEL", KEY_SCANCEL, mode); +#endif +#ifdef KEY_SCOMMAND + keydef("Key_Shift_Command", "KEY_SCOMMAND", KEY_SCOMMAND, mode); +#endif +#ifdef KEY_SCOPY + keydef("Key_Shift_Copy", "KEY_SCOPY", KEY_SCOPY, mode); +#endif +#ifdef KEY_SCREATE + keydef("Key_Shift_Create", "KEY_SCREATE", KEY_SCREATE, mode); +#endif +#ifdef KEY_SDC + keydef("Key_Shift_Delete_Char", "KEY_SDC", KEY_SDC, mode); +#endif +#ifdef KEY_SDL + keydef("Key_Shift_Delete_Line", "KEY_SDL", KEY_SDL, mode); +#endif +#ifdef KEY_SELECT + keydef("Key_Select", "KEY_SELECT", KEY_SELECT, mode); +#endif +#ifdef KEY_SEND + keydef("Key_Shift_End", "KEY_SEND", KEY_SEND, mode); +#endif +#ifdef KEY_SEOL + keydef("Key_Shift_Clear_End_Of_Line", "KEY_SEOL", KEY_SEOL, mode); +#endif +#ifdef KEY_SEXIT + keydef("Key_Shift_Exit", "KEY_SEXIT", KEY_SEXIT, mode); +#endif +#ifdef KEY_SFIND + keydef("Key_Shift_Find", "KEY_SFIND", KEY_SFIND, mode); +#endif +#ifdef KEY_SHELP + keydef("Key_Shift_Help", "KEY_SHELP", KEY_SHELP, mode); +#endif +#ifdef KEY_SHOME + keydef("Key_Shift_Home", "KEY_SHOME", KEY_SHOME, mode); +#endif +#ifdef KEY_SIC + keydef("Key_Shift_Insert_Char", "KEY_SIC", KEY_SIC, mode); +#endif +#ifdef KEY_SLEFT + keydef("Key_Shift_Cursor_Left", "KEY_SLEFT", KEY_SLEFT, mode); +#endif +#ifdef KEY_SMESSAGE + keydef("Key_Shift_Message", "KEY_SMESSAGE", KEY_SMESSAGE, mode); +#endif +#ifdef KEY_SMOVE + keydef("Key_Shift_Move", "KEY_SMOVE", KEY_SMOVE, mode); +#endif +#ifdef KEY_SNEXT + keydef("Key_Shift_Next_Page", "KEY_SNEXT", KEY_SNEXT, mode); +#endif +#ifdef KEY_SOPTIONS + keydef("Key_Shift_Options", "KEY_SOPTIONS", KEY_SOPTIONS, mode); +#endif +#ifdef KEY_SPREVIOUS + keydef("Key_Shift_Previous_Page", "KEY_SPREVIOUS", KEY_SPREVIOUS, mode); +#endif +#ifdef KEY_SPRINT + keydef("Key_Shift_Print", "KEY_SPRINT", KEY_SPRINT, mode); +#endif +#ifdef KEY_SREDO + keydef("Key_Shift_Redo", "KEY_SREDO", KEY_SREDO, mode); +#endif +#ifdef KEY_SREPLACE + keydef("Key_Shift_Replace", "KEY_SREPLACE", KEY_SREPLACE, mode); +#endif +#ifdef KEY_SRIGHT + keydef("Key_Shift_Cursor_Right", "KEY_SRIGHT", KEY_SRIGHT, mode); +#endif +#ifdef KEY_SRSUME + keydef("Key_Shift_Resume", "KEY_SRSUME", KEY_SRSUME, mode); +#endif +#ifdef KEY_SSAVE + keydef("Key_Shift_Save", "KEY_SSAVE", KEY_SSAVE, mode); +#endif +#ifdef KEY_SSUSPEND + keydef("Key_Shift_Suspend", "KEY_SSUSPEND", KEY_SSUSPEND, mode); +#endif +#ifdef KEY_SUNDO + keydef("Key_Shift_Undo", "KEY_SUNDO", KEY_SUNDO, mode); +#endif +#ifdef KEY_SUSPEND + keydef("Key_Suspend", "KEY_SUSPEND", KEY_SUSPEND, mode); +#endif +#ifdef KEY_UNDO + keydef("Key_Undo", "KEY_UNDO", KEY_UNDO, mode); +#endif +#ifdef KEY_MOUSE + keydef("Key_Mouse", "KEY_MOUSE", KEY_MOUSE, mode); +#endif +#ifdef KEY_RESIZE + keydef("Key_Resize", "KEY_RESIZE", KEY_RESIZE, mode); +#endif +} + +/* + * Generate a constant with the given name. The second parameter + * is a reference to the ACS character in the acs_map[] array and + * will be translated into an index. + */ +static void +acs_def(const char *name, chtype *a) +{ + int c = a - &acs_map[0]; + + printf(" %-24s : constant Character := ", name); + if (isprint(c) && (c != '`')) + printf("'%c';\n", c); + else + printf("Character'Val (%d);\n", c); +} + +/* + * Generate the constants for the ACS characters + */ +static void +gen_acs(void) +{ + printf(" type C_ACS_Map is array (Character'Val (0) .. Character'Val (127))\n"); + printf(" of Attributed_Character;\n"); +#if USE_REENTRANT || BROKEN_LINKER + printf(" type C_ACS_Ptr is access C_ACS_Map;\n"); + printf(" function ACS_Map return C_ACS_Ptr;\n"); + printf(" pragma Import (C, ACS_Map, \"_nc_acs_map\");\n"); +#else + printf(" ACS_Map : C_ACS_Map;\n"); + printf(" pragma Import (C, ACS_Map, \"acs_map\");\n"); +#endif + printf(" --\n"); + printf(" --\n"); + printf(" -- Constants for several characters from the Alternate Character Set\n"); + printf(" -- You must use these constants as indices into the ACS_Map array\n"); + printf(" -- to get the corresponding attributed character at runtime.\n"); + printf(" --\n"); + +#ifdef ACS_ULCORNER + acs_def("ACS_Upper_Left_Corner", &ACS_ULCORNER); +#endif +#ifdef ACS_LLCORNER + acs_def("ACS_Lower_Left_Corner", &ACS_LLCORNER); +#endif +#ifdef ACS_URCORNER + acs_def("ACS_Upper_Right_Corner", &ACS_URCORNER); +#endif +#ifdef ACS_LRCORNER + acs_def("ACS_Lower_Right_Corner", &ACS_LRCORNER); +#endif +#ifdef ACS_LTEE + acs_def("ACS_Left_Tee", &ACS_LTEE); +#endif +#ifdef ACS_RTEE + acs_def("ACS_Right_Tee", &ACS_RTEE); +#endif +#ifdef ACS_BTEE + acs_def("ACS_Bottom_Tee", &ACS_BTEE); +#endif +#ifdef ACS_TTEE + acs_def("ACS_Top_Tee", &ACS_TTEE); +#endif +#ifdef ACS_HLINE + acs_def("ACS_Horizontal_Line", &ACS_HLINE); +#endif +#ifdef ACS_VLINE + acs_def("ACS_Vertical_Line", &ACS_VLINE); +#endif +#ifdef ACS_PLUS + acs_def("ACS_Plus_Symbol", &ACS_PLUS); +#endif +#ifdef ACS_S1 + acs_def("ACS_Scan_Line_1", &ACS_S1); +#endif +#ifdef ACS_S9 + acs_def("ACS_Scan_Line_9", &ACS_S9); +#endif +#ifdef ACS_DIAMOND + acs_def("ACS_Diamond", &ACS_DIAMOND); +#endif +#ifdef ACS_CKBOARD + acs_def("ACS_Checker_Board", &ACS_CKBOARD); +#endif +#ifdef ACS_DEGREE + acs_def("ACS_Degree", &ACS_DEGREE); +#endif +#ifdef ACS_PLMINUS + acs_def("ACS_Plus_Minus", &ACS_PLMINUS); +#endif +#ifdef ACS_BULLET + acs_def("ACS_Bullet", &ACS_BULLET); +#endif +#ifdef ACS_LARROW + acs_def("ACS_Left_Arrow", &ACS_LARROW); +#endif +#ifdef ACS_RARROW + acs_def("ACS_Right_Arrow", &ACS_RARROW); +#endif +#ifdef ACS_DARROW + acs_def("ACS_Down_Arrow", &ACS_DARROW); +#endif +#ifdef ACS_UARROW + acs_def("ACS_Up_Arrow", &ACS_UARROW); +#endif +#ifdef ACS_BOARD + acs_def("ACS_Board_Of_Squares", &ACS_BOARD); +#endif +#ifdef ACS_LANTERN + acs_def("ACS_Lantern", &ACS_LANTERN); +#endif +#ifdef ACS_BLOCK + acs_def("ACS_Solid_Block", &ACS_BLOCK); +#endif +#ifdef ACS_S3 + acs_def("ACS_Scan_Line_3", &ACS_S3); +#endif +#ifdef ACS_S7 + acs_def("ACS_Scan_Line_7", &ACS_S7); +#endif +#ifdef ACS_LEQUAL + acs_def("ACS_Less_Or_Equal", &ACS_LEQUAL); +#endif +#ifdef ACS_GEQUAL + acs_def("ACS_Greater_Or_Equal", &ACS_GEQUAL); +#endif +#ifdef ACS_PI + acs_def("ACS_PI", &ACS_PI); +#endif +#ifdef ACS_NEQUAL + acs_def("ACS_Not_Equal", &ACS_NEQUAL); +#endif +#ifdef ACS_STERLING + acs_def("ACS_Sterling", &ACS_STERLING); +#endif +} + +#define GEN_EVENT(name,value) \ + printf(" %-25s : constant Event_Mask := 8#%011lo#;\n", \ + #name, value) + +#define GEN_MEVENT(name) \ + printf(" %-25s : constant Event_Mask := 8#%011lo#;\n", \ + #name, name) + +static void +gen_mouse_events(void) +{ + mmask_t all1 = 0; + mmask_t all2 = 0; + mmask_t all3 = 0; + mmask_t all4 = 0; + +#ifdef BUTTON1_RELEASED + GEN_MEVENT(BUTTON1_RELEASED); + all1 |= BUTTON1_RELEASED; +#endif +#ifdef BUTTON1_PRESSED + GEN_MEVENT(BUTTON1_PRESSED); + all1 |= BUTTON1_PRESSED; +#endif +#ifdef BUTTON1_CLICKED + GEN_MEVENT(BUTTON1_CLICKED); + all1 |= BUTTON1_CLICKED; +#endif +#ifdef BUTTON1_DOUBLE_CLICKED + GEN_MEVENT(BUTTON1_DOUBLE_CLICKED); + all1 |= BUTTON1_DOUBLE_CLICKED; +#endif +#ifdef BUTTON1_TRIPLE_CLICKED + GEN_MEVENT(BUTTON1_TRIPLE_CLICKED); + all1 |= BUTTON1_TRIPLE_CLICKED; +#endif +#ifdef BUTTON1_RESERVED_EVENT + GEN_MEVENT(BUTTON1_RESERVED_EVENT); + all1 |= BUTTON1_RESERVED_EVENT; +#endif +#ifdef BUTTON2_RELEASED + GEN_MEVENT(BUTTON2_RELEASED); + all2 |= BUTTON2_RELEASED; +#endif +#ifdef BUTTON2_PRESSED + GEN_MEVENT(BUTTON2_PRESSED); + all2 |= BUTTON2_PRESSED; +#endif +#ifdef BUTTON2_CLICKED + GEN_MEVENT(BUTTON2_CLICKED); + all2 |= BUTTON2_CLICKED; +#endif +#ifdef BUTTON2_DOUBLE_CLICKED + GEN_MEVENT(BUTTON2_DOUBLE_CLICKED); + all2 |= BUTTON2_DOUBLE_CLICKED; +#endif +#ifdef BUTTON2_TRIPLE_CLICKED + GEN_MEVENT(BUTTON2_TRIPLE_CLICKED); + all2 |= BUTTON2_TRIPLE_CLICKED; +#endif +#ifdef BUTTON2_RESERVED_EVENT + GEN_MEVENT(BUTTON2_RESERVED_EVENT); + all2 |= BUTTON2_RESERVED_EVENT; +#endif +#ifdef BUTTON3_RELEASED + GEN_MEVENT(BUTTON3_RELEASED); + all3 |= BUTTON3_RELEASED; +#endif +#ifdef BUTTON3_PRESSED + GEN_MEVENT(BUTTON3_PRESSED); + all3 |= BUTTON3_PRESSED; +#endif +#ifdef BUTTON3_CLICKED + GEN_MEVENT(BUTTON3_CLICKED); + all3 |= BUTTON3_CLICKED; +#endif +#ifdef BUTTON3_DOUBLE_CLICKED + GEN_MEVENT(BUTTON3_DOUBLE_CLICKED); + all3 |= BUTTON3_DOUBLE_CLICKED; +#endif +#ifdef BUTTON3_TRIPLE_CLICKED + GEN_MEVENT(BUTTON3_TRIPLE_CLICKED); + all3 |= BUTTON3_TRIPLE_CLICKED; +#endif +#ifdef BUTTON3_RESERVED_EVENT + GEN_MEVENT(BUTTON3_RESERVED_EVENT); + all3 |= BUTTON3_RESERVED_EVENT; +#endif +#ifdef BUTTON4_RELEASED + GEN_MEVENT(BUTTON4_RELEASED); + all4 |= BUTTON4_RELEASED; +#endif +#ifdef BUTTON4_PRESSED + GEN_MEVENT(BUTTON4_PRESSED); + all4 |= BUTTON4_PRESSED; +#endif +#ifdef BUTTON4_CLICKED + GEN_MEVENT(BUTTON4_CLICKED); + all4 |= BUTTON4_CLICKED; +#endif +#ifdef BUTTON4_DOUBLE_CLICKED + GEN_MEVENT(BUTTON4_DOUBLE_CLICKED); + all4 |= BUTTON4_DOUBLE_CLICKED; +#endif +#ifdef BUTTON4_TRIPLE_CLICKED + GEN_MEVENT(BUTTON4_TRIPLE_CLICKED); + all4 |= BUTTON4_TRIPLE_CLICKED; +#endif +#ifdef BUTTON4_RESERVED_EVENT + GEN_MEVENT(BUTTON4_RESERVED_EVENT); + all4 |= BUTTON4_RESERVED_EVENT; +#endif +#ifdef BUTTON_CTRL + GEN_MEVENT(BUTTON_CTRL); +#endif +#ifdef BUTTON_SHIFT + GEN_MEVENT(BUTTON_SHIFT); +#endif +#ifdef BUTTON_ALT + GEN_MEVENT(BUTTON_ALT); +#endif +#ifdef REPORT_MOUSE_POSITION + GEN_MEVENT(REPORT_MOUSE_POSITION); +#endif +#ifdef ALL_MOUSE_EVENTS + GEN_MEVENT(ALL_MOUSE_EVENTS); +#endif + + GEN_EVENT(BUTTON1_EVENTS, all1); + GEN_EVENT(BUTTON2_EVENTS, all2); + GEN_EVENT(BUTTON3_EVENTS, all3); + GEN_EVENT(BUTTON4_EVENTS, all4); +} + +static void +wrap_one_var(const char *c_var, + const char *c_type, + const char *ada_func, + const char *ada_type) +{ +#if USE_REENTRANT + /* must wrap variables */ + printf("\n"); + printf(" function %s return %s\n", ada_func, ada_type); + printf(" is\n"); + printf(" function Result return %s;\n", c_type); + printf(" pragma Import (C, Result, \"_nc_%s\");\n", c_var); + printf(" begin\n"); + if (strcmp(c_type, ada_type)) + printf(" return %s (Result);\n", ada_type); + else + printf(" return Result;\n"); + printf(" end %s;\n", ada_func); +#else + /* global variables are really global */ + printf("\n"); + printf(" function %s return %s\n", ada_func, ada_type); + printf(" is\n"); + printf(" Result : %s;\n", c_type); + printf(" pragma Import (C, Result, \"%s\");\n", c_var); + printf(" begin\n"); + if (strcmp(c_type, ada_type)) + printf(" return %s (Result);\n", ada_type); + else + printf(" return Result;\n"); + printf(" end %s;\n", ada_func); +#endif +} + +#define GEN_PUBLIC_VAR(c_var, c_type, ada_func, ada_type) \ + wrap_one_var(#c_var, #c_type, #ada_func, #ada_type) + +static void +gen_public_vars(void) +{ + GEN_PUBLIC_VAR(stdscr, Window, Standard_Window, Window); + GEN_PUBLIC_VAR(curscr, Window, Current_Window, Window); + GEN_PUBLIC_VAR(LINES, C_Int, Lines, Line_Count); + GEN_PUBLIC_VAR(COLS, C_Int, Columns, Column_Count); + GEN_PUBLIC_VAR(TABSIZE, C_Int, Tab_Size, Natural); + GEN_PUBLIC_VAR(COLORS, C_Int, Number_Of_Colors, Natural); + GEN_PUBLIC_VAR(COLOR_PAIRS, C_Int, Number_Of_Color_Pairs, Natural); +} + +/* + * Output some comment lines indicating that the file is generated. + * The name parameter is the name of the facility to be used in + * the comment. + */ +static void +prologue(const char *name) +{ + printf("-- %s binding.\n", name); + printf("-- This module is generated. Please don't change it manually!\n"); + printf("-- Run the generator instead.\n-- |"); + + printf("define(`M4_BIT_ORDER',`%s_Order_First')", + little_endian ? "Low" : "High"); +} + +/* + * Write the prologue for the curses facility and make sure that + * KEY_MIN and KEY_MAX are defined for the rest of this source. + */ +static void +basedefs(void) +{ + prologue("curses"); +#ifndef KEY_MAX +# define KEY_MAX 0777 +#endif + printf("define(`M4_KEY_MAX',`8#%o#')", KEY_MAX); +#ifndef KEY_MIN +# define KEY_MIN 0401 +#endif + if (KEY_MIN == 256) + { + fprintf(stderr, "Unexpected value for KEY_MIN: %d\n", KEY_MIN); + exit(1); + } + printf("define(`M4_SPECIAL_FIRST',`8#%o#')", KEY_MIN - 1); +} + +/* + * Write out the comment lines for the menu facility + */ +static void +menu_basedefs(void) +{ + prologue("menu"); +} + +/* + * Write out the comment lines for the form facility + */ +static void +form_basedefs(void) +{ + prologue("form"); +} + +/* + * Write out the comment lines for the mouse facility + */ +static void +mouse_basedefs(void) +{ + prologue("mouse"); +} + +/* + * Write the definition of a single color + */ +static void +color_def(const char *name, int value) +{ + printf(" %-16s : constant Color_Number := %d;\n", name, value); +} + +/* + * Generate all color definitions + */ +static void +gen_color(void) +{ +#if HAVE_USE_DEFAULT_COLORS + color_def("Default_Color", -1); +#endif +#ifdef COLOR_BLACK + color_def("Black", COLOR_BLACK); +#endif +#ifdef COLOR_RED + color_def("Red", COLOR_RED); +#endif +#ifdef COLOR_GREEN + color_def("Green", COLOR_GREEN); +#endif +#ifdef COLOR_YELLOW + color_def("Yellow", COLOR_YELLOW); +#endif +#ifdef COLOR_BLUE + color_def("Blue", COLOR_BLUE); +#endif +#ifdef COLOR_MAGENTA + color_def("Magenta", COLOR_MAGENTA); +#endif +#ifdef COLOR_CYAN + color_def("Cyan", COLOR_CYAN); +#endif +#ifdef COLOR_WHITE + color_def("White", COLOR_WHITE); +#endif +} + +/* + * Generate the linker options for the base facility + */ +static void +gen_linkopts(void) +{ + printf(" pragma Linker_Options (\"-lncurses%s\");\n", model); +} + +/* + * Generate the linker options for the menu facility + */ +static void +gen_menu_linkopts(void) +{ + printf(" pragma Linker_Options (\"-lmenu%s\");\n", model); +} + +/* + * Generate the linker options for the form facility + */ +static void +gen_form_linkopts(void) +{ + printf(" pragma Linker_Options (\"-lform%s\");\n", model); +} + +/* + * Generate the linker options for the panel facility + */ +static void +gen_panel_linkopts(void) +{ + printf(" pragma Linker_Options (\"-lpanel%s\");\n", model); +} + +static void +gen_version_info(void) +{ + static const char *v1 = + " NC_Major_Version : constant := %d; -- Major version of the library\n"; + static const char *v2 = + " NC_Minor_Version : constant := %d; -- Minor version of the library\n"; + static const char *v3 = + " NC_Version : constant String := %c%d.%d%c; -- Version of library\n"; + + printf(v1, NCURSES_VERSION_MAJOR); + printf(v2, NCURSES_VERSION_MINOR); + printf(v3, '"', NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR, '"'); +} + +static int +eti_gen(char *buf, int code, const char *name, int *etimin, int *etimax) +{ + sprintf(buf, " E_%-16s : constant Eti_Error := %d;\n", name, code); + if (code < *etimin) + *etimin = code; + if (code > *etimax) + *etimax = code; + return strlen(buf); +} + +static void +gen_offsets(void) +{ + const char *s_bool = ""; + + if (sizeof(bool) == sizeof(char)) + { + s_bool = "char"; + } + else if (sizeof(bool) == sizeof(short)) + { + s_bool = "short"; + } + else if (sizeof(bool) == sizeof(int)) + { + s_bool = "int"; + } + printf(" Sizeof%-*s : constant Natural := %2ld; -- %s\n", + 12, "_bool", (long)sizeof(bool), "bool"); + + /* In ncurses _maxy and _maxx needs an offset for the "public" + * value + */ + printf(" Offset%-*s : constant Natural := %2d; -- %s\n", + 12, "_XY", 1, "int"); + printf("\n"); + printf(" type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n", s_bool); +} + +/* + * main() expects two arguments on the commandline, both single characters. + * The first character denotes the facility for which we generate output. + * Possible values are + * B - Base + * M - Menus + * F - Forms + * P - Pointer Device (Mouse) + * E - ETI base definitions + * + * The second character then denotes the specific output that should be + * generated for the selected facility. + */ +int +main(int argc, char *argv[]) +{ + int x = 0x12345678; + char *s = (char *)&x; + + if (*s == 0x78) + little_endian = 1; + + if (argc != 4) + exit(1); + model = *++argv; + + switch (argv[1][0]) + { + /* --------------------------------------------------------------- */ + case 'B': /* The Base facility */ + switch (argv[2][0]) + { + case 'A': /* chtype translation into Ada95 record type */ + gen_attr_set("Character_Attribute_Set"); + break; + case 'B': /* write some initial comment lines */ + basedefs(); + break; + case 'C': /* generate color constants */ + gen_color(); + break; + case 'D': /* generate displacements of fields in WINDOW struct. */ + gen_offsets(); + break; + case 'E': /* generate Mouse Event codes */ + gen_mouse_events(); + break; + case 'K': /* translation of keycodes */ + gen_keydefs(0); + break; + case 'L': /* generate the Linker_Options pragma */ + gen_linkopts(); + break; + case 'M': /* generate constants for the ACS characters */ + gen_acs(); + break; + case 'O': /* generate definitions of the old key code names */ + gen_keydefs(1); + break; + case 'P': /* generate definitions of the public variables */ + gen_public_vars(); + break; + case 'R': /* generate representation clause for Attributed character */ + gen_chtype_rep("Attributed_Character"); + break; + case 'T': /* generate the Trace info */ + gen_trace("Trace_Attribute_Set"); + break; + case 'V': /* generate version info */ + gen_version_info(); + break; + default: + break; + } + break; + /* --------------------------------------------------------------- */ + case 'M': /* The Menu facility */ + switch (argv[2][0]) + { + case 'R': /* generate representation clause for Menu_Option_Set */ + gen_menu_opt_rep("Menu_Option_Set"); + break; + case 'B': /* write some initial comment lines */ + menu_basedefs(); + break; + case 'L': /* generate the Linker_Options pragma */ + gen_menu_linkopts(); + break; + case 'I': /* generate representation clause for Item_Option_Set */ + gen_item_opt_rep("Item_Option_Set"); + break; + default: + break; + } + break; + /* --------------------------------------------------------------- */ + case 'F': /* The Form facility */ + switch (argv[2][0]) + { + case 'R': /* generate representation clause for Form_Option_Set */ + gen_form_opt_rep("Form_Option_Set"); + break; + case 'B': /* write some initial comment lines */ + form_basedefs(); + break; + case 'L': /* generate the Linker_Options pragma */ + gen_form_linkopts(); + break; + case 'I': /* generate representation clause for Field_Option_Set */ + gen_field_opt_rep("Field_Option_Set"); + break; + default: + break; + } + break; + /* --------------------------------------------------------------- */ + case 'P': /* The Pointer(=Mouse) facility */ + switch (argv[2][0]) + { + case 'B': /* write some initial comment lines */ + mouse_basedefs(); + break; + case 'M': /* generate representation clause for Mouse_Event */ + gen_mrep_rep("Mouse_Event"); + break; + case 'L': /* generate the Linker_Options pragma */ + gen_panel_linkopts(); + break; + default: + break; + } + break; + /* --------------------------------------------------------------- */ + case 'E': /* chtype size detection */ + switch (argv[2][0]) + { + case 'C': + { + const char *fmt = " type C_Chtype is new %s;\n"; + const char *afmt = " type C_AttrType is new %s;\n"; + + if (sizeof(chtype) == sizeof(int)) + { + if (sizeof(int) == sizeof(long)) + printf(fmt, "C_ULong"); + + else + printf(fmt, "C_UInt"); + } + else if (sizeof(chtype) == sizeof(long)) + { + printf(fmt, "C_ULong"); + } + else + printf("Error\n"); + + if (sizeof(attr_t) == sizeof(int)) + { + if (sizeof(int) == sizeof(long)) + printf(afmt, "C_ULong"); + + else + printf(afmt, "C_UInt"); + } + else if (sizeof(attr_t) == sizeof(long)) + { + printf(afmt, "C_ULong"); + } + else + printf("Error\n"); + + printf("define(`CF_CURSES_OK',`%d')", OK); + printf("define(`CF_CURSES_ERR',`%d')", ERR); + printf("define(`CF_CURSES_TRUE',`%d')", TRUE); + printf("define(`CF_CURSES_FALSE',`%d')", FALSE); + } + break; + case 'E': + { + char *buf = (char *)malloc(2048); + char *p = buf; + int etimin = E_OK; + int etimax = E_OK; + + if (p) + { + p += eti_gen(p, E_OK, "Ok", &etimin, &etimax); + p += eti_gen(p, E_SYSTEM_ERROR, "System_Error", &etimin, &etimax); + p += eti_gen(p, E_BAD_ARGUMENT, "Bad_Argument", &etimin, &etimax); + p += eti_gen(p, E_POSTED, "Posted", &etimin, &etimax); + p += eti_gen(p, E_CONNECTED, "Connected", &etimin, &etimax); + p += eti_gen(p, E_BAD_STATE, "Bad_State", &etimin, &etimax); + p += eti_gen(p, E_NO_ROOM, "No_Room", &etimin, &etimax); + p += eti_gen(p, E_NOT_POSTED, "Not_Posted", &etimin, &etimax); + p += eti_gen(p, E_UNKNOWN_COMMAND, + "Unknown_Command", &etimin, &etimax); + p += eti_gen(p, E_NO_MATCH, "No_Match", &etimin, &etimax); + p += eti_gen(p, E_NOT_SELECTABLE, + "Not_Selectable", &etimin, &etimax); + p += eti_gen(p, E_NOT_CONNECTED, + "Not_Connected", &etimin, &etimax); + p += eti_gen(p, E_REQUEST_DENIED, + "Request_Denied", &etimin, &etimax); + p += eti_gen(p, E_INVALID_FIELD, + "Invalid_Field", &etimin, &etimax); + p += eti_gen(p, E_CURRENT, + "Current", &etimin, &etimax); + } + printf(" subtype Eti_Error is C_Int range %d .. %d;\n\n", + etimin, etimax); + printf(buf); + } + break; + default: + break; + } + break; + /* --------------------------------------------------------------- */ + case 'V': /* plain version dump */ + { + switch (argv[2][0]) + { + case '1': /* major version */ +#ifdef NCURSES_VERSION_MAJOR + printf("%d", NCURSES_VERSION_MAJOR); +#endif + break; + case '2': /* minor version */ +#ifdef NCURSES_VERSION_MINOR + printf("%d", NCURSES_VERSION_MINOR); +#endif + break; + case '3': /* patch level */ +#ifdef NCURSES_VERSION_PATCH + printf("%d", NCURSES_VERSION_PATCH); +#endif + break; + default: + break; + } + } + break; + /* --------------------------------------------------------------- */ + default: + break; + } + return 0; +} diff --git a/ncurses/Ada95/gen/html.m4 b/ncurses/Ada95/gen/html.m4 new file mode 100644 index 0000000..8df2653 --- /dev/null +++ b/ncurses/Ada95/gen/html.m4 @@ -0,0 +1,40 @@ +dnl*************************************************************************** +dnl Copyright (c) 2000-2006,2007 Free Software Foundation, Inc. * +dnl * +dnl Permission is hereby granted, free of charge, to any person obtaining a * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl $Id: html.m4,v 1.3 2007/09/01 23:59:59 tom Exp $ +define(`ANCHORIDX',`0')dnl +define(`MANPAGE',`define(`MANPG',$1)dnl +|===================================================================== + -- | Man page MANPG + -- |=====================================================================')dnl +define(`ANCHOR',`define(`ANCHORIDX',incr(ANCHORIDX))dnl +`#'1A NAME="AFU`_'ANCHORIDX"`#'2dnl +define(`CFUNAME',`$1')define(`AFUNAME',`$2')dnl +|')dnl +define(`AKA',``AKA': CFUNAME')dnl +define(`ALIAS',``AKA': $1')dnl diff --git a/ncurses/Ada95/gen/normal.m4 b/ncurses/Ada95/gen/normal.m4 new file mode 100644 index 0000000..9529976 --- /dev/null +++ b/ncurses/Ada95/gen/normal.m4 @@ -0,0 +1,37 @@ +dnl*************************************************************************** +dnl Copyright (c) 1998,2006 Free Software Foundation, Inc. * +dnl * +dnl Permission is hereby granted, free of charge, to any person obtaining a * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl $Id: normal.m4,v 1.2 2006/04/22 23:16:14 tom Exp $ +define(`MANPAGE',`define(`MANPG',$1)dnl +|===================================================================== + -- | Man page MANPG + -- |=====================================================================')dnl +define(`ANCHOR',`define(`CFUNAME',`$1')define(`AFUNAME',`$2')'dnl +|)dnl +define(`AKA',``AKA': CFUNAME')dnl +define(`ALIAS',``AKA': $1')dnl diff --git a/ncurses/Ada95/gen/table.m4 b/ncurses/Ada95/gen/table.m4 new file mode 100644 index 0000000..36b0027 --- /dev/null +++ b/ncurses/Ada95/gen/table.m4 @@ -0,0 +1,35 @@ +dnl*************************************************************************** +dnl Copyright (c) 2000,2006 Free Software Foundation, Inc. * +dnl * +dnl Permission is hereby granted, free of charge, to any person obtaining a * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl $Id: table.m4,v 1.2 2006/04/22 23:16:44 tom Exp $ +define(`ANCHORIDX',`0')dnl +define(`MANPAGE',`define(`MANPG',$1)')dnl +divert(-1)dnl +define(`ANCHOR',`divert(0)define(`ANCHORIDX',incr(ANCHORIDX))dnl +$1$2MANPG +divert(-1)') diff --git a/ncurses/Ada95/gen/terminal_interface-curses-aux.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-aux.ads.m4 new file mode 100644 index 0000000..e0c9348 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-aux.ads.m4 @@ -0,0 +1,105 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-aux__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Aux -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.16 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +include(`Base_Defs') +with System; +with Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Unchecked_Conversion; + +package Terminal_Interface.Curses.Aux is + pragma Preelaborate (Terminal_Interface.Curses.Aux); + + use type Interfaces.C.int; + + subtype C_Int is Interfaces.C.int; + subtype C_Short is Interfaces.C.short; + subtype C_Long_Int is Interfaces.C.long; + subtype C_Size_T is Interfaces.C.size_t; + subtype C_UInt is Interfaces.C.unsigned; + subtype C_ULong is Interfaces.C.unsigned_long; + subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr; + type C_Void_Ptr is new System.Address; +include(`Chtype_Def') + -- This is how those constants are defined in ncurses. I see them also + -- exactly like this in all ETI implementations I ever tested. So it + -- could be that this is quite general, but please check with your curses. + -- This is critical, because curses sometime mixes boolean returns with + -- returning an error status. + Curses_Ok : constant C_Int := CF_CURSES_OK; + Curses_Err : constant C_Int := CF_CURSES_ERR; + + Curses_True : constant C_Int := CF_CURSES_TRUE; + Curses_False : constant C_Int := CF_CURSES_FALSE; + + -- Eti_Error: type for error codes returned by the menu and form subsystem +include(`Eti_Defs') + procedure Eti_Exception (Code : Eti_Error); + -- Dispatch the error code and raise the appropriate exception + -- + -- + -- Some helpers + function Chtype_To_AttrChar is new + Unchecked_Conversion (Source => C_Chtype, + Target => Attributed_Character); + function AttrChar_To_Chtype is new + Unchecked_Conversion (Source => Attributed_Character, + Target => C_Chtype); + + function AttrChar_To_AttrType is new + Unchecked_Conversion (Source => Attributed_Character, + Target => C_AttrType); + + function AttrType_To_AttrChar is new + Unchecked_Conversion (Source => C_AttrType, + Target => Attributed_Character); + + procedure Fill_String (Cp : in chars_ptr; + Str : out String); + -- Fill the Str parameter with the string denoted by the chars_ptr + -- C-Style string. + + function Fill_String (Cp : chars_ptr) return String; + -- Same but as function. + +end Terminal_Interface.Curses.Aux; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 new file mode 100644 index 0000000..8819844 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 @@ -0,0 +1,238 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.14 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; + +package Terminal_Interface.Curses.Forms.Field_Types is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types); + use type Interfaces.C.int; + subtype C_Int is Interfaces.C.int; + + -- MANPAGE(`form_fieldtype.3x') + + type Field_Type is abstract tagged null record; + -- Abstract base type for all field types. A concrete field type + -- is an extension that adds some data elements describing formats or + -- boundary values for the type and validation routines. + -- For the builtin low-level fieldtypes, the validation routines are + -- already defined by the low-level C library. + -- The builtin types like Alpha or AlphaNumeric etc. are defined in + -- child packages of this package. You may use one of them as example + -- how to create you own child packages for low-level field types that + -- you may have already written in C. + + type Field_Type_Access is access all Field_Type'Class; + + -- ANCHOR(`set_field_type()',`Set_Type') + procedure Set_Field_Type (Fld : in Field; + Fld_Type : in Field_Type) is abstract; + -- AKA + -- But: we hide the vararg mechanism of the C interface. You always + -- have to pass a single Field_Type parameter. + + -- --------------------------------------------------------------------- + + -- MANPAGE(`form_field_validation.3x') + + -- ANCHOR(`field_type()',`Get_Type') + function Get_Type (Fld : in Field) return Field_Type_Access; + -- AKA + -- ALIAS(`field_arg()') + -- In Ada95 we can combine these. If you try to retrieve the field type + -- that is not defined as extension of the abstract tagged type above, + -- you will raise a Form_Exception. + -- This is not inlined + + -- +---------------------------------------------------------------------- + -- | Private Part. + -- | Most of this is used by the implementations of the child packages. + -- | +private + type Makearg_Function is access + function (Args : System.Address) return System.Address; + pragma Convention (C, Makearg_Function); + + type Copyarg_Function is access + function (Usr : System.Address) return System.Address; + pragma Convention (C, Copyarg_Function); + + type Freearg_Function is access + procedure (Usr : System.Address); + pragma Convention (C, Freearg_Function); + + type Field_Check_Function is access + function (Fld : Field; Usr : System.Address) return C_Int; + pragma Convention (C, Field_Check_Function); + + type Char_Check_Function is access + function (Ch : C_Int; Usr : System.Address) return C_Int; + pragma Convention (C, Char_Check_Function); + + type Choice_Function is access + function (Fld : Field; Usr : System.Address) return C_Int; + pragma Convention (C, Choice_Function); + + -- +---------------------------------------------------------------------- + -- | This must be in sync with the FIELDTYPE structure in form.h + -- | + type Low_Level_Field_Type is + record + Status : Interfaces.C.short; + Ref_Count : Interfaces.C.long; + Left, Right : System.Address; + Makearg : Makearg_Function; + Copyarg : Copyarg_Function; + Freearg : Freearg_Function; + Fcheck : Field_Check_Function; + Ccheck : Char_Check_Function; + Next, Prev : Choice_Function; + end record; + pragma Convention (C, Low_Level_Field_Type); + type C_Field_Type is access all Low_Level_Field_Type; + + Null_Field_Type : constant C_Field_Type := null; + + -- +---------------------------------------------------------------------- + -- | This four low-level fieldtypes are the ones associated with + -- | fieldtypes handled by this binding. Any other low-level fieldtype + -- | will result in a Form_Exception is function Get_Type. + -- | + M_Generic_Type : C_Field_Type := null; + M_Generic_Choice : C_Field_Type := null; + M_Builtin_Router : C_Field_Type := null; + M_Choice_Router : C_Field_Type := null; + + -- Two wrapper functions to access those low-level fieldtypes defined + -- in this package. + function C_Builtin_Router return C_Field_Type; + function C_Choice_Router return C_Field_Type; + + procedure Wrap_Builtin (Fld : Field; + Typ : Field_Type'Class; + Cft : C_Field_Type := C_Builtin_Router); + -- This procedure has to be called by the Set_Field_Type implementation + -- for builtin low-level fieldtypes to replace it by an Ada95 + -- conformant Field_Type object. + -- The parameter Cft must be C_Builtin_Router for regular low-level + -- fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for + -- low-level fieldtypes witch choice functions (like TYP_ENUM). + -- Any other value will raise a Form_Exception. + + function Make_Arg (Args : System.Address) return System.Address; + pragma Convention (C, Make_Arg); + -- This is the Makearg_Function for the internal low-level types + -- introduced by this binding. + + function Copy_Arg (Usr : System.Address) return System.Address; + pragma Convention (C, Copy_Arg); + -- This is the Copyarg_Function for the internal low-level types + -- introduced by this binding. + + procedure Free_Arg (Usr : System.Address); + pragma Convention (C, Free_Arg); + -- This is the Freearg_Function for the internal low-level types + -- introduced by this binding. + + function Field_Check_Router (Fld : Field; + Usr : System.Address) return C_Int; + pragma Convention (C, Field_Check_Router); + -- This is the Field_Check_Function for the internal low-level types + -- introduced to wrap the low-level types by a Field_Type derived + -- type. It routes the call to the corresponding low-level validation + -- function. + + function Char_Check_Router (Ch : C_Int; + Usr : System.Address) return C_Int; + pragma Convention (C, Char_Check_Router); + -- This is the Char_Check_Function for the internal low-level types + -- introduced to wrap the low-level types by a Field_Type derived + -- type. It routes the call to the corresponding low-level validation + -- function. + + function Next_Router (Fld : Field; + Usr : System.Address) return C_Int; + pragma Convention (C, Next_Router); + -- This is the Choice_Function for the internal low-level types + -- introduced to wrap the low-level types by a Field_Type derived + -- type. It routes the call to the corresponding low-level next_choice + -- function. + + function Prev_Router (Fld : Field; + Usr : System.Address) return C_Int; + pragma Convention (C, Prev_Router); + -- This is the Choice_Function for the internal low-level types + -- introduced to wrap the low-level types by a Field_Type derived + -- type. It routes the call to the corresponding low-level prev_choice + -- function. + + -- This is the Argument structure maintained by all low-level field types + -- introduced by this binding. + type Argument is record + Typ : Field_Type_Access; -- the Field_Type creating this record + Usr : System.Address; -- original arg for builtin low-level types + Cft : C_Field_Type; -- the original low-level type + end record; + type Argument_Access is access all Argument; + + -- +---------------------------------------------------------------------- + -- | + -- | Some Imports of libform routines to deal with low-level fieldtypes. + -- | + function New_Fieldtype (Fcheck : Field_Check_Function; + Ccheck : Char_Check_Function) + return C_Field_Type; + pragma Import (C, New_Fieldtype, "new_fieldtype"); + + function Set_Fieldtype_Arg (Cft : C_Field_Type; + Mak : Makearg_Function := Make_Arg'Access; + Cop : Copyarg_Function := Copy_Arg'Access; + Fre : Freearg_Function := Free_Arg'Access) + return C_Int; + pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg"); + + function Set_Fieldtype_Choice (Cft : C_Field_Type; + Next, Prev : Choice_Function) + return C_Int; + pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice"); + +end Terminal_Interface.Curses.Forms.Field_Types; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 new file mode 100644 index 0000000..4139883 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 @@ -0,0 +1,70 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_User_Data -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.15 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +generic + type User is limited private; + type User_Access is access User; +package Terminal_Interface.Curses.Forms.Field_User_Data is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_User_Data); + + -- MANPAGE(`form_field_userptr.3x') + + -- ANCHOR(`set_field_userptr',`Set_User_Data') + procedure Set_User_Data (Fld : in Field; + Data : in User_Access); + -- AKA + pragma Inline (Set_User_Data); + + -- ANCHOR(`field_userptr',`Get_User_Data') + procedure Get_User_Data (Fld : in Field; + Data : out User_Access); + -- AKA + + -- ANCHOR(`field_userptr',`Get_User_Data') + function Get_User_Data (Fld : in Field) return User_Access; + -- AKA + -- Sama as function + pragma Inline (Get_User_Data); + +end Terminal_Interface.Curses.Forms.Field_User_Data; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 new file mode 100644 index 0000000..0c4420d --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 @@ -0,0 +1,70 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-forms-form_user_data__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Form_User_Data -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.14 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +generic + type User is limited private; + type User_Access is access User; +package Terminal_Interface.Curses.Forms.Form_User_Data is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Form_User_Data); + + -- MANPAGE(`form_userptr.3x') + + -- ANCHOR(`set_form_userptr',`Set_User_Data') + procedure Set_User_Data (Frm : in Form; + Data : in User_Access); + -- AKA + pragma Inline (Set_User_Data); + + -- ANCHOR(`form_userptr',`Get_User_Data') + procedure Get_User_Data (Frm : in Form; + Data : out User_Access); + -- AKA + + -- ANCHOR(`form_userptr',`Get_User_Data') + function Get_User_Data (Frm : in Form) return User_Access; + -- AKA + -- Same as function + pragma Inline (Get_User_Data); + +end Terminal_Interface.Curses.Forms.Form_User_Data; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-forms.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-forms.ads.m4 new file mode 100644 index 0000000..5b75edb --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-forms.ads.m4 @@ -0,0 +1,699 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-forms__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Form -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.29 $ +-- $Date: 2006/06/25 14:30:21 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +include(`Form_Base_Defs') +with System; +with Ada.Characters.Latin_1; + +package Terminal_Interface.Curses.Forms is + pragma Preelaborate (Terminal_Interface.Curses.Forms); +include(`Form_Linker_Options')dnl +include(`Linker_Options') + Space : Character renames Ada.Characters.Latin_1.Space; + + type Field is private; + type Form is private; + + Null_Field : constant Field; + Null_Form : constant Form; + + type Field_Justification is (None, + Left, + Center, + Right); + + pragma Warnings (Off); +include(`Field_Rep')Dnl + + pragma Warnings (On); + + function Default_Field_Options return Field_Option_Set; + -- The initial defaults for the field options. + pragma Inline (Default_Field_Options); + + pragma Warnings (Off); +include(`Form_Opt_Rep')Dnl + + pragma Warnings (On); + + function Default_Form_Options return Form_Option_Set; + -- The initial defaults for the form options. + pragma Inline (Default_Form_Options); + + type Buffer_Number is new Natural; + + type Field_Array is array (Positive range <>) of aliased Field; + pragma Convention (C, Field_Array); + + type Field_Array_Access is access Field_Array; + + procedure Free (FA : in out Field_Array_Access; + Free_Fields : in Boolean := False); + -- Release the memory for an allocated field array + -- If Free_Fields is True, call Delete() for all the fields in + -- the array. + + subtype Form_Request_Code is Key_Code range (Key_Max + 1) .. (Key_Max + 57); + + -- The prefix F_ stands for "Form Request" + F_Next_Page : constant Form_Request_Code := Key_Max + 1; + F_Previous_Page : constant Form_Request_Code := Key_Max + 2; + F_First_Page : constant Form_Request_Code := Key_Max + 3; + F_Last_Page : constant Form_Request_Code := Key_Max + 4; + + F_Next_Field : constant Form_Request_Code := Key_Max + 5; + F_Previous_Field : constant Form_Request_Code := Key_Max + 6; + F_First_Field : constant Form_Request_Code := Key_Max + 7; + F_Last_Field : constant Form_Request_Code := Key_Max + 8; + F_Sorted_Next_Field : constant Form_Request_Code := Key_Max + 9; + F_Sorted_Previous_Field : constant Form_Request_Code := Key_Max + 10; + F_Sorted_First_Field : constant Form_Request_Code := Key_Max + 11; + F_Sorted_Last_Field : constant Form_Request_Code := Key_Max + 12; + F_Left_Field : constant Form_Request_Code := Key_Max + 13; + F_Right_Field : constant Form_Request_Code := Key_Max + 14; + F_Up_Field : constant Form_Request_Code := Key_Max + 15; + F_Down_Field : constant Form_Request_Code := Key_Max + 16; + + F_Next_Char : constant Form_Request_Code := Key_Max + 17; + F_Previous_Char : constant Form_Request_Code := Key_Max + 18; + F_Next_Line : constant Form_Request_Code := Key_Max + 19; + F_Previous_Line : constant Form_Request_Code := Key_Max + 20; + F_Next_Word : constant Form_Request_Code := Key_Max + 21; + F_Previous_Word : constant Form_Request_Code := Key_Max + 22; + F_Begin_Field : constant Form_Request_Code := Key_Max + 23; + F_End_Field : constant Form_Request_Code := Key_Max + 24; + F_Begin_Line : constant Form_Request_Code := Key_Max + 25; + F_End_Line : constant Form_Request_Code := Key_Max + 26; + F_Left_Char : constant Form_Request_Code := Key_Max + 27; + F_Right_Char : constant Form_Request_Code := Key_Max + 28; + F_Up_Char : constant Form_Request_Code := Key_Max + 29; + F_Down_Char : constant Form_Request_Code := Key_Max + 30; + + F_New_Line : constant Form_Request_Code := Key_Max + 31; + F_Insert_Char : constant Form_Request_Code := Key_Max + 32; + F_Insert_Line : constant Form_Request_Code := Key_Max + 33; + F_Delete_Char : constant Form_Request_Code := Key_Max + 34; + F_Delete_Previous : constant Form_Request_Code := Key_Max + 35; + F_Delete_Line : constant Form_Request_Code := Key_Max + 36; + F_Delete_Word : constant Form_Request_Code := Key_Max + 37; + F_Clear_EOL : constant Form_Request_Code := Key_Max + 38; + F_Clear_EOF : constant Form_Request_Code := Key_Max + 39; + F_Clear_Field : constant Form_Request_Code := Key_Max + 40; + F_Overlay_Mode : constant Form_Request_Code := Key_Max + 41; + F_Insert_Mode : constant Form_Request_Code := Key_Max + 42; + + -- Vertical Scrolling + F_ScrollForward_Line : constant Form_Request_Code := Key_Max + 43; + F_ScrollBackward_Line : constant Form_Request_Code := Key_Max + 44; + F_ScrollForward_Page : constant Form_Request_Code := Key_Max + 45; + F_ScrollBackward_Page : constant Form_Request_Code := Key_Max + 46; + F_ScrollForward_HalfPage : constant Form_Request_Code := Key_Max + 47; + F_ScrollBackward_HalfPage : constant Form_Request_Code := Key_Max + 48; + + -- Horizontal Scrolling + F_HScrollForward_Char : constant Form_Request_Code := Key_Max + 49; + F_HScrollBackward_Char : constant Form_Request_Code := Key_Max + 50; + F_HScrollForward_Line : constant Form_Request_Code := Key_Max + 51; + F_HScrollBackward_Line : constant Form_Request_Code := Key_Max + 52; + F_HScrollForward_HalfLine : constant Form_Request_Code := Key_Max + 53; + F_HScrollBackward_HalfLine : constant Form_Request_Code := Key_Max + 54; + + F_Validate_Field : constant Form_Request_Code := Key_Max + 55; + F_Next_Choice : constant Form_Request_Code := Key_Max + 56; + F_Previous_Choice : constant Form_Request_Code := Key_Max + 57; + + -- For those who like the old 'C' style request names + REQ_NEXT_PAGE : Form_Request_Code renames F_Next_Page; + REQ_PREV_PAGE : Form_Request_Code renames F_Previous_Page; + REQ_FIRST_PAGE : Form_Request_Code renames F_First_Page; + REQ_LAST_PAGE : Form_Request_Code renames F_Last_Page; + + REQ_NEXT_FIELD : Form_Request_Code renames F_Next_Field; + REQ_PREV_FIELD : Form_Request_Code renames F_Previous_Field; + REQ_FIRST_FIELD : Form_Request_Code renames F_First_Field; + REQ_LAST_FIELD : Form_Request_Code renames F_Last_Field; + REQ_SNEXT_FIELD : Form_Request_Code renames F_Sorted_Next_Field; + REQ_SPREV_FIELD : Form_Request_Code renames F_Sorted_Previous_Field; + REQ_SFIRST_FIELD : Form_Request_Code renames F_Sorted_First_Field; + REQ_SLAST_FIELD : Form_Request_Code renames F_Sorted_Last_Field; + REQ_LEFT_FIELD : Form_Request_Code renames F_Left_Field; + REQ_RIGHT_FIELD : Form_Request_Code renames F_Right_Field; + REQ_UP_FIELD : Form_Request_Code renames F_Up_Field; + REQ_DOWN_FIELD : Form_Request_Code renames F_Down_Field; + + REQ_NEXT_CHAR : Form_Request_Code renames F_Next_Char; + REQ_PREV_CHAR : Form_Request_Code renames F_Previous_Char; + REQ_NEXT_LINE : Form_Request_Code renames F_Next_Line; + REQ_PREV_LINE : Form_Request_Code renames F_Previous_Line; + REQ_NEXT_WORD : Form_Request_Code renames F_Next_Word; + REQ_PREV_WORD : Form_Request_Code renames F_Previous_Word; + REQ_BEG_FIELD : Form_Request_Code renames F_Begin_Field; + REQ_END_FIELD : Form_Request_Code renames F_End_Field; + REQ_BEG_LINE : Form_Request_Code renames F_Begin_Line; + REQ_END_LINE : Form_Request_Code renames F_End_Line; + REQ_LEFT_CHAR : Form_Request_Code renames F_Left_Char; + REQ_RIGHT_CHAR : Form_Request_Code renames F_Right_Char; + REQ_UP_CHAR : Form_Request_Code renames F_Up_Char; + REQ_DOWN_CHAR : Form_Request_Code renames F_Down_Char; + + REQ_NEW_LINE : Form_Request_Code renames F_New_Line; + REQ_INS_CHAR : Form_Request_Code renames F_Insert_Char; + REQ_INS_LINE : Form_Request_Code renames F_Insert_Line; + REQ_DEL_CHAR : Form_Request_Code renames F_Delete_Char; + REQ_DEL_PREV : Form_Request_Code renames F_Delete_Previous; + REQ_DEL_LINE : Form_Request_Code renames F_Delete_Line; + REQ_DEL_WORD : Form_Request_Code renames F_Delete_Word; + REQ_CLR_EOL : Form_Request_Code renames F_Clear_EOL; + REQ_CLR_EOF : Form_Request_Code renames F_Clear_EOF; + REQ_CLR_FIELD : Form_Request_Code renames F_Clear_Field; + REQ_OVL_MODE : Form_Request_Code renames F_Overlay_Mode; + REQ_INS_MODE : Form_Request_Code renames F_Insert_Mode; + + REQ_SCR_FLINE : Form_Request_Code renames F_ScrollForward_Line; + REQ_SCR_BLINE : Form_Request_Code renames F_ScrollBackward_Line; + REQ_SCR_FPAGE : Form_Request_Code renames F_ScrollForward_Page; + REQ_SCR_BPAGE : Form_Request_Code renames F_ScrollBackward_Page; + REQ_SCR_FHPAGE : Form_Request_Code renames F_ScrollForward_HalfPage; + REQ_SCR_BHPAGE : Form_Request_Code renames F_ScrollBackward_HalfPage; + + REQ_SCR_FCHAR : Form_Request_Code renames F_HScrollForward_Char; + REQ_SCR_BCHAR : Form_Request_Code renames F_HScrollBackward_Char; + REQ_SCR_HFLINE : Form_Request_Code renames F_HScrollForward_Line; + REQ_SCR_HBLINE : Form_Request_Code renames F_HScrollBackward_Line; + REQ_SCR_HFHALF : Form_Request_Code renames F_HScrollForward_HalfLine; + REQ_SCR_HBHALF : Form_Request_Code renames F_HScrollBackward_HalfLine; + + REQ_VALIDATION : Form_Request_Code renames F_Validate_Field; + REQ_NEXT_CHOICE : Form_Request_Code renames F_Next_Choice; + REQ_PREV_CHOICE : Form_Request_Code renames F_Previous_Choice; + + procedure Request_Name (Key : in Form_Request_Code; + Name : out String); + + function Request_Name (Key : Form_Request_Code) return String; + -- Same as function + pragma Inline (Request_Name); + + ------------------ + -- Exceptions -- + ------------------ + Form_Exception : exception; + + -- MANPAGE(`form_field_new.3x') + + -- ANCHOR(`new_field()',`Create') + function Create (Height : Line_Count; + Width : Column_Count; + Top : Line_Position; + Left : Column_Position; + Off_Screen : Natural := 0; + More_Buffers : Buffer_Number := Buffer_Number'First) + return Field; + -- AKA + -- An overloaded Create is defined later. Pragma Inline appears there. + + -- ANCHOR(`new_field()',`New_Field') + function New_Field (Height : Line_Count; + Width : Column_Count; + Top : Line_Position; + Left : Column_Position; + Off_Screen : Natural := 0; + More_Buffers : Buffer_Number := Buffer_Number'First) + return Field renames Create; + -- AKA + pragma Inline (New_Field); + + -- ANCHOR(`free_field()',`Delete') + procedure Delete (Fld : in out Field); + -- AKA + -- Reset Fld to Null_Field + -- An overloaded Delete is defined later. Pragma Inline appears there. + + -- ANCHOR(`dup_field()',`Duplicate') + function Duplicate (Fld : Field; + Top : Line_Position; + Left : Column_Position) return Field; + -- AKA + pragma Inline (Duplicate); + + -- ANCHOR(`link_field()',`Link') + function Link (Fld : Field; + Top : Line_Position; + Left : Column_Position) return Field; + -- AKA + pragma Inline (Link); + + -- MANPAGE(`form_field_just.3x') + + -- ANCHOR(`set_field_just()',`Set_Justification') + procedure Set_Justification (Fld : in Field; + Just : in Field_Justification := None); + -- AKA + pragma Inline (Set_Justification); + + -- ANCHOR(`field_just()',`Get_Justification') + function Get_Justification (Fld : Field) return Field_Justification; + -- AKA + pragma Inline (Get_Justification); + + -- MANPAGE(`form_field_buffer.3x') + + -- ANCHOR(`set_field_buffer()',`Set_Buffer') + procedure Set_Buffer + (Fld : in Field; + Buffer : in Buffer_Number := Buffer_Number'First; + Str : in String); + -- AKA + -- Not inlined + + -- ANCHOR(`field_buffer()',`Get_Buffer') + procedure Get_Buffer + (Fld : in Field; + Buffer : in Buffer_Number := Buffer_Number'First; + Str : out String); + -- AKA + + function Get_Buffer + (Fld : in Field; + Buffer : in Buffer_Number := Buffer_Number'First) return String; + -- AKA + -- Same but as function + pragma Inline (Get_Buffer); + + -- ANCHOR(`set_field_status()',`Set_Status') + procedure Set_Status (Fld : in Field; + Status : in Boolean := True); + -- AKA + pragma Inline (Set_Status); + + -- ANCHOR(`field_status()',`Changed') + function Changed (Fld : Field) return Boolean; + -- AKA + pragma Inline (Changed); + + -- ANCHOR(`set_field_max()',`Set_Maximum_Size') + procedure Set_Maximum_Size (Fld : in Field; + Max : in Natural := 0); + -- AKA + pragma Inline (Set_Maximum_Size); + + -- MANPAGE(`form_field_opts.3x') + + -- ANCHOR(`set_field_opts()',`Set_Options') + procedure Set_Options (Fld : in Field; + Options : in Field_Option_Set); + -- AKA + -- An overloaded version is defined later. Pragma Inline appears there + + -- ANCHOR(`field_opts_on()',`Switch_Options') + procedure Switch_Options (Fld : in Field; + Options : in Field_Option_Set; + On : Boolean := True); + -- AKA + -- ALIAS(`field_opts_off()') + -- An overloaded version is defined later. Pragma Inline appears there + + -- ANCHOR(`field_opts()',`Get_Options') + procedure Get_Options (Fld : in Field; + Options : out Field_Option_Set); + -- AKA + + -- ANCHOR(`field_opts()',`Get_Options') + function Get_Options (Fld : Field := Null_Field) + return Field_Option_Set; + -- AKA + -- An overloaded version is defined later. Pragma Inline appears there + + -- MANPAGE(`form_field_attributes.3x') + + -- ANCHOR(`set_field_fore()',`Set_Foreground') + procedure Set_Foreground + (Fld : in Field; + Fore : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Foreground); + + -- ANCHOR(`field_fore()',`Foreground') + procedure Foreground (Fld : in Field; + Fore : out Character_Attribute_Set); + -- AKA + + -- ANCHOR(`field_fore()',`Foreground') + procedure Foreground (Fld : in Field; + Fore : out Character_Attribute_Set; + Color : out Color_Pair); + -- AKA + pragma Inline (Foreground); + + -- ANCHOR(`set_field_back()',`Set_Background') + procedure Set_Background + (Fld : in Field; + Back : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Background); + + -- ANCHOR(`field_back()',`Background') + procedure Background (Fld : in Field; + Back : out Character_Attribute_Set); + -- AKA + + -- ANCHOR(`field_back()',`Background') + procedure Background (Fld : in Field; + Back : out Character_Attribute_Set; + Color : out Color_Pair); + -- AKA + pragma Inline (Background); + + -- ANCHOR(`set_field_pad()',`Set_Pad_Character') + procedure Set_Pad_Character (Fld : in Field; + Pad : in Character := Space); + -- AKA + pragma Inline (Set_Pad_Character); + + -- ANCHOR(`field_pad()',`Pad_Character') + procedure Pad_Character (Fld : in Field; + Pad : out Character); + -- AKA + pragma Inline (Pad_Character); + + -- MANPAGE(`form_field_info.3x') + + -- ANCHOR(`field_info()',`Info') + procedure Info (Fld : in Field; + Lines : out Line_Count; + Columns : out Column_Count; + First_Row : out Line_Position; + First_Column : out Column_Position; + Off_Screen : out Natural; + Additional_Buffers : out Buffer_Number); + -- AKA + pragma Inline (Info); + + -- ANCHOR(`dynamic_field_info()',`Dynamic_Info') + procedure Dynamic_Info (Fld : in Field; + Lines : out Line_Count; + Columns : out Column_Count; + Max : out Natural); + -- AKA + pragma Inline (Dynamic_Info); + + -- MANPAGE(`form_win.3x') + + -- ANCHOR(`set_form_win()',`Set_Window') + procedure Set_Window (Frm : in Form; + Win : in Window); + -- AKA + pragma Inline (Set_Window); + + -- ANCHOR(`form_win()',`Get_Window') + function Get_Window (Frm : Form) return Window; + -- AKA + pragma Inline (Get_Window); + + -- ANCHOR(`set_form_sub()',`Set_Sub_Window') + procedure Set_Sub_Window (Frm : in Form; + Win : in Window); + -- AKA + pragma Inline (Set_Sub_Window); + + -- ANCHOR(`form_sub()',`Get_Sub_Window') + function Get_Sub_Window (Frm : Form) return Window; + -- AKA + pragma Inline (Get_Sub_Window); + + -- ANCHOR(`scale_form()',`Scale') + procedure Scale (Frm : in Form; + Lines : out Line_Count; + Columns : out Column_Count); + -- AKA + pragma Inline (Scale); + + -- MANPAGE(`form_hook.3x') + + type Form_Hook_Function is access procedure (Frm : in Form); + pragma Convention (C, Form_Hook_Function); + + -- ANCHOR(`set_field_init()',`Set_Field_Init_Hook') + procedure Set_Field_Init_Hook (Frm : in Form; + Proc : in Form_Hook_Function); + -- AKA + pragma Inline (Set_Field_Init_Hook); + + -- ANCHOR(`set_field_term()',`Set_Field_Term_Hook') + procedure Set_Field_Term_Hook (Frm : in Form; + Proc : in Form_Hook_Function); + -- AKA + pragma Inline (Set_Field_Term_Hook); + + -- ANCHOR(`set_form_init()',`Set_Form_Init_Hook') + procedure Set_Form_Init_Hook (Frm : in Form; + Proc : in Form_Hook_Function); + -- AKA + pragma Inline (Set_Form_Init_Hook); + + -- ANCHOR(`set_form_term()',`Set_Form_Term_Hook') + procedure Set_Form_Term_Hook (Frm : in Form; + Proc : in Form_Hook_Function); + -- AKA + pragma Inline (Set_Form_Term_Hook); + + -- ANCHOR(`field_init()',`Get_Field_Init_Hook') + function Get_Field_Init_Hook (Frm : Form) return Form_Hook_Function; + -- AKA + pragma Import (C, Get_Field_Init_Hook, "field_init"); + + -- ANCHOR(`field_term()',`Get_Field_Term_Hook') + function Get_Field_Term_Hook (Frm : Form) return Form_Hook_Function; + -- AKA + pragma Import (C, Get_Field_Term_Hook, "field_term"); + + -- ANCHOR(`form_init()',`Get_Form_Init_Hook') + function Get_Form_Init_Hook (Frm : Form) return Form_Hook_Function; + -- AKA + pragma Import (C, Get_Form_Init_Hook, "form_init"); + + -- ANCHOR(`form_term()',`Get_Form_Term_Hook') + function Get_Form_Term_Hook (Frm : Form) return Form_Hook_Function; + -- AKA + pragma Import (C, Get_Form_Term_Hook, "form_term"); + + -- MANPAGE(`form_field.3x') + + -- ANCHOR(`set_form_fields()',`Redefine') + procedure Redefine (Frm : in Form; + Flds : in Field_Array_Access); + -- AKA + pragma Inline (Redefine); + + -- ANCHOR(`set_form_fields()',`Set_Fields') + procedure Set_Fields (Frm : in Form; + Flds : in Field_Array_Access) renames Redefine; + -- AKA + -- pragma Inline (Set_Fields); + + -- ANCHOR(`form_fields()',`Fields') + function Fields (Frm : Form; + Index : Positive) return Field; + -- AKA + pragma Inline (Fields); + + -- ANCHOR(`field_count()',`Field_Count') + function Field_Count (Frm : Form) return Natural; + -- AKA + pragma Inline (Field_Count); + + -- ANCHOR(`move_field()',`Move') + procedure Move (Fld : in Field; + Line : in Line_Position; + Column : in Column_Position); + -- AKA + pragma Inline (Move); + + -- MANPAGE(`form_new.3x') + + -- ANCHOR(`new_form()',`Create') + function Create (Fields : Field_Array_Access) return Form; + -- AKA + pragma Inline (Create); + + -- ANCHOR(`new_form()',`New_Form') + function New_Form (Fields : Field_Array_Access) return Form + renames Create; + -- AKA + -- pragma Inline (New_Form); + + -- ANCHOR(`free_form()',`Delete') + procedure Delete (Frm : in out Form); + -- AKA + -- Reset Frm to Null_Form + pragma Inline (Delete); + + -- MANPAGE(`form_opts.3x') + + -- ANCHOR(`set_form_opts()',`Set_Options') + procedure Set_Options (Frm : in Form; + Options : in Form_Option_Set); + -- AKA + pragma Inline (Set_Options); + + -- ANCHOR(`form_opts_on()',`Switch_Options') + procedure Switch_Options (Frm : in Form; + Options : in Form_Option_Set; + On : Boolean := True); + -- AKA + -- ALIAS(`form_opts_off()') + pragma Inline (Switch_Options); + + -- ANCHOR(`form_opts()',`Get_Options') + procedure Get_Options (Frm : in Form; + Options : out Form_Option_Set); + -- AKA + + -- ANCHOR(`form_opts()',`Get_Options') + function Get_Options (Frm : Form := Null_Form) return Form_Option_Set; + -- AKA + pragma Inline (Get_Options); + + -- MANPAGE(`form_post.3x') + + -- ANCHOR(`post_form()',`Post') + procedure Post (Frm : in Form; + Post : in Boolean := True); + -- AKA + -- ALIAS(`unpost_form()') + pragma Inline (Post); + + -- MANPAGE(`form_cursor.3x') + + -- ANCHOR(`pos_form_cursor()',`Position_Cursor') + procedure Position_Cursor (Frm : Form); + -- AKA + pragma Inline (Position_Cursor); + + -- MANPAGE(`form_data.3x') + + -- ANCHOR(`data_ahead()',`Data_Ahead') + function Data_Ahead (Frm : Form) return Boolean; + -- AKA + pragma Inline (Data_Ahead); + + -- ANCHOR(`data_behind()',`Data_Behind') + function Data_Behind (Frm : Form) return Boolean; + -- AKA + pragma Inline (Data_Behind); + + -- MANPAGE(`form_driver.3x') + + type Driver_Result is (Form_Ok, + Request_Denied, + Unknown_Request, + Invalid_Field); + + -- ANCHOR(`form_driver()',`Driver') + function Driver (Frm : Form; + Key : Key_Code) return Driver_Result; + -- AKA + -- Driver not inlined + + -- MANPAGE(`form_page.3x') + + type Page_Number is new Natural; + + -- ANCHOR(`set_current_field()',`Set_Current') + procedure Set_Current (Frm : in Form; + Fld : in Field); + -- AKA + pragma Inline (Set_Current); + + -- ANCHOR(`current_field()',`Current') + function Current (Frm : in Form) return Field; + -- AKA + pragma Inline (Current); + + -- ANCHOR(`set_form_page()',`Set_Page') + procedure Set_Page (Frm : in Form; + Page : in Page_Number := Page_Number'First); + -- AKA + pragma Inline (Set_Page); + + -- ANCHOR(`form_page()',`Page') + function Page (Frm : Form) return Page_Number; + -- AKA + pragma Inline (Page); + + -- ANCHOR(`field_index()',`Get_Index') + function Get_Index (Fld : Field) return Positive; + -- AKA + -- Please note that in this binding we start the numbering of fields + -- with 1. So this is number is one more than you get from the low + -- level call. + pragma Inline (Get_Index); + + -- MANPAGE(`form_new_page.3x') + + -- ANCHOR(`set_new_page()',`Set_New_Page') + procedure Set_New_Page (Fld : in Field; + New_Page : in Boolean := True); + -- AKA + pragma Inline (Set_New_Page); + + -- ANCHOR(`new_page()',`Is_New_Page') + function Is_New_Page (Fld : Field) return Boolean; + -- AKA + pragma Inline (Is_New_Page); + + -- MANPAGE(`form_requestname.3x') + -- Not Implemented: form_request_name, form_request_by_name + +------------------------------------------------------------------------------ +private + type Field is new System.Storage_Elements.Integer_Address; + type Form is new System.Storage_Elements.Integer_Address; + + Null_Field : constant Field := 0; + Null_Form : constant Form := 0; + +end Terminal_Interface.Curses.Forms; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 new file mode 100644 index 0000000..14b2466 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 @@ -0,0 +1,75 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-menus-item_user_data__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menus.Item_User_Data -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.16 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +generic + type User is limited private; + type User_Access is access User; +package Terminal_Interface.Curses.Menus.Item_User_Data is + pragma Preelaborate (Terminal_Interface.Curses.Menus.Item_User_Data); + + -- The binding uses the same user pointer for menu items + -- as the low level C implementation. So you can safely + -- read or write the user pointer also with the C routines + -- + -- MANPAGE(`mitem_userptr.3x') + + -- ANCHOR(`set_item_userptr',`Set_User_Data') + procedure Set_User_Data (Itm : in Item; + Data : in User_Access); + -- AKA + pragma Inline (Set_User_Data); + + -- ANCHOR(`item_userptr',`Get_User_Data') + procedure Get_User_Data (Itm : in Item; + Data : out User_Access); + -- AKA + + -- ANCHOR(`item_userptr',`Get_User_Data') + function Get_User_Data (Itm : in Item) return User_Access; + -- AKA + -- Same as function + pragma Inline (Get_User_Data); + +end Terminal_Interface.Curses.Menus.Item_User_Data; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 new file mode 100644 index 0000000..696149b --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 @@ -0,0 +1,70 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-menus-menu_user_data__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menus.Menu_User_Data -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.14 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +generic + type User is limited private; + type User_Access is access User; +package Terminal_Interface.Curses.Menus.Menu_User_Data is + pragma Preelaborate (Terminal_Interface.Curses.Menus.Menu_User_Data); + + -- MANPAGE(`menu_userptr.3x') + + -- ANCHOR(`set_menu_userptr',`Set_User_Data') + procedure Set_User_Data (Men : in Menu; + Data : in User_Access); + -- AKA + pragma Inline (Set_User_Data); + + -- ANCHOR(`menu_userptr',`Get_User_Data') + procedure Get_User_Data (Men : in Menu; + Data : out User_Access); + -- AKA + + -- ANCHOR(`menu_userptr',`Get_User_Data') + function Get_User_Data (Men : in Menu) return User_Access; + -- AKA + -- Same as function + pragma Inline (Get_User_Data); + +end Terminal_Interface.Curses.Menus.Menu_User_Data; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-menus.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-menus.ads.m4 new file mode 100644 index 0000000..17993e1 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-menus.ads.m4 @@ -0,0 +1,604 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-menus__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menu -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.27 $ +-- $Date: 2007/05/05 20:20:52 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +include(`Menu_Base_Defs') +with System; +with Ada.Characters.Latin_1; + +package Terminal_Interface.Curses.Menus is + pragma Preelaborate (Terminal_Interface.Curses.Menus); +include(`Menu_Linker_Options')dnl +include(`Linker_Options') + Space : Character renames Ada.Characters.Latin_1.Space; + + type Item is private; + type Menu is private; + + --------------------------- + -- Interface constants -- + --------------------------- + Null_Item : constant Item; + Null_Menu : constant Menu; + + subtype Menu_Request_Code is Key_Code + range (Key_Max + 1) .. (Key_Max + 17); + + -- The prefix M_ stands for "Menu Request" + M_Left_Item : constant Menu_Request_Code := Key_Max + 1; + M_Right_Item : constant Menu_Request_Code := Key_Max + 2; + M_Up_Item : constant Menu_Request_Code := Key_Max + 3; + M_Down_Item : constant Menu_Request_Code := Key_Max + 4; + M_ScrollUp_Line : constant Menu_Request_Code := Key_Max + 5; + M_ScrollDown_Line : constant Menu_Request_Code := Key_Max + 6; + M_ScrollDown_Page : constant Menu_Request_Code := Key_Max + 7; + M_ScrollUp_Page : constant Menu_Request_Code := Key_Max + 8; + M_First_Item : constant Menu_Request_Code := Key_Max + 9; + M_Last_Item : constant Menu_Request_Code := Key_Max + 10; + M_Next_Item : constant Menu_Request_Code := Key_Max + 11; + M_Previous_Item : constant Menu_Request_Code := Key_Max + 12; + M_Toggle_Item : constant Menu_Request_Code := Key_Max + 13; + M_Clear_Pattern : constant Menu_Request_Code := Key_Max + 14; + M_Back_Pattern : constant Menu_Request_Code := Key_Max + 15; + M_Next_Match : constant Menu_Request_Code := Key_Max + 16; + M_Previous_Match : constant Menu_Request_Code := Key_Max + 17; + + -- For those who like the old 'C' names for the request codes + REQ_LEFT_ITEM : Menu_Request_Code renames M_Left_Item; + REQ_RIGHT_ITEM : Menu_Request_Code renames M_Right_Item; + REQ_UP_ITEM : Menu_Request_Code renames M_Up_Item; + REQ_DOWN_ITEM : Menu_Request_Code renames M_Down_Item; + REQ_SCR_ULINE : Menu_Request_Code renames M_ScrollUp_Line; + REQ_SCR_DLINE : Menu_Request_Code renames M_ScrollDown_Line; + REQ_SCR_DPAGE : Menu_Request_Code renames M_ScrollDown_Page; + REQ_SCR_UPAGE : Menu_Request_Code renames M_ScrollUp_Page; + REQ_FIRST_ITEM : Menu_Request_Code renames M_First_Item; + REQ_LAST_ITEM : Menu_Request_Code renames M_Last_Item; + REQ_NEXT_ITEM : Menu_Request_Code renames M_Next_Item; + REQ_PREV_ITEM : Menu_Request_Code renames M_Previous_Item; + REQ_TOGGLE_ITEM : Menu_Request_Code renames M_Toggle_Item; + REQ_CLEAR_PATTERN : Menu_Request_Code renames M_Clear_Pattern; + REQ_BACK_PATTERN : Menu_Request_Code renames M_Back_Pattern; + REQ_NEXT_MATCH : Menu_Request_Code renames M_Next_Match; + REQ_PREV_MATCH : Menu_Request_Code renames M_Previous_Match; + + procedure Request_Name (Key : in Menu_Request_Code; + Name : out String); + + function Request_Name (Key : Menu_Request_Code) return String; + -- Same as function + + ------------------ + -- Exceptions -- + ------------------ + + Menu_Exception : exception; + -- + -- Menu options + -- + pragma Warnings (Off); +include(`Menu_Opt_Rep')dnl + + pragma Warnings (On); + + function Default_Menu_Options return Menu_Option_Set; + -- Initial default options for a menu. + pragma Inline (Default_Menu_Options); + -- + -- Item options + -- + pragma Warnings (Off); +include(`Item_Rep')dnl + + pragma Warnings (On); + + function Default_Item_Options return Item_Option_Set; + -- Initial default options for an item. + pragma Inline (Default_Item_Options); + + -- + -- Item Array + -- + type Item_Array is array (Positive range <>) of aliased Item; + pragma Convention (C, Item_Array); + + type Item_Array_Access is access Item_Array; + + procedure Free (IA : in out Item_Array_Access; + Free_Items : Boolean := False); + -- Release the memory for an allocated item array + -- If Free_Items is True, call Delete() for all the items in + -- the array. + + -- MANPAGE(`mitem_new.3x') + + -- ANCHOR(`new_item()',`Create') + function Create (Name : String; + Description : String := "") return Item; + -- AKA + -- Not inlined. + + -- ANCHOR(`new_item()',`New_Item') + function New_Item (Name : String; + Description : String := "") return Item + renames Create; + -- AKA + + -- ANCHOR(`free_item()',`Delete') + procedure Delete (Itm : in out Item); + -- AKA + -- Resets Itm to Null_Item + + -- MANPAGE(`mitem_value.3x') + + -- ANCHOR(`set_item_value()',`Set_Value') + procedure Set_Value (Itm : in Item; + Value : in Boolean := True); + -- AKA + pragma Inline (Set_Value); + + -- ANCHOR(`item_value()',`Value') + function Value (Itm : Item) return Boolean; + -- AKA + pragma Inline (Value); + + -- MANPAGE(`mitem_visible.3x') + + -- ANCHOR(`item_visible()',`Visible') + function Visible (Itm : Item) return Boolean; + -- AKA + pragma Inline (Visible); + + -- MANPAGE(`mitem_opts.3x') + + -- ANCHOR(`set_item_opts()',`Set_Options') + procedure Set_Options (Itm : in Item; + Options : in Item_Option_Set); + -- AKA + -- An overloaded Set_Options is defined later. Pragma Inline appears there + + -- ANCHOR(`item_opts_on()',`Switch_Options') + procedure Switch_Options (Itm : in Item; + Options : in Item_Option_Set; + On : Boolean := True); + -- AKA + -- ALIAS(`item_opts_off()') + -- An overloaded Switch_Options is defined later. + -- Pragma Inline appears there + + -- ANCHOR(`item_opts()',`Get_Options') + procedure Get_Options (Itm : in Item; + Options : out Item_Option_Set); + -- AKA + + -- ANCHOR(`item_opts()',`Get_Options') + function Get_Options (Itm : Item := Null_Item) return Item_Option_Set; + -- AKA + -- An overloaded Get_Options is defined later. Pragma Inline appears there + + -- MANPAGE(`mitem_name.3x') + + -- ANCHOR(`item_name()',`Name') + procedure Name (Itm : in Item; + Name : out String); + -- AKA + function Name (Itm : Item) return String; + -- AKA + -- Implemented as function + pragma Inline (Name); + + -- ANCHOR(`item_description();',`Description') + procedure Description (Itm : in Item; + Description : out String); + -- AKA + + function Description (Itm : Item) return String; + -- AKA + -- Implemented as function + pragma Inline (Description); + + -- MANPAGE(`mitem_current.3x') + + -- ANCHOR(`set_current_item()',`Set_Current') + procedure Set_Current (Men : in Menu; + Itm : in Item); + -- AKA + pragma Inline (Set_Current); + + -- ANCHOR(`current_item()',`Current') + function Current (Men : Menu) return Item; + -- AKA + pragma Inline (Current); + + -- ANCHOR(`set_top_row()',`Set_Top_Row') + procedure Set_Top_Row (Men : in Menu; + Line : in Line_Position); + -- AKA + pragma Inline (Set_Top_Row); + + -- ANCHOR(`top_row()',`Top_Row') + function Top_Row (Men : Menu) return Line_Position; + -- AKA + pragma Inline (Top_Row); + + -- ANCHOR(`item_index()',`Get_Index') + function Get_Index (Itm : Item) return Positive; + -- AKA + -- Please note that in this binding we start the numbering of items + -- with 1. So this is number is one more than you get from the low + -- level call. + pragma Inline (Get_Index); + + -- MANPAGE(`menu_post.3x') + + -- ANCHOR(`post_menu()',`Post') + procedure Post (Men : in Menu; + Post : in Boolean := True); + -- AKA + -- ALIAS(`unpost_menu()') + pragma Inline (Post); + + -- MANPAGE(`menu_opts.3x') + + -- ANCHOR(`set_menu_opts()',`Set_Options') + procedure Set_Options (Men : in Menu; + Options : in Menu_Option_Set); + -- AKA + pragma Inline (Set_Options); + + -- ANCHOR(`menu_opts_on()',`Switch_Options') + procedure Switch_Options (Men : in Menu; + Options : in Menu_Option_Set; + On : Boolean := True); + -- AKA + -- ALIAS(`menu_opts_off()') + pragma Inline (Switch_Options); + + -- ANCHOR(`menu_opts()',`Get_Options') + procedure Get_Options (Men : in Menu; + Options : out Menu_Option_Set); + -- AKA + + -- ANCHOR(`menu_opts()',`Get_Options') + function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set; + -- AKA + pragma Inline (Get_Options); + + -- MANPAGE(`menu_win.3x') + + -- ANCHOR(`set_menu_win()',`Set_Window') + procedure Set_Window (Men : in Menu; + Win : in Window); + -- AKA + pragma Inline (Set_Window); + + -- ANCHOR(`menu_win()',`Get_Window') + function Get_Window (Men : Menu) return Window; + -- AKA + pragma Inline (Get_Window); + + -- ANCHOR(`set_menu_sub()',`Set_Sub_Window') + procedure Set_Sub_Window (Men : in Menu; + Win : in Window); + -- AKA + pragma Inline (Set_Sub_Window); + + -- ANCHOR(`menu_sub()',`Get_Sub_Window') + function Get_Sub_Window (Men : Menu) return Window; + -- AKA + pragma Inline (Get_Sub_Window); + + -- ANCHOR(`scale_menu()',`Scale') + procedure Scale (Men : in Menu; + Lines : out Line_Count; + Columns : out Column_Count); + -- AKA + pragma Inline (Scale); + + -- MANPAGE(`menu_cursor.3x') + + -- ANCHOR(`pos_menu_cursor()',`Position_Cursor') + procedure Position_Cursor (Men : Menu); + -- AKA + pragma Inline (Position_Cursor); + + -- MANPAGE(`menu_mark.3x') + + -- ANCHOR(`set_menu_mark()',`Set_Mark') + procedure Set_Mark (Men : in Menu; + Mark : in String); + -- AKA + pragma Inline (Set_Mark); + + -- ANCHOR(`menu_mark()',`Mark') + procedure Mark (Men : in Menu; + Mark : out String); + -- AKA + + function Mark (Men : Menu) return String; + -- AKA + -- Implemented as function + pragma Inline (Mark); + + -- MANPAGE(`menu_attributes.3x') + + -- ANCHOR(`set_menu_fore()',`Set_Foreground') + procedure Set_Foreground + (Men : in Menu; + Fore : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Foreground); + + -- ANCHOR(`menu_fore()',`Foreground') + procedure Foreground (Men : in Menu; + Fore : out Character_Attribute_Set); + -- AKA + + -- ANCHOR(`menu_fore()',`Foreground') + procedure Foreground (Men : in Menu; + Fore : out Character_Attribute_Set; + Color : out Color_Pair); + -- AKA + pragma Inline (Foreground); + + -- ANCHOR(`set_menu_back()',`Set_Background') + procedure Set_Background + (Men : in Menu; + Back : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Background); + + -- ANCHOR(`menu_back()',`Background') + procedure Background (Men : in Menu; + Back : out Character_Attribute_Set); + -- AKA + -- ANCHOR(`menu_back()',`Background') + + procedure Background (Men : in Menu; + Back : out Character_Attribute_Set; + Color : out Color_Pair); + -- AKA + pragma Inline (Background); + + -- ANCHOR(`set_menu_grey()',`Set_Grey') + procedure Set_Grey + (Men : in Menu; + Grey : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Grey); + + -- ANCHOR(`menu_grey()',`Grey') + procedure Grey (Men : in Menu; + Grey : out Character_Attribute_Set); + -- AKA + + -- ANCHOR(`menu_grey()',`Grey') + procedure Grey + (Men : in Menu; + Grey : out Character_Attribute_Set; + Color : out Color_Pair); + -- AKA + pragma Inline (Grey); + + -- ANCHOR(`set_menu_pad()',`Set_Pad_Character') + procedure Set_Pad_Character (Men : in Menu; + Pad : in Character := Space); + -- AKA + pragma Inline (Set_Pad_Character); + + -- ANCHOR(`menu_pad()',`Pad_Character') + procedure Pad_Character (Men : in Menu; + Pad : out Character); + -- AKA + pragma Inline (Pad_Character); + + -- MANPAGE(`menu_spacing.3x') + + -- ANCHOR(`set_menu_spacing()',`Set_Spacing') + procedure Set_Spacing (Men : in Menu; + Descr : in Column_Position := 0; + Row : in Line_Position := 0; + Col : in Column_Position := 0); + -- AKA + pragma Inline (Set_Spacing); + + -- ANCHOR(`menu_spacing()',`Spacing') + procedure Spacing (Men : in Menu; + Descr : out Column_Position; + Row : out Line_Position; + Col : out Column_Position); + -- AKA + pragma Inline (Spacing); + + -- MANPAGE(`menu_pattern.3x') + + -- ANCHOR(`set_menu_pattern()',`Set_Pattern') + function Set_Pattern (Men : Menu; + Text : String) return Boolean; + -- AKA + -- Return TRUE if the pattern matches, FALSE otherwise + pragma Inline (Set_Pattern); + + -- ANCHOR(`menu_pattern()',`Pattern') + procedure Pattern (Men : in Menu; + Text : out String); + -- AKA + pragma Inline (Pattern); + + -- MANPAGE(`menu_format.3x') + + -- ANCHOR(`set_menu_format()',`Set_Format') + procedure Set_Format (Men : in Menu; + Lines : in Line_Count; + Columns : in Column_Count); + -- Not implemented: 0 argument for Lines or Columns; + -- instead use Format to get the current sizes + -- The default format is 16 rows, 1 column. Calling + -- set_menu_format with a null menu pointer will change this + -- default. A zero row or column argument to set_menu_format + -- is interpreted as a request not to change the current + -- value. + -- AKA + pragma Inline (Set_Format); + + -- ANCHOR(`menu_format()',`Format') + procedure Format (Men : in Menu; + Lines : out Line_Count; + Columns : out Column_Count); + -- AKA + pragma Inline (Format); + + -- MANPAGE(`menu_hook.3x') + + type Menu_Hook_Function is access procedure (Men : in Menu); + pragma Convention (C, Menu_Hook_Function); + + -- ANCHOR(`set_item_init()',`Set_Item_Init_Hook') + procedure Set_Item_Init_Hook (Men : in Menu; + Proc : in Menu_Hook_Function); + -- AKA + pragma Inline (Set_Item_Init_Hook); + + -- ANCHOR(`set_item_term()',`Set_Item_Term_Hook') + procedure Set_Item_Term_Hook (Men : in Menu; + Proc : in Menu_Hook_Function); + -- AKA + pragma Inline (Set_Item_Term_Hook); + + -- ANCHOR(`set_menu_init()',`Set_Menu_Init_Hook') + procedure Set_Menu_Init_Hook (Men : in Menu; + Proc : in Menu_Hook_Function); + -- AKA + pragma Inline (Set_Menu_Init_Hook); + + -- ANCHOR(`set_menu_term()',`Set_Menu_Term_Hook') + procedure Set_Menu_Term_Hook (Men : in Menu; + Proc : in Menu_Hook_Function); + -- AKA + pragma Inline (Set_Menu_Term_Hook); + + -- ANCHOR(`item_init()',`Get_Item_Init_Hook') + function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function; + -- AKA + pragma Inline (Get_Item_Init_Hook); + + -- ANCHOR(`item_term()',`Get_Item_Term_Hook') + function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function; + -- AKA + pragma Inline (Get_Item_Term_Hook); + + -- ANCHOR(`menu_init()',`Get_Menu_Init_Hook') + function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function; + -- AKA + pragma Inline (Get_Menu_Init_Hook); + + -- ANCHOR(`menu_term()',`Get_Menu_Term_Hook') + function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function; + -- AKA + pragma Inline (Get_Menu_Term_Hook); + + -- MANPAGE(`menu_items.3x') + + -- ANCHOR(`set_menu_items()',`Redefine') + procedure Redefine (Men : in Menu; + Items : in Item_Array_Access); + -- AKA + pragma Inline (Redefine); + + procedure Set_Items (Men : in Menu; + Items : in Item_Array_Access) renames Redefine; + -- pragma Inline (Set_Items); + + -- ANCHOR(`menu_items()',`Items') + function Items (Men : Menu; + Index : Positive) return Item; + -- AKA + pragma Inline (Items); + + -- ANCHOR(`item_count()',`Item_Count') + function Item_Count (Men : Menu) return Natural; + -- AKA + pragma Inline (Item_Count); + + -- MANPAGE(`menu_new.3x') + + -- ANCHOR(`new_menu()',`Create') + function Create (Items : Item_Array_Access) return Menu; + -- AKA + -- Not inlined + + function New_Menu (Items : Item_Array_Access) return Menu renames Create; + + -- ANCHOR(`free_menu()',`Delete') + procedure Delete (Men : in out Menu); + -- AKA + -- Reset Men to Null_Menu + -- Not inlined + + -- MANPAGE(`menu_driver.3x') + + type Driver_Result is (Menu_Ok, + Request_Denied, + Unknown_Request, + No_Match); + + -- ANCHOR(`menu_driver()',`Driver') + function Driver (Men : Menu; + Key : Key_Code) return Driver_Result; + -- AKA + -- Driver is not inlined + + -- ANCHOR(`menu_requestname.3x') + -- Not Implemented: menu_request_name, menu_request_by_name +------------------------------------------------------------------------------- +private + type Item is new System.Storage_Elements.Integer_Address; + type Menu is new System.Storage_Elements.Integer_Address; + + Null_Item : constant Item := 0; + Null_Menu : constant Menu := 0; + +end Terminal_Interface.Curses.Menus; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-mouse.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-mouse.ads.m4 new file mode 100644 index 0000000..b59ebbf --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-mouse.ads.m4 @@ -0,0 +1,182 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-mouse__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Mouse -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.27 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +include(`Mouse_Base_Defs') +with System; + +package Terminal_Interface.Curses.Mouse is + pragma Preelaborate (Terminal_Interface.Curses.Mouse); + + -- MANPAGE(`curs_mouse.3x') + -- Please note, that in ncurses-1.9.9e documentation mouse support + -- is still marked as experimental. So also this binding will change + -- if the ncurses methods change. + -- + -- mouse_trafo, wmouse_trafo are implemented as Transform_Coordinates + -- in the parent package. + -- + -- Not implemented: + -- REPORT_MOUSE_POSITION (i.e. as a parameter to Register_Reportable_Event + -- or Start_Mouse) + type Event_Mask is private; + No_Events : constant Event_Mask; + All_Events : constant Event_Mask; + + type Mouse_Button is (Left, -- aka: Button 1 + Middle, -- aka: Button 2 + Right, -- aka: Button 3 + Button4, -- aka: Button 4 + Control, -- Control Key + Shift, -- Shift Key + Alt); -- ALT Key + + subtype Real_Buttons is Mouse_Button range Left .. Button4; + subtype Modifier_Keys is Mouse_Button range Control .. Alt; + + type Button_State is (Released, + Pressed, + Clicked, + Double_Clicked, + Triple_Clicked); + + type Button_States is array (Button_State) of Boolean; + pragma Pack (Button_States); + + All_Clicks : constant Button_States := (Clicked .. Triple_Clicked => True, + others => False); + All_States : constant Button_States := (others => True); + + type Mouse_Event is private; + + -- MANPAGE(`curs_mouse.3x') + + function Has_Mouse return Boolean; + -- Return true if a mouse device is supported, false otherwise. + + procedure Register_Reportable_Event + (Button : in Mouse_Button; + State : in Button_State; + Mask : in out Event_Mask); + -- Stores the event described by the button and the state in the mask. + -- Before you call this the first time, you should init the mask + -- with the Empty_Mask constant + pragma Inline (Register_Reportable_Event); + + procedure Register_Reportable_Events + (Button : in Mouse_Button; + State : in Button_States; + Mask : in out Event_Mask); + -- Register all events described by the Button and the State bitmap. + -- Before you call this the first time, you should init the mask + -- with the Empty_Mask constant + + -- ANCHOR(`mousemask()',`Start_Mouse') + -- There is one difference to mousmask(): we return the value of the + -- old mask, that means the event mask value before this call. + -- Not Implemented: The library version + -- returns a Mouse_Mask that tells which events are reported. + function Start_Mouse (Mask : Event_Mask := All_Events) + return Event_Mask; + -- AKA + pragma Inline (Start_Mouse); + + procedure End_Mouse (Mask : in Event_Mask := No_Events); + -- Terminates the mouse, restores the specified event mask + pragma Inline (End_Mouse); + + -- ANCHOR(`getmouse()',`Get_Mouse') + function Get_Mouse return Mouse_Event; + -- AKA + pragma Inline (Get_Mouse); + + procedure Get_Event (Event : in Mouse_Event; + Y : out Line_Position; + X : out Column_Position; + Button : out Mouse_Button; + State : out Button_State); + -- !!! Warning: X and Y are screen coordinates. Due to ripped of lines they + -- may not be identical to window coordinates. + -- Not Implemented: Get_Event only reports one event, the C library + -- version supports multiple events, e.g. {click-1, click-3} + pragma Inline (Get_Event); + + -- ANCHOR(`ungetmouse()',`Unget_Mouse') + procedure Unget_Mouse (Event : in Mouse_Event); + -- AKA + pragma Inline (Unget_Mouse); + + -- ANCHOR(`wenclose()',`Enclosed_In_Window') + function Enclosed_In_Window (Win : Window := Standard_Window; + Event : Mouse_Event) return Boolean; + -- AKA + -- But : use event instead of screen coordinates. + pragma Inline (Enclosed_In_Window); + + -- ANCHOR(`mouseinterval()',`Mouse_Interval') + function Mouse_Interval (Msec : Natural := 200) return Natural; + -- AKA + pragma Inline (Mouse_Interval); + +private + type Event_Mask is new Interfaces.C.unsigned_long; + + type Mouse_Event is + record + Id : Integer range Integer (Interfaces.C.short'First) .. + Integer (Interfaces.C.short'Last); + X, Y, Z : Integer range Integer (Interfaces.C.int'First) .. + Integer (Interfaces.C.int'Last); + Bstate : Event_Mask; + end record; + pragma Convention (C, Mouse_Event); + +include(`Mouse_Event_Rep') + Generation_Bit_Order : constant System.Bit_Order := System.M4_BIT_ORDER; + -- This constant may be different on your system. + +include(`Mouse_Events') + No_Events : constant Event_Mask := 0; + All_Events : constant Event_Mask := ALL_MOUSE_EVENTS; + +end Terminal_Interface.Curses.Mouse; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 new file mode 100644 index 0000000..e6def9b --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 @@ -0,0 +1,70 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-panels-user_data__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Panels.User_Data -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.14 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +generic + type User is limited private; + type User_Access is access all User; +package Terminal_Interface.Curses.Panels.User_Data is + pragma Preelaborate (Terminal_Interface.Curses.Panels.User_Data); + + -- MANPAGE(`panel.3x') + + -- ANCHOR(`set_panel_userptr',`Set_User_Data') + procedure Set_User_Data (Pan : in Panel; + Data : in User_Access); + -- AKA + pragma Inline (Set_User_Data); + + -- ANCHOR(`panel_userptr',`Get_User_Data') + procedure Get_User_Data (Pan : in Panel; + Data : out User_Access); + -- AKA + + -- ANCHOR(`panel_userptr',`Get_User_Data') + function Get_User_Data (Pan : in Panel) return User_Access; + -- AKA + -- Same as function + pragma Inline (Get_User_Data); + +end Terminal_Interface.Curses.Panels.User_Data; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-panels.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-panels.ads.m4 new file mode 100644 index 0000000..39b7260 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-panels.ads.m4 @@ -0,0 +1,147 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-panels__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Panels -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.19 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with System; + +package Terminal_Interface.Curses.Panels is + pragma Preelaborate (Terminal_Interface.Curses.Panels); +include(`Panel_Linker_Options')dnl +include(`Linker_Options') + type Panel is private; + + --------------------------- + -- Interface constants -- + --------------------------- + Null_Panel : constant Panel; + + ------------------- + -- Exceptions -- + ------------------- + + Panel_Exception : exception; + + -- MANPAGE(`panel.3x') + + -- ANCHOR(`new_panel()',`Create') + function Create (Win : Window) return Panel; + -- AKA + pragma Inline (Create); + + -- ANCHOR(`new_panel()',`New_Panel') + function New_Panel (Win : Window) return Panel renames Create; + -- AKA + -- pragma Inline (New_Panel); + + -- ANCHOR(`bottom_panel()',`Bottom') + procedure Bottom (Pan : in Panel); + -- AKA + pragma Inline (Bottom); + + -- ANCHOR(`top_panel()',`Top') + procedure Top (Pan : in Panel); + -- AKA + pragma Inline (Top); + + -- ANCHOR(`show_panel()',`Show') + procedure Show (Pan : in Panel); + -- AKA + pragma Inline (Show); + + -- ANCHOR(`update_panels()',`Update_Panels') + procedure Update_Panels; + -- AKA + pragma Import (C, Update_Panels, "update_panels"); + + -- ANCHOR(`hide_panel()',`Hide') + procedure Hide (Pan : in Panel); + -- AKA + pragma Inline (Hide); + + -- ANCHOR(`panel_window()',`Get_Window') + function Get_Window (Pan : Panel) return Window; + -- AKA + pragma Inline (Get_Window); + + -- ANCHOR(`panel_window()',`Panel_Window') + function Panel_Window (Pan : Panel) return Window renames Get_Window; + -- pragma Inline (Panel_Window); + + -- ANCHOR(`replace_panel()',`Replace') + procedure Replace (Pan : in Panel; + Win : in Window); + -- AKA + pragma Inline (Replace); + + -- ANCHOR(`move_panel()',`Move') + procedure Move (Pan : in Panel; + Line : in Line_Position; + Column : in Column_Position); + -- AKA + pragma Inline (Move); + + -- ANCHOR(`panel_hidden()',`Is_Hidden') + function Is_Hidden (Pan : Panel) return Boolean; + -- AKA + pragma Inline (Is_Hidden); + + -- ANCHOR(`panel_above()',`Above') + function Above (Pan : Panel) return Panel; + -- AKA + pragma Import (C, Above, "panel_above"); + + -- ANCHOR(`panel_below()',`Below') + function Below (Pan : Panel) return Panel; + -- AKA + pragma Import (C, Below, "panel_below"); + + -- ANCHOR(`del_panel()',`Delete') + procedure Delete (Pan : in out Panel); + -- AKA + pragma Inline (Delete); + +private + type Panel is new System.Storage_Elements.Integer_Address; + Null_Panel : constant Panel := 0; + +end Terminal_Interface.Curses.Panels; diff --git a/ncurses/Ada95/gen/terminal_interface-curses-trace.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses-trace.ads.m4 new file mode 100644 index 0000000..546004f --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses-trace.ads.m4 @@ -0,0 +1,78 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-trace__ads.htm')dnl +include(M4MACRO)------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Trace -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control: +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +package Terminal_Interface.Curses.Trace is + pragma Preelaborate (Terminal_Interface.Curses.Trace); + + pragma Warnings (Off); +include(`Trace_Defs') + + pragma Warnings (On); + + Trace_Disable : constant Trace_Attribute_Set := (others => False); + + Trace_Ordinary : constant Trace_Attribute_Set := + (Times => True, + Tputs => True, + Update => True, + Cursor_Move => True, + Character_Output => True, + others => False); + Trace_Maximum : constant Trace_Attribute_Set := (others => True); + +------------------------------------------------------------------------------ + + -- MANPAGE(`curs_trace.3x') + + -- ANCHOR(`trace()',`Trace_on') + procedure Trace_On (x : Trace_Attribute_Set); + -- The debugging library has trace. + + -- ANCHOR(`_tracef()',`Trace_Put') + procedure Trace_Put (str : String); + -- AKA + + Current_Trace_Setting : Trace_Attribute_Set; + pragma Import (C, Current_Trace_Setting, "_nc_tracing"); + +end Terminal_Interface.Curses.Trace; diff --git a/ncurses/Ada95/gen/terminal_interface-curses.adb.m4 b/ncurses/Ada95/gen/terminal_interface-curses.adb.m4 new file mode 100644 index 0000000..75ddb96 --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses.adb.m4 @@ -0,0 +1,2502 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses__adb.htm')dnl +include(M4MACRO)------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.5 $ +-- $Date: 2008/07/26 18:46:32 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with System; + +with Terminal_Interface.Curses.Aux; +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Ada.Characters.Handling; use Ada.Characters.Handling; +with Ada.Strings.Fixed; + +package body Terminal_Interface.Curses is + + use Aux; + use type System.Bit_Order; + + package ASF renames Ada.Strings.Fixed; + + type chtype_array is array (size_t range <>) + of aliased Attributed_Character; + pragma Convention (C, chtype_array); + +------------------------------------------------------------------------------ + function Key_Name (Key : in Real_Key_Code) return String + is + function Keyname (K : C_Int) return chars_ptr; + pragma Import (C, Keyname, "keyname"); + + Ch : Character; + begin + if Key <= Character'Pos (Character'Last) then + Ch := Character'Val (Key); + if Is_Control (Ch) then + return Un_Control (Attributed_Character'(Ch => Ch, + Color => Color_Pair'First, + Attr => Normal_Video)); + elsif Is_Graphic (Ch) then + declare + S : String (1 .. 1); + begin + S (1) := Ch; + return S; + end; + else + return ""; + end if; + else + return Fill_String (Keyname (C_Int (Key))); + end if; + end Key_Name; + + procedure Key_Name (Key : in Real_Key_Code; + Name : out String) + is + begin + ASF.Move (Key_Name (Key), Name); + end Key_Name; + +------------------------------------------------------------------------------ + procedure Init_Screen + is + function Initscr return Window; + pragma Import (C, Initscr, "initscr"); + + W : Window; + begin + W := Initscr; + if W = Null_Window then + raise Curses_Exception; + end if; + end Init_Screen; + + procedure End_Windows + is + function Endwin return C_Int; + pragma Import (C, Endwin, "endwin"); + begin + if Endwin = Curses_Err then + raise Curses_Exception; + end if; + end End_Windows; + + function Is_End_Window return Boolean + is + function Isendwin return Curses_Bool; + pragma Import (C, Isendwin, "isendwin"); + begin + if Isendwin = Curses_Bool_False then + return False; + else + return True; + end if; + end Is_End_Window; +------------------------------------------------------------------------------ + procedure Move_Cursor (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position) + is + function Wmove (Win : Window; + Line : C_Int; + Column : C_Int + ) return C_Int; + pragma Import (C, Wmove, "wmove"); + begin + if Wmove (Win, C_Int (Line), C_Int (Column)) = Curses_Err then + raise Curses_Exception; + end if; + end Move_Cursor; +------------------------------------------------------------------------------ + procedure Add (Win : in Window := Standard_Window; + Ch : in Attributed_Character) + is + function Waddch (W : Window; + Ch : C_Chtype) return C_Int; + pragma Import (C, Waddch, "waddch"); + begin + if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Add; + + procedure Add (Win : in Window := Standard_Window; + Ch : in Character) + is + begin + Add (Win, + Attributed_Character'(Ch => Ch, + Color => Color_Pair'First, + Attr => Normal_Video)); + end Add; + + procedure Add + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Ch : in Attributed_Character) + is + function mvwaddch (W : Window; + Y : C_Int; + X : C_Int; + Ch : C_Chtype) return C_Int; + pragma Import (C, mvwaddch, "mvwaddch"); + begin + if mvwaddch (Win, C_Int (Line), + C_Int (Column), + AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Add; + + procedure Add + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Ch : in Character) + is + begin + Add (Win, + Line, + Column, + Attributed_Character'(Ch => Ch, + Color => Color_Pair'First, + Attr => Normal_Video)); + end Add; + + procedure Add_With_Immediate_Echo + (Win : in Window := Standard_Window; + Ch : in Attributed_Character) + is + function Wechochar (W : Window; + Ch : C_Chtype) return C_Int; + pragma Import (C, Wechochar, "wechochar"); + begin + if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Add_With_Immediate_Echo; + + procedure Add_With_Immediate_Echo + (Win : in Window := Standard_Window; + Ch : in Character) + is + begin + Add_With_Immediate_Echo + (Win, + Attributed_Character'(Ch => Ch, + Color => Color_Pair'First, + Attr => Normal_Video)); + end Add_With_Immediate_Echo; +------------------------------------------------------------------------------ + function Create (Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window + is + function Newwin (Number_Of_Lines : C_Int; + Number_Of_Columns : C_Int; + First_Line_Position : C_Int; + First_Column_Position : C_Int) return Window; + pragma Import (C, Newwin, "newwin"); + + W : Window; + begin + W := Newwin (C_Int (Number_Of_Lines), + C_Int (Number_Of_Columns), + C_Int (First_Line_Position), + C_Int (First_Column_Position)); + if W = Null_Window then + raise Curses_Exception; + end if; + return W; + end Create; + + procedure Delete (Win : in out Window) + is + function Wdelwin (W : Window) return C_Int; + pragma Import (C, Wdelwin, "delwin"); + begin + if Wdelwin (Win) = Curses_Err then + raise Curses_Exception; + end if; + Win := Null_Window; + end Delete; + + function Sub_Window + (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window + is + function Subwin + (Win : Window; + Number_Of_Lines : C_Int; + Number_Of_Columns : C_Int; + First_Line_Position : C_Int; + First_Column_Position : C_Int) return Window; + pragma Import (C, Subwin, "subwin"); + + W : Window; + begin + W := Subwin (Win, + C_Int (Number_Of_Lines), + C_Int (Number_Of_Columns), + C_Int (First_Line_Position), + C_Int (First_Column_Position)); + if W = Null_Window then + raise Curses_Exception; + end if; + return W; + end Sub_Window; + + function Derived_Window + (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window + is + function Derwin + (Win : Window; + Number_Of_Lines : C_Int; + Number_Of_Columns : C_Int; + First_Line_Position : C_Int; + First_Column_Position : C_Int) return Window; + pragma Import (C, Derwin, "derwin"); + + W : Window; + begin + W := Derwin (Win, + C_Int (Number_Of_Lines), + C_Int (Number_Of_Columns), + C_Int (First_Line_Position), + C_Int (First_Column_Position)); + if W = Null_Window then + raise Curses_Exception; + end if; + return W; + end Derived_Window; + + function Duplicate (Win : Window) return Window + is + function Dupwin (Win : Window) return Window; + pragma Import (C, Dupwin, "dupwin"); + + W : constant Window := Dupwin (Win); + begin + if W = Null_Window then + raise Curses_Exception; + end if; + return W; + end Duplicate; + + procedure Move_Window (Win : in Window; + Line : in Line_Position; + Column : in Column_Position) + is + function Mvwin (Win : Window; + Line : C_Int; + Column : C_Int) return C_Int; + pragma Import (C, Mvwin, "mvwin"); + begin + if Mvwin (Win, C_Int (Line), C_Int (Column)) = Curses_Err then + raise Curses_Exception; + end if; + end Move_Window; + + procedure Move_Derived_Window (Win : in Window; + Line : in Line_Position; + Column : in Column_Position) + is + function Mvderwin (Win : Window; + Line : C_Int; + Column : C_Int) return C_Int; + pragma Import (C, Mvderwin, "mvderwin"); + begin + if Mvderwin (Win, C_Int (Line), C_Int (Column)) = Curses_Err then + raise Curses_Exception; + end if; + end Move_Derived_Window; + + procedure Set_Synch_Mode (Win : in Window := Standard_Window; + Mode : in Boolean := False) + is + function Syncok (Win : Window; + Mode : Curses_Bool) return C_Int; + pragma Import (C, Syncok, "syncok"); + begin + if Syncok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Synch_Mode; +------------------------------------------------------------------------------ + procedure Add (Win : in Window := Standard_Window; + Str : in String; + Len : in Integer := -1) + is + function Waddnstr (Win : Window; + Str : char_array; + Len : C_Int := -1) return C_Int; + pragma Import (C, Waddnstr, "waddnstr"); + + Txt : char_array (0 .. Str'Length); + Length : size_t; + begin + To_C (Str, Txt, Length); + if Waddnstr (Win, Txt, C_Int (Len)) = Curses_Err then + raise Curses_Exception; + end if; + end Add; + + procedure Add + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : in String; + Len : in Integer := -1) + is + begin + Move_Cursor (Win, Line, Column); + Add (Win, Str, Len); + end Add; +------------------------------------------------------------------------------ + procedure Add + (Win : in Window := Standard_Window; + Str : in Attributed_String; + Len : in Integer := -1) + is + function Waddchnstr (Win : Window; + Str : chtype_array; + Len : C_Int := -1) return C_Int; + pragma Import (C, Waddchnstr, "waddchnstr"); + + Txt : chtype_array (0 .. Str'Length); + begin + for Length in 1 .. size_t (Str'Length) loop + Txt (Length - 1) := Str (Natural (Length)); + end loop; + Txt (Str'Length) := Default_Character; + if Waddchnstr (Win, + Txt, + C_Int (Len)) = Curses_Err then + raise Curses_Exception; + end if; + end Add; + + procedure Add + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : in Attributed_String; + Len : in Integer := -1) + is + begin + Move_Cursor (Win, Line, Column); + Add (Win, Str, Len); + end Add; +------------------------------------------------------------------------------ + procedure Border + (Win : in Window := Standard_Window; + Left_Side_Symbol : in Attributed_Character := Default_Character; + Right_Side_Symbol : in Attributed_Character := Default_Character; + Top_Side_Symbol : in Attributed_Character := Default_Character; + Bottom_Side_Symbol : in Attributed_Character := Default_Character; + Upper_Left_Corner_Symbol : in Attributed_Character := Default_Character; + Upper_Right_Corner_Symbol : in Attributed_Character := Default_Character; + Lower_Left_Corner_Symbol : in Attributed_Character := Default_Character; + Lower_Right_Corner_Symbol : in Attributed_Character := Default_Character) + is + function Wborder (W : Window; + LS : C_Chtype; + RS : C_Chtype; + TS : C_Chtype; + BS : C_Chtype; + ULC : C_Chtype; + URC : C_Chtype; + LLC : C_Chtype; + LRC : C_Chtype) return C_Int; + pragma Import (C, Wborder, "wborder"); + begin + if Wborder (Win, + AttrChar_To_Chtype (Left_Side_Symbol), + AttrChar_To_Chtype (Right_Side_Symbol), + AttrChar_To_Chtype (Top_Side_Symbol), + AttrChar_To_Chtype (Bottom_Side_Symbol), + AttrChar_To_Chtype (Upper_Left_Corner_Symbol), + AttrChar_To_Chtype (Upper_Right_Corner_Symbol), + AttrChar_To_Chtype (Lower_Left_Corner_Symbol), + AttrChar_To_Chtype (Lower_Right_Corner_Symbol) + ) = Curses_Err + then + raise Curses_Exception; + end if; + end Border; + + procedure Box + (Win : in Window := Standard_Window; + Vertical_Symbol : in Attributed_Character := Default_Character; + Horizontal_Symbol : in Attributed_Character := Default_Character) + is + begin + Border (Win, + Vertical_Symbol, Vertical_Symbol, + Horizontal_Symbol, Horizontal_Symbol); + end Box; + + procedure Horizontal_Line + (Win : in Window := Standard_Window; + Line_Size : in Natural; + Line_Symbol : in Attributed_Character := Default_Character) + is + function Whline (W : Window; + Ch : C_Chtype; + Len : C_Int) return C_Int; + pragma Import (C, Whline, "whline"); + begin + if Whline (Win, + AttrChar_To_Chtype (Line_Symbol), + C_Int (Line_Size)) = Curses_Err then + raise Curses_Exception; + end if; + end Horizontal_Line; + + procedure Vertical_Line + (Win : in Window := Standard_Window; + Line_Size : in Natural; + Line_Symbol : in Attributed_Character := Default_Character) + is + function Wvline (W : Window; + Ch : C_Chtype; + Len : C_Int) return C_Int; + pragma Import (C, Wvline, "wvline"); + begin + if Wvline (Win, + AttrChar_To_Chtype (Line_Symbol), + C_Int (Line_Size)) = Curses_Err then + raise Curses_Exception; + end if; + end Vertical_Line; + +------------------------------------------------------------------------------ + function Get_Keystroke (Win : Window := Standard_Window) + return Real_Key_Code + is + function Wgetch (W : Window) return C_Int; + pragma Import (C, Wgetch, "wgetch"); + + C : constant C_Int := Wgetch (Win); + begin + if C = Curses_Err then + return Key_None; + else + return Real_Key_Code (C); + end if; + end Get_Keystroke; + + procedure Undo_Keystroke (Key : in Real_Key_Code) + is + function Ungetch (Ch : C_Int) return C_Int; + pragma Import (C, Ungetch, "ungetch"); + begin + if Ungetch (C_Int (Key)) = Curses_Err then + raise Curses_Exception; + end if; + end Undo_Keystroke; + + function Has_Key (Key : Special_Key_Code) return Boolean + is + function Haskey (Key : C_Int) return C_Int; + pragma Import (C, Haskey, "has_key"); + begin + if Haskey (C_Int (Key)) = Curses_False then + return False; + else + return True; + end if; + end Has_Key; + + function Is_Function_Key (Key : Special_Key_Code) return Boolean + is + L : constant Special_Key_Code := Special_Key_Code (Natural (Key_F0) + + Natural (Function_Key_Number'Last)); + begin + if (Key >= Key_F0) and then (Key <= L) then + return True; + else + return False; + end if; + end Is_Function_Key; + + function Function_Key (Key : Real_Key_Code) + return Function_Key_Number + is + begin + if Is_Function_Key (Key) then + return Function_Key_Number (Key - Key_F0); + else + raise Constraint_Error; + end if; + end Function_Key; + + function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code + is + begin + return Real_Key_Code (Natural (Key_F0) + Natural (Key)); + end Function_Key_Code; +------------------------------------------------------------------------------ + procedure Standout (Win : Window := Standard_Window; + On : Boolean := True) + is + function wstandout (Win : Window) return C_Int; + pragma Import (C, wstandout, "wstandout"); + function wstandend (Win : Window) return C_Int; + pragma Import (C, wstandend, "wstandend"); + + Err : C_Int; + begin + if On then + Err := wstandout (Win); + else + Err := wstandend (Win); + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Standout; + + procedure Switch_Character_Attribute + (Win : in Window := Standard_Window; + Attr : in Character_Attribute_Set := Normal_Video; + On : in Boolean := True) + is + function Wattron (Win : Window; + C_Attr : C_AttrType) return C_Int; + pragma Import (C, Wattron, "wattr_on"); + function Wattroff (Win : Window; + C_Attr : C_AttrType) return C_Int; + pragma Import (C, Wattroff, "wattr_off"); + -- In Ada we use the On Boolean to control whether or not we want to + -- switch on or off the attributes in the set. + Err : C_Int; + AC : constant Attributed_Character := (Ch => Character'First, + Color => Color_Pair'First, + Attr => Attr); + begin + if On then + Err := Wattron (Win, AttrChar_To_AttrType (AC)); + else + Err := Wattroff (Win, AttrChar_To_AttrType (AC)); + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Switch_Character_Attribute; + + procedure Set_Character_Attributes + (Win : in Window := Standard_Window; + Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Wattrset (Win : Window; + C_Attr : C_AttrType) return C_Int; + pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set + begin + if Wattrset (Win, + AttrChar_To_AttrType (Attributed_Character' + (Ch => Character'First, + Color => Color, + Attr => Attr))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Character_Attributes; + + function Get_Character_Attribute (Win : Window := Standard_Window) + return Character_Attribute_Set + is + function Wattrget (Win : Window; + Atr : access C_AttrType; + Col : access C_Short; + Opt : System.Address) return C_Int; + pragma Import (C, Wattrget, "wattr_get"); + + Attr : aliased C_AttrType; + Col : aliased C_Short; + Res : constant C_Int := Wattrget (Win, Attr'Access, Col'Access, + System.Null_Address); + Ch : Attributed_Character; + begin + if Res = Curses_Ok then + Ch := AttrType_To_AttrChar (Attr); + return Ch.Attr; + else + raise Curses_Exception; + end if; + end Get_Character_Attribute; + + function Get_Character_Attribute (Win : Window := Standard_Window) + return Color_Pair + is + function Wattrget (Win : Window; + Atr : access C_AttrType; + Col : access C_Short; + Opt : System.Address) return C_Int; + pragma Import (C, Wattrget, "wattr_get"); + + Attr : aliased C_AttrType; + Col : aliased C_Short; + Res : constant C_Int := Wattrget (Win, Attr'Access, Col'Access, + System.Null_Address); + Ch : Attributed_Character; + begin + if Res = Curses_Ok then + Ch := AttrType_To_AttrChar (Attr); + return Ch.Color; + else + raise Curses_Exception; + end if; + end Get_Character_Attribute; + + procedure Set_Color (Win : in Window := Standard_Window; + Pair : in Color_Pair) + is + function Wset_Color (Win : Window; + Color : C_Short; + Opts : C_Void_Ptr) return C_Int; + pragma Import (C, Wset_Color, "wcolor_set"); + begin + if Wset_Color (Win, + C_Short (Pair), + C_Void_Ptr (System.Null_Address)) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Color; + + procedure Change_Attributes + (Win : in Window := Standard_Window; + Count : in Integer := -1; + Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Wchgat (Win : Window; + Cnt : C_Int; + Attr : C_AttrType; + Color : C_Short; + Opts : System.Address := System.Null_Address) + return C_Int; + pragma Import (C, Wchgat, "wchgat"); + + Ch : constant Attributed_Character := + (Ch => Character'First, Color => Color_Pair'First, Attr => Attr); + begin + if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch), + C_Short (Color)) = Curses_Err then + raise Curses_Exception; + end if; + end Change_Attributes; + + procedure Change_Attributes + (Win : in Window := Standard_Window; + Line : in Line_Position := Line_Position'First; + Column : in Column_Position := Column_Position'First; + Count : in Integer := -1; + Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + begin + Move_Cursor (Win, Line, Column); + Change_Attributes (Win, Count, Attr, Color); + end Change_Attributes; +------------------------------------------------------------------------------ + procedure Beep + is + function Beeper return C_Int; + pragma Import (C, Beeper, "beep"); + begin + if Beeper = Curses_Err then + raise Curses_Exception; + end if; + end Beep; + + procedure Flash_Screen + is + function Flash return C_Int; + pragma Import (C, Flash, "flash"); + begin + if Flash = Curses_Err then + raise Curses_Exception; + end if; + end Flash_Screen; +------------------------------------------------------------------------------ + procedure Set_Cbreak_Mode (SwitchOn : in Boolean := True) + is + function Cbreak return C_Int; + pragma Import (C, Cbreak, "cbreak"); + function NoCbreak return C_Int; + pragma Import (C, NoCbreak, "nocbreak"); + + Err : C_Int; + begin + if SwitchOn then + Err := Cbreak; + else + Err := NoCbreak; + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Set_Cbreak_Mode; + + procedure Set_Raw_Mode (SwitchOn : in Boolean := True) + is + function Raw return C_Int; + pragma Import (C, Raw, "raw"); + function NoRaw return C_Int; + pragma Import (C, NoRaw, "noraw"); + + Err : C_Int; + begin + if SwitchOn then + Err := Raw; + else + Err := NoRaw; + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Set_Raw_Mode; + + procedure Set_Echo_Mode (SwitchOn : in Boolean := True) + is + function Echo return C_Int; + pragma Import (C, Echo, "echo"); + function NoEcho return C_Int; + pragma Import (C, NoEcho, "noecho"); + + Err : C_Int; + begin + if SwitchOn then + Err := Echo; + else + Err := NoEcho; + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Set_Echo_Mode; + + procedure Set_Meta_Mode (Win : in Window := Standard_Window; + SwitchOn : in Boolean := True) + is + function Meta (W : Window; Mode : Curses_Bool) return C_Int; + pragma Import (C, Meta, "meta"); + begin + if Meta (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Meta_Mode; + + procedure Set_KeyPad_Mode (Win : in Window := Standard_Window; + SwitchOn : in Boolean := True) + is + function Keypad (W : Window; Mode : Curses_Bool) return C_Int; + pragma Import (C, Keypad, "keypad"); + begin + if Keypad (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_KeyPad_Mode; + + function Get_KeyPad_Mode (Win : in Window := Standard_Window) + return Boolean + is + function Is_Keypad (W : Window) return Curses_Bool; + pragma Import (C, Is_Keypad, "is_keypad"); + begin + return (Is_Keypad (Win) /= Curses_Bool_False); + end Get_KeyPad_Mode; + + procedure Half_Delay (Amount : in Half_Delay_Amount) + is + function Halfdelay (Amount : C_Int) return C_Int; + pragma Import (C, Halfdelay, "halfdelay"); + begin + if Halfdelay (C_Int (Amount)) = Curses_Err then + raise Curses_Exception; + end if; + end Half_Delay; + + procedure Set_Flush_On_Interrupt_Mode + (Win : in Window := Standard_Window; + Mode : in Boolean := True) + is + function Intrflush (Win : Window; Mode : Curses_Bool) return C_Int; + pragma Import (C, Intrflush, "intrflush"); + begin + if Intrflush (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Flush_On_Interrupt_Mode; + + procedure Set_Queue_Interrupt_Mode + (Win : in Window := Standard_Window; + Flush : in Boolean := True) + is + procedure Qiflush; + pragma Import (C, Qiflush, "qiflush"); + procedure No_Qiflush; + pragma Import (C, No_Qiflush, "noqiflush"); + begin + if Win = Null_Window then + raise Curses_Exception; + end if; + if Flush then + Qiflush; + else + No_Qiflush; + end if; + end Set_Queue_Interrupt_Mode; + + procedure Set_NoDelay_Mode + (Win : in Window := Standard_Window; + Mode : in Boolean := False) + is + function Nodelay (Win : Window; Mode : Curses_Bool) return C_Int; + pragma Import (C, Nodelay, "nodelay"); + begin + if Nodelay (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_NoDelay_Mode; + + procedure Set_Timeout_Mode (Win : in Window := Standard_Window; + Mode : in Timeout_Mode; + Amount : in Natural) + is + procedure Wtimeout (Win : Window; Amount : C_Int); + pragma Import (C, Wtimeout, "wtimeout"); + + Time : C_Int; + begin + case Mode is + when Blocking => Time := -1; + when Non_Blocking => Time := 0; + when Delayed => + if Amount = 0 then + raise Constraint_Error; + end if; + Time := C_Int (Amount); + end case; + Wtimeout (Win, Time); + end Set_Timeout_Mode; + + procedure Set_Escape_Timer_Mode + (Win : in Window := Standard_Window; + Timer_Off : in Boolean := False) + is + function Notimeout (Win : Window; Mode : Curses_Bool) return C_Int; + pragma Import (C, Notimeout, "notimeout"); + begin + if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off))) + = Curses_Err then + raise Curses_Exception; + end if; + end Set_Escape_Timer_Mode; + +------------------------------------------------------------------------------ + procedure Set_NL_Mode (SwitchOn : in Boolean := True) + is + function NL return C_Int; + pragma Import (C, NL, "nl"); + function NoNL return C_Int; + pragma Import (C, NoNL, "nonl"); + + Err : C_Int; + begin + if SwitchOn then + Err := NL; + else + Err := NoNL; + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Set_NL_Mode; + + procedure Clear_On_Next_Update + (Win : in Window := Standard_Window; + Do_Clear : in Boolean := True) + is + function Clear_Ok (W : Window; Flag : Curses_Bool) return C_Int; + pragma Import (C, Clear_Ok, "clearok"); + begin + if Clear_Ok (Win, Curses_Bool (Boolean'Pos (Do_Clear))) = Curses_Err then + raise Curses_Exception; + end if; + end Clear_On_Next_Update; + + procedure Use_Insert_Delete_Line + (Win : in Window := Standard_Window; + Do_Idl : in Boolean := True) + is + function IDL_Ok (W : Window; Flag : Curses_Bool) return C_Int; + pragma Import (C, IDL_Ok, "idlok"); + begin + if IDL_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idl))) = Curses_Err then + raise Curses_Exception; + end if; + end Use_Insert_Delete_Line; + + procedure Use_Insert_Delete_Character + (Win : in Window := Standard_Window; + Do_Idc : in Boolean := True) + is + procedure IDC_Ok (W : Window; Flag : Curses_Bool); + pragma Import (C, IDC_Ok, "idcok"); + begin + IDC_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idc))); + end Use_Insert_Delete_Character; + + procedure Leave_Cursor_After_Update + (Win : in Window := Standard_Window; + Do_Leave : in Boolean := True) + is + function Leave_Ok (W : Window; Flag : Curses_Bool) return C_Int; + pragma Import (C, Leave_Ok, "leaveok"); + begin + if Leave_Ok (Win, Curses_Bool (Boolean'Pos (Do_Leave))) = Curses_Err then + raise Curses_Exception; + end if; + end Leave_Cursor_After_Update; + + procedure Immediate_Update_Mode + (Win : in Window := Standard_Window; + Mode : in Boolean := False) + is + procedure Immedok (Win : Window; Mode : Curses_Bool); + pragma Import (C, Immedok, "immedok"); + begin + Immedok (Win, Curses_Bool (Boolean'Pos (Mode))); + end Immediate_Update_Mode; + + procedure Allow_Scrolling + (Win : in Window := Standard_Window; + Mode : in Boolean := False) + is + function Scrollok (Win : Window; Mode : Curses_Bool) return C_Int; + pragma Import (C, Scrollok, "scrollok"); + begin + if Scrollok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then + raise Curses_Exception; + end if; + end Allow_Scrolling; + + function Scrolling_Allowed (Win : Window := Standard_Window) + return Boolean + is + function Is_Scroll_Ok (W : Window) return Curses_Bool; + pragma Import (C, Is_Scroll_Ok, "is_scrollok"); + begin + return (Is_Scroll_Ok (Win) /= Curses_Bool_False); + end Scrolling_Allowed; + + procedure Set_Scroll_Region + (Win : in Window := Standard_Window; + Top_Line : in Line_Position; + Bottom_Line : in Line_Position) + is + function Wsetscrreg (Win : Window; + Lin : C_Int; + Col : C_Int) return C_Int; + pragma Import (C, Wsetscrreg, "wsetscrreg"); + begin + if Wsetscrreg (Win, C_Int (Top_Line), C_Int (Bottom_Line)) + = Curses_Err then + raise Curses_Exception; + end if; + end Set_Scroll_Region; +------------------------------------------------------------------------------ + procedure Update_Screen + is + function Do_Update return C_Int; + pragma Import (C, Do_Update, "doupdate"); + begin + if Do_Update = Curses_Err then + raise Curses_Exception; + end if; + end Update_Screen; + + procedure Refresh (Win : in Window := Standard_Window) + is + function Wrefresh (W : Window) return C_Int; + pragma Import (C, Wrefresh, "wrefresh"); + begin + if Wrefresh (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Refresh; + + procedure Refresh_Without_Update + (Win : in Window := Standard_Window) + is + function Wnoutrefresh (W : Window) return C_Int; + pragma Import (C, Wnoutrefresh, "wnoutrefresh"); + begin + if Wnoutrefresh (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Refresh_Without_Update; + + procedure Redraw (Win : in Window := Standard_Window) + is + function Redrawwin (Win : Window) return C_Int; + pragma Import (C, Redrawwin, "redrawwin"); + begin + if Redrawwin (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Redraw; + + procedure Redraw + (Win : in Window := Standard_Window; + Begin_Line : in Line_Position; + Line_Count : in Positive) + is + function Wredrawln (Win : Window; First : C_Int; Cnt : C_Int) + return C_Int; + pragma Import (C, Wredrawln, "wredrawln"); + begin + if Wredrawln (Win, + C_Int (Begin_Line), + C_Int (Line_Count)) = Curses_Err then + raise Curses_Exception; + end if; + end Redraw; + +------------------------------------------------------------------------------ + procedure Erase (Win : in Window := Standard_Window) + is + function Werase (W : Window) return C_Int; + pragma Import (C, Werase, "werase"); + begin + if Werase (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Erase; + + procedure Clear (Win : in Window := Standard_Window) + is + function Wclear (W : Window) return C_Int; + pragma Import (C, Wclear, "wclear"); + begin + if Wclear (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Clear; + + procedure Clear_To_End_Of_Screen (Win : in Window := Standard_Window) + is + function Wclearbot (W : Window) return C_Int; + pragma Import (C, Wclearbot, "wclrtobot"); + begin + if Wclearbot (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Clear_To_End_Of_Screen; + + procedure Clear_To_End_Of_Line (Win : in Window := Standard_Window) + is + function Wcleareol (W : Window) return C_Int; + pragma Import (C, Wcleareol, "wclrtoeol"); + begin + if Wcleareol (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Clear_To_End_Of_Line; +------------------------------------------------------------------------------ + procedure Set_Background + (Win : in Window := Standard_Window; + Ch : in Attributed_Character) + is + procedure WBackground (W : in Window; Ch : in C_Chtype); + pragma Import (C, WBackground, "wbkgdset"); + begin + WBackground (Win, AttrChar_To_Chtype (Ch)); + end Set_Background; + + procedure Change_Background + (Win : in Window := Standard_Window; + Ch : in Attributed_Character) + is + function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int; + pragma Import (C, WChangeBkgd, "wbkgd"); + begin + if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Change_Background; + + function Get_Background (Win : Window := Standard_Window) + return Attributed_Character + is + function Wgetbkgd (Win : Window) return C_Chtype; + pragma Import (C, Wgetbkgd, "getbkgd"); + begin + return Chtype_To_AttrChar (Wgetbkgd (Win)); + end Get_Background; +------------------------------------------------------------------------------ + procedure Change_Lines_Status (Win : in Window := Standard_Window; + Start : in Line_Position; + Count : in Positive; + State : in Boolean) + is + function Wtouchln (Win : Window; + Sta : C_Int; + Cnt : C_Int; + Chg : C_Int) return C_Int; + pragma Import (C, Wtouchln, "wtouchln"); + begin + if Wtouchln (Win, C_Int (Start), C_Int (Count), + C_Int (Boolean'Pos (State))) = Curses_Err then + raise Curses_Exception; + end if; + end Change_Lines_Status; + + procedure Touch (Win : in Window := Standard_Window) + is + Y : Line_Position; + X : Column_Position; + begin + Get_Size (Win, Y, X); + Change_Lines_Status (Win, 0, Positive (Y), True); + end Touch; + + procedure Untouch (Win : in Window := Standard_Window) + is + Y : Line_Position; + X : Column_Position; + begin + Get_Size (Win, Y, X); + Change_Lines_Status (Win, 0, Positive (Y), False); + end Untouch; + + procedure Touch (Win : in Window := Standard_Window; + Start : in Line_Position; + Count : in Positive) + is + begin + Change_Lines_Status (Win, Start, Count, True); + end Touch; + + function Is_Touched + (Win : Window := Standard_Window; + Line : Line_Position) return Boolean + is + function WLineTouched (W : Window; L : C_Int) return Curses_Bool; + pragma Import (C, WLineTouched, "is_linetouched"); + begin + if WLineTouched (Win, C_Int (Line)) = Curses_Bool_False then + return False; + else + return True; + end if; + end Is_Touched; + + function Is_Touched + (Win : Window := Standard_Window) return Boolean + is + function WWinTouched (W : Window) return Curses_Bool; + pragma Import (C, WWinTouched, "is_wintouched"); + begin + if WWinTouched (Win) = Curses_Bool_False then + return False; + else + return True; + end if; + end Is_Touched; +------------------------------------------------------------------------------ + procedure Copy + (Source_Window : in Window; + Destination_Window : in Window; + Source_Top_Row : in Line_Position; + Source_Left_Column : in Column_Position; + Destination_Top_Row : in Line_Position; + Destination_Left_Column : in Column_Position; + Destination_Bottom_Row : in Line_Position; + Destination_Right_Column : in Column_Position; + Non_Destructive_Mode : in Boolean := True) + is + function Copywin (Src : Window; + Dst : Window; + Str : C_Int; + Slc : C_Int; + Dtr : C_Int; + Dlc : C_Int; + Dbr : C_Int; + Drc : C_Int; + Ndm : C_Int) return C_Int; + pragma Import (C, Copywin, "copywin"); + begin + if Copywin (Source_Window, + Destination_Window, + C_Int (Source_Top_Row), + C_Int (Source_Left_Column), + C_Int (Destination_Top_Row), + C_Int (Destination_Left_Column), + C_Int (Destination_Bottom_Row), + C_Int (Destination_Right_Column), + Boolean'Pos (Non_Destructive_Mode) + ) = Curses_Err then + raise Curses_Exception; + end if; + end Copy; + + procedure Overwrite + (Source_Window : in Window; + Destination_Window : in Window) + is + function Overwrite (Src : Window; Dst : Window) return C_Int; + pragma Import (C, Overwrite, "overwrite"); + begin + if Overwrite (Source_Window, Destination_Window) = Curses_Err then + raise Curses_Exception; + end if; + end Overwrite; + + procedure Overlay + (Source_Window : in Window; + Destination_Window : in Window) + is + function Overlay (Src : Window; Dst : Window) return C_Int; + pragma Import (C, Overlay, "overlay"); + begin + if Overlay (Source_Window, Destination_Window) = Curses_Err then + raise Curses_Exception; + end if; + end Overlay; + +------------------------------------------------------------------------------ + procedure Insert_Delete_Lines + (Win : in Window := Standard_Window; + Lines : in Integer := 1) -- default is to insert one line above + is + function Winsdelln (W : Window; N : C_Int) return C_Int; + pragma Import (C, Winsdelln, "winsdelln"); + begin + if Winsdelln (Win, C_Int (Lines)) = Curses_Err then + raise Curses_Exception; + end if; + end Insert_Delete_Lines; + + procedure Delete_Line (Win : in Window := Standard_Window) + is + begin + Insert_Delete_Lines (Win, -1); + end Delete_Line; + + procedure Insert_Line (Win : in Window := Standard_Window) + is + begin + Insert_Delete_Lines (Win, 1); + end Insert_Line; +------------------------------------------------------------------------------ + + procedure Get_Size + (Win : in Window := Standard_Window; + Number_Of_Lines : out Line_Count; + Number_Of_Columns : out Column_Count) + is + function GetMaxY (W : Window) return C_Int; + pragma Import (C, GetMaxY, "getmaxy"); + + function GetMaxX (W : Window) return C_Int; + pragma Import (C, GetMaxX, "getmaxx"); + + Y : constant C_Int := GetMaxY (Win) + + C_Int (Offset_XY); + X : constant C_Int := GetMaxX (Win) + + C_Int (Offset_XY); + begin + Number_Of_Lines := Line_Count (Y); + Number_Of_Columns := Column_Count (X); + end Get_Size; + + procedure Get_Window_Position + (Win : in Window := Standard_Window; + Top_Left_Line : out Line_Position; + Top_Left_Column : out Column_Position) + is + function GetBegY (W : Window) return C_Int; + pragma Import (C, GetBegY, "getbegy"); + + function GetBegX (W : Window) return C_Int; + pragma Import (C, GetBegX, "getbegx"); + + Y : constant C_Short := C_Short (GetBegY (Win)); + X : constant C_Short := C_Short (GetBegX (Win)); + begin + Top_Left_Line := Line_Position (Y); + Top_Left_Column := Column_Position (X); + end Get_Window_Position; + + procedure Get_Cursor_Position + (Win : in Window := Standard_Window; + Line : out Line_Position; + Column : out Column_Position) + is + function GetCurY (W : Window) return C_Int; + pragma Import (C, GetCurY, "getcury"); + + function GetCurX (W : Window) return C_Int; + pragma Import (C, GetCurX, "getcurx"); + + Y : constant C_Short := C_Short (GetCurY (Win)); + X : constant C_Short := C_Short (GetCurX (Win)); + begin + Line := Line_Position (Y); + Column := Column_Position (X); + end Get_Cursor_Position; + + procedure Get_Origin_Relative_To_Parent + (Win : in Window; + Top_Left_Line : out Line_Position; + Top_Left_Column : out Column_Position; + Is_Not_A_Subwindow : out Boolean) + is + function GetParY (W : Window) return C_Int; + pragma Import (C, GetParY, "getpary"); + + function GetParX (W : Window) return C_Int; + pragma Import (C, GetParX, "getparx"); + + Y : constant C_Int := GetParY (Win); + X : constant C_Int := GetParX (Win); + begin + if Y = -1 then + Top_Left_Line := Line_Position'Last; + Top_Left_Column := Column_Position'Last; + Is_Not_A_Subwindow := True; + else + Top_Left_Line := Line_Position (Y); + Top_Left_Column := Column_Position (X); + Is_Not_A_Subwindow := False; + end if; + end Get_Origin_Relative_To_Parent; +------------------------------------------------------------------------------ + function New_Pad (Lines : Line_Count; + Columns : Column_Count) return Window + is + function Newpad (Lines : C_Int; Columns : C_Int) return Window; + pragma Import (C, Newpad, "newpad"); + + W : Window; + begin + W := Newpad (C_Int (Lines), C_Int (Columns)); + if W = Null_Window then + raise Curses_Exception; + end if; + return W; + end New_Pad; + + function Sub_Pad + (Pad : Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window + is + function Subpad + (Pad : Window; + Number_Of_Lines : C_Int; + Number_Of_Columns : C_Int; + First_Line_Position : C_Int; + First_Column_Position : C_Int) return Window; + pragma Import (C, Subpad, "subpad"); + + W : Window; + begin + W := Subpad (Pad, + C_Int (Number_Of_Lines), + C_Int (Number_Of_Columns), + C_Int (First_Line_Position), + C_Int (First_Column_Position)); + if W = Null_Window then + raise Curses_Exception; + end if; + return W; + end Sub_Pad; + + procedure Refresh + (Pad : in Window; + Source_Top_Row : in Line_Position; + Source_Left_Column : in Column_Position; + Destination_Top_Row : in Line_Position; + Destination_Left_Column : in Column_Position; + Destination_Bottom_Row : in Line_Position; + Destination_Right_Column : in Column_Position) + is + function Prefresh + (Pad : Window; + Source_Top_Row : C_Int; + Source_Left_Column : C_Int; + Destination_Top_Row : C_Int; + Destination_Left_Column : C_Int; + Destination_Bottom_Row : C_Int; + Destination_Right_Column : C_Int) return C_Int; + pragma Import (C, Prefresh, "prefresh"); + begin + if Prefresh (Pad, + C_Int (Source_Top_Row), + C_Int (Source_Left_Column), + C_Int (Destination_Top_Row), + C_Int (Destination_Left_Column), + C_Int (Destination_Bottom_Row), + C_Int (Destination_Right_Column)) = Curses_Err then + raise Curses_Exception; + end if; + end Refresh; + + procedure Refresh_Without_Update + (Pad : in Window; + Source_Top_Row : in Line_Position; + Source_Left_Column : in Column_Position; + Destination_Top_Row : in Line_Position; + Destination_Left_Column : in Column_Position; + Destination_Bottom_Row : in Line_Position; + Destination_Right_Column : in Column_Position) + is + function Pnoutrefresh + (Pad : Window; + Source_Top_Row : C_Int; + Source_Left_Column : C_Int; + Destination_Top_Row : C_Int; + Destination_Left_Column : C_Int; + Destination_Bottom_Row : C_Int; + Destination_Right_Column : C_Int) return C_Int; + pragma Import (C, Pnoutrefresh, "pnoutrefresh"); + begin + if Pnoutrefresh (Pad, + C_Int (Source_Top_Row), + C_Int (Source_Left_Column), + C_Int (Destination_Top_Row), + C_Int (Destination_Left_Column), + C_Int (Destination_Bottom_Row), + C_Int (Destination_Right_Column)) = Curses_Err then + raise Curses_Exception; + end if; + end Refresh_Without_Update; + + procedure Add_Character_To_Pad_And_Echo_It + (Pad : in Window; + Ch : in Attributed_Character) + is + function Pechochar (Pad : Window; Ch : C_Chtype) + return C_Int; + pragma Import (C, Pechochar, "pechochar"); + begin + if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Add_Character_To_Pad_And_Echo_It; + + procedure Add_Character_To_Pad_And_Echo_It + (Pad : in Window; + Ch : in Character) + is + begin + Add_Character_To_Pad_And_Echo_It + (Pad, + Attributed_Character'(Ch => Ch, + Color => Color_Pair'First, + Attr => Normal_Video)); + end Add_Character_To_Pad_And_Echo_It; +------------------------------------------------------------------------------ + procedure Scroll (Win : in Window := Standard_Window; + Amount : in Integer := 1) + is + function Wscrl (Win : Window; N : C_Int) return C_Int; + pragma Import (C, Wscrl, "wscrl"); + + begin + if Wscrl (Win, C_Int (Amount)) = Curses_Err then + raise Curses_Exception; + end if; + end Scroll; + +------------------------------------------------------------------------------ + procedure Delete_Character (Win : in Window := Standard_Window) + is + function Wdelch (Win : Window) return C_Int; + pragma Import (C, Wdelch, "wdelch"); + begin + if Wdelch (Win) = Curses_Err then + raise Curses_Exception; + end if; + end Delete_Character; + + procedure Delete_Character + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position) + is + function Mvwdelch (Win : Window; + Lin : C_Int; + Col : C_Int) return C_Int; + pragma Import (C, Mvwdelch, "mvwdelch"); + begin + if Mvwdelch (Win, C_Int (Line), C_Int (Column)) = Curses_Err then + raise Curses_Exception; + end if; + end Delete_Character; +------------------------------------------------------------------------------ + function Peek (Win : Window := Standard_Window) + return Attributed_Character + is + function Winch (Win : Window) return C_Chtype; + pragma Import (C, Winch, "winch"); + begin + return Chtype_To_AttrChar (Winch (Win)); + end Peek; + + function Peek + (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position) return Attributed_Character + is + function Mvwinch (Win : Window; + Lin : C_Int; + Col : C_Int) return C_Chtype; + pragma Import (C, Mvwinch, "mvwinch"); + begin + return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column))); + end Peek; +------------------------------------------------------------------------------ + procedure Insert (Win : in Window := Standard_Window; + Ch : in Attributed_Character) + is + function Winsch (Win : Window; Ch : C_Chtype) return C_Int; + pragma Import (C, Winsch, "winsch"); + begin + if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Insert; + + procedure Insert + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Ch : in Attributed_Character) + is + function Mvwinsch (Win : Window; + Lin : C_Int; + Col : C_Int; + Ch : C_Chtype) return C_Int; + pragma Import (C, Mvwinsch, "mvwinsch"); + begin + if Mvwinsch (Win, + C_Int (Line), + C_Int (Column), + AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Insert; +------------------------------------------------------------------------------ + procedure Insert (Win : in Window := Standard_Window; + Str : in String; + Len : in Integer := -1) + is + function Winsnstr (Win : Window; + Str : char_array; + Len : Integer := -1) return C_Int; + pragma Import (C, Winsnstr, "winsnstr"); + + Txt : char_array (0 .. Str'Length); + Length : size_t; + begin + To_C (Str, Txt, Length); + if Winsnstr (Win, Txt, Len) = Curses_Err then + raise Curses_Exception; + end if; + end Insert; + + procedure Insert + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : in String; + Len : in Integer := -1) + is + function Mvwinsnstr (Win : Window; + Line : C_Int; + Column : C_Int; + Str : char_array; + Len : C_Int) return C_Int; + pragma Import (C, Mvwinsnstr, "mvwinsnstr"); + + Txt : char_array (0 .. Str'Length); + Length : size_t; + begin + To_C (Str, Txt, Length); + if Mvwinsnstr (Win, C_Int (Line), C_Int (Column), Txt, C_Int (Len)) + = Curses_Err then + raise Curses_Exception; + end if; + end Insert; +------------------------------------------------------------------------------ + procedure Peek (Win : in Window := Standard_Window; + Str : out String; + Len : in Integer := -1) + is + function Winnstr (Win : Window; + Str : char_array; + Len : C_Int) return C_Int; + pragma Import (C, Winnstr, "winnstr"); + + N : Integer := Len; + Txt : char_array (0 .. Str'Length); + Cnt : Natural; + begin + if N < 0 then + N := Str'Length; + end if; + if N > Str'Length then + raise Constraint_Error; + end if; + Txt (0) := Interfaces.C.char'First; + if Winnstr (Win, Txt, C_Int (N)) = Curses_Err then + raise Curses_Exception; + end if; + To_Ada (Txt, Str, Cnt, True); + if Cnt < Str'Length then + Str ((Str'First + Cnt) .. Str'Last) := (others => ' '); + end if; + end Peek; + + procedure Peek + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : out String; + Len : in Integer := -1) + is + begin + Move_Cursor (Win, Line, Column); + Peek (Win, Str, Len); + end Peek; +------------------------------------------------------------------------------ + procedure Peek + (Win : in Window := Standard_Window; + Str : out Attributed_String; + Len : in Integer := -1) + is + function Winchnstr (Win : Window; + Str : chtype_array; -- out + Len : C_Int) return C_Int; + pragma Import (C, Winchnstr, "winchnstr"); + + N : Integer := Len; + Txt : constant chtype_array (0 .. Str'Length) + := (0 => Default_Character); + Cnt : Natural := 0; + begin + if N < 0 then + N := Str'Length; + end if; + if N > Str'Length then + raise Constraint_Error; + end if; + if Winchnstr (Win, Txt, C_Int (N)) = Curses_Err then + raise Curses_Exception; + end if; + for To in Str'Range loop + exit when Txt (size_t (Cnt)) = Default_Character; + Str (To) := Txt (size_t (Cnt)); + Cnt := Cnt + 1; + end loop; + if Cnt < Str'Length then + Str ((Str'First + Cnt) .. Str'Last) := + (others => (Ch => ' ', + Color => Color_Pair'First, + Attr => Normal_Video)); + end if; + end Peek; + + procedure Peek + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : out Attributed_String; + Len : in Integer := -1) + is + begin + Move_Cursor (Win, Line, Column); + Peek (Win, Str, Len); + end Peek; +------------------------------------------------------------------------------ + procedure Get (Win : in Window := Standard_Window; + Str : out String; + Len : in Integer := -1) + is + function Wgetnstr (Win : Window; + Str : char_array; + Len : C_Int) return C_Int; + pragma Import (C, Wgetnstr, "wgetnstr"); + + N : Integer := Len; + Txt : char_array (0 .. Str'Length); + Cnt : Natural; + begin + if N < 0 then + N := Str'Length; + end if; + if N > Str'Length then + raise Constraint_Error; + end if; + Txt (0) := Interfaces.C.char'First; + if Wgetnstr (Win, Txt, C_Int (N)) = Curses_Err then + raise Curses_Exception; + end if; + To_Ada (Txt, Str, Cnt, True); + if Cnt < Str'Length then + Str ((Str'First + Cnt) .. Str'Last) := (others => ' '); + end if; + end Get; + + procedure Get + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : out String; + Len : in Integer := -1) + is + begin + Move_Cursor (Win, Line, Column); + Get (Win, Str, Len); + end Get; +------------------------------------------------------------------------------ + procedure Init_Soft_Label_Keys + (Format : in Soft_Label_Key_Format := Three_Two_Three) + is + function Slk_Init (Fmt : C_Int) return C_Int; + pragma Import (C, Slk_Init, "slk_init"); + begin + if Slk_Init (Soft_Label_Key_Format'Pos (Format)) = Curses_Err then + raise Curses_Exception; + end if; + end Init_Soft_Label_Keys; + + procedure Set_Soft_Label_Key (Label : in Label_Number; + Text : in String; + Fmt : in Label_Justification := Left) + is + function Slk_Set (Label : C_Int; + Txt : char_array; + Fmt : C_Int) return C_Int; + pragma Import (C, Slk_Set, "slk_set"); + + Txt : char_array (0 .. Text'Length); + Len : size_t; + begin + To_C (Text, Txt, Len); + if Slk_Set (C_Int (Label), Txt, + C_Int (Label_Justification'Pos (Fmt))) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Soft_Label_Key; + + procedure Refresh_Soft_Label_Keys + is + function Slk_Refresh return C_Int; + pragma Import (C, Slk_Refresh, "slk_refresh"); + begin + if Slk_Refresh = Curses_Err then + raise Curses_Exception; + end if; + end Refresh_Soft_Label_Keys; + + procedure Refresh_Soft_Label_Keys_Without_Update + is + function Slk_Noutrefresh return C_Int; + pragma Import (C, Slk_Noutrefresh, "slk_noutrefresh"); + begin + if Slk_Noutrefresh = Curses_Err then + raise Curses_Exception; + end if; + end Refresh_Soft_Label_Keys_Without_Update; + + procedure Get_Soft_Label_Key (Label : in Label_Number; + Text : out String) + is + function Slk_Label (Label : C_Int) return chars_ptr; + pragma Import (C, Slk_Label, "slk_label"); + begin + Fill_String (Slk_Label (C_Int (Label)), Text); + end Get_Soft_Label_Key; + + function Get_Soft_Label_Key (Label : in Label_Number) return String + is + function Slk_Label (Label : C_Int) return chars_ptr; + pragma Import (C, Slk_Label, "slk_label"); + begin + return Fill_String (Slk_Label (C_Int (Label))); + end Get_Soft_Label_Key; + + procedure Clear_Soft_Label_Keys + is + function Slk_Clear return C_Int; + pragma Import (C, Slk_Clear, "slk_clear"); + begin + if Slk_Clear = Curses_Err then + raise Curses_Exception; + end if; + end Clear_Soft_Label_Keys; + + procedure Restore_Soft_Label_Keys + is + function Slk_Restore return C_Int; + pragma Import (C, Slk_Restore, "slk_restore"); + begin + if Slk_Restore = Curses_Err then + raise Curses_Exception; + end if; + end Restore_Soft_Label_Keys; + + procedure Touch_Soft_Label_Keys + is + function Slk_Touch return C_Int; + pragma Import (C, Slk_Touch, "slk_touch"); + begin + if Slk_Touch = Curses_Err then + raise Curses_Exception; + end if; + end Touch_Soft_Label_Keys; + + procedure Switch_Soft_Label_Key_Attributes + (Attr : in Character_Attribute_Set; + On : in Boolean := True) + is + function Slk_Attron (Ch : C_Chtype) return C_Int; + pragma Import (C, Slk_Attron, "slk_attron"); + function Slk_Attroff (Ch : C_Chtype) return C_Int; + pragma Import (C, Slk_Attroff, "slk_attroff"); + + Err : C_Int; + Ch : constant Attributed_Character := (Ch => Character'First, + Attr => Attr, + Color => Color_Pair'First); + begin + if On then + Err := Slk_Attron (AttrChar_To_Chtype (Ch)); + else + Err := Slk_Attroff (AttrChar_To_Chtype (Ch)); + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Switch_Soft_Label_Key_Attributes; + + procedure Set_Soft_Label_Key_Attributes + (Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Slk_Attrset (Ch : C_Chtype) return C_Int; + pragma Import (C, Slk_Attrset, "slk_attrset"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Attr => Attr, + Color => Color); + begin + if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Soft_Label_Key_Attributes; + + function Get_Soft_Label_Key_Attributes return Character_Attribute_Set + is + function Slk_Attr return C_Chtype; + pragma Import (C, Slk_Attr, "slk_attr"); + + Attr : constant C_Chtype := Slk_Attr; + begin + return Chtype_To_AttrChar (Attr).Attr; + end Get_Soft_Label_Key_Attributes; + + function Get_Soft_Label_Key_Attributes return Color_Pair + is + function Slk_Attr return C_Chtype; + pragma Import (C, Slk_Attr, "slk_attr"); + + Attr : constant C_Chtype := Slk_Attr; + begin + return Chtype_To_AttrChar (Attr).Color; + end Get_Soft_Label_Key_Attributes; + + procedure Set_Soft_Label_Key_Color (Pair : in Color_Pair) + is + function Slk_Color (Color : in C_Short) return C_Int; + pragma Import (C, Slk_Color, "slk_color"); + begin + if Slk_Color (C_Short (Pair)) = Curses_Err then + raise Curses_Exception; + end if; + end Set_Soft_Label_Key_Color; + +------------------------------------------------------------------------------ + procedure Enable_Key (Key : in Special_Key_Code; + Enable : in Boolean := True) + is + function Keyok (Keycode : C_Int; + On_Off : Curses_Bool) return C_Int; + pragma Import (C, Keyok, "keyok"); + begin + if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable))) + = Curses_Err then + raise Curses_Exception; + end if; + end Enable_Key; +------------------------------------------------------------------------------ + procedure Define_Key (Definition : in String; + Key : in Special_Key_Code) + is + function Defkey (Def : char_array; + Key : C_Int) return C_Int; + pragma Import (C, Defkey, "define_key"); + + Txt : char_array (0 .. Definition'Length); + Length : size_t; + begin + To_C (Definition, Txt, Length); + if Defkey (Txt, C_Int (Key)) = Curses_Err then + raise Curses_Exception; + end if; + end Define_Key; +------------------------------------------------------------------------------ + procedure Un_Control (Ch : in Attributed_Character; + Str : out String) + is + function Unctrl (Ch : C_Chtype) return chars_ptr; + pragma Import (C, Unctrl, "unctrl"); + begin + Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str); + end Un_Control; + + function Un_Control (Ch : in Attributed_Character) return String + is + function Unctrl (Ch : C_Chtype) return chars_ptr; + pragma Import (C, Unctrl, "unctrl"); + begin + return Fill_String (Unctrl (AttrChar_To_Chtype (Ch))); + end Un_Control; + + procedure Delay_Output (Msecs : in Natural) + is + function Delayoutput (Msecs : C_Int) return C_Int; + pragma Import (C, Delayoutput, "delay_output"); + begin + if Delayoutput (C_Int (Msecs)) = Curses_Err then + raise Curses_Exception; + end if; + end Delay_Output; + + procedure Flush_Input + is + function Flushinp return C_Int; + pragma Import (C, Flushinp, "flushinp"); + begin + if Flushinp = Curses_Err then -- docu says that never happens, but... + raise Curses_Exception; + end if; + end Flush_Input; +------------------------------------------------------------------------------ + function Baudrate return Natural + is + function Baud return C_Int; + pragma Import (C, Baud, "baudrate"); + begin + return Natural (Baud); + end Baudrate; + + function Erase_Character return Character + is + function Erasechar return C_Int; + pragma Import (C, Erasechar, "erasechar"); + begin + return Character'Val (Erasechar); + end Erase_Character; + + function Kill_Character return Character + is + function Killchar return C_Int; + pragma Import (C, Killchar, "killchar"); + begin + return Character'Val (Killchar); + end Kill_Character; + + function Has_Insert_Character return Boolean + is + function Has_Ic return Curses_Bool; + pragma Import (C, Has_Ic, "has_ic"); + begin + if Has_Ic = Curses_Bool_False then + return False; + else + return True; + end if; + end Has_Insert_Character; + + function Has_Insert_Line return Boolean + is + function Has_Il return Curses_Bool; + pragma Import (C, Has_Il, "has_il"); + begin + if Has_Il = Curses_Bool_False then + return False; + else + return True; + end if; + end Has_Insert_Line; + + function Supported_Attributes return Character_Attribute_Set + is + function Termattrs return C_Chtype; + pragma Import (C, Termattrs, "termattrs"); + + Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs); + begin + return Ch.Attr; + end Supported_Attributes; + + procedure Long_Name (Name : out String) + is + function Longname return chars_ptr; + pragma Import (C, Longname, "longname"); + begin + Fill_String (Longname, Name); + end Long_Name; + + function Long_Name return String + is + function Longname return chars_ptr; + pragma Import (C, Longname, "longname"); + begin + return Fill_String (Longname); + end Long_Name; + + procedure Terminal_Name (Name : out String) + is + function Termname return chars_ptr; + pragma Import (C, Termname, "termname"); + begin + Fill_String (Termname, Name); + end Terminal_Name; + + function Terminal_Name return String + is + function Termname return chars_ptr; + pragma Import (C, Termname, "termname"); + begin + return Fill_String (Termname); + end Terminal_Name; +------------------------------------------------------------------------------ + procedure Init_Pair (Pair : in Redefinable_Color_Pair; + Fore : in Color_Number; + Back : in Color_Number) + is + function Initpair (Pair : C_Short; + Fore : C_Short; + Back : C_Short) return C_Int; + pragma Import (C, Initpair, "init_pair"); + begin + if Integer (Pair) >= Number_Of_Color_Pairs then + raise Constraint_Error; + end if; + if Integer (Fore) >= Number_Of_Colors or else + Integer (Back) >= Number_Of_Colors then + raise Constraint_Error; + end if; + if Initpair (C_Short (Pair), C_Short (Fore), C_Short (Back)) + = Curses_Err then + raise Curses_Exception; + end if; + end Init_Pair; + + procedure Pair_Content (Pair : in Color_Pair; + Fore : out Color_Number; + Back : out Color_Number) + is + type C_Short_Access is access all C_Short; + function Paircontent (Pair : C_Short; + Fp : C_Short_Access; + Bp : C_Short_Access) return C_Int; + pragma Import (C, Paircontent, "pair_content"); + + F, B : aliased C_Short; + begin + if Paircontent (C_Short (Pair), F'Access, B'Access) = Curses_Err then + raise Curses_Exception; + else + Fore := Color_Number (F); + Back := Color_Number (B); + end if; + end Pair_Content; + + function Has_Colors return Boolean + is + function Hascolors return Curses_Bool; + pragma Import (C, Hascolors, "has_colors"); + begin + if Hascolors = Curses_Bool_False then + return False; + else + return True; + end if; + end Has_Colors; + + procedure Init_Color (Color : in Color_Number; + Red : in RGB_Value; + Green : in RGB_Value; + Blue : in RGB_Value) + is + function Initcolor (Col : C_Short; + Red : C_Short; + Green : C_Short; + Blue : C_Short) return C_Int; + pragma Import (C, Initcolor, "init_color"); + begin + if Initcolor (C_Short (Color), C_Short (Red), C_Short (Green), + C_Short (Blue)) = Curses_Err then + raise Curses_Exception; + end if; + end Init_Color; + + function Can_Change_Color return Boolean + is + function Canchangecolor return Curses_Bool; + pragma Import (C, Canchangecolor, "can_change_color"); + begin + if Canchangecolor = Curses_Bool_False then + return False; + else + return True; + end if; + end Can_Change_Color; + + procedure Color_Content (Color : in Color_Number; + Red : out RGB_Value; + Green : out RGB_Value; + Blue : out RGB_Value) + is + type C_Short_Access is access all C_Short; + + function Colorcontent (Color : C_Short; R, G, B : C_Short_Access) + return C_Int; + pragma Import (C, Colorcontent, "color_content"); + + R, G, B : aliased C_Short; + begin + if Colorcontent (C_Short (Color), R'Access, G'Access, B'Access) = + Curses_Err then + raise Curses_Exception; + else + Red := RGB_Value (R); + Green := RGB_Value (G); + Blue := RGB_Value (B); + end if; + end Color_Content; + +------------------------------------------------------------------------------ + procedure Save_Curses_Mode (Mode : in Curses_Mode) + is + function Def_Prog_Mode return C_Int; + pragma Import (C, Def_Prog_Mode, "def_prog_mode"); + function Def_Shell_Mode return C_Int; + pragma Import (C, Def_Shell_Mode, "def_shell_mode"); + + Err : C_Int; + begin + case Mode is + when Curses => Err := Def_Prog_Mode; + when Shell => Err := Def_Shell_Mode; + end case; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Save_Curses_Mode; + + procedure Reset_Curses_Mode (Mode : in Curses_Mode) + is + function Reset_Prog_Mode return C_Int; + pragma Import (C, Reset_Prog_Mode, "reset_prog_mode"); + function Reset_Shell_Mode return C_Int; + pragma Import (C, Reset_Shell_Mode, "reset_shell_mode"); + + Err : C_Int; + begin + case Mode is + when Curses => Err := Reset_Prog_Mode; + when Shell => Err := Reset_Shell_Mode; + end case; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Reset_Curses_Mode; + + procedure Save_Terminal_State + is + function Savetty return C_Int; + pragma Import (C, Savetty, "savetty"); + begin + if Savetty = Curses_Err then + raise Curses_Exception; + end if; + end Save_Terminal_State; + + procedure Reset_Terminal_State + is + function Resetty return C_Int; + pragma Import (C, Resetty, "resetty"); + begin + if Resetty = Curses_Err then + raise Curses_Exception; + end if; + end Reset_Terminal_State; + + procedure Rip_Off_Lines (Lines : in Integer; + Proc : in Stdscr_Init_Proc) + is + function Ripoffline (Lines : C_Int; + Proc : Stdscr_Init_Proc) return C_Int; + pragma Import (C, Ripoffline, "_nc_ripoffline"); + begin + if Ripoffline (C_Int (Lines), Proc) = Curses_Err then + raise Curses_Exception; + end if; + end Rip_Off_Lines; + + procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility) + is + function Curs_Set (Curs : C_Int) return C_Int; + pragma Import (C, Curs_Set, "curs_set"); + + Res : C_Int; + begin + Res := Curs_Set (Cursor_Visibility'Pos (Visibility)); + if Res /= Curses_Err then + Visibility := Cursor_Visibility'Val (Res); + end if; + end Set_Cursor_Visibility; + + procedure Nap_Milli_Seconds (Ms : in Natural) + is + function Napms (Ms : C_Int) return C_Int; + pragma Import (C, Napms, "napms"); + begin + if Napms (C_Int (Ms)) = Curses_Err then + raise Curses_Exception; + end if; + end Nap_Milli_Seconds; +------------------------------------------------------------------------------ +include(`Public_Variables') +------------------------------------------------------------------------------ + procedure Transform_Coordinates + (W : in Window := Standard_Window; + Line : in out Line_Position; + Column : in out Column_Position; + Dir : in Transform_Direction := From_Screen) + is + type Int_Access is access all C_Int; + function Transform (W : Window; + Y, X : Int_Access; + Dir : Curses_Bool) return C_Int; + pragma Import (C, Transform, "wmouse_trafo"); + + X : aliased C_Int := C_Int (Column); + Y : aliased C_Int := C_Int (Line); + D : Curses_Bool := Curses_Bool_False; + R : C_Int; + begin + if Dir = To_Screen then + D := 1; + end if; + R := Transform (W, Y'Access, X'Access, D); + if R = Curses_False then + raise Curses_Exception; + else + Line := Line_Position (Y); + Column := Column_Position (X); + end if; + end Transform_Coordinates; +------------------------------------------------------------------------------ + procedure Use_Default_Colors is + function C_Use_Default_Colors return C_Int; + pragma Import (C, C_Use_Default_Colors, "use_default_colors"); + Err : constant C_Int := C_Use_Default_Colors; + begin + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Use_Default_Colors; + + procedure Assume_Default_Colors (Fore : Color_Number := Default_Color; + Back : Color_Number := Default_Color) + is + function C_Assume_Default_Colors (Fore : C_Int; + Back : C_Int) return C_Int; + pragma Import (C, C_Assume_Default_Colors, "assume_default_colors"); + + Err : constant C_Int := C_Assume_Default_Colors (C_Int (Fore), + C_Int (Back)); + begin + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Assume_Default_Colors; +------------------------------------------------------------------------------ + function Curses_Version return String + is + function curses_versionC return chars_ptr; + pragma Import (C, curses_versionC, "curses_version"); + Result : constant chars_ptr := curses_versionC; + begin + return Fill_String (Result); + end Curses_Version; +------------------------------------------------------------------------------ + procedure Curses_Free_All is + procedure curses_freeall; + pragma Import (C, curses_freeall, "_nc_freeall"); + begin + -- Use this only for testing: you cannot use curses after calling it, + -- so it has to be the "last" thing done before exiting the program. + -- This will not really free ALL of memory used by curses. That is + -- because it cannot free the memory used for stdout's setbuf. The + -- _nc_free_and_exit() procedure can do that, but it can be invoked + -- safely only from C - and again, that only as the "last" thing done + -- before exiting the program. + curses_freeall; + end Curses_Free_All; +------------------------------------------------------------------------------ + function Use_Extended_Names (Enable : Boolean) return Boolean + is + function use_extended_namesC (e : Curses_Bool) return C_Int; + pragma Import (C, use_extended_namesC, "use_extended_names"); + + Res : constant C_Int := + use_extended_namesC (Curses_Bool (Boolean'Pos (Enable))); + begin + if Res = C_Int (Curses_Bool_False) then + return False; + else + return True; + end if; + end Use_Extended_Names; +------------------------------------------------------------------------------ + procedure Screen_Dump_To_File (Filename : in String) + is + function scr_dump (f : char_array) return C_Int; + pragma Import (C, scr_dump, "scr_dump"); + Txt : char_array (0 .. Filename'Length); + Length : size_t; + begin + To_C (Filename, Txt, Length); + if Curses_Err = scr_dump (Txt) then + raise Curses_Exception; + end if; + end Screen_Dump_To_File; + + procedure Screen_Restore_From_File (Filename : in String) + is + function scr_restore (f : char_array) return C_Int; + pragma Import (C, scr_restore, "scr_restore"); + Txt : char_array (0 .. Filename'Length); + Length : size_t; + begin + To_C (Filename, Txt, Length); + if Curses_Err = scr_restore (Txt) then + raise Curses_Exception; + end if; + end Screen_Restore_From_File; + + procedure Screen_Init_From_File (Filename : in String) + is + function scr_init (f : char_array) return C_Int; + pragma Import (C, scr_init, "scr_init"); + Txt : char_array (0 .. Filename'Length); + Length : size_t; + begin + To_C (Filename, Txt, Length); + if Curses_Err = scr_init (Txt) then + raise Curses_Exception; + end if; + end Screen_Init_From_File; + + procedure Screen_Set_File (Filename : in String) + is + function scr_set (f : char_array) return C_Int; + pragma Import (C, scr_set, "scr_set"); + Txt : char_array (0 .. Filename'Length); + Length : size_t; + begin + To_C (Filename, Txt, Length); + if Curses_Err = scr_set (Txt) then + raise Curses_Exception; + end if; + end Screen_Set_File; +------------------------------------------------------------------------------ + procedure Resize (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count) is + function wresize (win : Window; + lines : C_Int; + columns : C_Int) return C_Int; + pragma Import (C, wresize); + begin + if wresize (Win, + C_Int (Number_Of_Lines), + C_Int (Number_Of_Columns)) = Curses_Err then + raise Curses_Exception; + end if; + end Resize; +------------------------------------------------------------------------------ + +end Terminal_Interface.Curses; diff --git a/ncurses/Ada95/gen/terminal_interface-curses.ads.m4 b/ncurses/Ada95/gen/terminal_interface-curses.ads.m4 new file mode 100644 index 0000000..4abc55e --- /dev/null +++ b/ncurses/Ada95/gen/terminal_interface-curses.ads.m4 @@ -0,0 +1,1559 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses__ads.htm')dnl +include(M4MACRO)------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.41 $ +-- $Date: 2007/05/05 20:33:52 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +include(`Base_Defs') +with System.Storage_Elements; +with Interfaces.C; -- We need this for some assertions. + +package Terminal_Interface.Curses is + pragma Preelaborate (Terminal_Interface.Curses); +include(`Linker_Options') +include(`Version_Info') + type Window is private; + Null_Window : constant Window; + + type Line_Position is new Natural; -- line coordinate + type Column_Position is new Natural; -- column coordinate + + subtype Line_Count is Line_Position range 1 .. Line_Position'Last; + -- Type to count lines. We do not allow null windows, so must be positive + subtype Column_Count is Column_Position range 1 .. Column_Position'Last; + -- Type to count columns. We do not allow null windows, so must be positive + + type Key_Code is new Integer; + -- That is anything including real characters, special keys and logical + -- request codes. + + -- FIXME: The "-1" should be Curses_Err + subtype Real_Key_Code is Key_Code range -1 .. M4_KEY_MAX; + -- This are the codes that potentially represent a real keystroke. + -- Not all codes may be possible on a specific terminal. To check the + -- availability of a special key, the Has_Key function is provided. + + subtype Special_Key_Code is Real_Key_Code + range M4_SPECIAL_FIRST .. Real_Key_Code'Last; + -- Type for a function- or special key number + + subtype Normal_Key_Code is Real_Key_Code range + Character'Pos (Character'First) .. Character'Pos (Character'Last); + -- This are the codes for regular (incl. non-graphical) characters. + + -- Constants for function- and special keys + -- + Key_None : constant Special_Key_Code := M4_SPECIAL_FIRST; +include(`Key_Definitions') + Key_Max : constant Special_Key_Code + := Special_Key_Code'Last; + + subtype User_Key_Code is Key_Code + range (Key_Max + 129) .. Key_Code'Last; + -- This is reserved for user defined key codes. The range between Key_Max + -- and the first user code is reserved for subsystems like menu and forms. + + -- For those who like to use the original key names we produce them were + -- they differ from the original. Please note that they may differ in + -- lower/upper case. +include(`Old_Keys')dnl + +------------------------------------------------------------------------------ + + type Color_Number is range -1 .. Integer (Interfaces.C.short'Last); + for Color_Number'Size use Interfaces.C.short'Size; + -- (n)curses uses a short for the color index + -- The model is, that a Color_Number is an index into an array of + -- (potentially) definable colors. Some of those indices are + -- predefined (see below), although they may not really exist. + +include(`Color_Defs') + type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last); + for RGB_Value'Size use Interfaces.C.short'Size; + -- Some system may allow to redefine a color by setting RGB values. + + type Color_Pair is range 0 .. 255; + for Color_Pair'Size use 8; + subtype Redefinable_Color_Pair is Color_Pair range 1 .. 255; + -- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0 + -- is fixed (Black & White). A color pair is simply a combination of + -- two colors described by Color_Numbers, one for the foreground and + -- the other for the background + +include(`Character_Attribute_Set_Rep') + -- (n)curses uses all but the lowest 16 Bits for Attributes. + + Normal_Video : constant Character_Attribute_Set := (others => False); + + type Attributed_Character is + record + Attr : Character_Attribute_Set; + Color : Color_Pair; + Ch : Character; + end record; + pragma Convention (C, Attributed_Character); + -- This is the counterpart for the chtype in C. + +include(`AC_Rep') + Default_Character : constant Attributed_Character + := (Ch => Character'First, + Color => Color_Pair'First, + Attr => (others => False)); -- preelaboratable Normal_Video + + type Attributed_String is array (Positive range <>) of Attributed_Character; + pragma Pack (Attributed_String); + -- In this binding we allow strings of attributed characters. + + ------------------ + -- Exceptions -- + ------------------ + Curses_Exception : exception; + Wrong_Curses_Version : exception; + + -- Those exceptions are raised by the ETI (Extended Terminal Interface) + -- subpackets for Menu and Forms handling. + -- + Eti_System_Error : exception; + Eti_Bad_Argument : exception; + Eti_Posted : exception; + Eti_Connected : exception; + Eti_Bad_State : exception; + Eti_No_Room : exception; + Eti_Not_Posted : exception; + Eti_Unknown_Command : exception; + Eti_No_Match : exception; + Eti_Not_Selectable : exception; + Eti_Not_Connected : exception; + Eti_Request_Denied : exception; + Eti_Invalid_Field : exception; + Eti_Current : exception; + + -------------------------------------------------------------------------- + -- External C variables + -- Conceptually even in C this are kind of constants, but they are + -- initialized and sometimes changed by the library routines at runtime + -- depending on the type of terminal. I believe the best way to model + -- this is to use functions. + -------------------------------------------------------------------------- + + function Lines return Line_Count; + pragma Inline (Lines); + + function Columns return Column_Count; + pragma Inline (Columns); + + function Tab_Size return Natural; + pragma Inline (Tab_Size); + + function Number_Of_Colors return Natural; + pragma Inline (Number_Of_Colors); + + function Number_Of_Color_Pairs return Natural; + pragma Inline (Number_Of_Color_Pairs); + +include(`ACS_Map')dnl + + -- MANPAGE(`curs_initscr.3x') + -- | Not implemented: newterm, set_term, delscreen + + -- ANCHOR(`stdscr',`Standard_Window') + function Standard_Window return Window; + -- AKA + pragma Inline (Standard_Window); + + -- ANCHOR(`curscr',`Current_Window') + function Current_Window return Window; + -- AKA + pragma Inline (Current_Window); + + -- ANCHOR(`initscr()',`Init_Screen') + procedure Init_Screen; + + -- ANCHOR(`initscr()',`Init_Windows') + procedure Init_Windows renames Init_Screen; + -- AKA + pragma Inline (Init_Screen); + -- pragma Inline (Init_Windows); + + -- ANCHOR(`endwin()',`End_Windows') + procedure End_Windows; + -- AKA + procedure End_Screen renames End_Windows; + pragma Inline (End_Windows); + -- pragma Inline (End_Screen); + + -- ANCHOR(`isendwin()',`Is_End_Window') + function Is_End_Window return Boolean; + -- AKA + pragma Inline (Is_End_Window); + + -- MANPAGE(`curs_move.3x') + + -- ANCHOR(`wmove()',`Move_Cursor') + procedure Move_Cursor (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position); + -- AKA + -- ALIAS(`move()') + pragma Inline (Move_Cursor); + + -- MANPAGE(`curs_addch.3x') + + -- ANCHOR(`waddch()',`Add') + procedure Add (Win : in Window := Standard_Window; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`addch()') + + procedure Add (Win : in Window := Standard_Window; + Ch : in Character); + -- Add a single character at the current logical cursor position to + -- the window. Use the current windows attributes. + + -- ANCHOR(`mvwaddch()',`Add') + procedure Add + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`mvaddch()') + + procedure Add + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Ch : in Character); + -- Move to the position and add a single character into the window + -- There are more Add routines, so the Inline pragma follows later + + -- ANCHOR(`wechochar()',`Add_With_Immediate_Echo') + procedure Add_With_Immediate_Echo + (Win : in Window := Standard_Window; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`echochar()') + + procedure Add_With_Immediate_Echo + (Win : in Window := Standard_Window; + Ch : in Character); + -- Add a character and do an immediate refresh of the screen. + pragma Inline (Add_With_Immediate_Echo); + + -- MANPAGE(`curs_window.3x') + -- Not Implemented: wcursyncup + + -- ANCHOR(`newwin()',`Create') + function Create + (Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- Not Implemented: Default Number_Of_Lines, Number_Of_Columns + -- the C version lets them be 0, see the man page. + -- AKA + pragma Inline (Create); + + function New_Window + (Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window + renames Create; + -- pragma Inline (New_Window); + + -- ANCHOR(`delwin()',`Delete') + procedure Delete (Win : in out Window); + -- AKA + -- Reset Win to Null_Window + pragma Inline (Delete); + + -- ANCHOR(`subwin()',`Sub_Window') + function Sub_Window + (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- AKA + pragma Inline (Sub_Window); + + -- ANCHOR(`derwin()',`Derived_Window') + function Derived_Window + (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- AKA + pragma Inline (Derived_Window); + + -- ANCHOR(`dupwin()',`Duplicate') + function Duplicate (Win : Window) return Window; + -- AKA + pragma Inline (Duplicate); + + -- ANCHOR(`mvwin()',`Move_Window') + procedure Move_Window (Win : in Window; + Line : in Line_Position; + Column : in Column_Position); + -- AKA + pragma Inline (Move_Window); + + -- ANCHOR(`mvderwin()',`Move_Derived_Window') + procedure Move_Derived_Window (Win : in Window; + Line : in Line_Position; + Column : in Column_Position); + -- AKA + pragma Inline (Move_Derived_Window); + + -- ANCHOR(`wsyncup()',`Synchronize_Upwards') + procedure Synchronize_Upwards (Win : in Window); + -- AKA + pragma Import (C, Synchronize_Upwards, "wsyncup"); + + -- ANCHOR(`wsyncdown()',`Synchronize_Downwards') + procedure Synchronize_Downwards (Win : in Window); + -- AKA + pragma Import (C, Synchronize_Downwards, "wsyncdown"); + + -- ANCHOR(`syncok()',`Set_Synch_Mode') + procedure Set_Synch_Mode (Win : in Window := Standard_Window; + Mode : in Boolean := False); + -- AKA + pragma Inline (Set_Synch_Mode); + + -- MANPAGE(`curs_addstr.3x') + + -- ANCHOR(`waddnstr()',`Add') + procedure Add (Win : in Window := Standard_Window; + Str : in String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`waddstr()') + -- ALIAS(`addnstr()') + -- ALIAS(`addstr()') + + -- ANCHOR(`mvwaddnstr()',`Add') + procedure Add (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : in String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`mvwaddstr()') + -- ALIAS(`mvaddnstr()') + -- ALIAS(`mvaddstr()') + + -- MANPAGE(`curs_addchstr.3x') + + -- ANCHOR(`waddchnstr()',`Add') + procedure Add (Win : in Window := Standard_Window; + Str : in Attributed_String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`waddchstr()') + -- ALIAS(`addchnstr()') + -- ALIAS(`addchstr()') + + -- ANCHOR(`mvwaddchnstr()',`Add') + procedure Add (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : in Attributed_String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`mvwaddchstr()') + -- ALIAS(`mvaddchnstr()') + -- ALIAS(`mvaddchstr()') + pragma Inline (Add); + + -- MANPAGE(`curs_border.3x') + -- | Not implemented: mvhline, mvwhline, mvvline, mvwvline + -- | use Move_Cursor then Horizontal_Line or Vertical_Line + + -- ANCHOR(`wborder()',`Border') + procedure Border + (Win : in Window := Standard_Window; + Left_Side_Symbol : in Attributed_Character := Default_Character; + Right_Side_Symbol : in Attributed_Character := Default_Character; + Top_Side_Symbol : in Attributed_Character := Default_Character; + Bottom_Side_Symbol : in Attributed_Character := Default_Character; + Upper_Left_Corner_Symbol : in Attributed_Character := Default_Character; + Upper_Right_Corner_Symbol : in Attributed_Character := Default_Character; + Lower_Left_Corner_Symbol : in Attributed_Character := Default_Character; + Lower_Right_Corner_Symbol : in Attributed_Character := Default_Character + ); + -- AKA + -- ALIAS(`border()') + pragma Inline (Border); + + -- ANCHOR(`box()',`Box') + procedure Box + (Win : in Window := Standard_Window; + Vertical_Symbol : in Attributed_Character := Default_Character; + Horizontal_Symbol : in Attributed_Character := Default_Character); + -- AKA + pragma Inline (Box); + + -- ANCHOR(`whline()',`Horizontal_Line') + procedure Horizontal_Line + (Win : in Window := Standard_Window; + Line_Size : in Natural; + Line_Symbol : in Attributed_Character := Default_Character); + -- AKA + -- ALIAS(`hline()') + pragma Inline (Horizontal_Line); + + -- ANCHOR(`wvline()',`Vertical_Line') + procedure Vertical_Line + (Win : in Window := Standard_Window; + Line_Size : in Natural; + Line_Symbol : in Attributed_Character := Default_Character); + -- AKA + -- ALIAS(`vline()') + pragma Inline (Vertical_Line); + + -- MANPAGE(`curs_getch.3x') + -- Not implemented: mvgetch, mvwgetch + + -- ANCHOR(`wgetch()',`Get_Keystroke') + function Get_Keystroke (Win : Window := Standard_Window) + return Real_Key_Code; + -- AKA + -- ALIAS(`getch()') + -- Get a character from the keyboard and echo it - if enabled - to the + -- window. + -- If for any reason (i.e. a timeout) we couldn't get a character the + -- returned keycode is Key_None. + pragma Inline (Get_Keystroke); + + -- ANCHOR(`ungetch()',`Undo_Keystroke') + procedure Undo_Keystroke (Key : in Real_Key_Code); + -- AKA + pragma Inline (Undo_Keystroke); + + -- ANCHOR(`has_key()',`Has_Key') + function Has_Key (Key : Special_Key_Code) return Boolean; + -- AKA + pragma Inline (Has_Key); + + -- | + -- | Some helper functions + -- | + function Is_Function_Key (Key : Special_Key_Code) return Boolean; + -- Return True if the Key is a function key (i.e. one of F0 .. F63) + pragma Inline (Is_Function_Key); + + subtype Function_Key_Number is Integer range 0 .. 63; + -- (n)curses allows for 64 function keys. + + function Function_Key (Key : Real_Key_Code) return Function_Key_Number; + -- Return the number of the function key. If the code is not a + -- function key, a CONSTRAINT_ERROR will be raised. + pragma Inline (Function_Key); + + function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code; + -- Return the key code for a given function-key number. + pragma Inline (Function_Key_Code); + + -- MANPAGE(`curs_attr.3x') + -- | Not implemented attr_off, wattr_off, + -- | attr_on, wattr_on, attr_set, wattr_set + + -- PAIR_NUMBER + -- PAIR_NUMBER(c) is the same as c.Color + + -- ANCHOR(`standout()',`Standout') + procedure Standout (Win : Window := Standard_Window; + On : Boolean := True); + -- ALIAS(`wstandout()') + -- ALIAS(`wstandend()') + + -- ANCHOR(`wattron()',`Switch_Character_Attribute') + procedure Switch_Character_Attribute + (Win : in Window := Standard_Window; + Attr : in Character_Attribute_Set := Normal_Video; + On : in Boolean := True); -- if False we switch Off. + -- Switches those Attributes set to true in the list. + -- AKA + -- ALIAS(`wattroff()') + -- ALIAS(`attron()') + -- ALIAS(`attroff()') + + -- ANCHOR(`wattrset()',`Set_Character_Attributes') + procedure Set_Character_Attributes + (Win : in Window := Standard_Window; + Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + -- ALIAS(`attrset()') + pragma Inline (Set_Character_Attributes); + + -- ANCHOR(`wattr_get()',`Get_Character_Attributes') + function Get_Character_Attribute + (Win : in Window := Standard_Window) return Character_Attribute_Set; + -- AKA + -- ALIAS(`attr_get()') + + -- ANCHOR(`wattr_get()',`Get_Character_Attribute') + function Get_Character_Attribute + (Win : in Window := Standard_Window) return Color_Pair; + -- AKA + pragma Inline (Get_Character_Attribute); + + -- ANCHOR(`wcolor_set()',`Set_Color') + procedure Set_Color (Win : in Window := Standard_Window; + Pair : in Color_Pair); + -- AKA + -- ALIAS(`color_set()') + pragma Inline (Set_Color); + + -- ANCHOR(`wchgat()',`Change_Attributes') + procedure Change_Attributes + (Win : in Window := Standard_Window; + Count : in Integer := -1; + Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + -- ALIAS(`chgat()') + + -- ANCHOR(`mvwchgat()',`Change_Attributes') + procedure Change_Attributes + (Win : in Window := Standard_Window; + Line : in Line_Position := Line_Position'First; + Column : in Column_Position := Column_Position'First; + Count : in Integer := -1; + Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + -- ALIAS(`mvchgat()') + pragma Inline (Change_Attributes); + + -- MANPAGE(`curs_beep.3x') + + -- ANCHOR(`beep()',`Beep') + procedure Beep; + -- AKA + pragma Inline (Beep); + + -- ANCHOR(`flash()',`Flash_Screen') + procedure Flash_Screen; + -- AKA + pragma Inline (Flash_Screen); + + -- MANPAGE(`curs_inopts.3x') + + -- | Not implemented : typeahead + -- + -- ANCHOR(`cbreak()',`Set_Cbreak_Mode') + procedure Set_Cbreak_Mode (SwitchOn : in Boolean := True); + -- AKA + -- ALIAS(`nocbreak()') + pragma Inline (Set_Cbreak_Mode); + + -- ANCHOR(`raw()',`Set_Raw_Mode') + procedure Set_Raw_Mode (SwitchOn : in Boolean := True); + -- AKA + -- ALIAS(`noraw()') + pragma Inline (Set_Raw_Mode); + + -- ANCHOR(`echo()',`Set_Echo_Mode') + procedure Set_Echo_Mode (SwitchOn : in Boolean := True); + -- AKA + -- ALIAS(`noecho()') + pragma Inline (Set_Echo_Mode); + + -- ANCHOR(`meta()',`Set_Meta_Mode') + procedure Set_Meta_Mode (Win : in Window := Standard_Window; + SwitchOn : in Boolean := True); + -- AKA + pragma Inline (Set_Meta_Mode); + + -- ANCHOR(`keypad()',`Set_KeyPad_Mode') + procedure Set_KeyPad_Mode (Win : in Window := Standard_Window; + SwitchOn : in Boolean := True); + -- AKA + pragma Inline (Set_KeyPad_Mode); + + function Get_KeyPad_Mode (Win : in Window := Standard_Window) + return Boolean; + -- This has no pendant in C. There you've to look into the WINDOWS + -- structure to get the value. Bad practice, not repeated in Ada. + + type Half_Delay_Amount is range 1 .. 255; + + -- ANCHOR(`halfdelay()',`Half_Delay') + procedure Half_Delay (Amount : in Half_Delay_Amount); + -- AKA + pragma Inline (Half_Delay); + + -- ANCHOR(`intrflush()',`Set_Flush_On_Interrupt_Mode') + procedure Set_Flush_On_Interrupt_Mode + (Win : in Window := Standard_Window; + Mode : in Boolean := True); + -- AKA + pragma Inline (Set_Flush_On_Interrupt_Mode); + + -- ANCHOR(`qiflush()',`Set_Queue_Interrupt_Mode') + procedure Set_Queue_Interrupt_Mode + (Win : in Window := Standard_Window; + Flush : in Boolean := True); + -- AKA + -- ALIAS(`noqiflush()') + pragma Inline (Set_Queue_Interrupt_Mode); + + -- ANCHOR(`nodelay()',`Set_NoDelay_Mode') + procedure Set_NoDelay_Mode + (Win : in Window := Standard_Window; + Mode : in Boolean := False); + -- AKA + pragma Inline (Set_NoDelay_Mode); + + type Timeout_Mode is (Blocking, Non_Blocking, Delayed); + + -- ANCHOR(`wtimeout()',`Set_Timeout_Mode') + procedure Set_Timeout_Mode (Win : in Window := Standard_Window; + Mode : in Timeout_Mode; + Amount : in Natural); -- in Milliseconds + -- AKA + -- ALIAS(`timeout()') + -- Instead of overloading the semantic of the sign of amount, we + -- introduce the Timeout_Mode parameter. This should improve + -- readability. For Blocking and Non_Blocking, the Amount is not + -- evaluated. + -- We don't inline this procedure. + + -- ANCHOR(`notimeout()',`Set_Escape_Time_Mode') + procedure Set_Escape_Timer_Mode + (Win : in Window := Standard_Window; + Timer_Off : in Boolean := False); + -- AKA + pragma Inline (Set_Escape_Timer_Mode); + + -- MANPAGE(`curs_outopts.3x') + + -- ANCHOR(`nl()',`Set_NL_Mode') + procedure Set_NL_Mode (SwitchOn : in Boolean := True); + -- AKA + -- ALIAS(`nonl()') + pragma Inline (Set_NL_Mode); + + -- ANCHOR(`clearok()',`Clear_On_Next_Update') + procedure Clear_On_Next_Update + (Win : in Window := Standard_Window; + Do_Clear : in Boolean := True); + -- AKA + pragma Inline (Clear_On_Next_Update); + + -- ANCHOR(`idlok()',`Use_Insert_Delete_Line') + procedure Use_Insert_Delete_Line + (Win : in Window := Standard_Window; + Do_Idl : in Boolean := True); + -- AKA + pragma Inline (Use_Insert_Delete_Line); + + -- ANCHOR(`idcok()',`Use_Insert_Delete_Character') + procedure Use_Insert_Delete_Character + (Win : in Window := Standard_Window; + Do_Idc : in Boolean := True); + -- AKA + pragma Inline (Use_Insert_Delete_Character); + + -- ANCHOR(`leaveok()',`Leave_Cursor_After_Update') + procedure Leave_Cursor_After_Update + (Win : in Window := Standard_Window; + Do_Leave : in Boolean := True); + -- AKA + pragma Inline (Leave_Cursor_After_Update); + + -- ANCHOR(`immedok()',`Immediate_Update_Mode') + procedure Immediate_Update_Mode + (Win : in Window := Standard_Window; + Mode : in Boolean := False); + -- AKA + pragma Inline (Immediate_Update_Mode); + + -- ANCHOR(`scrollok()',`Allow_Scrolling') + procedure Allow_Scrolling + (Win : in Window := Standard_Window; + Mode : in Boolean := False); + -- AKA + pragma Inline (Allow_Scrolling); + + function Scrolling_Allowed (Win : Window := Standard_Window) return Boolean; + -- There is no such function in the C interface. + pragma Inline (Scrolling_Allowed); + + -- ANCHOR(`wsetscrreg()',`Set_Scroll_Region') + procedure Set_Scroll_Region + (Win : in Window := Standard_Window; + Top_Line : in Line_Position; + Bottom_Line : in Line_Position); + -- AKA + -- ALIAS(`setscrreg()') + pragma Inline (Set_Scroll_Region); + + -- MANPAGE(`curs_refresh.3x') + + -- ANCHOR(`doupdate()',`Update_Screen') + procedure Update_Screen; + -- AKA + pragma Inline (Update_Screen); + + -- ANCHOR(`wrefresh()',`Refresh') + procedure Refresh (Win : in Window := Standard_Window); + -- AKA + -- There is an overloaded Refresh for Pads. + -- The Inline pragma appears there + -- ALIAS(`refresh()') + + -- ANCHOR(`wnoutrefresh()',`Refresh_Without_Update') + procedure Refresh_Without_Update + (Win : in Window := Standard_Window); + -- AKA + -- There is an overloaded Refresh_Without_Update for Pads. + -- The Inline pragma appears there + + -- ANCHOR(`redrawwin()',`Redraw') + procedure Redraw (Win : in Window := Standard_Window); + -- AKA + + -- ANCHOR(`wredrawln()',`Redraw') + procedure Redraw (Win : in Window := Standard_Window; + Begin_Line : in Line_Position; + Line_Count : in Positive); + -- AKA + pragma Inline (Redraw); + + -- MANPAGE(`curs_clear.3x') + + -- ANCHOR(`werase()',`Erase') + procedure Erase (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`erase()') + pragma Inline (Erase); + + -- ANCHOR(`wclear()',`Clear') + procedure Clear + (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`clear()') + pragma Inline (Clear); + + -- ANCHOR(`wclrtobot()',`Clear_To_End_Of_Screen') + procedure Clear_To_End_Of_Screen + (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`clrtobot()') + pragma Inline (Clear_To_End_Of_Screen); + + -- ANCHOR(`wclrtoeol()',`Clear_To_End_Of_Line') + procedure Clear_To_End_Of_Line + (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`clrtoeol()') + pragma Inline (Clear_To_End_Of_Line); + + -- MANPAGE(`curs_bkgd.3x') + + -- ANCHOR(`wbkgdset()',`Set_Background') + -- TODO: we could have Set_Background(Window; Character_Attribute_Set) + -- because in C it is common to see bkgdset(A_BOLD) or + -- bkgdset(COLOR_PAIR(n)) + procedure Set_Background + (Win : in Window := Standard_Window; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`bkgdset()') + pragma Inline (Set_Background); + + -- ANCHOR(`wbkgd()',`Change_Background') + procedure Change_Background + (Win : in Window := Standard_Window; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`bkgd()') + pragma Inline (Change_Background); + + -- ANCHOR(`wbkgdget()',`Get_Background') + -- ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough. + function Get_Background (Win : Window := Standard_Window) + return Attributed_Character; + -- AKA + -- ALIAS(`bkgdget()') + pragma Inline (Get_Background); + + -- MANPAGE(`curs_touch.3x') + + -- ANCHOR(`untouchwin()',`Untouch') + procedure Untouch (Win : in Window := Standard_Window); + -- AKA + pragma Inline (Untouch); + + -- ANCHOR(`touchwin()',`Touch') + procedure Touch (Win : in Window := Standard_Window); + -- AKA + + -- ANCHOR(`touchline()',`Touch') + procedure Touch (Win : in Window := Standard_Window; + Start : in Line_Position; + Count : in Positive); + -- AKA + pragma Inline (Touch); + + -- ANCHOR(`wtouchln()',`Change_Line_Status') + procedure Change_Lines_Status (Win : in Window := Standard_Window; + Start : in Line_Position; + Count : in Positive; + State : in Boolean); + -- AKA + pragma Inline (Change_Lines_Status); + + -- ANCHOR(`is_linetouched()',`Is_Touched') + function Is_Touched (Win : Window := Standard_Window; + Line : Line_Position) return Boolean; + -- AKA + + -- ANCHOR(`is_wintouched()',`Is_Touched') + function Is_Touched (Win : Window := Standard_Window) return Boolean; + -- AKA + pragma Inline (Is_Touched); + + -- MANPAGE(`curs_overlay.3x') + + -- ANCHOR(`copywin()',`Copy') + procedure Copy + (Source_Window : in Window; + Destination_Window : in Window; + Source_Top_Row : in Line_Position; + Source_Left_Column : in Column_Position; + Destination_Top_Row : in Line_Position; + Destination_Left_Column : in Column_Position; + Destination_Bottom_Row : in Line_Position; + Destination_Right_Column : in Column_Position; + Non_Destructive_Mode : in Boolean := True); + -- AKA + pragma Inline (Copy); + + -- ANCHOR(`overwrite()',`Overwrite') + procedure Overwrite (Source_Window : in Window; + Destination_Window : in Window); + -- AKA + pragma Inline (Overwrite); + + -- ANCHOR(`overlay()',`Overlay') + procedure Overlay (Source_Window : in Window; + Destination_Window : in Window); + -- AKA + pragma Inline (Overlay); + + -- MANPAGE(`curs_deleteln.3x') + + -- ANCHOR(`winsdelln()',`Insert_Delete_Lines') + procedure Insert_Delete_Lines + (Win : in Window := Standard_Window; + Lines : in Integer := 1); -- default is to insert one line above + -- AKA + -- ALIAS(`insdelln()') + pragma Inline (Insert_Delete_Lines); + + -- ANCHOR(`wdeleteln()',`Delete_Line') + procedure Delete_Line (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`deleteln()') + pragma Inline (Delete_Line); + + -- ANCHOR(`winsertln()',`Insert_Line') + procedure Insert_Line (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`insertln()') + pragma Inline (Insert_Line); + + -- MANPAGE(`curs_getyx.3x') + + -- ANCHOR(`getmaxyx()',`Get_Size') + procedure Get_Size + (Win : in Window := Standard_Window; + Number_Of_Lines : out Line_Count; + Number_Of_Columns : out Column_Count); + -- AKA + pragma Inline (Get_Size); + + -- ANCHOR(`getbegyx()',`Get_Window_Position') + procedure Get_Window_Position + (Win : in Window := Standard_Window; + Top_Left_Line : out Line_Position; + Top_Left_Column : out Column_Position); + -- AKA + pragma Inline (Get_Window_Position); + + -- ANCHOR(`getyx()',`Get_Cursor_Position') + procedure Get_Cursor_Position + (Win : in Window := Standard_Window; + Line : out Line_Position; + Column : out Column_Position); + -- AKA + pragma Inline (Get_Cursor_Position); + + -- ANCHOR(`getparyx()',`Get_Origin_Relative_To_Parent') + procedure Get_Origin_Relative_To_Parent + (Win : in Window; + Top_Left_Line : out Line_Position; + Top_Left_Column : out Column_Position; + Is_Not_A_Subwindow : out Boolean); + -- AKA + -- Instead of placing -1 in the coordinates as return, we use a boolean + -- to return the info that the window has no parent. + pragma Inline (Get_Origin_Relative_To_Parent); + + -- MANPAGE(`curs_pad.3x') + + -- ANCHOR(`newpad()',`New_Pad') + function New_Pad (Lines : Line_Count; + Columns : Column_Count) return Window; + -- AKA + pragma Inline (New_Pad); + + -- ANCHOR(`subpad()',`Sub_Pad') + function Sub_Pad + (Pad : Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- AKA + pragma Inline (Sub_Pad); + + -- ANCHOR(`prefresh()',`Refresh') + procedure Refresh + (Pad : in Window; + Source_Top_Row : in Line_Position; + Source_Left_Column : in Column_Position; + Destination_Top_Row : in Line_Position; + Destination_Left_Column : in Column_Position; + Destination_Bottom_Row : in Line_Position; + Destination_Right_Column : in Column_Position); + -- AKA + pragma Inline (Refresh); + + -- ANCHOR(`pnoutrefresh()',`Refresh_Without_Update') + procedure Refresh_Without_Update + (Pad : in Window; + Source_Top_Row : in Line_Position; + Source_Left_Column : in Column_Position; + Destination_Top_Row : in Line_Position; + Destination_Left_Column : in Column_Position; + Destination_Bottom_Row : in Line_Position; + Destination_Right_Column : in Column_Position); + -- AKA + pragma Inline (Refresh_Without_Update); + + -- ANCHOR(`pechochar()',`Add_Character_To_Pad_And_Echo_It') + procedure Add_Character_To_Pad_And_Echo_It + (Pad : in Window; + Ch : in Attributed_Character); + -- AKA + + procedure Add_Character_To_Pad_And_Echo_It + (Pad : in Window; + Ch : in Character); + pragma Inline (Add_Character_To_Pad_And_Echo_It); + + -- MANPAGE(`curs_scroll.3x') + + -- ANCHOR(`wscrl()',`Scroll') + procedure Scroll (Win : in Window := Standard_Window; + Amount : in Integer := 1); + -- AKA + -- ALIAS(`scroll()') + -- ALIAS(`scrl()') + pragma Inline (Scroll); + + -- MANPAGE(`curs_delch.3x') + + -- ANCHOR(`wdelch()',`Delete_Character') + procedure Delete_Character (Win : in Window := Standard_Window); + -- AKA + -- ALIAS(`delch()') + + -- ANCHOR(`mvwdelch()',`Delete_Character') + procedure Delete_Character + (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position); + -- AKA + -- ALIAS(`mvdelch()') + pragma Inline (Delete_Character); + + -- MANPAGE(`curs_inch.3x') + + -- ANCHOR(`winch()',`Peek') + function Peek (Win : Window := Standard_Window) + return Attributed_Character; + -- ALIAS(`inch()') + -- AKA + + -- ANCHOR(`mvwinch()',`Peek') + function Peek + (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position) return Attributed_Character; + -- AKA + -- ALIAS(`mvinch()') + -- More Peek's follow, pragma Inline appears later. + + -- MANPAGE(`curs_insch.3x') + + -- ANCHOR(`winsch()',`Insert') + procedure Insert (Win : in Window := Standard_Window; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`insch()') + + -- ANCHOR(`mvwinsch()',`Insert') + procedure Insert (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Ch : in Attributed_Character); + -- AKA + -- ALIAS(`mvinsch()') + + -- MANPAGE(`curs_insstr.3x') + + -- ANCHOR(`winsnstr()',`Insert') + procedure Insert (Win : in Window := Standard_Window; + Str : in String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`winsstr()') + -- ALIAS(`insnstr()') + -- ALIAS(`insstr()') + + -- ANCHOR(`mvwinsnstr()',`Insert') + procedure Insert (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : in String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`mvwinsstr()') + -- ALIAS(`mvinsnstr()') + -- ALIAS(`mvinsstr()') + pragma Inline (Insert); + + -- MANPAGE(`curs_instr.3x') + + -- ANCHOR(`winnstr()',`Peek') + procedure Peek (Win : in Window := Standard_Window; + Str : out String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`winstr()') + -- ALIAS(`innstr()') + -- ALIAS(`instr()') + + -- ANCHOR(`mvwinnstr()',`Peek') + procedure Peek (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : out String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`mvwinstr()') + -- ALIAS(`mvinnstr()') + -- ALIAS(`mvinstr()') + + -- MANPAGE(`curs_inchstr.3x') + + -- ANCHOR(`winchnstr()',`Peek') + procedure Peek (Win : in Window := Standard_Window; + Str : out Attributed_String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`winchstr()') + -- ALIAS(`inchnstr()') + -- ALIAS(`inchstr()') + + -- ANCHOR(`mvwinchnstr()',`Peek') + procedure Peek (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : out Attributed_String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`mvwinchstr()') + -- ALIAS(`mvinchnstr()') + -- ALIAS(`mvinchstr()') + -- We don't inline the Peek procedures + + -- MANPAGE(`curs_getstr.3x') + + -- ANCHOR(`wgetnstr()',`Get') + procedure Get (Win : in Window := Standard_Window; + Str : out String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`wgetstr()') + -- ALIAS(`getnstr()') + -- ALIAS(`getstr()') + -- actually getstr is not supported because that results in buffer + -- overflows. + + -- ANCHOR(`mvwgetnstr()',`Get') + procedure Get (Win : in Window := Standard_Window; + Line : in Line_Position; + Column : in Column_Position; + Str : out String; + Len : in Integer := -1); + -- AKA + -- ALIAS(`mvwgetstr()') + -- ALIAS(`mvgetnstr()') + -- ALIAS(`mvgetstr()') + -- Get is not inlined + + -- MANPAGE(`curs_slk.3x') + + -- Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set + + type Soft_Label_Key_Format is (Three_Two_Three, + Four_Four, + PC_Style, -- ncurses specific + PC_Style_With_Index); -- " + type Label_Number is new Positive range 1 .. 12; + type Label_Justification is (Left, Centered, Right); + + -- ANCHOR(`slk_init()',`Init_Soft_Label_Keys') + procedure Init_Soft_Label_Keys + (Format : in Soft_Label_Key_Format := Three_Two_Three); + -- AKA + pragma Inline (Init_Soft_Label_Keys); + + -- ANCHOR(`slk_set()',`Set_Soft_Label_Key') + procedure Set_Soft_Label_Key (Label : in Label_Number; + Text : in String; + Fmt : in Label_Justification := Left); + -- AKA + -- We don't inline this procedure + + -- ANCHOR(`slk_refresh()',`Refresh_Soft_Label_Key') + procedure Refresh_Soft_Label_Keys; + -- AKA + pragma Inline (Refresh_Soft_Label_Keys); + + -- ANCHOR(`slk_noutrefresh()',`Refresh_Soft_Label_Keys_Without_Update') + procedure Refresh_Soft_Label_Keys_Without_Update; + -- AKA + pragma Inline (Refresh_Soft_Label_Keys_Without_Update); + + -- ANCHOR(`slk_label()',`Get_Soft_Label_Key') + procedure Get_Soft_Label_Key (Label : in Label_Number; + Text : out String); + -- AKA + + -- ANCHOR(`slk_label()',`Get_Soft_Label_Key') + function Get_Soft_Label_Key (Label : in Label_Number) return String; + -- AKA + -- Same as function + pragma Inline (Get_Soft_Label_Key); + + -- ANCHOR(`slk_clear()',`Clear_Soft_Label_Keys') + procedure Clear_Soft_Label_Keys; + -- AKA + pragma Inline (Clear_Soft_Label_Keys); + + -- ANCHOR(`slk_restore()',`Restore_Soft_Label_Keys') + procedure Restore_Soft_Label_Keys; + -- AKA + pragma Inline (Restore_Soft_Label_Keys); + + -- ANCHOR(`slk_touch()',`Touch_Soft_Label_Keys') + procedure Touch_Soft_Label_Keys; + -- AKA + pragma Inline (Touch_Soft_Label_Keys); + + -- ANCHOR(`slk_attron()',`Switch_Soft_Label_Key_Attributes') + procedure Switch_Soft_Label_Key_Attributes + (Attr : in Character_Attribute_Set; + On : in Boolean := True); + -- AKA + -- ALIAS(`slk_attroff()') + pragma Inline (Switch_Soft_Label_Key_Attributes); + + -- ANCHOR(`slk_attrset()',`Set_Soft_Label_Key_Attributes') + procedure Set_Soft_Label_Key_Attributes + (Attr : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Soft_Label_Key_Attributes); + + -- ANCHOR(`slk_attr()',`Get_Soft_Label_Key_Attributes') + function Get_Soft_Label_Key_Attributes return Character_Attribute_Set; + -- AKA + + -- ANCHOR(`slk_attr()',`Get_Soft_Label_Key_Attributes') + function Get_Soft_Label_Key_Attributes return Color_Pair; + -- AKA + pragma Inline (Get_Soft_Label_Key_Attributes); + + -- ANCHOR(`slk_color()',`Set_Soft_Label_Key_Color') + procedure Set_Soft_Label_Key_Color (Pair : in Color_Pair); + -- AKA + pragma Inline (Set_Soft_Label_Key_Color); + + -- MANPAGE(`keybound.3x') + -- Not Implemented: keybound + + -- MANPAGE(`keyok.3x') + + -- ANCHOR(`keyok()',`Enable_Key') + procedure Enable_Key (Key : in Special_Key_Code; + Enable : in Boolean := True); + -- AKA + pragma Inline (Enable_Key); + + -- MANPAGE(`define_key.3x') + + -- ANCHOR(`define_key()',`Define_Key') + procedure Define_Key (Definition : in String; + Key : in Special_Key_Code); + -- AKA + pragma Inline (Define_Key); + + -- MANPAGE(`curs_util.3x') + + -- | Not implemented : filter, use_env + -- | putwin, getwin are in the child package PutWin + -- + + -- ANCHOR(`keyname()',`Key_Name') + procedure Key_Name (Key : in Real_Key_Code; + Name : out String); + -- AKA + -- The external name for a real keystroke. + + -- ANCHOR(`keyname()',`Key_Name') + function Key_Name (Key : in Real_Key_Code) return String; + -- AKA + -- Same as function + -- We don't inline this routine + + -- ANCHOR(`unctrl()',`Un_Control') + procedure Un_Control (Ch : in Attributed_Character; + Str : out String); + -- AKA + + -- ANCHOR(`unctrl()',`Un_Control') + function Un_Control (Ch : in Attributed_Character) return String; + -- AKA + -- Same as function + pragma Inline (Un_Control); + + -- ANCHOR(`delay_output()',`Delay_Output') + procedure Delay_Output (Msecs : in Natural); + -- AKA + pragma Inline (Delay_Output); + + -- ANCHOR(`flushinp()',`Flush_Input') + procedure Flush_Input; + -- AKA + pragma Inline (Flush_Input); + + -- MANPAGE(`curs_termattrs.3x') + + -- ANCHOR(`baudrate()',`Baudrate') + function Baudrate return Natural; + -- AKA + pragma Inline (Baudrate); + + -- ANCHOR(`erasechar()',`Erase_Character') + function Erase_Character return Character; + -- AKA + pragma Inline (Erase_Character); + + -- ANCHOR(`killchar()',`Kill_Character') + function Kill_Character return Character; + -- AKA + pragma Inline (Kill_Character); + + -- ANCHOR(`has_ic()',`Has_Insert_Character') + function Has_Insert_Character return Boolean; + -- AKA + pragma Inline (Has_Insert_Character); + + -- ANCHOR(`has_il()',`Has_Insert_Line') + function Has_Insert_Line return Boolean; + -- AKA + pragma Inline (Has_Insert_Line); + + -- ANCHOR(`termattrs()',`Supported_Attributes') + function Supported_Attributes return Character_Attribute_Set; + -- AKA + pragma Inline (Supported_Attributes); + + -- ANCHOR(`longname()',`Long_Name') + procedure Long_Name (Name : out String); + -- AKA + + -- ANCHOR(`longname()',`Long_Name') + function Long_Name return String; + -- AKA + -- Same as function + pragma Inline (Long_Name); + + -- ANCHOR(`termname()',`Terminal_Name') + procedure Terminal_Name (Name : out String); + -- AKA + + -- ANCHOR(`termname()',`Terminal_Name') + function Terminal_Name return String; + -- AKA + -- Same as function + pragma Inline (Terminal_Name); + + -- MANPAGE(`curs_color.3x') + + -- COLOR_PAIR + -- COLOR_PAIR(n) in C is the same as + -- Attributed_Character(Ch => Nul, Color => n, Attr => Normal_Video) + -- In C you often see something like c = c | COLOR_PAIR(n); + -- This is equivalent to c.Color := n; + + -- ANCHOR(`start_color()',`Start_Color') + procedure Start_Color; + -- AKA + pragma Import (C, Start_Color, "start_color"); + + -- ANCHOR(`init_pair()',`Init_Pair') + procedure Init_Pair (Pair : in Redefinable_Color_Pair; + Fore : in Color_Number; + Back : in Color_Number); + -- AKA + pragma Inline (Init_Pair); + + -- ANCHOR(`pair_content()',`Pair_Content') + procedure Pair_Content (Pair : in Color_Pair; + Fore : out Color_Number; + Back : out Color_Number); + -- AKA + pragma Inline (Pair_Content); + + -- ANCHOR(`has_colors()',`Has_Colors') + function Has_Colors return Boolean; + -- AKA + pragma Inline (Has_Colors); + + -- ANCHOR(`init_color()',`Init_Color') + procedure Init_Color (Color : in Color_Number; + Red : in RGB_Value; + Green : in RGB_Value; + Blue : in RGB_Value); + -- AKA + pragma Inline (Init_Color); + + -- ANCHOR(`can_change_color()',`Can_Change_Color') + function Can_Change_Color return Boolean; + -- AKA + pragma Inline (Can_Change_Color); + + -- ANCHOR(`color_content()',`Color_Content') + procedure Color_Content (Color : in Color_Number; + Red : out RGB_Value; + Green : out RGB_Value; + Blue : out RGB_Value); + -- AKA + pragma Inline (Color_Content); + + -- MANPAGE(`curs_kernel.3x') + -- | Not implemented: getsyx, setsyx + -- + type Curses_Mode is (Curses, Shell); + + -- ANCHOR(`def_prog_mode()',`Save_Curses_Mode') + procedure Save_Curses_Mode (Mode : in Curses_Mode); + -- AKA + -- ALIAS(`def_shell_mode()') + pragma Inline (Save_Curses_Mode); + + -- ANCHOR(`reset_prog_mode()',`Reset_Curses_Mode') + procedure Reset_Curses_Mode (Mode : in Curses_Mode); + -- AKA + -- ALIAS(`reset_shell_mode()') + pragma Inline (Reset_Curses_Mode); + + -- ANCHOR(`savetty()',`Save_Terminal_State') + procedure Save_Terminal_State; + -- AKA + pragma Inline (Save_Terminal_State); + + -- ANCHOR(`resetty();',`Reset_Terminal_State') + procedure Reset_Terminal_State; + -- AKA + pragma Inline (Reset_Terminal_State); + + type Stdscr_Init_Proc is access + function (Win : Window; + Columns : Column_Count) return Integer; + pragma Convention (C, Stdscr_Init_Proc); + -- N.B.: the return value is actually ignored, but it seems to be + -- a good practice to return 0 if you think all went fine + -- and -1 otherwise. + + -- ANCHOR(`ripoffline()',`Rip_Off_Lines') + procedure Rip_Off_Lines (Lines : in Integer; + Proc : in Stdscr_Init_Proc); + -- AKA + -- N.B.: to be more precise, this uses a ncurses specific enhancement of + -- ripoffline(), in which the Lines argument absolute value is the + -- number of lines to be ripped of. The official ripoffline() only + -- uses the sign of Lines to rip of a single line from bottom or top. + pragma Inline (Rip_Off_Lines); + + type Cursor_Visibility is (Invisible, Normal, Very_Visible); + + -- ANCHOR(`curs_set()',`Set_Cursor_Visibility') + procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility); + -- AKA + pragma Inline (Set_Cursor_Visibility); + + -- ANCHOR(`napms()',`Nap_Milli_Seconds') + procedure Nap_Milli_Seconds (Ms : in Natural); + -- AKA + pragma Inline (Nap_Milli_Seconds); + + -- |===================================================================== + -- | Some useful helpers. + -- |===================================================================== + type Transform_Direction is (From_Screen, To_Screen); + procedure Transform_Coordinates + (W : in Window := Standard_Window; + Line : in out Line_Position; + Column : in out Column_Position; + Dir : in Transform_Direction := From_Screen); + -- This procedure transforms screen coordinates into coordinates relative + -- to the window and vice versa, depending on the Dir parameter. + -- Screen coordinates are the position informations on the physical device. + -- An Curses_Exception will be raised if Line and Column are not in the + -- Window or if you pass the Null_Window as argument. + -- We don't inline this procedure + + -- MANPAGE(`default_colors.3x') + + -- ANCHOR(`use_default_colors()',`Use_Default_Colors') + procedure Use_Default_Colors; + -- AKA + pragma Inline (Use_Default_Colors); + + -- ANCHOR(`assume_default_colors()',`Assume_Default_Colors') + procedure Assume_Default_Colors (Fore : Color_Number := Default_Color; + Back : Color_Number := Default_Color); + -- AKA + pragma Inline (Assume_Default_Colors); + + -- MANPAGE(`curs_extend.3x') + + -- ANCHOR(`curses_version()',`Curses_Version') + function Curses_Version return String; + -- AKA + + -- ANCHOR(`use_extended_names()',`Use_Extended_Names') + -- The returnvalue is the previous setting of the flag + function Use_Extended_Names (Enable : Boolean) return Boolean; + -- AKA + + -- MANPAGE(`curs_trace.3x') + + -- ANCHOR(`_nc_freeall()',`Curses_Free_All') + procedure Curses_Free_All; + -- AKA + + -- MANPAGE(`curs_scr_dump.3x') + + -- ANCHOR(`scr_dump()',`Screen_Dump_To_File') + procedure Screen_Dump_To_File (Filename : in String); + -- AKA + + -- ANCHOR(`scr_restore()',`Screen_Restore_From_File') + procedure Screen_Restore_From_File (Filename : in String); + -- AKA + + -- ANCHOR(`scr_init()',`Screen_Init_From_File') + procedure Screen_Init_From_File (Filename : in String); + -- AKA + + -- ANCHOR(`scr_set()',`Screen_Set_File') + procedure Screen_Set_File (Filename : in String); + -- AKA + + -- MANPAGE(`curs_print.3x') + -- Not implemented: mcprint + + -- MANPAGE(`curs_printw.3x') + -- Not implemented: printw, wprintw, mvprintw, mvwprintw, vwprintw, + -- vw_printw + -- Please use the Ada style Text_IO child packages for formatted + -- printing. It doesn't make a lot of sense to map the printf style + -- C functions to Ada. + + -- MANPAGE(`curs_scanw.3x') + -- Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw + + -- MANPAGE(`resizeterm.3x') + -- Not Implemented: resizeterm + + -- MANPAGE(`wresize.3x') + + -- ANCHOR(`wresize()',`Resize') + procedure Resize (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count); + -- AKA + +private + type Window is new System.Storage_Elements.Integer_Address; + Null_Window : constant Window := 0; + + -- The next constants are generated and may be different on your + -- architecture. + -- +include(`Window_Offsets')dnl + Curses_Bool_False : constant Curses_Bool := 0; + +end Terminal_Interface.Curses; diff --git a/ncurses/Ada95/samples/Makefile.in b/ncurses/Ada95/samples/Makefile.in new file mode 100644 index 0000000..5ee78df --- /dev/null +++ b/ncurses/Ada95/samples/Makefile.in @@ -0,0 +1,154 @@ +############################################################################## +# Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Juergen Pfeifer, 1996 +# +# $Id: Makefile.in,v 1.34 2006/12/17 16:45:02 tom Exp $ +# +.SUFFIXES: + +SHELL = /bin/sh +THIS = Makefile + +x = @PROG_EXT@ + +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +libdir = @libdir@ +includedir = @includedir@ + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +CFLAGS = @CFLAGS@ + +CPPFLAGS = @ACPPFLAGS@ \ + -DHAVE_CONFIG_H -I$(srcdir) + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_NORMAL = $(CCFLAGS) +CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ +LOCAL_LIBDIR = @top_builddir@/lib + +LINK = $(CC) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +RANLIB = @RANLIB@ +################################################################################ +ada_srcdir=../src + +LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) + +ADA = @cf_ada_compiler@ +ADAFLAGS = @ADAFLAGS@ -I$(srcdir) + +ADAMAKE = @cf_ada_make@ +ADAMAKEFLAGS = -a -A$(srcdir) -A$(ada_srcdir) -A$(srcdir)/$(ada_srcdir) + +ALIB = @cf_ada_package@ +ABASE = $(ALIB)-curses + +CARGS =-cargs $(ADAFLAGS) +LARGS =-largs @TEST_ARG2@ $(LD_FLAGS) -lAdaCurses + +PROGS = tour rain ncurses + +TOUR_OBJS = tour.o sample.o sample-curses_demo.o sample-explanation.o \ + sample-form_demo.o sample-function_key_setting.o \ + sample-header_handler.o sample-helpers.o \ + sample-keyboard_handler.o sample-manifest.o sample-menu_demo.o \ + sample-menu_demo-aux.o sample-text_io_demo.o \ + sample-curses_demo-attributes.o sample-curses_demo-mouse.o \ + sample-form_demo-aux.o sample-my_field_type.o + +RAIN_OBJS = rain.o status.o + +NCURSES_OBJS = ncurses.o ncurses2-getch_test.o \ + ncurses2-acs_and_scroll.o ncurses2-m.o \ + ncurses2-acs_display.o ncurses2-menu_test.o \ + ncurses2-attr_test.o ncurses2-overlap_test.o \ + ncurses2-color_edit.o ncurses2-slk_test.o \ + ncurses2-color_test.o ncurses2-test_sgr_attributes.o \ + ncurses2-demo_forms.o ncurses2-trace_set.o \ + ncurses2-demo_pad.o ncurses2-util.o \ + ncurses2-demo_panels.o ncurses2.o \ + ncurses2-flushinp_test.o + + +all :: tour$x rain$x ncurses$x + @echo made $@ + +sources : + @echo made $@ + +libs \ +install \ +install.libs :: + @echo made $@ + +uninstall \ +uninstall.libs :: + @echo made $@ + +ncurses$x : + $(ADAMAKE) $(ADAMAKEFLAGS) ncurses $(CARGS) $(LARGS) + +tour$x : explain.msg + $(ADAMAKE) $(ADAMAKEFLAGS) tour $(CARGS) $(LARGS) + +explain.msg: $(srcdir)/explain.txt + cp $(srcdir)/explain.txt $@ + +rain$x : + $(ADAMAKE) $(ADAMAKEFLAGS) rain $(CARGS) $(LARGS) + +mostlyclean: + @echo made $@ + +clean :: mostlyclean + rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] \ + explain.msg trace screendump + +distclean :: clean + rm -f Makefile + +realclean :: distclean + @echo made $@ diff --git a/ncurses/Ada95/samples/README b/ncurses/Ada95/samples/README new file mode 100644 index 0000000..c4f16ad --- /dev/null +++ b/ncurses/Ada95/samples/README @@ -0,0 +1,35 @@ +------------------------------------------------------------------------------- +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.2 2006/04/22 22:24:12 tom Exp $ +------------------------------------------------------------------------------- + +The intention of the demo at this point in time is not to demonstrate all +the features of (n)curses and its subsystems, but to give some sample +sources how to use the binding at all. + +Ideally in the future we can combine both goals. diff --git a/ncurses/Ada95/samples/explain.txt b/ncurses/Ada95/samples/explain.txt new file mode 100644 index 0000000..570f617 --- /dev/null +++ b/ncurses/Ada95/samples/explain.txt @@ -0,0 +1,186 @@ +#VERSION +This is Version 00.90.00 of the demo package. +#MENUKEYS +In a menu you can use the following Keys in the whole application: + + - CTRL-X eXit the menu + - CTRL-N Go to next item + - CTRL-P Go to previous item + - CTRL-U Scroll up one line + - CTRL-D Scroll down one line + - CTRL-F Scroll down one page + - PAGE DOWN Scroll down one page + - PAGE UP Scroll back one page + - CTRL-B Scroll back one page + - CTRL-Y Clear pattern + - CTRL-H Delete last character from pattern + - Backspace Delete last character from pattern + - CTRL-A Next pattern match + - CTRL-E Previous pattern match + - CTRL-T Toggle item in a multi-selection menu + - CR or LF Select an item + - HOME Key Go to the first item + - F3 Quit the menu + - Cursor Down Down one item + - Cursor Up Up one item + - Cursor Left Left one item + - Cursor Right Right one item + - END Key Go to last item +#FORMKEYS + - CTRL-X eXit the form + - CTRL-F Go forward to the next field + - CTRL-B Go backward to the previous field + - CTRL-L Go to the field left of the current one + - CTRL-R Go to the field right of the current one + - CTRL-U Go to the field above the current one + - CTRL-D Go to the field below the current one + + - CTRL-W Go to the next word in the field + - CTRL-T Go to the previous word in the field + + - CTRL-A Go to the beginning of the field + - CTRL-E Go to the end of the field + + - CTRL-I Insert a blank character at the current position + - CTRL-O Insert a line + - CTRL-V Delete a character + - CTRL-H Delete previous character + - CTRL-Y Delete a line + - CTRL-G Delete a word + - CTRL-K Clear to end of field + + - CTRL-N Next choice in a choice field (Enumerations etc.) + - CTRL-P Previous choice in a choice field. +#HELP +#HELPKEYS +You may scroll with the Cursor Up/Down Keys. +You may leave the help with the Function Key labelled 'Quit'. +#INHELP +You are already in the help system. +You may leave the help with the Function Key labelled 'Quit'. +#MAIN +This is the main menu of the sample program for the ncurses Ada95 +binding. The main intention of the demo is not to demonstate or +test all the features of ncurses and it's subsystems, but to provide +to you some sample code how to use the binding with Ada95. + +You may select this options: + + * Look at some ncurses core functions + * Look at some features of the menu subsystem + * Look at some features of the form subsystem + * Look at the output of the Ada.Text_IO like functions + for ncurses. + +#MAINPAD +You may press at any place in this demo CTRL-C. This will give you a command +window. You can just type in the Label-String of a function key, then this +key will be simulated. This should help you to run the application even if +you run it on a terminal with no or only a few function keys. With CTRL-N +and CTRL-P you may browse through the possible values in the command window. +#MENU00 +Here we give you a selection of various menu demonstrations. +#MENU-PAD00 +This menu itself is a demo for a single valued, 1-column menu with +descriptions for the items, a marker and a padding character between +the item name and the description. +#MENU01 +This is a demo of the some of the menu layout options. One of them +is the spacing functionality. Just press the Key labelled "Flip" to +flip between the non-spaced and a spaced version of the menu. Please +note that this functionality is unique for ncurses and is not found +in the SVr4 menu implementation. + +This is a menu that sometimes doesn't fit into it's window and +therefore it becomes a scroll menu. + +You can also see here very nicely the pattern matching functionality +of menus. Type for example a 'J' and you will be positioned to the +next item after the current starting with a 'J'. Any more characters +you type in make the pattern more specific. With CTRL-A and CTRL-Z +(for more details press the Key labelled "Keys") you can browse +through all the items matching the pattern. + +You may change the format of the menu. Just press one of the keys +labelled "4x1", "4x2" or "4x3" to get a menu with that many rows +and columns. + +With the Keys "O-Row" or "O-Col" (they occupy the same label and +switch on selection) you can change the major order scheme for +the menu. If "O-Col" is visible, the menu is currently major +ordered by rows, you can switch to major column order by pressing +the key. If "O-Row" is visible, it's just the reverse situation. +This Key is not visible in "4x1" layout mode, because in this case +the functionality makes no sense. + +With the Keys "Multi" or "Singl" (they occupy the same label and +switch on selection) you can change whether or not the menu allows +multiple or only single selection. + +With the Keys "+Desc" or "-Desc" (they occupy the same label and +switch on selection) you can change whether or not the descriptions +for each item should be displayed. Please not that this key is +not visible in the "4x3" layout mode, because in this case the +menu wouldn't fit on a typicall 80x24 screen. + +With the Keys "Disab" or "Enab" (they occupy the same label and +switch on selection) you can dis- or enable the selectability of +the month with 31 days. +#MENU-PAD01 +You may press "Flip" to see the effect of ncurses unique menu-spacing. +The Keys "4x1", "4x2" and "4x3" will change the format of the menu. +Please note that this is a scrolling menu. You may also play with the +pattern matching functionality or try to change the format of the menu. +For more details press the Key labelled "Help". +#FORM00 +This is a demo of the forms package. +#FORM-PAD00 +Please note that this demo is far from being complete. It really shows +only a small part of the functionality of the forms package. Let's hope +the next version will have a richer demo (You wan't to contribute ?). +#NOTIMPL +Sorry this functionality of the demo is not implemented at the moment. +Remember this is a freeware project, so I can use only my very rare +free time to continue coding. If you would like to contribute, you +are very welcome ! +#CURSES00 +This is a menu where you can select some different demos of the ncurses +functionality. +#CURSES-PAD00 +Please note that this demo is far from being complete. It really shows +only a small part of the functionality of the curses package. Let's hope +the next version will have a richer demo (You wan't to contribute ?). +#MOUSEKEYS +In this demo you may use this keys: + + - Key labelled "Help" to get a help + - Key labelled "Keys" is what you are reading now + - Key labelled "Quit" to leave the demo + +You may click the mouse buttons at any location at the screen and look +at the protocol window ! +#MOUSE00 +A rather simple use of a mouse as demo. It's there just to test the +code and to provide the sample source. + +It might be of interest, that the output into the protocol window is +done by the (n)curses Text_IO subpackages. Especially the output of +the button and state names is done by Ads's enumeration IO, which +allows you to print the names of enumeration literals. That's really +nice. +#MOUSE-PAD00 +This is a very simple demo of the mouse features of ncurses. It's there +just to test whether or not the generated code for the binding really +works on the different architectures (seems so). +#ATTRIBDEMO +Again this is a more than simple demo and just here to give you the +sourcecode. +#ATTRIBKEYS +You may press one of the three well known standard keys of this demo. +#ATTRIB-PAD00 +Again this is a more than simple demo and just here to give you the +sourcecode. Feel free to contribute more. +#TEXTIO +#TEXTIOKEYS +#TEXTIO-PAD00 +#END diff --git a/ncurses/Ada95/samples/ncurses.adb b/ncurses/Ada95/samples/ncurses.adb new file mode 100644 index 0000000..19f658d --- /dev/null +++ b/ncurses/Ada95/samples/ncurses.adb @@ -0,0 +1,47 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.m; use ncurses2.m; +with GNAT.OS_Lib; use GNAT.OS_Lib; + +procedure ncurses is +begin + OS_Exit (main); +end ncurses; diff --git a/ncurses/Ada95/samples/ncurses2-acs_and_scroll.adb b/ncurses/Ada95/samples/ncurses2-acs_and_scroll.adb new file mode 100644 index 0000000..07b2d91 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-acs_and_scroll.adb @@ -0,0 +1,716 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.8 $ +-- $Date: 2008/07/26 18:47:42 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- Windows and scrolling tester. +-- Demonstrate windows + +with Ada.Strings.Fixed; +with Ada.Strings; + +with ncurses2.util; use ncurses2.util; +with ncurses2.genericPuts; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; +with Terminal_Interface.Curses.PutWin; use Terminal_Interface.Curses.PutWin; + +with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO; +with Ada.Streams; use Ada.Streams; + +procedure ncurses2.acs_and_scroll is + + Macro_Quit : constant Key_Code := Character'Pos ('Q') mod 16#20#; + Macro_Escape : constant Key_Code := Character'Pos ('[') mod 16#20#; + + Quit : constant Key_Code := CTRL ('Q'); + Escape : constant Key_Code := CTRL ('['); + + Botlines : constant Line_Position := 4; + + type pair is record + y : Line_Position; + x : Column_Position; + end record; + + type Frame; + type FrameA is access Frame; + + f : File_Type; + dumpfile : constant String := "screendump"; + + procedure Outerbox (ul, lr : pair; onoff : Boolean); + function HaveKeyPad (w : Window) return Boolean; + function HaveScroll (w : Window) return Boolean; + procedure newwin_legend (curpw : Window); + procedure transient (curpw : Window; msg : String); + procedure newwin_report (win : Window := Standard_Window); + procedure selectcell (uli : Line_Position; + ulj : Column_Position; + lri : Line_Position; + lrj : Column_Position; + p : out pair; + b : out Boolean); + function getwindow return Window; + procedure newwin_move (win : Window; + dy : Line_Position; + dx : Column_Position); + function delete_framed (fp : FrameA; showit : Boolean) return FrameA; + + use Ada.Streams.Stream_IO; + + -- A linked list + -- I wish there was a standard library linked list. Oh well. + type Frame is record + next, last : FrameA; + do_scroll : Boolean; + do_keypad : Boolean; + wind : Window; + end record; + + current : FrameA; + + c : Key_Code; + + procedure Outerbox (ul, lr : pair; onoff : Boolean) is + begin + if onoff then + -- Note the fix of an obscure bug + -- try making a 1x1 box then enlarging it, the is a blank + -- upper left corner! + Add (Line => ul.y - 1, Column => ul.x - 1, + Ch => ACS_Map (ACS_Upper_Left_Corner)); + Add (Line => ul.y - 1, Column => lr.x + 1, + Ch => ACS_Map (ACS_Upper_Right_Corner)); + Add (Line => lr.y + 1, Column => lr.x + 1, + Ch => ACS_Map (ACS_Lower_Right_Corner)); + Add (Line => lr.y + 1, Column => ul.x - 1, + Ch => ACS_Map (ACS_Lower_Left_Corner)); + + Move_Cursor (Line => ul.y - 1, Column => ul.x); + Horizontal_Line (Line_Symbol => ACS_Map (ACS_Horizontal_Line), + Line_Size => Integer (lr.x - ul.x) + 1); + Move_Cursor (Line => ul.y, Column => ul.x - 1); + Vertical_Line (Line_Symbol => ACS_Map (ACS_Vertical_Line), + Line_Size => Integer (lr.y - ul.y) + 1); + Move_Cursor (Line => lr.y + 1, Column => ul.x); + Horizontal_Line (Line_Symbol => ACS_Map (ACS_Horizontal_Line), + Line_Size => Integer (lr.x - ul.x) + 1); + Move_Cursor (Line => ul.y, Column => lr.x + 1); + Vertical_Line (Line_Symbol => ACS_Map (ACS_Vertical_Line), + Line_Size => Integer (lr.y - ul.y) + 1); + else + Add (Line => ul.y - 1, Column => ul.x - 1, Ch => ' '); + Add (Line => ul.y - 1, Column => lr.x + 1, Ch => ' '); + Add (Line => lr.y + 1, Column => lr.x + 1, Ch => ' '); + Add (Line => lr.y + 1, Column => ul.x - 1, Ch => ' '); + + Move_Cursor (Line => ul.y - 1, Column => ul.x); + Horizontal_Line (Line_Symbol => Blank2, + Line_Size => Integer (lr.x - ul.x) + 1); + Move_Cursor (Line => ul.y, Column => ul.x - 1); + Vertical_Line (Line_Symbol => Blank2, + Line_Size => Integer (lr.y - ul.y) + 1); + Move_Cursor (Line => lr.y + 1, Column => ul.x); + Horizontal_Line (Line_Symbol => Blank2, + Line_Size => Integer (lr.x - ul.x) + 1); + Move_Cursor (Line => ul.y, Column => lr.x + 1); + Vertical_Line (Line_Symbol => Blank2, + Line_Size => Integer (lr.y - ul.y) + 1); + end if; + end Outerbox; + + function HaveKeyPad (w : Window) return Boolean is + begin + return Get_KeyPad_Mode (w); + exception + when Curses_Exception => return False; + end HaveKeyPad; + + function HaveScroll (w : Window) return Boolean is + begin + return Scrolling_Allowed (w); + exception + when Curses_Exception => return False; + end HaveScroll; + + procedure newwin_legend (curpw : Window) is + + package p is new genericPuts (200); + use p; + use p.BS; + + type string_a is access String; + + type rrr is record + msg : string_a; + code : Integer range 0 .. 3; + end record; + + legend : constant array (Positive range <>) of rrr := + ( + ( + new String'("^C = create window"), 0 + ), + ( + new String'("^N = next window"), 0 + ), + ( + new String'("^P = previous window"), 0 + ), + ( + new String'("^F = scroll forward"), 0 + ), + ( + new String'("^B = scroll backward"), 0 + ), + ( + new String'("^K = keypad(%s)"), 1 + ), + ( + new String'("^S = scrollok(%s)"), 2 + ), + ( + new String'("^W = save window to file"), 0 + ), + ( + new String'("^R = restore window"), 0 + ), + ( + new String'("^X = resize"), 0 + ), + ( + new String'("^Q%s = exit"), 3 + ) + ); + + buf : Bounded_String; + do_keypad : constant Boolean := HaveKeyPad (curpw); + do_scroll : constant Boolean := HaveScroll (curpw); + + pos : Natural; + + mypair : pair; + + use Ada.Strings.Fixed; + + begin + Move_Cursor (Line => Lines - 4, Column => 0); + for n in legend'Range loop + pos := Ada.Strings.Fixed.Index (Source => legend (n).msg.all, + Pattern => "%s"); + -- buf := (others => ' '); + buf := To_Bounded_String (legend (n).msg.all); + case legend (n).code is + when 0 => null; + when 1 => + if do_keypad then + Replace_Slice (buf, pos, pos + 1, "yes"); + else + Replace_Slice (buf, pos, pos + 1, "no"); + end if; + when 2 => + if do_scroll then + Replace_Slice (buf, pos, pos + 1, "yes"); + else + Replace_Slice (buf, pos, pos + 1, "no"); + end if; + when 3 => + if do_keypad then + Replace_Slice (buf, pos, pos + 1, "/ESC"); + else + Replace_Slice (buf, pos, pos + 1, ""); + end if; + end case; + Get_Cursor_Position (Line => mypair.y, Column => mypair.x); + if Columns < mypair.x + 3 + Column_Position (Length (buf)) then + Add (Ch => newl); + elsif n /= 1 then -- n /= legen'First + Add (Str => ", "); + end if; + myAdd (Str => buf); + end loop; + Clear_To_End_Of_Line; + end newwin_legend; + + procedure transient (curpw : Window; msg : String) is + begin + newwin_legend (curpw); + if msg /= "" then + Add (Line => Lines - 1, Column => 0, Str => msg); + Refresh; + Nap_Milli_Seconds (1000); + end if; + + Move_Cursor (Line => Lines - 1, Column => 0); + + if HaveKeyPad (curpw) then + Add (Str => "Non-arrow"); + else + Add (Str => "All other"); + end if; + Add (str => " characters are echoed, window should "); + if not HaveScroll (curpw) then + Add (Str => "not "); + end if; + Add (str => "scroll"); + + Clear_To_End_Of_Line; + end transient; + + procedure newwin_report (win : Window := Standard_Window) is + y : Line_Position; + x : Column_Position; + use Int_IO; + tmp2a : String (1 .. 2); + tmp2b : String (1 .. 2); + begin + if win /= Standard_Window then + transient (win, ""); + end if; + Get_Cursor_Position (win, y, x); + Move_Cursor (Line => Lines - 1, Column => Columns - 17); + Put (tmp2a, Integer (y)); + Put (tmp2b, Integer (x)); + Add (Str => "Y = " & tmp2a & " X = " & tmp2b); + if win /= Standard_Window then + Refresh; + else + Move_Cursor (win, y, x); + end if; + end newwin_report; + + procedure selectcell (uli : Line_Position; + ulj : Column_Position; + lri : Line_Position; + lrj : Column_Position; + p : out pair; + b : out Boolean) is + c : Key_Code; + res : pair; + i : Line_Position := 0; + j : Column_Position := 0; + si : constant Line_Position := lri - uli + 1; + sj : constant Column_Position := lrj - ulj + 1; + begin + res.y := uli; + res.x := ulj; + loop + Move_Cursor (Line => uli + i, Column => ulj + j); + newwin_report; + + c := Getchar; + case c is + when + Macro_Quit | + Macro_Escape => + -- on the same line macro calls interfere due to the # comment + -- this is needed because keypad off affects all windows. + -- try removing the ESCAPE and see what happens. + b := False; + return; + when KEY_UP => + i := i + si - 1; + -- same as i := i - 1 because of Modulus arithetic, + -- on Line_Position, which is a Natural + -- the C version uses this form too, interestingly. + when KEY_DOWN => + i := i + 1; + when KEY_LEFT => + j := j + sj - 1; + when KEY_RIGHT => + j := j + 1; + when Key_Mouse => + declare + event : Mouse_Event; + y : Line_Position; + x : Column_Position; + Button : Mouse_Button; + State : Button_State; + + begin + event := Get_Mouse; + Get_Event (Event => event, + Y => y, + X => x, + Button => Button, + State => State); + if y > uli and x > ulj then + i := y - uli; + j := x - ulj; + -- same as when others => + res.y := uli + i; + res.x := ulj + j; + p := res; + b := True; + return; + else + Beep; + end if; + end; + when others => + res.y := uli + i; + res.x := ulj + j; + p := res; + b := True; + return; + end case; + i := i mod si; + j := j mod sj; + end loop; + end selectcell; + + function getwindow return Window is + rwindow : Window; + ul, lr : pair; + result : Boolean; + begin + Move_Cursor (Line => 0, Column => 0); + Clear_To_End_Of_Line; + Add (Str => "Use arrows to move cursor, anything else to mark corner 1"); + Refresh; + selectcell (2, 1, Lines - Botlines - 2, Columns - 2, ul, result); + if not result then + return Null_Window; + end if; + Add (Line => ul.y - 1, Column => ul.x - 1, + Ch => ACS_Map (ACS_Upper_Left_Corner)); + Move_Cursor (Line => 0, Column => 0); + Clear_To_End_Of_Line; + Add (Str => "Use arrows to move cursor, anything else to mark corner 2"); + Refresh; + selectcell (ul.y, ul.x, Lines - Botlines - 2, Columns - 2, lr, result); + if not result then + return Null_Window; + end if; + + rwindow := Sub_Window (Number_Of_Lines => lr.y - ul.y + 1, + Number_Of_Columns => lr.x - ul.x + 1, + First_Line_Position => ul.y, + First_Column_Position => ul.x); + + Outerbox (ul, lr, True); + Refresh; + + Refresh (rwindow); + + Move_Cursor (Line => 0, Column => 0); + Clear_To_End_Of_Line; + return rwindow; + end getwindow; + + procedure newwin_move (win : Window; + dy : Line_Position; + dx : Column_Position) is + cur_y, max_y : Line_Position; + cur_x, max_x : Column_Position; + begin + Get_Cursor_Position (win, cur_y, cur_x); + Get_Size (win, max_y, max_x); + cur_x := Column_Position'Min (Column_Position'Max (cur_x + dx, 0), + max_x - 1); + cur_y := Line_Position'Min (Line_Position'Max (cur_y + dy, 0), + max_y - 1); + + Move_Cursor (win, Line => cur_y, Column => cur_x); + end newwin_move; + + function delete_framed (fp : FrameA; showit : Boolean) return FrameA is + np : FrameA; + begin + fp.last.next := fp.next; + fp.next.last := fp.last; + + if showit then + Erase (fp.wind); + Refresh (fp.wind); + end if; + Delete (fp.wind); + + if fp = fp.next then + np := null; + else + np := fp.next; + end if; + -- TODO free(fp); + return np; + end delete_framed; + + Mask : Event_Mask := No_Events; + Mask2 : Event_Mask; + + usescr : Window; + +begin + if Has_Mouse then + Register_Reportable_Event ( + Button => Left, + State => Clicked, + Mask => Mask); + Mask2 := Start_Mouse (Mask); + end if; + c := CTRL ('C'); + Set_Raw_Mode (SwitchOn => True); + loop + transient (Standard_Window, ""); + case c is + when Character'Pos ('c') mod 16#20# => -- Ctrl('c') + declare + neww : constant FrameA := new Frame'(null, null, + False, False, + Null_Window); + begin + neww.wind := getwindow; + if neww.wind = Null_Window then + exit; + -- was goto breakout; ha ha ha + else + + if current = null then + neww.next := neww; + neww.last := neww; + else + neww.next := current.next; + neww.last := current; + neww.last.next := neww; + neww.next.last := neww; + end if; + current := neww; + + Set_KeyPad_Mode (current.wind, True); + current.do_keypad := HaveKeyPad (current.wind); + current.do_scroll := HaveScroll (current.wind); + end if; + end; + when Character'Pos ('N') mod 16#20# => -- Ctrl('N') + if current /= null then + current := current.next; + end if; + when Character'Pos ('P') mod 16#20# => -- Ctrl('P') + if current /= null then + current := current.last; + end if; + when Character'Pos ('F') mod 16#20# => -- Ctrl('F') + if current /= null and then HaveScroll (current.wind) then + Scroll (current.wind, 1); + end if; + when Character'Pos ('B') mod 16#20# => -- Ctrl('B') + if current /= null and then HaveScroll (current.wind) then + -- The C version of Scroll may return ERR which is ignored + -- we need to avoid the exception + -- with the 'and HaveScroll(current.wind)' + Scroll (current.wind, -1); + end if; + when Character'Pos ('K') mod 16#20# => -- Ctrl('K') + if current /= null then + current.do_keypad := not current.do_keypad; + Set_KeyPad_Mode (current.wind, current.do_keypad); + end if; + when Character'Pos ('S') mod 16#20# => -- Ctrl('S') + if current /= null then + current.do_scroll := not current.do_scroll; + Allow_Scrolling (current.wind, current.do_scroll); + end if; + when Character'Pos ('W') mod 16#20# => -- Ctrl('W') + if current /= current.next then + Create (f, Name => dumpfile); -- TODO error checking + if not Is_Open (f) then + raise Curses_Exception; + end if; + Put_Window (current.wind, f); + Close (f); + current := delete_framed (current, True); + end if; + when Character'Pos ('R') mod 16#20# => -- Ctrl('R') + declare + neww : FrameA := new Frame'(null, null, False, False, + Null_Window); + begin + Open (f, Mode => In_File, Name => dumpfile); + neww := new Frame'(null, null, False, False, Null_Window); + + neww.next := current.next; + neww.last := current; + neww.last.next := neww; + neww.next.last := neww; + + neww.wind := Get_Window (f); + Close (f); + + Refresh (neww.wind); + end; + when Character'Pos ('X') mod 16#20# => -- Ctrl('X') + if current /= null then + declare + tmp, ul, lr : pair; + mx : Column_Position; + my : Line_Position; + tmpbool : Boolean; + begin + Move_Cursor (Line => 0, Column => 0); + Clear_To_End_Of_Line; + Add (Str => "Use arrows to move cursor, anything else " & + "to mark new corner"); + Refresh; + + Get_Window_Position (current.wind, ul.y, ul.x); + + selectcell (ul.y, ul.x, Lines - Botlines - 2, Columns - 2, + tmp, tmpbool); + if not tmpbool then + -- the C version had a goto. I refuse gotos. + Beep; + else + Get_Size (current.wind, lr.y, lr.x); + lr.y := lr.y + ul.y - 1; + lr.x := lr.x + ul.x - 1; + Outerbox (ul, lr, False); + Refresh_Without_Update; + + Get_Size (current.wind, my, mx); + if my > tmp.y - ul.y then + Get_Cursor_Position (current.wind, lr.y, lr.x); + Move_Cursor (current.wind, tmp.y - ul.y + 1, 0); + Clear_To_End_Of_Screen (current.wind); + Move_Cursor (current.wind, lr.y, lr.x); + end if; + if mx > tmp.x - ul.x then + for i in 0 .. my - 1 loop + Move_Cursor (current.wind, i, tmp.x - ul.x + 1); + Clear_To_End_Of_Line (current.wind); + end loop; + end if; + Refresh_Without_Update (current.wind); + + lr := tmp; + -- The C version passes invalid args to resize + -- which returns an ERR. For Ada we avoid the exception. + if lr.y /= ul.y and lr.x /= ul.x then + Resize (current.wind, lr.y - ul.y + 0, + lr.x - ul.x + 0); + end if; + + Get_Window_Position (current.wind, ul.y, ul.x); + Get_Size (current.wind, lr.y, lr.x); + lr.y := lr.y + ul.y - 1; + lr.x := lr.x + ul.x - 1; + Outerbox (ul, lr, True); + Refresh_Without_Update; + + Refresh_Without_Update (current.wind); + Move_Cursor (Line => 0, Column => 0); + Clear_To_End_Of_Line; + Update_Screen; + end if; + end; + end if; + when Key_F10 => + declare tmp : pair; tmpbool : Boolean; + begin + -- undocumented --- use this to test area clears + selectcell (0, 0, Lines - 1, Columns - 1, tmp, tmpbool); + Clear_To_End_Of_Screen; + Refresh; + end; + when Key_Cursor_Up => + newwin_move (current.wind, -1, 0); + when Key_Cursor_Down => + newwin_move (current.wind, 1, 0); + when Key_Cursor_Left => + newwin_move (current.wind, 0, -1); + when Key_Cursor_Right => + newwin_move (current.wind, 0, 1); + when Key_Backspace | Key_Delete_Char => + declare + y : Line_Position; + x : Column_Position; + tmp : Line_Position; + begin + Get_Cursor_Position (current.wind, y, x); + -- x := x - 1; + -- I got tricked by the -1 = Max_Natural - 1 result + -- y := y - 1; + if not (x = 0 and y = 0) then + if x = 0 then + y := y - 1; + Get_Size (current.wind, tmp, x); + end if; + x := x - 1; + Delete_Character (current.wind, y, x); + end if; + end; + when others => + -- TODO c = '\r' ? + if current /= null then + declare + begin + Add (current.wind, Ch => Code_To_Char (c)); + exception + when Curses_Exception => null; + -- this happens if we are at the + -- lower right of a window and add a character. + end; + else + Beep; + end if; + end case; + newwin_report (current.wind); + if current /= null then + usescr := current.wind; + else + usescr := Standard_Window; + end if; + Refresh (usescr); + c := Getchar (usescr); + exit when c = Quit or (c = Escape and HaveKeyPad (usescr)); + -- TODO when does c = ERR happen? + end loop; + + -- TODO while current /= null loop + -- current := delete_framed(current, False); + -- end loop; + + Allow_Scrolling (Mode => True); + + End_Mouse (Mask2); + Set_Raw_Mode (SwitchOn => True); + Erase; + End_Windows; + +end ncurses2.acs_and_scroll; diff --git a/ncurses/Ada95/samples/ncurses2-acs_and_scroll.ads b/ncurses/Ada95/samples/ncurses2-acs_and_scroll.ads new file mode 100644 index 0000000..79e4862 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-acs_and_scroll.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.acs_and_scroll; diff --git a/ncurses/Ada95/samples/ncurses2-acs_display.adb b/ncurses/Ada95/samples/ncurses2-acs_display.adb new file mode 100644 index 0000000..a71c61d --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-acs_display.adb @@ -0,0 +1,235 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.6 $ +-- $Date: 2008/07/26 18:47:34 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with ncurses2.genericPuts; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +with Ada.Strings.Unbounded; +with Ada.Strings.Fixed; + +procedure ncurses2.acs_display is + use Int_IO; + + procedure show_upper_chars (first : Integer); + function show_1_acs (N : Integer; + name : String; + code : Attributed_Character) + return Integer; + procedure show_acs_chars; + + procedure show_upper_chars (first : Integer) is + C1 : constant Boolean := (first = 128); + last : constant Integer := first + 31; + package p is new ncurses2.genericPuts (200); + use p; + use p.BS; + use Ada.Strings.Unbounded; + + tmpa : Unbounded_String; + tmpb : BS.Bounded_String; + begin + Erase; + Switch_Character_Attribute + (Attr => (Bold_Character => True, others => False)); + Move_Cursor (Line => 0, Column => 20); + tmpa := To_Unbounded_String ("Display of "); + if C1 then + tmpa := tmpa & "C1"; + else + tmpa := tmpa & "GR"; + end if; + tmpa := tmpa & " Character Codes "; + myPut (tmpb, first); + Append (tmpa, To_String (tmpb)); + Append (tmpa, " to "); + myPut (tmpb, last); + Append (tmpa, To_String (tmpb)); + Add (Str => To_String (tmpa)); + Switch_Character_Attribute + (On => False, + Attr => (Bold_Character => True, others => False)); + Refresh; + + for code in first .. last loop + declare + row : constant Line_Position + := Line_Position (4 + ((code - first) mod 16)); + col : constant Column_Position + := Column_Position (((code - first) / 16) * + Integer (Columns) / 2); + tmp3 : String (1 .. 3); + tmpx : String (1 .. Integer (Columns / 4)); + reply : Key_Code; + begin + Put (tmp3, code); + myPut (tmpb, code, 16); + tmpa := To_Unbounded_String (tmp3 & " (" & To_String (tmpb) & ')'); + + Ada.Strings.Fixed.Move (To_String (tmpa), tmpx, + Justify => Ada.Strings.Right); + Add (Line => row, Column => col, + Str => tmpx & ' ' & ':' & ' '); + if C1 then + Set_NoDelay_Mode (Mode => True); + end if; + Add_With_Immediate_Echo (Ch => Code_To_Char (Key_Code (code))); + -- TODO check this + if C1 then + reply := Getchar; + while reply /= Key_None loop + Add (Ch => Code_To_Char (reply)); + Nap_Milli_Seconds (10); + reply := Getchar; + end loop; + Set_NoDelay_Mode (Mode => False); + end if; + end; + end loop; + end show_upper_chars; + + function show_1_acs (N : Integer; + name : String; + code : Attributed_Character) + return Integer is + height : constant Integer := 16; + row : constant Line_Position := Line_Position (4 + (N mod height)); + col : constant Column_Position := Column_Position ((N / height) * + Integer (Columns) / 2); + tmpx : String (1 .. Integer (Columns) / 3); + begin + Ada.Strings.Fixed.Move (name, tmpx, + Justify => Ada.Strings.Right, + Drop => Ada.Strings.Left); + Add (Line => row, Column => col, Str => tmpx & ' ' & ':' & ' '); + -- we need more room than C because our identifiers are longer + -- 22 chars actually + Add (Ch => code); + return N + 1; + end show_1_acs; + + procedure show_acs_chars is + n : Integer; + begin + Erase; + Switch_Character_Attribute + (Attr => (Bold_Character => True, others => False)); + Add (Line => 0, Column => 20, + Str => "Display of the ACS Character Set"); + Switch_Character_Attribute (On => False, + Attr => (Bold_Character => True, + others => False)); + Refresh; + + -- the following is useful to generate the below + -- grep '^[ ]*ACS_' ../src/terminal_interface-curses.ads | + -- awk '{print "n := show_1_acs(n, \""$1"\", ACS_Map("$1"));"}' + + n := show_1_acs (0, "ACS_Upper_Left_Corner", + ACS_Map (ACS_Upper_Left_Corner)); + n := show_1_acs (n, "ACS_Lower_Left_Corner", + ACS_Map (ACS_Lower_Left_Corner)); + n := show_1_acs (n, "ACS_Upper_Right_Corner", + ACS_Map (ACS_Upper_Right_Corner)); + n := show_1_acs (n, "ACS_Lower_Right_Corner", + ACS_Map (ACS_Lower_Right_Corner)); + n := show_1_acs (n, "ACS_Left_Tee", ACS_Map (ACS_Left_Tee)); + n := show_1_acs (n, "ACS_Right_Tee", ACS_Map (ACS_Right_Tee)); + n := show_1_acs (n, "ACS_Bottom_Tee", ACS_Map (ACS_Bottom_Tee)); + n := show_1_acs (n, "ACS_Top_Tee", ACS_Map (ACS_Top_Tee)); + n := show_1_acs (n, "ACS_Horizontal_Line", + ACS_Map (ACS_Horizontal_Line)); + n := show_1_acs (n, "ACS_Vertical_Line", ACS_Map (ACS_Vertical_Line)); + n := show_1_acs (n, "ACS_Plus_Symbol", ACS_Map (ACS_Plus_Symbol)); + n := show_1_acs (n, "ACS_Scan_Line_1", ACS_Map (ACS_Scan_Line_1)); + n := show_1_acs (n, "ACS_Scan_Line_9", ACS_Map (ACS_Scan_Line_9)); + n := show_1_acs (n, "ACS_Diamond", ACS_Map (ACS_Diamond)); + n := show_1_acs (n, "ACS_Checker_Board", ACS_Map (ACS_Checker_Board)); + n := show_1_acs (n, "ACS_Degree", ACS_Map (ACS_Degree)); + n := show_1_acs (n, "ACS_Plus_Minus", ACS_Map (ACS_Plus_Minus)); + n := show_1_acs (n, "ACS_Bullet", ACS_Map (ACS_Bullet)); + n := show_1_acs (n, "ACS_Left_Arrow", ACS_Map (ACS_Left_Arrow)); + n := show_1_acs (n, "ACS_Right_Arrow", ACS_Map (ACS_Right_Arrow)); + n := show_1_acs (n, "ACS_Down_Arrow", ACS_Map (ACS_Down_Arrow)); + n := show_1_acs (n, "ACS_Up_Arrow", ACS_Map (ACS_Up_Arrow)); + n := show_1_acs (n, "ACS_Board_Of_Squares", + ACS_Map (ACS_Board_Of_Squares)); + n := show_1_acs (n, "ACS_Lantern", ACS_Map (ACS_Lantern)); + n := show_1_acs (n, "ACS_Solid_Block", ACS_Map (ACS_Solid_Block)); + n := show_1_acs (n, "ACS_Scan_Line_3", ACS_Map (ACS_Scan_Line_3)); + n := show_1_acs (n, "ACS_Scan_Line_7", ACS_Map (ACS_Scan_Line_7)); + n := show_1_acs (n, "ACS_Less_Or_Equal", ACS_Map (ACS_Less_Or_Equal)); + n := show_1_acs (n, "ACS_Greater_Or_Equal", + ACS_Map (ACS_Greater_Or_Equal)); + n := show_1_acs (n, "ACS_PI", ACS_Map (ACS_PI)); + n := show_1_acs (n, "ACS_Not_Equal", ACS_Map (ACS_Not_Equal)); + n := show_1_acs (n, "ACS_Sterling", ACS_Map (ACS_Sterling)); + + if n = 0 then + raise Constraint_Error; + end if; + end show_acs_chars; + + c1 : Key_Code; + c : Character := 'a'; +begin + loop + case c is + when 'a' => + show_acs_chars; + when '0' | '1' | '2' | '3' => + show_upper_chars (ctoi (c) * 32 + 128); + when others => + null; + end case; + Add (Line => Lines - 3, Column => 0, + Str => "Note: ANSI terminals may not display C1 characters."); + Add (Line => Lines - 2, Column => 0, + Str => "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit"); + Refresh; + c1 := Getchar; + c := Code_To_Char (c1); + exit when c = 'q' or c = 'x'; + end loop; + Pause; + Erase; + End_Windows; +end ncurses2.acs_display; diff --git a/ncurses/Ada95/samples/ncurses2-acs_display.ads b/ncurses/Ada95/samples/ncurses2-acs_display.ads new file mode 100644 index 0000000..4e616c5 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-acs_display.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.acs_display; diff --git a/ncurses/Ada95/samples/ncurses2-attr_test.adb b/ncurses/Ada95/samples/ncurses2-attr_test.adb new file mode 100644 index 0000000..6627104 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-attr_test.adb @@ -0,0 +1,362 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2007,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.9 $ +-- $Date: 2008/07/26 18:47:26 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Terminfo; +use Terminal_Interface.Curses.Terminfo; +with Ada.Characters.Handling; +with Ada.Strings.Fixed; + +procedure ncurses2.attr_test is + + function subset (super, sub : Character_Attribute_Set) return Boolean; + function intersect (b, a : Character_Attribute_Set) return Boolean; + function has_A_COLOR (attr : Attributed_Character) return Boolean; + function show_attr (row : Line_Position; + skip : Natural; + attr : Character_Attribute_Set; + name : String; + once : Boolean) return Line_Position; + procedure attr_getc (skip : in out Integer; + fg, bg : in out Color_Number; + result : out Boolean); + + function subset (super, sub : Character_Attribute_Set) return Boolean is + begin + if + (super.Stand_Out or not sub.Stand_Out) and + (super.Under_Line or not sub.Under_Line) and + (super.Reverse_Video or not sub.Reverse_Video) and + (super.Blink or not sub.Blink) and + (super.Dim_Character or not sub.Dim_Character) and + (super.Bold_Character or not sub.Bold_Character) and + (super.Alternate_Character_Set or not sub.Alternate_Character_Set) and + (super.Invisible_Character or not sub.Invisible_Character) -- and +-- (super.Protected_Character or not sub.Protected_Character) and +-- (super.Horizontal or not sub.Horizontal) and +-- (super.Left or not sub.Left) and +-- (super.Low or not sub.Low) and +-- (super.Right or not sub.Right) and +-- (super.Top or not sub.Top) and +-- (super.Vertical or not sub.Vertical) + then + return True; + else + return False; + end if; + end subset; + + function intersect (b, a : Character_Attribute_Set) return Boolean is + begin + if + (a.Stand_Out and b.Stand_Out) or + (a.Under_Line and b.Under_Line) or + (a.Reverse_Video and b.Reverse_Video) or + (a.Blink and b.Blink) or + (a.Dim_Character and b.Dim_Character) or + (a.Bold_Character and b.Bold_Character) or + (a.Alternate_Character_Set and b.Alternate_Character_Set) or + (a.Invisible_Character and b.Invisible_Character) -- or +-- (a.Protected_Character and b.Protected_Character) or +-- (a.Horizontal and b.Horizontal) or +-- (a.Left and b.Left) or +-- (a.Low and b.Low) or +-- (a.Right and b.Right) or +-- (a.Top and b.Top) or +-- (a.Vertical and b.Vertical) + then + return True; + else + return False; + end if; + end intersect; + + function has_A_COLOR (attr : Attributed_Character) return Boolean is + begin + if attr.Color /= Color_Pair (0) then + return True; + else + return False; + end if; + end has_A_COLOR; + + -- Print some text with attributes. + function show_attr (row : Line_Position; + skip : Natural; + attr : Character_Attribute_Set; + name : String; + once : Boolean) return Line_Position is + + function make_record (n : Integer) return Character_Attribute_Set; + function make_record (n : Integer) return Character_Attribute_Set is + -- unsupported means true + a : Character_Attribute_Set := (others => False); + m : Integer; + rest : Integer; + begin + -- ncv is a bitmap with these fields + -- A_STANDOUT, + -- A_UNDERLINE, + -- A_REVERSE, + -- A_BLINK, + -- A_DIM, + -- A_BOLD, + -- A_INVIS, + -- A_PROTECT, + -- A_ALTCHARSET + -- It means no_color_video, + -- video attributes that can't be used with colors + -- see man terminfo.5 + m := n mod 2; + rest := n / 2; + if 1 = m then + a.Stand_Out := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Under_Line := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Reverse_Video := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Blink := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Bold_Character := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Invisible_Character := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Protected_Character := True; + end if; + m := rest mod 2; + rest := rest / 2; + if 1 = m then + a.Alternate_Character_Set := True; + end if; + + return a; + end make_record; + + ncv : constant Integer := Get_Number ("ncv"); + + begin + Move_Cursor (Line => row, Column => 8); + Add (Str => name & " mode:"); + Move_Cursor (Line => row, Column => 24); + Add (Ch => '|'); + if skip /= 0 then + -- printw("%*s", skip, " ") + Add (Str => Ada.Strings.Fixed."*" (skip, ' ')); + end if; + if once then + Switch_Character_Attribute (Attr => attr); + else + Set_Character_Attributes (Attr => attr); + end if; + Add (Str => "abcde fghij klmno pqrst uvwxy z"); + if once then + Switch_Character_Attribute (Attr => attr, On => False); + end if; + if skip /= 0 then + Add (Str => Ada.Strings.Fixed."*" (skip, ' ')); + end if; + Add (Ch => '|'); + if attr /= Normal_Video then + declare begin + if not subset (super => Supported_Attributes, sub => attr) then + Add (Str => " (N/A)"); + elsif ncv > 0 and has_A_COLOR (Get_Background) then + declare + Color_Supported_Attributes : + constant Character_Attribute_Set := make_record (ncv); + begin + if intersect (Color_Supported_Attributes, attr) then + Add (Str => " (NCV) "); + end if; + end; + end if; + end; + end if; + return row + 2; + end show_attr; + + procedure attr_getc (skip : in out Integer; + fg, bg : in out Color_Number; + result : out Boolean) is + ch : constant Key_Code := Getchar; + nc : constant Color_Number := Color_Number (Number_Of_Colors); + begin + result := True; + if Ada.Characters.Handling.Is_Digit (Character'Val (ch)) then + skip := ctoi (Code_To_Char (ch)); + elsif ch = CTRL ('L') then + Touch; + Touch (Current_Window); + Refresh; + elsif Has_Colors then + case ch is + -- Note the mathematical elegance compared to the C version. + when Character'Pos ('f') => fg := (fg + 1) mod nc; + when Character'Pos ('F') => fg := (fg - 1) mod nc; + when Character'Pos ('b') => bg := (bg + 1) mod nc; + when Character'Pos ('B') => bg := (bg - 1) mod nc; + when others => + result := False; + end case; + else + result := False; + end if; + end attr_getc; + + -- pairs could be defined as array ( Color_Number(0) .. colors - 1) of + -- array (Color_Number(0).. colors - 1) of Boolean; + pairs : array (Color_Pair'Range) of Boolean := (others => False); + fg, bg : Color_Number := Black; -- = 0; + xmc : constant Integer := Get_Number ("xmc"); + skip : Integer := xmc; + n : Integer; + + use Int_IO; + +begin + pairs (0) := True; + + if skip < 0 then + skip := 0; + end if; + n := skip; + + loop + declare + row : Line_Position := 2; + normal : Attributed_Character := Blank2; + -- ??? + begin + -- row := 2; -- weird, row is set to 0 without this. + -- TODO delete the above line, it was a gdb quirk that confused me + if Has_Colors then + declare pair : constant Color_Pair := + Color_Pair (fg * Color_Number (Number_Of_Colors) + bg); + begin + -- Go though each color pair. Assume that the number of + -- Redefinable_Color_Pairs is 8*8 with predefined Colors 0..7 + if not pairs (pair) then + Init_Pair (pair, fg, bg); + pairs (pair) := True; + end if; + normal.Color := pair; + end; + end if; + Set_Background (Ch => normal); + Erase; + + Add (Line => 0, Column => 20, + Str => "Character attribute test display"); + + row := show_attr (row, n, (Stand_Out => True, others => False), + "STANDOUT", True); + row := show_attr (row, n, (Reverse_Video => True, others => False), + "REVERSE", True); + row := show_attr (row, n, (Bold_Character => True, others => False), + "BOLD", True); + row := show_attr (row, n, (Under_Line => True, others => False), + "UNDERLINE", True); + row := show_attr (row, n, (Dim_Character => True, others => False), + "DIM", True); + row := show_attr (row, n, (Blink => True, others => False), + "BLINK", True); +-- row := show_attr (row, n, (Protected_Character => True, +-- others => False), "PROTECT", True); + row := show_attr (row, n, (Invisible_Character => True, + others => False), "INVISIBLE", True); + row := show_attr (row, n, Normal_Video, "NORMAL", False); + + Move_Cursor (Line => row, Column => 8); + if xmc > -1 then + Add (Str => "This terminal does have the magic-cookie glitch"); + else + Add (Str => "This terminal does not have the magic-cookie glitch"); + end if; + Move_Cursor (Line => row + 1, Column => 8); + Add (Str => "Enter a digit to set gaps on each side of " & + "displayed attributes"); + Move_Cursor (Line => row + 2, Column => 8); + Add (Str => "^L = repaint"); + if Has_Colors then + declare tmp1 : String (1 .. 1); + begin + Add (Str => ". f/F/b/F toggle colors ("); + Put (tmp1, Integer (fg)); + Add (Str => tmp1); + Add (Ch => '/'); + Put (tmp1, Integer (bg)); + Add (Str => tmp1); + Add (Ch => ')'); + end; + end if; + Refresh; + end; + + declare result : Boolean; begin + attr_getc (n, fg, bg, result); + exit when not result; + end; + end loop; + + Set_Background (Ch => Blank2); + Erase; + End_Windows; +end ncurses2.attr_test; diff --git a/ncurses/Ada95/samples/ncurses2-attr_test.ads b/ncurses/Ada95/samples/ncurses2-attr_test.ads new file mode 100644 index 0000000..51c5143 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-attr_test.ads @@ -0,0 +1,42 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.2 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.attr_test; diff --git a/ncurses/Ada95/samples/ncurses2-color_edit.adb b/ncurses/Ada95/samples/ncurses2-color_edit.adb new file mode 100644 index 0000000..a6a35de --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-color_edit.adb @@ -0,0 +1,259 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.5 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with ncurses2.genericPuts; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +procedure ncurses2.color_edit is + use Int_IO; + + type RGB_Enum is (Redx, Greenx, Bluex); + + procedure change_color (current : Color_Number; + field : RGB_Enum; + value : RGB_Value; + usebase : Boolean); + + procedure change_color (current : Color_Number; + field : RGB_Enum; + value : RGB_Value; + usebase : Boolean) is + red, green, blue : RGB_Value; + begin + if usebase then + Color_Content (current, red, green, blue); + else + red := 0; + green := 0; + blue := 0; + end if; + + case field is + when Redx => red := red + value; + when Greenx => green := green + value; + when Bluex => blue := blue + value; + end case; + + declare + begin + Init_Color (current, red, green, blue); + exception + when Curses_Exception => Beep; + end; + + end change_color; + + package x is new ncurses2.genericPuts (100); use x; + + tmpb : x.BS.Bounded_String; + + tmp4 : String (1 .. 4); + tmp6 : String (1 .. 6); + tmp8 : String (1 .. 8); + -- This would be easier if Ada had a Bounded_String + -- defined as a class instead of the inferior generic package, + -- then I could define Put, Add, and Get for them. Blech. + value : RGB_Value := 0; + red, green, blue : RGB_Value; + max_colors : constant Natural := Number_Of_Colors; + current : Color_Number := 0; + field : RGB_Enum := Redx; + this_c : Key_Code := 0; +begin + Refresh; + + for i in Color_Number'(0) .. Color_Number (Number_Of_Colors) loop + Init_Pair (Color_Pair (i), White, i); + end loop; + + Move_Cursor (Line => Lines - 2, Column => 0); + Add (Str => "Number: "); + myPut (tmpb, Integer (value)); + myAdd (Str => tmpb); + + loop + + Switch_Character_Attribute (On => False, + Attr => (Bold_Character => True, + others => False)); + Add (Line => 0, Column => 20, Str => "Color RGB Value Editing"); + + Switch_Character_Attribute (On => False, + Attr => (Bold_Character => True, + others => False)); + + for i in Color_Number'(0) .. Color_Number (Number_Of_Colors) loop + Move_Cursor (Line => 2 + Line_Position (i), Column => 0); + if current = i then + Add (Ch => '>'); + else + Add (Ch => ' '); + end if; + -- TODO if i <= color_names'Max then + Put (tmp8, Integer (i)); + Set_Character_Attributes (Color => Color_Pair (i)); + Add (Str => " "); + Set_Character_Attributes; + + Refresh; + + Color_Content (i, red, green, blue); + Add (Str => " R = "); + if current = i and field = Redx then + Switch_Character_Attribute (On => True, + Attr => (Stand_Out => True, + others => False)); + end if; + Put (tmp4, Integer (red)); + Add (Str => tmp4); + if current = i and field = Redx then + Set_Character_Attributes; + end if; + Add (Str => " G = "); + if current = i and field = Greenx then + Switch_Character_Attribute (On => True, + Attr => (Stand_Out => True, + others => False)); + end if; + Put (tmp4, Integer (green)); + Add (Str => tmp4); + if current = i and field = Greenx then + Set_Character_Attributes; + end if; + Add (Str => " B = "); + if current = i and field = Bluex then + Switch_Character_Attribute (On => True, + Attr => (Stand_Out => True, + others => False)); + end if; + Put (tmp4, Integer (blue)); + Add (Str => tmp4); + if current = i and field = Bluex then + Set_Character_Attributes; + end if; + Set_Character_Attributes; + Add (ch => ')'); + end loop; + Add (Line => Line_Position (Number_Of_Colors + 3), Column => 0, + Str => "Use up/down to select a color, left/right to change " & + "fields."); + Add (Line => Line_Position (Number_Of_Colors + 4), Column => 0, + Str => "Modify field by typing nnn=, nnn-, or nnn+. ? for help."); + + Move_Cursor (Line => 2 + Line_Position (current), Column => 0); + + this_c := Getchar; + if Is_Digit (this_c) then + value := 0; + end if; + + case this_c is + when KEY_UP => + current := (current - 1) mod Color_Number (max_colors); + when KEY_DOWN => + current := (current + 1) mod Color_Number (max_colors); + when KEY_RIGHT => + field := RGB_Enum'Val ((RGB_Enum'Pos (field) + 1) mod 3); + when KEY_LEFT => + field := RGB_Enum'Val ((RGB_Enum'Pos (field) - 1) mod 3); + when + Character'Pos ('0') | + Character'Pos ('1') | + Character'Pos ('2') | + Character'Pos ('3') | + Character'Pos ('4') | + Character'Pos ('5') | + Character'Pos ('6') | + Character'Pos ('7') | + Character'Pos ('8') | + Character'Pos ('9') => + value := value * 10 + RGB_Value (ctoi (Code_To_Char (this_c))); + + when Character'Pos ('+') => + change_color (current, field, value, True); + + when Character'Pos ('-') => + change_color (current, field, -value, True); + + when Character'Pos ('=') => + change_color (current, field, value, False); + + when Character'Pos ('?') => + Erase; + P (" RGB Value Editing Help"); + P (""); + P ("You are in the RGB value editor. Use the arrow keys to " & + "select one of"); + P ("the fields in one of the RGB triples of the current colors;" & + " the one"); + P ("currently selected will be reverse-video highlighted."); + P (""); + P ("To change a field, enter the digits of the new value; they" & + " are echoed"); + P ("as entered. Finish by typing `='. The change will take" & + " effect instantly."); + P ("To increment or decrement a value, use the same procedure," & + " but finish"); + P ("with a `+' or `-'."); + P (""); + P ("To quit, do `x' or 'q'"); + + Pause; + Erase; + when Character'Pos ('q') | + Character'Pos ('x') => + null; + when others => + Beep; + end case; + Move_Cursor (Line => Lines - 2, Column => 0); + Put (tmp6, Integer (value)); + Add (Str => "Number: " & tmp6); + + Clear_To_End_Of_Line; + exit when this_c = Character'Pos ('x') or + this_c = Character'Pos ('q'); + end loop; + + Erase; + End_Windows; +end ncurses2.color_edit; diff --git a/ncurses/Ada95/samples/ncurses2-color_edit.ads b/ncurses/Ada95/samples/ncurses2-color_edit.ads new file mode 100644 index 0000000..3e8e392 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-color_edit.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.color_edit; diff --git a/ncurses/Ada95/samples/ncurses2-color_test.adb b/ncurses/Ada95/samples/ncurses2-color_test.adb new file mode 100644 index 0000000..c8f6c83 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-color_test.adb @@ -0,0 +1,163 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.3 $ +-- $Date: 2008/07/26 18:47:17 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Ada.Strings.Fixed; + +procedure ncurses2.color_test is + use Int_IO; + + procedure show_color_name (y, x : Integer; color : Integer); + + color_names : constant array (0 .. 15) of String (1 .. 7) := + ( + "black ", + "red ", + "green ", + "yellow ", + "blue ", + "magenta", + "cyan ", + "white ", + "BLACK ", + "RED ", + "GREEN ", + "YELLOW ", + "BLUE ", + "MAGENTA", + "CYAN ", + "WHITE " + ); + + procedure show_color_name (y, x : Integer; color : Integer) is + tmp5 : String (1 .. 5); + begin + if Number_Of_Colors > 8 then + + Put (tmp5, color); + Add (Line => Line_Position (y), Column => Column_Position (x), + Str => tmp5); + else + Add (Line => Line_Position (y), Column => Column_Position (x), + Str => color_names (color)); + end if; + end show_color_name; + + top, width : Integer; + hello : String (1 .. 5); + -- tmp3 : String (1 .. 3); + -- tmp2 : String (1 .. 2); + +begin + Refresh; + Add (Str => "There are "); + -- Put(tmp3, Number_Of_Colors*Number_Of_Colors); + Add (Str => Ada.Strings.Fixed.Trim (Integer'Image (Number_Of_Colors * + Number_Of_Colors), + Ada.Strings.Left)); + Add (Str => " color pairs"); + Add (Ch => newl); + + if Number_Of_Colors > 8 then + width := 4; + else + width := 8; + end if; + + if Number_Of_Colors > 8 then + hello := "Test "; + else + hello := "Hello"; + end if; + + for Bright in Boolean loop + if Number_Of_Colors > 8 then + top := 0; + else + top := Boolean'Pos (Bright) * (Number_Of_Colors + 3); + end if; + Clear_To_End_Of_Screen; + Move_Cursor (Line => Line_Position (top) + 1, Column => 0); + -- Put(tmp2, Number_Of_Colors); + Add (Str => Ada.Strings.Fixed.Trim (Integer'Image (Number_Of_Colors), + Ada.Strings.Left)); + Add (Ch => 'x'); + Add (Str => Ada.Strings.Fixed.Trim (Integer'Image (Number_Of_Colors), + Ada.Strings.Left)); + Add (Str => " matrix of foreground/background colors, bright *"); + if Bright then + Add (Str => "on"); + else + Add (Str => "off"); + end if; + Add (Ch => '*'); + + for i in 0 .. Number_Of_Colors - 1 loop + show_color_name (top + 2, (i + 1) * width, i); + end loop; + for i in 0 .. Number_Of_Colors - 1 loop + show_color_name (top + 3 + i, 0, i); + end loop; + for i in 1 .. Number_Of_Color_Pairs - 1 loop + Init_Pair (Color_Pair (i), Color_Number (i mod Number_Of_Colors), + Color_Number (i / Number_Of_Colors)); + -- attron((attr_t) COLOR_PAIR(i)) -- Huh? + Set_Color (Pair => Color_Pair (i)); + if Bright then + Switch_Character_Attribute (Attr => (Bold_Character => True, + others => False)); + end if; + Add (Line => Line_Position (top + 3 + (i / Number_Of_Colors)), + Column => Column_Position ((i mod Number_Of_Colors + 1) * + width), + Str => hello); + Set_Character_Attributes; + end loop; + if Number_Of_Colors > 8 or Bright then + Pause; + end if; + end loop; + + Erase; + End_Windows; +end ncurses2.color_test; diff --git a/ncurses/Ada95/samples/ncurses2-color_test.ads b/ncurses/Ada95/samples/ncurses2-color_test.ads new file mode 100644 index 0000000..6e66318 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-color_test.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.color_test; diff --git a/ncurses/Ada95/samples/ncurses2-demo_forms.adb b/ncurses/Ada95/samples/ncurses2-demo_forms.adb new file mode 100644 index 0000000..7137aa0 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-demo_forms.adb @@ -0,0 +1,497 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.5 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms; +with Terminal_Interface.Curses.Forms.Field_User_Data; +with Ada.Characters.Handling; +with Ada.Strings; +with Ada.Strings.Bounded; + +procedure ncurses2.demo_forms is + package BS is new Ada.Strings.Bounded.Generic_Bounded_Length (80); + + type myptr is access Integer; + + -- The C version stores a pointer in the userptr and + -- converts it into a long integer. + -- The correct, but inconvenient way to do it is to use a + -- pointer to long and keep the pointer constant. + -- It just adds one memory piece to allocate and deallocate (not done here) + + package StringData is new + Terminal_Interface.Curses.Forms.Field_User_Data (Integer, myptr); + + function edit_secure (me : Field; c_in : Key_Code) return Key_Code; + function form_virtualize (f : Form; w : Window) return Key_Code; + function my_form_driver (f : Form; c : Key_Code) return Boolean; + function make_label (frow : Line_Position; + fcol : Column_Position; + label : String) return Field; + function make_field (frow : Line_Position; + fcol : Column_Position; + rows : Line_Count; + cols : Column_Count; + secure : Boolean) return Field; + procedure display_form (f : Form); + procedure erase_form (f : Form); + + -- prints '*' instead of characters. + -- Not that this keeps a bug from the C version: + -- type in the psasword field then move off and back. + -- the cursor is at position one, but + -- this assumes it as at the end so text gets appended instead + -- of overwtitting. + function edit_secure (me : Field; c_in : Key_Code) return Key_Code is + rows, frow : Line_Position; + nrow : Natural; + cols, fcol : Column_Position; + nbuf : Buffer_Number; + c : Key_Code := c_in; + c2 : Character; + + use StringData; + begin + Info (me, rows, cols, frow, fcol, nrow, nbuf); + -- TODO if result = Form_Ok and nbuf > 0 then + -- C version checked the return value + -- of Info, the Ada binding throws an exception I think. + if nbuf > 0 then + declare + temp : BS.Bounded_String; + temps : String (1 .. 10); + -- TODO Get_Buffer povides no information on the field length? + len : myptr; + begin + Get_Buffer (me, 1, Str => temps); + -- strcpy(temp, field_buffer(me, 1)); + Get_User_Data (me, len); + temp := BS.To_Bounded_String (temps (1 .. len.all)); + if c <= Key_Max then + c2 := Code_To_Char (c); + if Ada.Characters.Handling.Is_Graphic (c2) then + BS.Append (temp, c2); + len.all := len.all + 1; + Set_Buffer (me, 1, BS.To_String (temp)); + c := Character'Pos ('*'); + else + c := 0; + end if; + else + case c is + when REQ_BEG_FIELD | + REQ_CLR_EOF | + REQ_CLR_EOL | + REQ_DEL_LINE | + REQ_DEL_WORD | + REQ_DOWN_CHAR | + REQ_END_FIELD | + REQ_INS_CHAR | + REQ_INS_LINE | + REQ_LEFT_CHAR | + REQ_NEW_LINE | + REQ_NEXT_WORD | + REQ_PREV_WORD | + REQ_RIGHT_CHAR | + REQ_UP_CHAR => + c := 0; -- we don't want to do inline editing + when REQ_CLR_FIELD => + if len.all /= 0 then + temp := BS.To_Bounded_String (""); + Set_Buffer (me, 1, BS.To_String (temp)); + len.all := 0; + end if; + + when REQ_DEL_CHAR | + REQ_DEL_PREV => + if len.all /= 0 then + BS.Delete (temp, BS.Length (temp), BS.Length (temp)); + Set_Buffer (me, 1, BS.To_String (temp)); + len.all := len.all - 1; + end if; + when others => null; + end case; + end if; + end; + end if; + return c; + end edit_secure; + + mode : Key_Code := REQ_INS_MODE; + + function form_virtualize (f : Form; w : Window) return Key_Code is + type lookup_t is record + code : Key_Code; + result : Key_Code; + -- should be Form_Request_Code, but we need MAX_COMMAND + 1 + end record; + + lookup : constant array (Positive range <>) of lookup_t := + ( + ( + Character'Pos ('A') mod 16#20#, REQ_NEXT_CHOICE + ), + ( + Character'Pos ('B') mod 16#20#, REQ_PREV_WORD + ), + ( + Character'Pos ('C') mod 16#20#, REQ_CLR_EOL + ), + ( + Character'Pos ('D') mod 16#20#, REQ_DOWN_FIELD + ), + ( + Character'Pos ('E') mod 16#20#, REQ_END_FIELD + ), + ( + Character'Pos ('F') mod 16#20#, REQ_NEXT_PAGE + ), + ( + Character'Pos ('G') mod 16#20#, REQ_DEL_WORD + ), + ( + Character'Pos ('H') mod 16#20#, REQ_DEL_PREV + ), + ( + Character'Pos ('I') mod 16#20#, REQ_INS_CHAR + ), + ( + Character'Pos ('K') mod 16#20#, REQ_CLR_EOF + ), + ( + Character'Pos ('L') mod 16#20#, REQ_LEFT_FIELD + ), + ( + Character'Pos ('M') mod 16#20#, REQ_NEW_LINE + ), + ( + Character'Pos ('N') mod 16#20#, REQ_NEXT_FIELD + ), + ( + Character'Pos ('O') mod 16#20#, REQ_INS_LINE + ), + ( + Character'Pos ('P') mod 16#20#, REQ_PREV_FIELD + ), + ( + Character'Pos ('R') mod 16#20#, REQ_RIGHT_FIELD + ), + ( + Character'Pos ('S') mod 16#20#, REQ_BEG_FIELD + ), + ( + Character'Pos ('U') mod 16#20#, REQ_UP_FIELD + ), + ( + Character'Pos ('V') mod 16#20#, REQ_DEL_CHAR + ), + ( + Character'Pos ('W') mod 16#20#, REQ_NEXT_WORD + ), + ( + Character'Pos ('X') mod 16#20#, REQ_CLR_FIELD + ), + ( + Character'Pos ('Y') mod 16#20#, REQ_DEL_LINE + ), + ( + Character'Pos ('Z') mod 16#20#, REQ_PREV_CHOICE + ), + ( + Character'Pos ('[') mod 16#20#, -- ESCAPE + Form_Request_Code'Last + 1 + ), + ( + Key_Backspace, REQ_DEL_PREV + ), + ( + KEY_DOWN, REQ_DOWN_CHAR + ), + ( + Key_End, REQ_LAST_FIELD + ), + ( + Key_Home, REQ_FIRST_FIELD + ), + ( + KEY_LEFT, REQ_LEFT_CHAR + ), + ( + KEY_LL, REQ_LAST_FIELD + ), + ( + Key_Next, REQ_NEXT_FIELD + ), + ( + KEY_NPAGE, REQ_NEXT_PAGE + ), + ( + KEY_PPAGE, REQ_PREV_PAGE + ), + ( + Key_Previous, REQ_PREV_FIELD + ), + ( + KEY_RIGHT, REQ_RIGHT_CHAR + ), + ( + KEY_UP, REQ_UP_CHAR + ), + ( + Character'Pos ('Q') mod 16#20#, -- QUIT + Form_Request_Code'Last + 1 -- TODO MAX_FORM_COMMAND + 1 + ) + ); + + c : Key_Code := Getchar (w); + me : constant Field := Current (f); + + begin + if c = Character'Pos (']') mod 16#20# then + if mode = REQ_INS_MODE then + mode := REQ_OVL_MODE; + else + mode := REQ_INS_MODE; + end if; + c := mode; + else + for n in lookup'Range loop + if lookup (n).code = c then + c := lookup (n).result; + exit; + end if; + end loop; + end if; + + -- Force the field that the user is typing into to be in reverse video, + -- while the other fields are shown underlined. + if c <= Key_Max then + c := edit_secure (me, c); + Set_Background (me, (Reverse_Video => True, others => False)); + elsif c <= Form_Request_Code'Last then + c := edit_secure (me, c); + Set_Background (me, (Under_Line => True, others => False)); + end if; + return c; + end form_virtualize; + + function my_form_driver (f : Form; c : Key_Code) return Boolean is + flag : constant Driver_Result := Driver (f, F_Validate_Field); + begin + if c = Form_Request_Code'Last + 1 + and flag = Form_Ok then + return True; + else + Beep; + return False; + end if; + end my_form_driver; + + function make_label (frow : Line_Position; + fcol : Column_Position; + label : String) return Field is + f : constant Field := Create (1, label'Length, frow, fcol, 0, 0); + o : Field_Option_Set := Get_Options (f); + begin + if f /= Null_Field then + Set_Buffer (f, 0, label); + o.Active := False; + Set_Options (f, o); + end if; + return f; + end make_label; + + function make_field (frow : Line_Position; + fcol : Column_Position; + rows : Line_Count; + cols : Column_Count; + secure : Boolean) return Field is + f : Field; + use StringData; + len : myptr; + begin + if secure then + f := Create (rows, cols, frow, fcol, 0, 1); + else + f := Create (rows, cols, frow, fcol, 0, 0); + end if; + + if f /= Null_Field then + Set_Background (f, (Under_Line => True, others => False)); + len := new Integer; + len.all := 0; + Set_User_Data (f, len); + end if; + return f; + end make_field; + + procedure display_form (f : Form) is + w : Window; + rows : Line_Count; + cols : Column_Count; + begin + Scale (f, rows, cols); + + w := New_Window (rows + 2, cols + 4, 0, 0); + if w /= Null_Window then + Set_Window (f, w); + Set_Sub_Window (f, Derived_Window (w, rows, cols, 1, 2)); + Box (w); -- 0,0 + Set_KeyPad_Mode (w, True); + end if; + + -- TODO if Post(f) /= Form_Ok then it's a procedure + declare + begin + Post (f); + exception + when + Eti_System_Error | + Eti_Bad_Argument | + Eti_Posted | + Eti_Connected | + Eti_Bad_State | + Eti_No_Room | + Eti_Not_Posted | + Eti_Unknown_Command | + Eti_No_Match | + Eti_Not_Selectable | + Eti_Not_Connected | + Eti_Request_Denied | + Eti_Invalid_Field | + Eti_Current => + Refresh (w); + end; + -- end if; + end display_form; + + procedure erase_form (f : Form) is + w : Window := Get_Window (f); + s : Window := Get_Sub_Window (f); + begin + Post (f, False); + Erase (w); + Refresh (w); + Delete (s); + Delete (w); + end erase_form; + + finished : Boolean := False; + f : constant Field_Array_Access := new Field_Array (1 .. 12); + secure : Field; + myform : Form; + w : Window; + c : Key_Code; + result : Driver_Result; +begin + Move_Cursor (Line => 18, Column => 0); + Add (Str => "Defined form-traversal keys: ^Q/ESC- exit form"); + Add (Ch => newl); + Add (Str => "^N -- go to next field ^P -- go to previous field"); + Add (Ch => newl); + Add (Str => "Home -- go to first field End -- go to last field"); + Add (Ch => newl); + Add (Str => "^L -- go to field to left ^R -- go to field to right"); + Add (Ch => newl); + Add (Str => "^U -- move upward to field ^D -- move downward to field"); + Add (Ch => newl); + Add (Str => "^W -- go to next word ^B -- go to previous word"); + Add (Ch => newl); + Add (Str => "^S -- go to start of field ^E -- go to end of field"); + Add (Ch => newl); + Add (Str => "^H -- delete previous char ^Y -- delete line"); + Add (Ch => newl); + Add (Str => "^G -- delete current word ^C -- clear to end of line"); + Add (Ch => newl); + Add (Str => "^K -- clear to end of field ^X -- clear field"); + Add (Ch => newl); + Add (Str => "Arrow keys move within a field as you would expect."); + + Add (Line => 4, Column => 57, Str => "Forms Entry Test"); + + Refresh; + + -- describe the form + f (1) := make_label (0, 15, "Sample Form"); + f (2) := make_label (2, 0, "Last Name"); + f (3) := make_field (3, 0, 1, 18, False); + f (4) := make_label (2, 20, "First Name"); + f (5) := make_field (3, 20, 1, 12, False); + f (6) := make_label (2, 34, "Middle Name"); + f (7) := make_field (3, 34, 1, 12, False); + f (8) := make_label (5, 0, "Comments"); + f (9) := make_field (6, 0, 4, 46, False); + f (10) := make_label (5, 20, "Password:"); + f (11) := make_field (5, 30, 1, 9, True); + secure := f (11); + f (12) := Null_Field; + + myform := New_Form (f); + + display_form (myform); + + w := Get_Window (myform); + Set_Raw_Mode (SwitchOn => True); + Set_NL_Mode (SwitchOn => True); -- lets us read ^M's + while not finished loop + c := form_virtualize (myform, w); + result := Driver (myform, c); + case result is + when Form_Ok => + Add (Line => 5, Column => 57, Str => Get_Buffer (secure, 1)); + Clear_To_End_Of_Line; + Refresh; + when Unknown_Request => + finished := my_form_driver (myform, c); + when others => + Beep; + end case; + end loop; + + erase_form (myform); + + -- TODO Free_Form(myform); + -- for (c = 0; f[c] != 0; c++) free_field(f[c]); + Set_Raw_Mode (SwitchOn => False); + Set_NL_Mode (SwitchOn => True); + +end ncurses2.demo_forms; diff --git a/ncurses/Ada95/samples/ncurses2-demo_forms.ads b/ncurses/Ada95/samples/ncurses2-demo_forms.ads new file mode 100644 index 0000000..eabaa01 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-demo_forms.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.demo_forms; diff --git a/ncurses/Ada95/samples/ncurses2-demo_pad.adb b/ncurses/Ada95/samples/ncurses2-demo_pad.adb new file mode 100644 index 0000000..862b8b7 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-demo_pad.adb @@ -0,0 +1,675 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.7 $ +-- $Date: 2008/07/26 18:47:06 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +with Interfaces.C; +with System.Storage_Elements; +with System.Address_To_Access_Conversions; + +with Ada.Text_IO; +-- with Ada.Real_Time; use Ada.Real_Time; +-- TODO is there a way to use Real_Time or Ada.Calendar in place of +-- gettimeofday? + +-- Demonstrate pads. +procedure ncurses2.demo_pad is + + type timestruct is record + seconds : Integer; + microseconds : Integer; + end record; + + type myfunc is access function (w : Window) return Key_Code; + + function gettime return timestruct; + procedure do_h_line (y : Line_Position; + x : Column_Position; + c : Attributed_Character; + to : Column_Position); + procedure do_v_line (y : Line_Position; + x : Column_Position; + c : Attributed_Character; + to : Line_Position); + function padgetch (win : Window) return Key_Code; + function panner_legend (line : Line_Position) return Boolean; + procedure panner_legend (line : Line_Position); + procedure panner_h_cleanup (from_y : Line_Position; + from_x : Column_Position; + to_x : Column_Position); + procedure panner_v_cleanup (from_y : Line_Position; + from_x : Column_Position; + to_y : Line_Position); + procedure panner (pad : Window; + top_xp : Column_Position; + top_yp : Line_Position; + portyp : Line_Position; + portxp : Column_Position; + pgetc : myfunc); + + function gettime return timestruct is + + retval : timestruct; + + use Interfaces.C; + type timeval is record + tv_sec : long; + tv_usec : long; + end record; + pragma Convention (C, timeval); + + -- TODO function from_timeval is new Ada.Unchecked_Conversion( + -- timeval_a, System.Storage_Elements.Integer_Address); + -- should Interfaces.C.Pointers be used here? + + package myP is new System.Address_To_Access_Conversions (timeval); + use myP; + + t : constant Object_Pointer := new timeval; + + function gettimeofday + (TP : System.Storage_Elements.Integer_Address; + TZP : System.Storage_Elements.Integer_Address) return int; + pragma Import (C, gettimeofday, "gettimeofday"); + tmp : int; + begin + tmp := gettimeofday (System.Storage_Elements.To_Integer + (myP.To_Address (t)), + System.Storage_Elements.To_Integer + (myP.To_Address (null))); + if tmp < 0 then + retval.seconds := 0; + retval.microseconds := 0; + else + retval.seconds := Integer (t.tv_sec); + retval.microseconds := Integer (t.tv_usec); + end if; + return retval; + end gettime; + + -- in C, The behavior of mvhline, mvvline for negative/zero length is + -- unspecified, though we can rely on negative x/y values to stop the + -- macro. Except Ada makes Line_Position(-1) = Natural - 1 so forget it. + procedure do_h_line (y : Line_Position; + x : Column_Position; + c : Attributed_Character; + to : Column_Position) is + begin + if to > x then + Move_Cursor (Line => y, Column => x); + Horizontal_Line (Line_Size => Natural (to - x), Line_Symbol => c); + end if; + end do_h_line; + + procedure do_v_line (y : Line_Position; + x : Column_Position; + c : Attributed_Character; + to : Line_Position) is + begin + if to > y then + Move_Cursor (Line => y, Column => x); + Vertical_Line (Line_Size => Natural (to - y), Line_Symbol => c); + end if; + end do_v_line; + + function padgetch (win : Window) return Key_Code is + c : Key_Code; + c2 : Character; + begin + c := Getchar (win); + c2 := Code_To_Char (c); + + case c2 is + when '!' => + ShellOut (False); + return Key_Refresh; + when Character'Val (Character'Pos ('r') mod 16#20#) => -- CTRL('r') + End_Windows; + Refresh; + return Key_Refresh; + when Character'Val (Character'Pos ('l') mod 16#20#) => -- CTRL('l') + return Key_Refresh; + when 'U' => + return Key_Cursor_Up; + when 'D' => + return Key_Cursor_Down; + when 'R' => + return Key_Cursor_Right; + when 'L' => + return Key_Cursor_Left; + when '+' => + return Key_Insert_Line; + when '-' => + return Key_Delete_Line; + when '>' => + return Key_Insert_Char; + when '<' => + return Key_Delete_Char; + -- when ERR=> /* FALLTHRU */ + when 'q' => + return (Key_Exit); + when others => + return (c); + end case; + end padgetch; + + show_panner_legend : Boolean := True; + + function panner_legend (line : Line_Position) return Boolean is + legend : constant array (0 .. 3) of String (1 .. 61) := + ( + "Use arrow keys (or U,D,L,R) to pan, q to quit (?,t,s flags) ", + "Use ! to shell-out. Toggle legend:?, timer:t, scroll mark:s.", + "Use +,- (or j,k) to grow/shrink the panner vertically. ", + "Use <,> (or h,l) to grow/shrink the panner horizontally. "); + legendsize : constant := 4; + + n : constant Integer := legendsize - Integer (Lines - line); + begin + if line < Lines and n >= 0 then + Move_Cursor (Line => line, Column => 0); + if show_panner_legend then + Add (Str => legend (n)); + end if; + Clear_To_End_Of_Line; + return show_panner_legend; + end if; + return False; + end panner_legend; + + procedure panner_legend (line : Line_Position) is + begin + if not panner_legend (line) then + Beep; + end if; + end panner_legend; + + procedure panner_h_cleanup (from_y : Line_Position; + from_x : Column_Position; + to_x : Column_Position) is + begin + if not panner_legend (from_y) then + do_h_line (from_y, from_x, Blank2, to_x); + end if; + end panner_h_cleanup; + + procedure panner_v_cleanup (from_y : Line_Position; + from_x : Column_Position; + to_y : Line_Position) is + begin + if not panner_legend (from_y) then + do_v_line (from_y, from_x, Blank2, to_y); + end if; + end panner_v_cleanup; + + procedure panner (pad : Window; + top_xp : Column_Position; + top_yp : Line_Position; + portyp : Line_Position; + portxp : Column_Position; + pgetc : myfunc) is + + function f (y : Line_Position) return Line_Position; + function f (x : Column_Position) return Column_Position; + function greater (y1, y2 : Line_Position) return Integer; + function greater (x1, x2 : Column_Position) return Integer; + + top_x : Column_Position := top_xp; + top_y : Line_Position := top_yp; + porty : Line_Position := portyp; + portx : Column_Position := portxp; + + -- f[x] returns max[x - 1, 0] + function f (y : Line_Position) return Line_Position is + begin + if y > 0 then + return y - 1; + else + return y; -- 0 + end if; + end f; + + function f (x : Column_Position) return Column_Position is + begin + if x > 0 then + return x - 1; + else + return x; -- 0 + end if; + end f; + + function greater (y1, y2 : Line_Position) return Integer is + begin + if y1 > y2 then + return 1; + else + return 0; + end if; + end greater; + + function greater (x1, x2 : Column_Position) return Integer is + begin + if x1 > x2 then + return 1; + else + return 0; + end if; + end greater; + + pymax : Line_Position; + basey : Line_Position := 0; + pxmax : Column_Position; + basex : Column_Position := 0; + c : Key_Code; + scrollers : Boolean := True; + before, after : timestruct; + timing : Boolean := True; + + package floatio is new Ada.Text_IO.Float_IO (Long_Float); + begin + Get_Size (pad, pymax, pxmax); + Allow_Scrolling (Mode => False); -- we don't want stdscr to scroll! + + c := Key_Refresh; + loop + -- During shell-out, the user may have resized the window. Adjust + -- the port size of the pad to accommodate this. Ncurses + -- automatically resizes all of the normal windows to fit on the + -- new screen. + if top_x > Columns then + top_x := Columns; + end if; + if portx > Columns then + portx := Columns; + end if; + if top_y > Lines then + top_y := Lines; + end if; + if porty > Lines then + porty := Lines; + end if; + + case c is + when Key_Refresh | Character'Pos ('?') => + if c = Key_Refresh then + Erase; + else -- '?' + show_panner_legend := not show_panner_legend; + end if; + panner_legend (Lines - 4); + panner_legend (Lines - 3); + panner_legend (Lines - 2); + panner_legend (Lines - 1); + when Character'Pos ('t') => + timing := not timing; + if not timing then + panner_legend (Lines - 1); + end if; + when Character'Pos ('s') => + scrollers := not scrollers; + + -- Move the top-left corner of the pad, keeping the + -- bottom-right corner fixed. + when Character'Pos ('h') => + -- increase-columns: move left edge to left + if top_x = 0 then + Beep; + else + panner_v_cleanup (top_y, top_x, porty); + top_x := top_x - 1; + end if; + + when Character'Pos ('j') => + -- decrease-lines: move top-edge down + if top_y >= porty then + Beep; + else + if top_y /= 0 then + panner_h_cleanup (top_y - 1, f (top_x), portx); + end if; + top_y := top_y + 1; + end if; + when Character'Pos ('k') => + -- increase-lines: move top-edge up + if top_y = 0 then + Beep; + else + top_y := top_y - 1; + panner_h_cleanup (top_y, top_x, portx); + end if; + + when Character'Pos ('l') => + -- decrease-columns: move left-edge to right + if top_x >= portx then + Beep; + else + if top_x /= 0 then + panner_v_cleanup (f (top_y), top_x - 1, porty); + end if; + top_x := top_x + 1; + end if; + + -- Move the bottom-right corner of the pad, keeping the + -- top-left corner fixed. + when Key_Insert_Char => + -- increase-columns: move right-edge to right + if portx >= pxmax or portx >= Columns then + Beep; + else + panner_v_cleanup (f (top_y), portx - 1, porty); + portx := portx + 1; + -- C had ++portx instead of portx++, weird. + end if; + when Key_Insert_Line => + -- increase-lines: move bottom-edge down + if porty >= pymax or porty >= Lines then + Beep; + else + panner_h_cleanup (porty - 1, f (top_x), portx); + porty := porty + 1; + end if; + + when Key_Delete_Char => + -- decrease-columns: move bottom edge up + if portx <= top_x then + Beep; + else + portx := portx - 1; + panner_v_cleanup (f (top_y), portx, porty); + end if; + + when Key_Delete_Line => + -- decrease-lines + if porty <= top_y then + Beep; + else + porty := porty - 1; + panner_h_cleanup (porty, f (top_x), portx); + end if; + when Key_Cursor_Left => + -- pan leftwards + if basex > 0 then + basex := basex - 1; + else + Beep; + end if; + when Key_Cursor_Right => + -- pan rightwards + -- if (basex + portx - (pymax > porty) < pxmax) + if basex + portx - + Column_Position (greater (pymax, porty)) < pxmax then + -- if basex + portx < pxmax or + -- (pymax > porty and basex + portx - 1 < pxmax) then + basex := basex + 1; + else + Beep; + end if; + + when Key_Cursor_Up => + -- pan upwards + if basey > 0 then + basey := basey - 1; + else + Beep; + end if; + + when Key_Cursor_Down => + -- pan downwards + -- same as if (basey + porty - (pxmax > portx) < pymax) + if basey + porty - + Line_Position (greater (pxmax, portx)) < pymax then + -- if (basey + porty < pymax) or + -- (pxmax > portx and basey + porty - 1 < pymax) then + basey := basey + 1; + else + Beep; + end if; + + when Character'Pos ('H') | + Key_Home | + Key_Find => + basey := 0; + + when Character'Pos ('E') | + Key_End | + Key_Select => + if pymax < porty then + basey := 0; + else + basey := pymax - porty; + end if; + + when others => + Beep; + end case; + + -- more writing off the screen. + -- Interestingly, the exception is not handled if + -- we put a block around this. + -- delcare --begin + if top_y /= 0 and top_x /= 0 then + Add (Line => top_y - 1, Column => top_x - 1, + Ch => ACS_Map (ACS_Upper_Left_Corner)); + end if; + if top_x /= 0 then + do_v_line (top_y, top_x - 1, ACS_Map (ACS_Vertical_Line), porty); + end if; + if top_y /= 0 then + do_h_line (top_y - 1, top_x, ACS_Map (ACS_Horizontal_Line), portx); + end if; + -- exception when Curses_Exception => null; end; + + -- in C was ... pxmax > portx - 1 + if scrollers and pxmax >= portx then + declare + length : constant Column_Position := portx - top_x - 1; + lowend, highend : Column_Position; + begin + -- Instead of using floats, I'll use integers only. + lowend := top_x + (basex * length) / pxmax; + highend := top_x + ((basex + length) * length) / pxmax; + + do_h_line (porty - 1, top_x, ACS_Map (ACS_Horizontal_Line), + lowend); + if highend < portx then + Switch_Character_Attribute + (Attr => (Reverse_Video => True, others => False), + On => True); + do_h_line (porty - 1, lowend, Blank2, highend + 1); + Switch_Character_Attribute + (Attr => (Reverse_Video => True, others => False), + On => False); + do_h_line (porty - 1, highend + 1, + ACS_Map (ACS_Horizontal_Line), portx); + end if; + end; + else + do_h_line (porty - 1, top_x, ACS_Map (ACS_Horizontal_Line), portx); + end if; + + if scrollers and pymax >= porty then + declare + length : constant Line_Position := porty - top_y - 1; + lowend, highend : Line_Position; + begin + lowend := top_y + (basey * length) / pymax; + highend := top_y + ((basey + length) * length) / pymax; + + do_v_line (top_y, portx - 1, ACS_Map (ACS_Vertical_Line), + lowend); + if highend < porty then + Switch_Character_Attribute + (Attr => (Reverse_Video => True, others => False), + On => True); + do_v_line (lowend, portx - 1, Blank2, highend + 1); + Switch_Character_Attribute + (Attr => (Reverse_Video => True, others => False), + On => False); + do_v_line (highend + 1, portx - 1, + ACS_Map (ACS_Vertical_Line), porty); + end if; + end; + else + do_v_line (top_y, portx - 1, ACS_Map (ACS_Vertical_Line), porty); + end if; + + if top_y /= 0 then + Add (Line => top_y - 1, Column => portx - 1, + Ch => ACS_Map (ACS_Upper_Right_Corner)); + end if; + if top_x /= 0 then + Add (Line => porty - 1, Column => top_x - 1, + Ch => ACS_Map (ACS_Lower_Left_Corner)); + end if; + declare + begin + -- Here is another place where it is possible + -- to write to the corner of the screen. + Add (Line => porty - 1, Column => portx - 1, + Ch => ACS_Map (ACS_Lower_Right_Corner)); + exception + when Curses_Exception => null; + end; + + before := gettime; + + Refresh_Without_Update; + + declare + -- the C version allows the panel to have a zero height + -- wich raise the exception + begin + Refresh_Without_Update + ( + pad, + basey, basex, + top_y, top_x, + porty - Line_Position (greater (pxmax, portx)) - 1, + portx - Column_Position (greater (pymax, porty)) - 1); + exception + when Curses_Exception => null; + end; + + Update_Screen; + + if timing then + declare + s : String (1 .. 7); + elapsed : Long_Float; + begin + after := gettime; + elapsed := (Long_Float (after.seconds - before.seconds) + + Long_Float (after.microseconds + - before.microseconds) + / 1.0e6); + Move_Cursor (Line => Lines - 1, Column => Columns - 20); + floatio.Put (s, elapsed, Aft => 3, Exp => 0); + Add (Str => s); + Refresh; + end; + end if; + + c := pgetc (pad); + exit when c = Key_Exit; + + end loop; + + Allow_Scrolling (Mode => True); + + end panner; + + Gridsize : constant := 3; + Gridcount : Integer := 0; + + Pad_High : constant Line_Count := 200; + Pad_Wide : constant Column_Count := 200; + panpad : Window := New_Pad (Pad_High, Pad_Wide); +begin + if panpad = Null_Window then + Cannot ("cannot create requested pad"); + return; + end if; + + for i in 0 .. Pad_High - 1 loop + for j in 0 .. Pad_Wide - 1 loop + if i mod Gridsize = 0 and j mod Gridsize = 0 then + if i = 0 or j = 0 then + Add (panpad, '+'); + else + -- depends on ASCII? + Add (panpad, + Ch => Character'Val (Character'Pos ('A') + + Gridcount mod 26)); + Gridcount := Gridcount + 1; + end if; + elsif i mod Gridsize = 0 then + Add (panpad, '-'); + elsif j mod Gridsize = 0 then + Add (panpad, '|'); + else + declare + -- handle the write to the lower right corner error + begin + Add (panpad, ' '); + exception + when Curses_Exception => null; + end; + end if; + end loop; + end loop; + panner_legend (Lines - 4); + panner_legend (Lines - 3); + panner_legend (Lines - 2); + panner_legend (Lines - 1); + + Set_KeyPad_Mode (panpad, True); + -- Make the pad (initially) narrow enough that a trace file won't wrap. + -- We'll still be able to widen it during a test, since that's required + -- for testing boundaries. + + panner (panpad, 2, 2, Lines - 5, Columns - 15, padgetch'Access); + + Delete (panpad); + End_Windows; -- Hmm, Erase after End_Windows + Erase; +end ncurses2.demo_pad; diff --git a/ncurses/Ada95/samples/ncurses2-demo_pad.ads b/ncurses/Ada95/samples/ncurses2-demo_pad.ads new file mode 100644 index 0000000..b996263 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-demo_pad.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.demo_pad; diff --git a/ncurses/Ada95/samples/ncurses2-demo_panels.adb b/ncurses/Ada95/samples/ncurses2-demo_panels.adb new file mode 100644 index 0000000..d2558ed --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-demo_panels.adb @@ -0,0 +1,382 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.6 $ +-- $Date: 2008/08/30 23:35:01 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Panels.User_Data; + +with ncurses2.genericPuts; + +procedure ncurses2.demo_panels (nap_mseci : Integer) is + use Int_IO; + + function mkpanel (color : Color_Number; + rows : Line_Count; + cols : Column_Count; + tly : Line_Position; + tlx : Column_Position) return Panel; + procedure rmpanel (pan : in out Panel); + procedure pflush; + procedure wait_a_while (msec : Integer); + procedure saywhat (text : String); + procedure fill_panel (pan : Panel); + + nap_msec : Integer := nap_mseci; + + function mkpanel (color : Color_Number; + rows : Line_Count; + cols : Column_Count; + tly : Line_Position; + tlx : Column_Position) return Panel is + win : Window; + pan : Panel := Null_Panel; + begin + win := New_Window (rows, cols, tly, tlx); + if Null_Window /= win then + pan := New_Panel (win); + if pan = Null_Panel then + Delete (win); + elsif Has_Colors then + declare + fg, bg : Color_Number; + begin + if color = Blue then + fg := White; + else + fg := Black; + end if; + bg := color; + Init_Pair (Color_Pair (color), fg, bg); + Set_Background (win, (Ch => ' ', + Attr => Normal_Video, + Color => Color_Pair (color))); + end; + else + Set_Background (win, (Ch => ' ', + Attr => (Bold_Character => True, + others => False), + Color => Color_Pair (color))); + end if; + end if; + return pan; + end mkpanel; + + procedure rmpanel (pan : in out Panel) is + win : Window := Panel_Window (pan); + begin + Delete (pan); + Delete (win); + end rmpanel; + + procedure pflush is + begin + Update_Panels; + Update_Screen; + end pflush; + + procedure wait_a_while (msec : Integer) is + begin + -- The C version had some #ifdef blocks here + if msec = 1 then + Getchar; + else + Nap_Milli_Seconds (msec); + end if; + end wait_a_while; + + procedure saywhat (text : String) is + begin + Move_Cursor (Line => Lines - 1, Column => 0); + Clear_To_End_Of_Line; + Add (Str => text); + end saywhat; + + -- from sample-curses_demo.adb + type User_Data is new String (1 .. 2); + type User_Data_Access is access all User_Data; + package PUD is new Panels.User_Data (User_Data, User_Data_Access); + + use PUD; + + procedure fill_panel (pan : Panel) is + win : constant Window := Panel_Window (pan); + num : constant Character := Get_User_Data (pan) (2); + tmp6 : String (1 .. 6) := "-panx-"; + maxy : Line_Count; + maxx : Column_Count; + + begin + Move_Cursor (win, 1, 1); + tmp6 (5) := num; + Add (win, Str => tmp6); + Clear_To_End_Of_Line (win); + Box (win); + Get_Size (win, maxy, maxx); + for y in 2 .. maxy - 3 loop + for x in 1 .. maxx - 3 loop + Move_Cursor (win, y, x); + Add (win, num); + end loop; + end loop; + exception + when Curses_Exception => null; + end fill_panel; + + modstr : constant array (0 .. 5) of String (1 .. 5) := + ("test ", + "TEST ", + "(**) ", + "*()* ", + "<--> ", + "LAST " + ); + + package p is new ncurses2.genericPuts (1024); + use p; + use p.BS; + -- the C version said register int y, x; + tmpb : BS.Bounded_String; + +begin + Refresh; + + for y in 0 .. Integer (Lines - 2) loop + for x in 0 .. Integer (Columns - 1) loop + myPut (tmpb, (y + x) mod 10); + myAdd (Str => tmpb); + end loop; + end loop; + for y in 0 .. 4 loop + declare + p1, p2, p3, p4, p5 : Panel; + U1 : constant User_Data_Access := new User_Data'("p1"); + U2 : constant User_Data_Access := new User_Data'("p2"); + U3 : constant User_Data_Access := new User_Data'("p3"); + U4 : constant User_Data_Access := new User_Data'("p4"); + U5 : constant User_Data_Access := new User_Data'("p5"); + + begin + p1 := mkpanel (Red, Lines / 2 - 2, Columns / 8 + 1, 0, 0); + Set_User_Data (p1, U1); + p2 := mkpanel (Green, Lines / 2 + 1, Columns / 7, Lines / 4, + Columns / 10); + Set_User_Data (p2, U2); + p3 := mkpanel (Yellow, Lines / 4, Columns / 10, Lines / 2, + Columns / 9); + Set_User_Data (p3, U3); + p4 := mkpanel (Blue, Lines / 2 - 2, Columns / 8, Lines / 2 - 2, + Columns / 3); + Set_User_Data (p4, U4); + p5 := mkpanel (Magenta, Lines / 2 - 2, Columns / 8, Lines / 2, + Columns / 2 - 2); + Set_User_Data (p5, U5); + + fill_panel (p1); + fill_panel (p2); + fill_panel (p3); + fill_panel (p4); + fill_panel (p5); + Hide (p4); + Hide (p5); + pflush; + saywhat ("press any key to continue"); + wait_a_while (nap_msec); + + saywhat ("h3 s1 s2 s4 s5; press any key to continue"); + Move (p1, 0, 0); + Hide (p3); + Show (p1); + Show (p2); + Show (p4); + Show (p5); + pflush; + wait_a_while (nap_msec); + + saywhat ("s1; press any key to continue"); + Show (p1); + pflush; + wait_a_while (nap_msec); + + saywhat ("s2; press any key to continue"); + Show (p2); + pflush; + wait_a_while (nap_msec); + + saywhat ("m2; press any key to continue"); + Move (p2, Lines / 3 + 1, Columns / 8); + pflush; + wait_a_while (nap_msec); + + saywhat ("s3;"); + Show (p3); + pflush; + wait_a_while (nap_msec); + + saywhat ("m3; press any key to continue"); + Move (p3, Lines / 4 + 1, Columns / 15); + pflush; + wait_a_while (nap_msec); + + saywhat ("b3; press any key to continue"); + Bottom (p3); + pflush; + wait_a_while (nap_msec); + + saywhat ("s4; press any key to continue"); + Show (p4); + pflush; + wait_a_while (nap_msec); + + saywhat ("s5; press any key to continue"); + Show (p5); + pflush; + wait_a_while (nap_msec); + + saywhat ("t3; press any key to continue"); + Top (p3); + pflush; + wait_a_while (nap_msec); + + saywhat ("t1; press any key to continue"); + Top (p1); + pflush; + wait_a_while (nap_msec); + + saywhat ("t2; press any key to continue"); + Top (p2); + pflush; + wait_a_while (nap_msec); + + saywhat ("t3; press any key to continue"); + Top (p3); + pflush; + wait_a_while (nap_msec); + + saywhat ("t4; press any key to continue"); + Top (p4); + pflush; + wait_a_while (nap_msec); + + for itmp in 0 .. 5 loop + declare + w4 : constant Window := Panel_Window (p4); + w5 : constant Window := Panel_Window (p5); + begin + + saywhat ("m4; press any key to continue"); + Move_Cursor (w4, Lines / 8, 1); + Add (w4, modstr (itmp)); + Move (p4, Lines / 6, Column_Position (itmp) * (Columns / 8)); + Move_Cursor (w5, Lines / 6, 1); + Add (w5, modstr (itmp)); + pflush; + wait_a_while (nap_msec); + + saywhat ("m5; press any key to continue"); + Move_Cursor (w4, Lines / 6, 1); + Add (w4, modstr (itmp)); + Move (p5, Lines / 3 - 1, (Column_Position (itmp) * 10) + 6); + Move_Cursor (w5, Lines / 8, 1); + Add (w5, modstr (itmp)); + pflush; + wait_a_while (nap_msec); + end; + end loop; + + saywhat ("m4; press any key to continue"); + Move (p4, Lines / 6, 6 * (Columns / 8)); + -- Move(p4, Lines / 6, itmp * (Columns / 8)); + pflush; + wait_a_while (nap_msec); + + saywhat ("t5; press any key to continue"); + Top (p5); + pflush; + wait_a_while (nap_msec); + + saywhat ("t2; press any key to continue"); + Top (p2); + pflush; + wait_a_while (nap_msec); + + saywhat ("t1; press any key to continue"); + Top (p1); + pflush; + wait_a_while (nap_msec); + + saywhat ("d2; press any key to continue"); + rmpanel (p2); + pflush; + wait_a_while (nap_msec); + + saywhat ("h3; press any key to continue"); + Hide (p3); + pflush; + wait_a_while (nap_msec); + + saywhat ("d1; press any key to continue"); + rmpanel (p1); + pflush; + wait_a_while (nap_msec); + + saywhat ("d4; press any key to continue"); + rmpanel (p4); + pflush; + wait_a_while (nap_msec); + + saywhat ("d5; press any key to continue"); + rmpanel (p5); + pflush; + wait_a_while (nap_msec); + if nap_msec = 1 then + exit; + else + nap_msec := 100; + end if; + + end; + end loop; + + Erase; + End_Windows; + +end ncurses2.demo_panels; diff --git a/ncurses/Ada95/samples/ncurses2-demo_panels.ads b/ncurses/Ada95/samples/ncurses2-demo_panels.ads new file mode 100644 index 0000000..eb2878c --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-demo_panels.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.demo_panels (nap_mseci : Integer); diff --git a/ncurses/Ada95/samples/ncurses2-flushinp_test.adb b/ncurses/Ada95/samples/ncurses2-flushinp_test.adb new file mode 100644 index 0000000..9ea98e1 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-flushinp_test.adb @@ -0,0 +1,135 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with ncurses2.util; use ncurses2.util; + +procedure ncurses2.flushinp_test (win : Window) is + + procedure Continue (win : Window); + + procedure Continue (win : Window) is + begin + Set_Echo_Mode (False); + Move_Cursor (win, 10, 1); + Add (win, 10, 1, " Press any key to continue"); + Refresh (win); + Getchar (win); + end Continue; + + h, by, sh : Line_Position; + w, bx, sw : Column_Position; + + subWin : Window; + +begin + Clear (win); + Get_Size (win, h, w); + Get_Window_Position (win, by, bx); + sw := w / 3; + sh := h / 3; + subWin := Sub_Window (win, sh, sw, by + h - sh - 2, bx + w - sw - 2); + + if Has_Colors then + Init_Pair (2, Cyan, Blue); + Change_Background (subWin, + Attributed_Character'(Ch => ' ', Color => 2, + Attr => Normal_Video)); + end if; + + Set_Character_Attributes (subWin, + (Bold_Character => True, others => False)); + Box (subWin); + Add (subWin, 2, 1, "This is a subwindow"); + Refresh (win); + + Set_Cbreak_Mode (True); + Add (win, 0, 1, "This is a test of the flushinp() call."); + + Add (win, 2, 1, "Type random keys for 5 seconds."); + Add (win, 3, 1, + "These should be discarded (not echoed) after the subwindow " & + "goes away."); + Refresh (win); + + for i in 0 .. 4 loop + Move_Cursor (subWin, 1, 1); + Add (subWin, Str => "Time = "); + Add (subWin, Str => Integer'Image (i)); + Refresh (subWin); + Nap_Milli_Seconds (1000); + Flush_Input; + end loop; + + Delete (subWin); + Erase (win); + Flash_Screen; + Refresh (win); + Nap_Milli_Seconds (1000); + + Add (win, 2, 1, + Str => "If you were still typing when the window timer expired,"); + Add (win, 3, 1, + "or else you typed nothing at all while it was running,"); + Add (win, 4, 1, + "test was invalid. You'll see garbage or nothing at all. "); + Add (win, 6, 1, "Press a key"); + Move_Cursor (win, 9, 10); + Refresh (win); + Set_Echo_Mode (True); + Getchar (win); + Flush_Input; + Add (win, 12, 0, + "If you see any key other than what you typed, flushinp() is broken."); + Continue (win); + + Move_Cursor (win, 9, 10); + Delete_Character (win); + Refresh (win); + Move_Cursor (win, 12, 0); + Clear_To_End_Of_Line; + Add (win, + "What you typed should now have been deleted; if not, wdelch() " & + "failed."); + Continue (win); + + Set_Cbreak_Mode (True); + +end ncurses2.flushinp_test; diff --git a/ncurses/Ada95/samples/ncurses2-flushinp_test.ads b/ncurses/Ada95/samples/ncurses2-flushinp_test.ads new file mode 100644 index 0000000..5376c94 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-flushinp_test.ads @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; + +procedure ncurses2.flushinp_test (win : Terminal_Interface.Curses.Window); diff --git a/ncurses/Ada95/samples/ncurses2-genericputs.adb b/ncurses/Ada95/samples/ncurses2-genericputs.adb new file mode 100644 index 0000000..6ca6583 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-genericputs.adb @@ -0,0 +1,117 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.3 $ +-- $Date: 2008/07/26 18:46:18 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body ncurses2.genericPuts is + + procedure myGet (Win : in Window := Standard_Window; + Str : out BS.Bounded_String; + Len : in Integer := -1) + is + function Wgetnstr (Win : Window; + Str : char_array; + Len : int) return int; + pragma Import (C, Wgetnstr, "wgetnstr"); + + N : Integer := Len; + Txt : char_array (0 .. size_t (Max_Length)); + xStr : String (1 .. Max_Length); + Cnt : Natural; + begin + if N < 0 then + N := Max_Length; + end if; + if N > Max_Length then + raise Constraint_Error; + end if; + Txt (0) := Interfaces.C.char'First; + if Wgetnstr (Win, Txt, C_Int (N)) = Curses_Err then + raise Curses_Exception; + end if; + To_Ada (Txt, xStr, Cnt, True); + Str := To_Bounded_String (xStr (1 .. Cnt)); + end myGet; + + procedure myPut (Str : out BS.Bounded_String; + i : Integer; + Base : in Number_Base := 10) is + package Int_IO is new Integer_IO (Integer); use Int_IO; + tmp : String (1 .. BS.Max_Length); + begin + Put (tmp, i, Base); + Str := To_Bounded_String (tmp); + Trim (Str, Ada.Strings.Trim_End'(Ada.Strings.Left)); + end myPut; + + procedure myAdd (Str : BS.Bounded_String) is + begin + Add (Str => To_String (Str)); + end myAdd; + + -- from ncurses-aux + procedure Fill_String (Cp : in chars_ptr; + Str : out BS.Bounded_String) + is + -- Fill the string with the characters referenced by the + -- chars_ptr. + -- + Len : Natural; + begin + if Cp /= Null_Ptr then + Len := Natural (Strlen (Cp)); + if Max_Length < Len then + raise Constraint_Error; + end if; + declare + S : String (1 .. Len); + begin + S := Value (Cp); + Str := To_Bounded_String (S); + end; + else + Str := Null_Bounded_String; + end if; + + end Fill_String; + +end ncurses2.genericPuts; diff --git a/ncurses/Ada95/samples/ncurses2-genericputs.ads b/ncurses/Ada95/samples/ncurses2-genericputs.ads new file mode 100644 index 0000000..1614a11 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-genericputs.ads @@ -0,0 +1,72 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.2 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +with Ada.Text_IO; use Ada.Text_IO; +with Ada.Strings.Bounded; +use Ada.Strings.Bounded; +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Terminal_Interface.Curses; + +generic + Max : Natural; + -- type mystring is private; + -- type myint is +package ncurses2.genericPuts is + package BS is new + Ada.Strings.Bounded.Generic_Bounded_Length (Max); + use BS; + + procedure myGet (Win : in Terminal_Interface.Curses.Window + := Terminal_Interface.Curses.Standard_Window; + Str : out BS.Bounded_String; + Len : in Integer := -1); + + procedure myPut (Str : out BS.Bounded_String; + i : Integer; + Base : in Number_Base := 10); + -- the default should be Ada.Text_IO.Integer_IO.Default_Base + -- but Default_Base is hidden in the generic so doesn't exist! + procedure myAdd (Str : BS.Bounded_String); + + procedure Fill_String (Cp : in chars_ptr; Str : out BS.Bounded_String); +end ncurses2.genericPuts; diff --git a/ncurses/Ada95/samples/ncurses2-getch.ads b/ncurses/Ada95/samples/ncurses2-getch.ads new file mode 100644 index 0000000..21a09f3 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-getch.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure getch_test; diff --git a/ncurses/Ada95/samples/ncurses2-getch_test.adb b/ncurses/Ada95/samples/ncurses2-getch_test.adb new file mode 100644 index 0000000..172312c --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-getch_test.adb @@ -0,0 +1,254 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.7 $ +-- $Date: 2008/07/26 18:46:58 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- Character input test +-- test the keypad feature + +with ncurses2.util; use ncurses2.util; + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; +with Ada.Characters.Handling; +with Ada.Strings.Bounded; + +with ncurses2.genericPuts; + +procedure ncurses2.getch_test is + use Int_IO; + + function mouse_decode (ep : Mouse_Event) return String; + + function mouse_decode (ep : Mouse_Event) return String is + Y : Line_Position; + X : Column_Position; + Button : Mouse_Button; + State : Button_State; + package BS is new Ada.Strings.Bounded.Generic_Bounded_Length (200); + use BS; + buf : Bounded_String := To_Bounded_String (""); + begin + -- Note that these bindings do not allow + -- two button states, + -- The C version can print {click-1, click-3} for example. + -- They also don't have the 'id' or z coordinate. + Get_Event (ep, Y, X, Button, State); + + -- TODO Append (buf, "id "); from C version + Append (buf, "at ("); + Append (buf, Column_Position'Image (X)); + Append (buf, ", "); + Append (buf, Line_Position'Image (Y)); + Append (buf, ") state"); + Append (buf, Mouse_Button'Image (Button)); + + Append (buf, " = "); + Append (buf, Button_State'Image (State)); + return To_String (buf); + end mouse_decode; + + buf : String (1 .. 1024); -- TODO was BUFSIZE + n : Integer; + c : Key_Code; + blockflag : Timeout_Mode := Blocking; + firsttime : Boolean := True; + tmp2 : Event_Mask; + tmp6 : String (1 .. 6); + tmp20 : String (1 .. 20); + x : Column_Position; + y : Line_Position; + tmpx : Integer; + incount : Integer := 0; + +begin + Refresh; + tmp2 := Start_Mouse (All_Events); + Add (Str => "Delay in 10ths of a second ( for blocking input)? "); + Set_Echo_Mode (SwitchOn => True); + Get (Str => buf); + + Set_Echo_Mode (SwitchOn => False); + Set_NL_Mode (SwitchOn => False); + + if Ada.Characters.Handling.Is_Digit (buf (1)) then + Get (Item => n, From => buf, Last => tmpx); + Set_Timeout_Mode (Mode => Delayed, Amount => n * 100); + blockflag := Delayed; + end if; + + c := Character'Pos ('?'); + Set_Raw_Mode (SwitchOn => True); + loop + if not firsttime then + Add (Str => "Key pressed: "); + Put (tmp6, Integer (c), 8); + Add (Str => tmp6); + Add (Ch => ' '); + if c = Key_Mouse then + declare + event : Mouse_Event; + begin + event := Get_Mouse; + Add (Str => "KEY_MOUSE, "); + Add (Str => mouse_decode (event)); + Add (Ch => newl); + end; + elsif c >= Key_Min then + Key_Name (c, tmp20); + Add (Str => tmp20); + -- I used tmp and got bitten by the length problem:-> + Add (Ch => newl); + elsif c > 16#80# then -- TODO fix, use constant if possible + declare + c2 : constant Character := Character'Val (c mod 16#80#); + begin + if Ada.Characters.Handling.Is_Graphic (c2) then + Add (Str => "M-"); + Add (Ch => c2); + else + Add (Str => "M-"); + Add (Str => Un_Control ((Ch => c2, + Color => Color_Pair'First, + Attr => Normal_Video))); + end if; + Add (Str => " (high-half character)"); + Add (Ch => newl); + end; + else + declare + c2 : constant Character := Character'Val (c mod 16#80#); + begin + if Ada.Characters.Handling.Is_Graphic (c2) then + Add (Ch => c2); + Add (Str => " (ASCII printable character)"); + Add (Ch => newl); + else + Add (Str => Un_Control ((Ch => c2, + Color => Color_Pair'First, + Attr => Normal_Video))); + Add (Str => " (ASCII control character)"); + Add (Ch => newl); + end if; + end; + end if; + -- TODO I am not sure why this was in the C version + -- the delay statement scroll anyway. + Get_Cursor_Position (Line => y, Column => x); + if y >= Lines - 1 then + Move_Cursor (Line => 0, Column => 0); + end if; + Clear_To_End_Of_Line; + end if; + + firsttime := False; + if c = Character'Pos ('g') then + declare + package p is new ncurses2.genericPuts (1024); + use p; + use p.BS; + timedout : Boolean := False; + boundedbuf : Bounded_String; + begin + Add (Str => "getstr test: "); + Set_Echo_Mode (SwitchOn => True); + -- Note that if delay mode is set + -- Get can raise an exception. + -- The C version would print the string it had so far + -- also TODO get longer length string, like the C version + declare begin + myGet (Str => boundedbuf); + exception when Curses_Exception => + Add (Str => "Timed out."); + Add (Ch => newl); + timedout := True; + end; + -- note that the Ada Get will stop reading at 1024. + if not timedout then + Set_Echo_Mode (SwitchOn => False); + Add (Str => " I saw '"); + myAdd (Str => boundedbuf); + Add (Str => "'."); + Add (ch => newl); + end if; + end; + elsif c = Character'Pos ('s') then + ShellOut (True); + elsif c = Character'Pos ('x') or c = Character'Pos ('q') or + (c = Key_None and blockflag = Blocking) then + exit; + elsif c = Character'Pos ('?') then + Add (Str => "Type any key to see its keypad value. Also:"); + Add (Ch => newl); + Add (Str => "g -- triggers a getstr test"); + Add (Ch => newl); + Add (Str => "s -- shell out"); + Add (Ch => newl); + Add (Str => "q -- quit"); + Add (Ch => newl); + Add (Str => "? -- repeats this help message"); + Add (Ch => newl); + end if; + + loop + c := Getchar; + exit when c /= Key_None; + if blockflag /= Blocking then + Put (tmp6, incount); -- argh string length! + Add (Str => tmp6); + Add (Str => ": input timed out"); + Add (Ch => newl); + else + Put (tmp6, incount); + Add (Str => tmp6); + Add (Str => ": input error"); + Add (Ch => newl); + exit; + end if; + incount := incount + 1; + end loop; + end loop; + + End_Mouse (tmp2); + Set_Timeout_Mode (Mode => Blocking, Amount => 0); -- amount is ignored + Set_Raw_Mode (SwitchOn => False); + Set_NL_Mode (SwitchOn => True); + Erase; + End_Windows; +end ncurses2.getch_test; diff --git a/ncurses/Ada95/samples/ncurses2-getch_test.ads b/ncurses/Ada95/samples/ncurses2-getch_test.ads new file mode 100644 index 0000000..78a0a48 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-getch_test.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.getch_test; diff --git a/ncurses/Ada95/samples/ncurses2-getopt.adb b/ncurses/Ada95/samples/ncurses2-getopt.adb new file mode 100644 index 0000000..238c439 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-getopt.adb @@ -0,0 +1,163 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.7 $ +-- $Date: 2008/07/26 18:46:44 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- A simplified version of the GNU getopt function +-- copyright Free Software Foundtion + +with Ada.Strings.Fixed; +with Ada.Strings.Bounded; +with Ada.Text_IO; use Ada.Text_IO; + +package body ncurses2.getopt is + + nextchar : Natural := 0; + + -- Ncurses doesn't use the non option elements so we are spared + -- the job of computing those. + + -- also the user is not allowed to modify argv or argc + -- Doing so is Erroneous execution. + + -- longoptions are not handled. + + procedure Qgetopt (retval : out Integer; + argc : Integer; + argv : stringfunc; + -- argv will be the Argument function. + optstring : String; + optind : in out Integer; + -- ignored for ncurses, must be initialized to 1 by + -- the caller + Optarg : out stringa + -- a garbage colector would be useful here. + ) is + + package BS is new Ada.Strings.Bounded.Generic_Bounded_Length (200); + use BS; + optargx : Bounded_String; + begin + + if argc < optind then + retval := -1; + return; + end if; + + optargx := To_Bounded_String (""); + + if nextchar = 0 then + + if argv (optind) = "--" then + -- the rest are non-options, we ignore them + retval := -1; + return; + end if; + + if argv (optind)(1) /= '-' or argv (optind)'Length = 1 then + optind := optind + 1; + Optarg := new String'(argv (optind)); + retval := 1; + return; + end if; + + nextchar := 2; -- skip the one hyphen. + end if; + + -- Look at and handle the next short option-character. + declare + c : Character := argv (optind) (nextchar); + temp : constant Natural := + Ada.Strings.Fixed.Index (optstring, String'(1 => c)); + begin + if temp = 0 or c = ':' then + Put_Line (Standard_Error, + argv (optind) & ": invalid option -- " & c); + c := '?'; + return; + end if; + + if optstring (temp + 1) = ':' then + if optstring (temp + 2) = ':' then + -- This is an option that accepts an argument optionally. + if nextchar /= argv (optind)'Length then + optargx := To_Bounded_String + (argv (optind) (nextchar .. argv (optind)'Length)); + else + Optarg := null; + end if; + else + -- This is an option that requires an argument. + if nextchar /= argv (optind)'Length then + optargx := To_Bounded_String + (argv (optind) (nextchar .. argv (optind)'Length)); + optind := optind + 1; + elsif optind = argc then + Put_Line (Standard_Error, + argv (optind) & + ": option requires an argument -- " & c); + if optstring (optstring'First) = ':' then + c := ':'; + else + c := '?'; + end if; + else + -- increment it again when taking next ARGV-elt as argument. + optind := optind + 1; + optargx := To_Bounded_String (argv (optind)); + optind := optind + 1; + end if; + end if; + nextchar := 0; + else -- no argument for the option + if nextchar = argv (optind)'Length then + optind := optind + 1; + nextchar := 0; + else + nextchar := nextchar + 1; + end if; + end if; + + retval := Character'Pos (c); + Optarg := new String'(To_String (optargx)); + return; + end; + end Qgetopt; + +end ncurses2.getopt; diff --git a/ncurses/Ada95/samples/ncurses2-getopt.ads b/ncurses/Ada95/samples/ncurses2-getopt.ads new file mode 100644 index 0000000..a8b356e --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-getopt.ads @@ -0,0 +1,60 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.2 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package ncurses2.getopt is + + type stringa is access String; + + type stringfunc is access + function (n : Positive) return String; + + procedure Qgetopt (retval : out Integer; + argc : Integer; + argv : stringfunc; + optstring : String; + optind : in out Integer; + -- ignored for ncurses, must be initialized to 0 + -- by the caller + Optarg : out stringa + -- a garbage collector would be useful here. + ); + +end ncurses2.getopt; diff --git a/ncurses/Ada95/samples/ncurses2-m.adb b/ncurses/Ada95/samples/ncurses2-m.adb new file mode 100644 index 0000000..5b20428 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-m.adb @@ -0,0 +1,448 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.8 $ +-- $Date: 2008/07/26 18:47:50 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- TODO use Default_Character where appropriate + +-- This is an Ada version of ncurses +-- I translated this because it tests the most features. + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace; + +with Ada.Text_IO; use Ada.Text_IO; + +with Ada.Characters.Latin_1; +-- with Ada.Characters.Handling; + +with Ada.Command_Line; use Ada.Command_Line; + +with Ada.Strings.Unbounded; + +with ncurses2.util; use ncurses2.util; +with ncurses2.getch_test; +with ncurses2.attr_test; +with ncurses2.color_test; +with ncurses2.demo_panels; +with ncurses2.color_edit; +with ncurses2.slk_test; +with ncurses2.acs_display; +with ncurses2.acs_and_scroll; +with ncurses2.flushinp_test; +with ncurses2.test_sgr_attributes; +with ncurses2.menu_test; +with ncurses2.demo_pad; +with ncurses2.demo_forms; +with ncurses2.overlap_test; +with ncurses2.trace_set; + +with ncurses2.getopt; use ncurses2.getopt; + +package body ncurses2.m is + use Int_IO; + + function To_trace (n : Integer) return Trace_Attribute_Set; + procedure usage; + procedure Set_Terminal_Modes; + function Do_Single_Test (c : Character) return Boolean; + + function To_trace (n : Integer) return Trace_Attribute_Set is + a : Trace_Attribute_Set := (others => False); + m : Integer; + rest : Integer; + begin + m := n mod 2; + if 1 = m then + a.Times := True; + end if; + rest := n / 2; + + m := rest mod 2; + if 1 = m then + a.Tputs := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Update := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Cursor_Move := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Character_Output := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Calls := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Virtual_Puts := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Input_Events := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.TTY_State := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Internal_Calls := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Character_Calls := True; + end if; + rest := rest / 2; + m := rest mod 2; + if 1 = m then + a.Termcap_TermInfo := True; + end if; + + return a; + end To_trace; + + -- these are type Stdscr_Init_Proc; + + function rip_footer ( + Win : Window; + Columns : Column_Count) return Integer; + pragma Convention (C, rip_footer); + + function rip_footer ( + Win : Window; + Columns : Column_Count) return Integer is + begin + Set_Background (Win, (Ch => ' ', + Attr => (Reverse_Video => True, others => False), + Color => 0)); + Erase (Win); + Move_Cursor (Win, 0, 0); + Add (Win, "footer:" & Columns'Img & " columns"); + Refresh_Without_Update (Win); + return 0; -- Curses_OK; + end rip_footer; + + function rip_header ( + Win : Window; + Columns : Column_Count) return Integer; + pragma Convention (C, rip_header); + + function rip_header ( + Win : Window; + Columns : Column_Count) return Integer is + begin + Set_Background (Win, (Ch => ' ', + Attr => (Reverse_Video => True, others => False), + Color => 0)); + Erase (Win); + Move_Cursor (Win, 0, 0); + Add (Win, "header:" & Columns'Img & " columns"); + -- 'Img is a GNAT extention + Refresh_Without_Update (Win); + return 0; -- Curses_OK; + end rip_header; + + procedure usage is + -- type Stringa is access String; + use Ada.Strings.Unbounded; + -- tbl : constant array (Positive range <>) of Stringa := ( + tbl : constant array (Positive range <>) of Unbounded_String + := ( + To_Unbounded_String ("Usage: ncurses [options]"), + To_Unbounded_String (""), + To_Unbounded_String ("Options:"), + To_Unbounded_String (" -a f,b set default-colors " & + "(assumed white-on-black)"), + To_Unbounded_String (" -d use default-colors if terminal " & + "supports them"), + To_Unbounded_String (" -e fmt specify format for soft-keys " & + "test (e)"), + To_Unbounded_String (" -f rip-off footer line " & + "(can repeat)"), + To_Unbounded_String (" -h rip-off header line " & + "(can repeat)"), + To_Unbounded_String (" -s msec specify nominal time for " & + "panel-demo (default: 1, to hold)"), + To_Unbounded_String (" -t mask specify default trace-level " & + "(may toggle with ^T)") + ); + begin + for n in tbl'Range loop + Put_Line (Standard_Error, To_String (tbl (n))); + end loop; + -- exit(EXIT_FAILURE); + -- TODO should we use Set_Exit_Status and throw and exception? + end usage; + + procedure Set_Terminal_Modes is begin + Set_Raw_Mode (SwitchOn => False); + Set_Cbreak_Mode (SwitchOn => True); + Set_Echo_Mode (SwitchOn => False); + Allow_Scrolling (Mode => True); + Use_Insert_Delete_Line (Do_Idl => True); + Set_KeyPad_Mode (SwitchOn => True); + end Set_Terminal_Modes; + + nap_msec : Integer := 1; + + function Do_Single_Test (c : Character) return Boolean is + begin + case c is + when 'a' => + getch_test; + when 'b' => + attr_test; + when 'c' => + if not Has_Colors then + Cannot ("does not support color."); + else + color_test; + end if; + when 'd' => + if not Has_Colors then + Cannot ("does not support color."); + elsif not Can_Change_Color then + Cannot ("has hardwired color values."); + else + color_edit; + end if; + when 'e' => + slk_test; + when 'f' => + acs_display; + when 'o' => + demo_panels (nap_msec); + when 'g' => + acs_and_scroll; + when 'i' => + flushinp_test (Standard_Window); + when 'k' => + test_sgr_attributes; + when 'm' => + menu_test; + when 'p' => + demo_pad; + when 'r' => + demo_forms; + when 's' => + overlap_test; + when 't' => + trace_set; + when '?' => + null; + when others => return False; + end case; + return True; + end Do_Single_Test; + + command : Character; + my_e_param : Soft_Label_Key_Format := Four_Four; + assumed_colors : Boolean := False; + default_colors : Boolean := False; + default_fg : Color_Number := White; + default_bg : Color_Number := Black; + -- nap_msec was an unsigned long integer in the C version, + -- yet napms only takes an int! + + c : Integer; + c2 : Character; + optind : Integer := 1; -- must be initialized to one. + optarg : getopt.stringa; + + length : Integer; + tmpi : Integer; + + package myio is new Ada.Text_IO.Integer_IO (Integer); + use myio; + + save_trace : Integer := 0; + save_trace_set : Trace_Attribute_Set; + + function main return Integer is + begin + loop + Qgetopt (c, Argument_Count, Argument'Access, + "a:de:fhs:t:", optind, optarg); + exit when c = -1; + c2 := Character'Val (c); + case c2 is + when 'a' => + -- Ada doesn't have scanf, it doesn't even have a + -- regular expression library. + assumed_colors := True; + myio.Get (optarg.all, Integer (default_fg), length); + myio.Get (optarg.all (length + 2 .. optarg.all'Length), + Integer (default_bg), length); + when 'd' => + default_colors := True; + when 'e' => + myio.Get (optarg.all, tmpi, length); + if tmpi > 3 then + usage; + return 1; + end if; + my_e_param := Soft_Label_Key_Format'Val (tmpi); + when 'f' => + Rip_Off_Lines (-1, rip_footer'Access); + when 'h' => + Rip_Off_Lines (1, rip_header'Access); + when 's' => + myio.Get (optarg.all, nap_msec, length); + when 't' => + myio.Get (optarg.all, save_trace, length); + when others => + usage; + return 1; + end case; + end loop; + + -- the C version had a bunch of macros here. + + -- if (!isatty(fileno(stdin))) + -- isatty is not available in the standard Ada so skip it. + save_trace_set := To_trace (save_trace); + Trace_On (save_trace_set); + + Init_Soft_Label_Keys (my_e_param); + + Init_Screen; + Set_Background (Ch => (Ch => Blank, + Attr => Normal_Video, + Color => Color_Pair'First)); + + if Has_Colors then + Start_Color; + if default_colors then + Use_Default_Colors; + elsif assumed_colors then + Assume_Default_Colors (default_fg, default_bg); + end if; + end if; + + Set_Terminal_Modes; + Save_Curses_Mode (Curses); + + End_Windows; + + -- TODO add macro #if blocks. + Put_Line ("Welcome to " & Curses_Version & ". Press ? for help."); + + loop + Put_Line ("This is the ncurses main menu"); + Put_Line ("a = keyboard and mouse input test"); + Put_Line ("b = character attribute test"); + Put_Line ("c = color test pattern"); + Put_Line ("d = edit RGB color values"); + Put_Line ("e = exercise soft keys"); + Put_Line ("f = display ACS characters"); + Put_Line ("g = display windows and scrolling"); + Put_Line ("i = test of flushinp()"); + Put_Line ("k = display character attributes"); + Put_Line ("m = menu code test"); + Put_Line ("o = exercise panels library"); + Put_Line ("p = exercise pad features"); + Put_Line ("q = quit"); + Put_Line ("r = exercise forms code"); + Put_Line ("s = overlapping-refresh test"); + Put_Line ("t = set trace level"); + Put_Line ("? = repeat this command summary"); + + Put ("> "); + Flush; + + command := Ada.Characters.Latin_1.NUL; + -- get_input: + -- loop + declare + Ch : Character; + begin + Get (Ch); + -- TODO if read(ch) <= 0 + -- TODO ada doesn't have an Is_Space function + command := Ch; + -- TODO if ch = '\n' or '\r' are these in Ada? + end; + -- end loop get_input; + + declare + begin + if Do_Single_Test (command) then + Flush_Input; + Set_Terminal_Modes; + Reset_Curses_Mode (Curses); + Clear; + Refresh; + End_Windows; + if command = '?' then + Put_Line ("This is the ncurses capability tester."); + Put_Line ("You may select a test from the main menu by " & + "typing the"); + Put_Line ("key letter of the choice (the letter to left " & + "of the =)"); + Put_Line ("at the > prompt. The commands `x' or `q' will " & + "exit."); + end if; + -- continue; --why continue in the C version? + end if; + exception + when Curses_Exception => End_Windows; + end; + + exit when command = 'q'; + end loop; + Curses_Free_All; + return 0; -- TODO ExitProgram(EXIT_SUCCESS); + end main; + +end ncurses2.m; diff --git a/ncurses/Ada95/samples/ncurses2-m.ads b/ncurses/Ada95/samples/ncurses2-m.ads new file mode 100644 index 0000000..c32d895 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-m.ads @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package ncurses2.m is + function main return Integer; +end ncurses2.m; diff --git a/ncurses/Ada95/samples/ncurses2-menu_test.adb b/ncurses/Ada95/samples/ncurses2-menu_test.adb new file mode 100644 index 0000000..a4c4807 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-menu_test.adb @@ -0,0 +1,168 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.6 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; + +procedure ncurses2.menu_test is + function menu_virtualize (c : Key_Code) return Menu_Request_Code; + procedure xAdd (l : Line_Position; c : Column_Position; s : String); + + function menu_virtualize (c : Key_Code) return Menu_Request_Code is + begin + case c is + when Character'Pos (newl) | Key_Exit => + return Menu_Request_Code'Last + 1; -- MAX_COMMAND? TODO + when Character'Pos ('u') => + return M_ScrollUp_Line; + when Character'Pos ('d') => + return M_ScrollDown_Line; + when Character'Pos ('b') | Key_Next_Page => + return M_ScrollUp_Page; + when Character'Pos ('f') | Key_Previous_Page => + return M_ScrollDown_Page; + when Character'Pos ('n') | Key_Cursor_Down => + return M_Next_Item; + when Character'Pos ('p') | Key_Cursor_Up => + return M_Previous_Item; + when Character'Pos (' ') => + return M_Toggle_Item; + when Key_Mouse => + return c; + when others => + Beep; + return c; + end case; + end menu_virtualize; + + MENU_Y : constant Line_Count := 8; + MENU_X : constant Column_Count := 8; + + type String_Access is access String; + + animals : constant array (Positive range <>) of String_Access := + (new String'("Lions"), + new String'("Tigers"), + new String'("Bears"), + new String'("(Oh my!)"), + new String'("Newts"), + new String'("Platypi"), + new String'("Lemurs")); + + items_a : constant Item_Array_Access := + new Item_Array (1 .. animals'Last + 1); + + tmp : Event_Mask; + + procedure xAdd (l : Line_Position; c : Column_Position; s : String) is + begin + Add (Line => l, Column => c, Str => s); + end xAdd; + + mrows : Line_Count; + mcols : Column_Count; + + menuwin : Window; + + m : Menu; + + c1 : Key_Code; + + c : Driver_Result; + r : Menu_Request_Code; +begin + tmp := Start_Mouse; + xAdd (0, 0, "This is the menu test:"); + xAdd (2, 0, " Use up and down arrow to move the select bar."); + xAdd (3, 0, " 'n' and 'p' act like arrows."); + xAdd (4, 0, " 'b' and 'f' scroll up/down (page), 'u' and 'd' (line)."); + xAdd (5, 0, " Press return to exit."); + Refresh; + + for i in animals'Range loop + items_a (i) := New_Item (animals (i).all); + end loop; + items_a (animals'Last + 1) := Null_Item; + + m := New_Menu (items_a); + + Set_Format (m, Line_Position (animals'Last + 1) / 2, 1); + Scale (m, mrows, mcols); + + menuwin := Create (mrows + 2, mcols + 2, MENU_Y, MENU_X); + Set_Window (m, menuwin); + Set_KeyPad_Mode (menuwin, True); + Box (menuwin); -- 0,0? + + Set_Sub_Window (m, Derived_Window (menuwin, mrows, mcols, 1, 1)); + + Post (m); + + loop + c1 := Getchar (menuwin); + r := menu_virtualize (c1); + c := Driver (m, r); + exit when c = Unknown_Request; -- E_UNKNOWN_COMMAND? + if c = Request_Denied then + Beep; + end if; + -- continue ? + end loop; + + Move_Cursor (Line => Lines - 2, Column => 0); + Add (Str => "You chose: "); + Add (Str => Name (Current (m))); + Add (Ch => newl); + Pause; -- the C version didn't use Pause, it spelled it out + + Post (m, False); -- unpost, not clear :-( + declare begin + Delete (menuwin); + exception when Curses_Exception => null; end; + -- menuwin has children so will raise the exception. + + Delete (m); + + End_Mouse (tmp); +end ncurses2.menu_test; diff --git a/ncurses/Ada95/samples/ncurses2-menu_test.ads b/ncurses/Ada95/samples/ncurses2-menu_test.ads new file mode 100644 index 0000000..17e5b16 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-menu_test.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.menu_test; diff --git a/ncurses/Ada95/samples/ncurses2-overlap_test.adb b/ncurses/Ada95/samples/ncurses2-overlap_test.adb new file mode 100644 index 0000000..37e8d4c --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-overlap_test.adb @@ -0,0 +1,157 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.4 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +-- test effects of overlapping windows + +procedure ncurses2.overlap_test is + + procedure fillwin (win : Window; ch : Character); + procedure crosswin (win : Window; ch : Character); + + procedure fillwin (win : Window; ch : Character) is + y1 : Line_Position; + x1 : Column_Position; + begin + Get_Size (win, y1, x1); + for y in 0 .. y1 - 1 loop + Move_Cursor (win, y, 0); + for x in 0 .. x1 - 1 loop + Add (win, Ch => ch); + end loop; + end loop; + exception + when Curses_Exception => null; + -- write to lower right corner + end fillwin; + + procedure crosswin (win : Window; ch : Character) is + y1 : Line_Position; + x1 : Column_Position; + begin + Get_Size (win, y1, x1); + for y in 0 .. y1 - 1 loop + for x in 0 .. x1 - 1 loop + if ((x > (x1 - 1) / 3) and (x <= (2 * (x1 - 1)) / 3)) + or (((y > (y1 - 1) / 3) and (y <= (2 * (y1 - 1)) / 3))) then + Move_Cursor (win, y, x); + Add (win, Ch => ch); + end if; + end loop; + end loop; + end crosswin; + + -- In a 24x80 screen like some xterms are, the instructions will + -- be overwritten. + ch : Character; + win1 : Window := New_Window (9, 20, 3, 3); + win2 : Window := New_Window (9, 20, 9, 16); +begin + Set_Raw_Mode (SwitchOn => True); + Refresh; + Move_Cursor (Line => 0, Column => 0); + Add (Str => "This test shows the behavior of wnoutrefresh() with " & + "respect to"); + Add (Ch => newl); + Add (Str => "the shared region of two overlapping windows A and B. "& + "The cross"); + Add (Ch => newl); + Add (Str => "pattern in each window does not overlap the other."); + Add (Ch => newl); + + Move_Cursor (Line => 18, Column => 0); + Add (Str => "a = refresh A, then B, then doupdate. b = refresh B, " & + "then A, then doupdaute"); + Add (Ch => newl); + Add (Str => "c = fill window A with letter A. d = fill window B " & + "with letter B."); + Add (Ch => newl); + Add (Str => "e = cross pattern in window A. f = cross pattern " & + "in window B."); + Add (Ch => newl); + Add (Str => "g = clear window A. h = clear window B."); + Add (Ch => newl); + Add (Str => "i = overwrite A onto B. j = overwrite " & + "B onto A."); + Add (Ch => newl); + Add (Str => "^Q/ESC = terminate test."); + + loop + ch := Code_To_Char (Getchar); + exit when ch = CTRL ('Q') or ch = CTRL ('['); -- QUIT or ESCAPE + case ch is + when 'a' => -- refresh window A first, then B + Refresh_Without_Update (win1); + Refresh_Without_Update (win2); + Update_Screen; + when 'b' => -- refresh window B first, then A + Refresh_Without_Update (win2); + Refresh_Without_Update (win1); + Update_Screen; + when 'c' => -- fill window A so it's visible + fillwin (win1, 'A'); + when 'd' => -- fill window B so it's visible + fillwin (win2, 'B'); + when 'e' => -- cross test pattern in window A + crosswin (win1, 'A'); + when 'f' => -- cross test pattern in window B + crosswin (win2, 'B'); + when 'g' => -- clear window A + Clear (win1); + Move_Cursor (win1, 0, 0); + when 'h' => -- clear window B + Clear (win2); + Move_Cursor (win2, 0, 0); + when 'i' => -- overwrite A onto B + Overwrite (win1, win2); + when 'j' => -- overwrite B onto A + Overwrite (win2, win1); + when others => null; + end case; + end loop; + + Delete (win2); + Delete (win1); + Erase; + End_Windows; +end ncurses2.overlap_test; diff --git a/ncurses/Ada95/samples/ncurses2-overlap_test.ads b/ncurses/Ada95/samples/ncurses2-overlap_test.ads new file mode 100644 index 0000000..ce6e3e6 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-overlap_test.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.overlap_test; diff --git a/ncurses/Ada95/samples/ncurses2-slk_test.adb b/ncurses/Ada95/samples/ncurses2-slk_test.adb new file mode 100644 index 0000000..8bfee4e --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-slk_test.adb @@ -0,0 +1,174 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.7 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +with Ada.Strings.Unbounded; +with Interfaces.C; +with Terminal_Interface.Curses.Aux; + +procedure ncurses2.slk_test is + procedure myGet (Win : in Window := Standard_Window; + Str : out Ada.Strings.Unbounded.Unbounded_String; + Len : in Integer := -1); + + procedure myGet (Win : in Window := Standard_Window; + Str : out Ada.Strings.Unbounded.Unbounded_String; + Len : in Integer := -1) + is + use Ada.Strings.Unbounded; + use Interfaces.C; + use Terminal_Interface.Curses.Aux; + + function Wgetnstr (Win : Window; + Str : char_array; + Len : int) return int; + pragma Import (C, Wgetnstr, "wgetnstr"); + + -- FIXME: how to construct "(Len > 0) ? Len : 80"? + Ask : constant Interfaces.C.size_t := Interfaces.C.size_t'Val (Len + 80); + Txt : char_array (0 .. Ask); + + begin + Txt (0) := Interfaces.C.char'First; + if Wgetnstr (Win, Txt, Txt'Length) = Curses_Err then + raise Curses_Exception; + end if; + Str := To_Unbounded_String (To_Ada (Txt, True)); + end myGet; + + use Int_IO; + + use Ada.Strings.Unbounded; + + c : Key_Code; + buf : Unbounded_String; + c2 : Character; + fmt : Label_Justification := Centered; + tmp : Integer; + +begin + c := CTRL ('l'); + loop + Move_Cursor (Line => 0, Column => 0); + c2 := Code_To_Char (c); + case c2 is + when Character'Val (Character'Pos ('l') mod 16#20#) => -- CTRL('l') + Erase; + Switch_Character_Attribute (Attr => (Bold_Character => True, + others => False)); + Add (Line => 0, Column => 20, + Str => "Soft Key Exerciser"); + Switch_Character_Attribute (On => False, + Attr => (Bold_Character => True, + others => False)); + + Move_Cursor (Line => 2, Column => 0); + P ("Available commands are:"); + P (""); + P ("^L -- refresh screen"); + P ("a -- activate or restore soft keys"); + P ("d -- disable soft keys"); + P ("c -- set centered format for labels"); + P ("l -- set left-justified format for labels"); + P ("r -- set right-justified format for labels"); + P ("[12345678] -- set label; labels are numbered 1 through 8"); + P ("e -- erase stdscr (should not erase labels)"); + P ("s -- test scrolling of shortened screen"); + P ("x, q -- return to main menu"); + P (""); + P ("Note: if activating the soft keys causes your terminal to"); + P ("scroll up one line, your terminal auto-scrolls when anything"); + P ("is written to the last screen position. The ncurses code"); + P ("does not yet handle this gracefully."); + Refresh; + Restore_Soft_Label_Keys; + + when 'a' => + Restore_Soft_Label_Keys; + when 'e' => + Clear; + when 's' => + Add (Line => 20, Column => 0, + Str => "Press Q to stop the scrolling-test: "); + loop + c := Getchar; + c2 := Code_To_Char (c); + exit when c2 = 'Q'; + -- c = ERR? + -- TODO when c is not a character (arrow key) + -- the behavior is different from the C version. + Add (Ch => c2); + end loop; + when 'd' => + Clear_Soft_Label_Keys; + when 'l' => + fmt := Left; + when 'c' => + fmt := Centered; + when 'r' => + fmt := Right; + when '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' => + Add (Line => 20, Column => 0, + Str => "Please enter the label value: "); + Set_Echo_Mode (SwitchOn => True); + myGet (Str => buf); + Set_Echo_Mode (SwitchOn => False); + tmp := ctoi (c2); + Set_Soft_Label_Key (Label_Number (tmp), To_String (buf), fmt); + Refresh_Soft_Label_Keys; + Move_Cursor (Line => 20, Column => 0); + Clear_To_End_Of_Line; + when 'x' | 'q' => + exit; + -- the C version needed a goto, ha ha + -- breaks exit the case not the loop because fall-throuh + -- happens in C! + when others => + Beep; + end case; + c := Getchar; + -- TODO exit when c = EOF + end loop; + Erase; + End_Windows; +end ncurses2.slk_test; diff --git a/ncurses/Ada95/samples/ncurses2-slk_test.ads b/ncurses/Ada95/samples/ncurses2-slk_test.ads new file mode 100644 index 0000000..51e9587 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-slk_test.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.slk_test; diff --git a/ncurses/Ada95/samples/ncurses2-test_sgr_attributes.adb b/ncurses/Ada95/samples/ncurses2-test_sgr_attributes.adb new file mode 100644 index 0000000..97449a4 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-test_sgr_attributes.adb @@ -0,0 +1,185 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.2 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with ncurses2.util; use ncurses2.util; + +-- Graphic-rendition test (adapted from vttest) + +procedure ncurses2.test_sgr_attributes is + + procedure xAdd (l : Line_Position; c : Column_Position; s : String); + + procedure xAdd (l : Line_Position; c : Column_Position; s : String) is + begin + Add (Line => l, Column => c, Str => s); + end xAdd; + + normal, current : Attributed_Character; +begin + for pass in reverse Boolean loop + if pass then + normal := (Ch => ' ', Attr => Normal_Video, Color => 0); + else + normal := (Ch => ' ', Attr => + (Reverse_Video => True, others => False), Color => 0); + end if; + + -- Use non-default colors if possible to exercise bce a little + if Has_Colors then + Init_Pair (1, White, Blue); + normal.Color := 1; + end if; + Set_Background (Ch => normal); + Erase; + xAdd (1, 20, "Graphic rendition test pattern:"); + + xAdd (4, 1, "vanilla"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + Set_Background (Ch => current); + xAdd (4, 40, "bold"); + + current := normal; + current.Attr.Under_Line := not current.Attr.Under_Line; + Set_Background (Ch => current); + xAdd (6, 6, "underline"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + current.Attr.Under_Line := not current.Attr.Under_Line; + Set_Background (Ch => current); + xAdd (6, 45, "bold underline"); + + current := normal; + current.Attr.Blink := not current.Attr.Blink; + Set_Background (Ch => current); + xAdd (8, 1, "blink"); + + current := normal; + current.Attr.Blink := not current.Attr.Blink; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + Set_Background (Ch => current); + xAdd (8, 40, "bold blink"); + + current := normal; + current.Attr.Under_Line := not current.Attr.Under_Line; + current.Attr.Blink := not current.Attr.Blink; + Set_Background (Ch => current); + xAdd (10, 6, "underline blink"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + current.Attr.Under_Line := not current.Attr.Under_Line; + current.Attr.Blink := not current.Attr.Blink; + Set_Background (Ch => current); + xAdd (10, 45, "bold underline blink"); + + current := normal; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (12, 1, "negative"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (12, 40, "bold negative"); + + current := normal; + current.Attr.Under_Line := not current.Attr.Under_Line; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (14, 6, "underline negative"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + current.Attr.Under_Line := not current.Attr.Under_Line; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (14, 45, "bold underline negative"); + + current := normal; + current.Attr.Blink := not current.Attr.Blink; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (16, 1, "blink negative"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + current.Attr.Blink := not current.Attr.Blink; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (16, 40, "bold blink negative"); + + current := normal; + current.Attr.Under_Line := not current.Attr.Under_Line; + current.Attr.Blink := not current.Attr.Blink; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (18, 6, "underline blink negative"); + + current := normal; + current.Attr.Bold_Character := not current.Attr.Bold_Character; + current.Attr.Under_Line := not current.Attr.Under_Line; + current.Attr.Blink := not current.Attr.Blink; + current.Attr.Reverse_Video := not current.Attr.Reverse_Video; + Set_Background (Ch => current); + xAdd (18, 45, "bold underline blink negative"); + + Set_Background (Ch => normal); + Move_Cursor (Line => Lines - 2, Column => 1); + if pass then + Add (Str => "Dark"); + else + Add (Str => "Light"); + end if; + Add (Str => " background. "); + Clear_To_End_Of_Line; + Pause; + end loop; + + Set_Background (Ch => Blank2); + Erase; + End_Windows; + +end ncurses2.test_sgr_attributes; diff --git a/ncurses/Ada95/samples/ncurses2-test_sgr_attributes.ads b/ncurses/Ada95/samples/ncurses2-test_sgr_attributes.ads new file mode 100644 index 0000000..2411180 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-test_sgr_attributes.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.test_sgr_attributes; diff --git a/ncurses/Ada95/samples/ncurses2-trace_set.adb b/ncurses/Ada95/samples/ncurses2-trace_set.adb new file mode 100644 index 0000000..1e2716e --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-trace_set.adb @@ -0,0 +1,480 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses2.trace_set -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.3 $ +-- $Date: 2008/07/26 18:46:18 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with ncurses2.util; use ncurses2.util; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace; +with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus; + +with Ada.Strings.Bounded; + +-- interactively set the trace level + +procedure ncurses2.trace_set is + + function menu_virtualize (c : Key_Code) return Menu_Request_Code; + function subset (super, sub : Trace_Attribute_Set) return Boolean; + function trace_or (a, b : Trace_Attribute_Set) return Trace_Attribute_Set; + function trace_num (tlevel : Trace_Attribute_Set) return String; + function tracetrace (tlevel : Trace_Attribute_Set) return String; + function run_trace_menu (m : Menu; count : Integer) return Boolean; + + function menu_virtualize (c : Key_Code) return Menu_Request_Code is + begin + case c is + when Character'Pos (newl) | Key_Exit => + return Menu_Request_Code'Last + 1; -- MAX_COMMAND? TODO + when Character'Pos ('u') => + return M_ScrollUp_Line; + when Character'Pos ('d') => + return M_ScrollDown_Line; + when Character'Pos ('b') | Key_Next_Page => + return M_ScrollUp_Page; + when Character'Pos ('f') | Key_Previous_Page => + return M_ScrollDown_Page; + when Character'Pos ('n') | Key_Cursor_Down => + return M_Next_Item; + when Character'Pos ('p') | Key_Cursor_Up => + return M_Previous_Item; + when Character'Pos (' ') => + return M_Toggle_Item; + when Key_Mouse => + return c; + when others => + Beep; + return c; + end case; + end menu_virtualize; + + type string_a is access String; + type tbl_entry is record + name : string_a; + mask : Trace_Attribute_Set; + end record; + + t_tbl : constant array (Positive range <>) of tbl_entry := + ( + (new String'("Disable"), + Trace_Disable), + (new String'("Times"), + Trace_Attribute_Set'(Times => True, others => False)), + (new String'("Tputs"), + Trace_Attribute_Set'(Tputs => True, others => False)), + (new String'("Update"), + Trace_Attribute_Set'(Update => True, others => False)), + (new String'("Cursor_Move"), + Trace_Attribute_Set'(Cursor_Move => True, others => False)), + (new String'("Character_Output"), + Trace_Attribute_Set'(Character_Output => True, others => False)), + (new String'("Ordinary"), + Trace_Ordinary), + (new String'("Calls"), + Trace_Attribute_Set'(Calls => True, others => False)), + (new String'("Virtual_Puts"), + Trace_Attribute_Set'(Virtual_Puts => True, others => False)), + (new String'("Input_Events"), + Trace_Attribute_Set'(Input_Events => True, others => False)), + (new String'("TTY_State"), + Trace_Attribute_Set'(TTY_State => True, others => False)), + (new String'("Internal_Calls"), + Trace_Attribute_Set'(Internal_Calls => True, others => False)), + (new String'("Character_Calls"), + Trace_Attribute_Set'(Character_Calls => True, others => False)), + (new String'("Termcap_TermInfo"), + Trace_Attribute_Set'(Termcap_TermInfo => True, others => False)), + (new String'("Maximium"), + Trace_Maximum) + ); + + package BS is new Ada.Strings.Bounded.Generic_Bounded_Length (300); + + function subset (super, sub : Trace_Attribute_Set) return Boolean is + begin + if + (super.Times or not sub.Times) and + (super.Tputs or not sub.Tputs) and + (super.Update or not sub.Update) and + (super.Cursor_Move or not sub.Cursor_Move) and + (super.Character_Output or not sub.Character_Output) and + (super.Calls or not sub.Calls) and + (super.Virtual_Puts or not sub.Virtual_Puts) and + (super.Input_Events or not sub.Input_Events) and + (super.TTY_State or not sub.TTY_State) and + (super.Internal_Calls or not sub.Internal_Calls) and + (super.Character_Calls or not sub.Character_Calls) and + (super.Termcap_TermInfo or not sub.Termcap_TermInfo) and + True then + return True; + else + return False; + end if; + end subset; + + function trace_or (a, b : Trace_Attribute_Set) return Trace_Attribute_Set is + retval : Trace_Attribute_Set := Trace_Disable; + begin + retval.Times := (a.Times or b.Times); + retval.Tputs := (a.Tputs or b.Tputs); + retval.Update := (a.Update or b.Update); + retval.Cursor_Move := (a.Cursor_Move or b.Cursor_Move); + retval.Character_Output := (a.Character_Output or b.Character_Output); + retval.Calls := (a.Calls or b.Calls); + retval.Virtual_Puts := (a.Virtual_Puts or b.Virtual_Puts); + retval.Input_Events := (a.Input_Events or b.Input_Events); + retval.TTY_State := (a.TTY_State or b.TTY_State); + retval.Internal_Calls := (a.Internal_Calls or b.Internal_Calls); + retval.Character_Calls := (a.Character_Calls or b.Character_Calls); + retval.Termcap_TermInfo := (a.Termcap_TermInfo or b.Termcap_TermInfo); + + return retval; + end trace_or; + + -- Print the hexadecimal value of the mask so + -- users can set it from the command line. + + function trace_num (tlevel : Trace_Attribute_Set) return String is + result : Integer := 0; + m : Integer := 1; + begin + + if tlevel.Times then + result := result + m; + end if; + m := m * 2; + + if tlevel.Tputs then + result := result + m; + end if; + m := m * 2; + + if tlevel.Update then + result := result + m; + end if; + m := m * 2; + + if tlevel.Cursor_Move then + result := result + m; + end if; + m := m * 2; + + if tlevel.Character_Output then + result := result + m; + end if; + m := m * 2; + + if tlevel.Calls then + result := result + m; + end if; + m := m * 2; + + if tlevel.Virtual_Puts then + result := result + m; + end if; + m := m * 2; + + if tlevel.Input_Events then + result := result + m; + end if; + m := m * 2; + + if tlevel.TTY_State then + result := result + m; + end if; + m := m * 2; + + if tlevel.Internal_Calls then + result := result + m; + end if; + m := m * 2; + + if tlevel.Character_Calls then + result := result + m; + end if; + m := m * 2; + + if tlevel.Termcap_TermInfo then + result := result + m; + end if; + m := m * 2; + return result'Img; + end trace_num; + + function tracetrace (tlevel : Trace_Attribute_Set) return String is + + use BS; + buf : Bounded_String := To_Bounded_String (""); + begin + -- The C version prints the hexadecimal value of the mask, we + -- won't do that here because this is Ada. + + if tlevel = Trace_Disable then + Append (buf, "Trace_Disable"); + else + + if subset (tlevel, + Trace_Attribute_Set'(Times => True, others => False)) then + Append (buf, "Times"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Tputs => True, others => False)) then + Append (buf, "Tputs"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Update => True, others => False)) then + Append (buf, "Update"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Cursor_Move => True, + others => False)) then + Append (buf, "Cursor_Move"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Character_Output => True, + others => False)) then + Append (buf, "Character_Output"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Ordinary) then + Append (buf, "Ordinary"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Calls => True, others => False)) then + Append (buf, "Calls"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Virtual_Puts => True, + others => False)) then + Append (buf, "Virtual_Puts"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Input_Events => True, + others => False)) then + Append (buf, "Input_Events"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(TTY_State => True, + others => False)) then + Append (buf, "TTY_State"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Internal_Calls => True, + others => False)) then + Append (buf, "Internal_Calls"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Character_Calls => True, + others => False)) then + Append (buf, "Character_Calls"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Attribute_Set'(Termcap_TermInfo => True, + others => False)) then + Append (buf, "Termcap_TermInfo"); + Append (buf, ", "); + end if; + + if subset (tlevel, + Trace_Maximum) then + Append (buf, "Maximium"); + Append (buf, ", "); + end if; + end if; + + if To_String (buf) (Length (buf) - 1) = ',' then + Delete (buf, Length (buf) - 1, Length (buf)); + end if; + + return To_String (buf); + end tracetrace; + + function run_trace_menu (m : Menu; count : Integer) return Boolean is + i, p : Item; + changed : Boolean; + c, v : Key_Code; + begin + loop + changed := (count /= 0); + c := Getchar (Get_Window (m)); + v := menu_virtualize (c); + case Driver (m, v) is + when Unknown_Request => + return False; + when others => + i := Current (m); + if i = Menus.Items (m, 1) then -- the first item + for n in t_tbl'First + 1 .. t_tbl'Last loop + if Value (i) then + Set_Value (i, False); + changed := True; + end if; + end loop; + else + for n in t_tbl'First + 1 .. t_tbl'Last loop + p := Menus.Items (m, n); + if Value (p) then + Set_Value (Menus.Items (m, 1), False); + changed := True; + exit; + end if; + end loop; + end if; + if not changed then + return True; + end if; + end case; + end loop; + end run_trace_menu; + + nc_tracing, mask : Trace_Attribute_Set; + pragma Import (C, nc_tracing, "_nc_tracing"); + items_a : constant Item_Array_Access := + new Item_Array (t_tbl'First .. t_tbl'Last + 1); + mrows : Line_Count; + mcols : Column_Count; + menuwin : Window; + menu_y : constant Line_Position := 8; + menu_x : constant Column_Position := 8; + ip : Item; + m : Menu; + count : Integer; + newtrace : Trace_Attribute_Set; +begin + Add (Line => 0, Column => 0, Str => "Interactively set trace level:"); + Add (Line => 2, Column => 0, + Str => " Press space bar to toggle a selection."); + Add (Line => 3, Column => 0, + Str => " Use up and down arrow to move the select bar."); + Add (Line => 4, Column => 0, + Str => " Press return to set the trace level."); + Add (Line => 6, Column => 0, Str => "(Current trace level is "); + Add (Str => tracetrace (nc_tracing) & " numerically: " & + trace_num (nc_tracing)); + Add (Ch => ')'); + + Refresh; + + for n in t_tbl'Range loop + items_a (n) := New_Item (t_tbl (n).name.all); + end loop; + items_a (t_tbl'Last + 1) := Null_Item; + + m := New_Menu (items_a); + + Set_Format (m, 16, 2); + Scale (m, mrows, mcols); + + Switch_Options (m, (One_Valued => True, others => False), On => False); + menuwin := New_Window (mrows + 2, mcols + 2, menu_y, menu_x); + Set_Window (m, menuwin); + Set_KeyPad_Mode (menuwin, SwitchOn => True); + Box (menuwin); + + Set_Sub_Window (m, Derived_Window (menuwin, mrows, mcols, 1, 1)); + + Post (m); + + for n in t_tbl'Range loop + ip := Items (m, n); + mask := t_tbl (n).mask; + if mask = Trace_Disable then + Set_Value (ip, nc_tracing = Trace_Disable); + elsif subset (sub => mask, super => nc_tracing) then + Set_Value (ip, True); + end if; + end loop; + + count := 1; + while run_trace_menu (m, count) loop + count := count + 1; + end loop; + + newtrace := Trace_Disable; + for n in t_tbl'Range loop + ip := Items (m, n); + if Value (ip) then + mask := t_tbl (n).mask; + newtrace := trace_or (newtrace, mask); + end if; + end loop; + + Trace_On (newtrace); + Trace_Put ("trace level interactively set to " & + tracetrace (nc_tracing)); + + Move_Cursor (Line => Lines - 4, Column => 0); + Add (Str => "Trace level is "); + Add (Str => tracetrace (nc_tracing)); + Add (Ch => newl); + Pause; -- was just Add(); Getchar + + Post (m, False); + -- menuwin has subwindows I think, which makes an error. + declare begin + Delete (menuwin); + exception when Curses_Exception => null; end; + + -- free_menu(m); + -- free_item() +end ncurses2.trace_set; diff --git a/ncurses/Ada95/samples/ncurses2-trace_set.ads b/ncurses/Ada95/samples/ncurses2-trace_set.ads new file mode 100644 index 0000000..7bbf8ca --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-trace_set.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses2.trace_set -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure ncurses2.trace_set; diff --git a/ncurses/Ada95/samples/ncurses2-util.adb b/ncurses/Ada95/samples/ncurses2-util.adb new file mode 100644 index 0000000..8ae3272 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-util.adb @@ -0,0 +1,190 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses2.util -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.7 $ +-- $Date: 2008/07/26 18:51:20 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; use Ada.Text_IO; + +pragma Warnings (Off); +with Terminal_Interface.Curses.Aux; +pragma Warnings (On); + +with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace; + +with Interfaces.C; +with Interfaces.C.Strings; + +with Ada.Characters.Handling; + +with ncurses2.genericPuts; + +package body ncurses2.util is + + -- #defines from C + -- #define CTRL(x) ((x) & 0x1f) + function CTRL (c : Character) return Key_Code is + begin + return Character'Pos (c) mod 16#20#; + -- uses a property of ASCII + -- A = 16#41#; a = 16#61#; ^A = 1 or 16#1# + end CTRL; + + function CTRL (c : Character) return Character is + begin + return Character'Val (Character'Pos (c) mod 16#20#); + -- uses a property of ASCII + -- A = 16#41#; a = 16#61#; ^A = 1 or 16#1# + end CTRL; + + save_trace : Trace_Attribute_Set; + -- Common function to allow ^T to toggle trace-mode in the middle of a test + -- so that trace-files can be made smaller. + function Getchar (win : Window := Standard_Window) return Key_Code is + c : Key_Code; + begin + -- #ifdef TRACE + c := Get_Keystroke (win); + while c = CTRL ('T') loop + -- if _nc_tracing in C + if Current_Trace_Setting /= Trace_Disable then + save_trace := Current_Trace_Setting; + Trace_Put ("TOGGLE-TRACING OFF"); + Current_Trace_Setting := Trace_Disable; + else + Current_Trace_Setting := save_trace; + end if; + Trace_On (Current_Trace_Setting); + if Current_Trace_Setting /= Trace_Disable then + Trace_Put ("TOGGLE-TRACING ON"); + end if; + end loop; + -- #else c := Get_Keystroke; + return c; + end Getchar; + + procedure Getchar (win : Window := Standard_Window) is + begin + if Getchar (win) < 0 then + Beep; + end if; + end Getchar; + + procedure Pause is + begin + Move_Cursor (Line => Lines - 1, Column => 0); + Add (Str => "Press any key to continue... "); + Getchar; + end Pause; + + procedure Cannot (s : String) is + use Interfaces.C; + use Interfaces.C.Strings; + use Terminal_Interface.Curses.Aux; + function getenv (x : char_array) return chars_ptr; + pragma Import (C, getenv, "getenv"); + tmp1 : char_array (0 .. 10); + package p is new ncurses2.genericPuts (1024); + use p; + use p.BS; + + tmpb : BS.Bounded_String; + + Length : size_t; + begin + To_C ("TERM", tmp1, Length); + Fill_String (getenv (tmp1), tmpb); + Add (Ch => newl); + myAdd (Str => "This " & tmpb & " terminal " & s); + Pause; + end Cannot; + + procedure ShellOut (message : Boolean) is + use Interfaces.C; + Txt : char_array (0 .. 10); + Length : size_t; + procedure system (x : char_array); + pragma Import (C, system, "system"); + begin + To_C ("sh", Txt, Length); + if message then + Add (Str => "Shelling out..."); + end if; + Save_Curses_Mode (Mode => Curses); + End_Windows; + system (Txt); + if message then + Add (Str => "returned from shellout."); + Add (Ch => newl); + end if; + Refresh; + end ShellOut; + + function Is_Digit (c : Key_Code) return Boolean is + begin + if c >= 16#100# then + return False; + else + return Ada.Characters.Handling.Is_Digit (Character'Val (c)); + end if; + end Is_Digit; + + procedure P (s : String) is + begin + Add (Str => s); + Add (Ch => newl); + end P; + + function Code_To_Char (c : Key_Code) return Character is + begin + if c > Character'Pos (Character'Last) then + return Character'Val (0); + -- maybe raise exception? + else + return Character'Val (c); + end if; + end Code_To_Char; + + -- This was untestable due to a bug in GNAT (3.12p) + -- Hmm, what bug? I don't remember. + function ctoi (c : Character) return Integer is + begin + return Character'Pos (c) - Character'Pos ('0'); + end ctoi; + +end ncurses2.util; diff --git a/ncurses/Ada95/samples/ncurses2-util.ads b/ncurses/Ada95/samples/ncurses2-util.ads new file mode 100644 index 0000000..f46749f --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2-util.ads @@ -0,0 +1,76 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses2.util -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.2 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +with Ada.Text_IO; +package ncurses2.util is + + Blank : constant Character := ' '; + Blank2 : constant Attributed_Character := + (Ch => Blank, Attr => Normal_Video, Color => Color_Pair'First); + + newl : constant Character := Character'Val (10); + + function CTRL (c : Character) return Key_Code; + + function CTRL (c : Character) return Character; + + function Getchar (win : Window := Standard_Window) return Key_Code; + + procedure Getchar (win : Window := Standard_Window); + + procedure Pause; + + procedure Cannot (s : String); + + procedure ShellOut (message : Boolean); + + package Int_IO is new Ada.Text_IO.Integer_IO (Integer); + + function Is_Digit (c : Key_Code) return Boolean; + + procedure P (s : String); + + function Code_To_Char (c : Key_Code) return Character; + function ctoi (c : Character) return Integer; + +end ncurses2.util; diff --git a/ncurses/Ada95/samples/ncurses2.ads b/ncurses/Ada95/samples/ncurses2.ads new file mode 100644 index 0000000..2fe0197 --- /dev/null +++ b/ncurses/Ada95/samples/ncurses2.ads @@ -0,0 +1,44 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- ncurses -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Eugene V. Melaragno 2000 +-- Version Control +-- $Revision: 1.1 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +package ncurses2 is + pragma Pure (ncurses2); +end ncurses2; diff --git a/ncurses/Ada95/samples/rain.adb b/ncurses/Ada95/samples/rain.adb new file mode 100644 index 0000000..d673018 --- /dev/null +++ b/ncurses/Ada95/samples/rain.adb @@ -0,0 +1,179 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Rain -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Laurent Pautet +-- Modified by: Juergen Pfeifer, 1997 +-- Version Control +-- $Revision: 1.8 $ +-- $Date: 2008/08/30 21:38:07 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- -- +with ncurses2.util; use ncurses2.util; +with Ada.Numerics.Float_Random; use Ada.Numerics.Float_Random; +with Status; use Status; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +procedure Rain is + + Visibility : Cursor_Visibility; + + subtype X_Position is Line_Position; + subtype Y_Position is Column_Position; + + Xpos : array (1 .. 5) of X_Position; + Ypos : array (1 .. 5) of Y_Position; + + done : Boolean; + + c : Key_Code; + + N : Integer; + + G : Generator; + + Max_X, X : X_Position; + Max_Y, Y : Y_Position; + + procedure Next (J : in out Integer); + procedure Cursor (X : X_Position; Y : Y_Position); + + procedure Next (J : in out Integer) is + begin + if J = 5 then + J := 1; + else + J := J + 1; + end if; + end Next; + + procedure Cursor (X : X_Position; Y : Y_Position) is + begin + Move_Cursor (Line => X, Column => Y); + end Cursor; + pragma Inline (Cursor); + +begin + + Init_Screen; + Set_NL_Mode; + Set_Echo_Mode (False); + + Visibility := Invisible; + Set_Cursor_Visibility (Visibility); + Set_Timeout_Mode (Standard_Window, Non_Blocking, 0); + + Max_X := Lines - 5; + Max_Y := Columns - 5; + + for I in Xpos'Range loop + Xpos (I) := X_Position (Float (Max_X) * Random (G)) + 2; + Ypos (I) := Y_Position (Float (Max_Y) * Random (G)) + 2; + end loop; + + N := 1; + done := False; + while not done and Process.Continue loop + + X := X_Position (Float (Max_X) * Random (G)) + 2; + Y := Y_Position (Float (Max_Y) * Random (G)) + 2; + + Cursor (X, Y); + Add (Ch => '.'); + + Cursor (Xpos (N), Ypos (N)); + Add (Ch => 'o'); + + -- + Next (N); + Cursor (Xpos (N), Ypos (N)); + Add (Ch => 'O'); + + -- + Next (N); + Cursor (Xpos (N) - 1, Ypos (N)); + Add (Ch => '-'); + Cursor (Xpos (N), Ypos (N) - 1); + Add (Str => "|.|"); + Cursor (Xpos (N) + 1, Ypos (N)); + Add (Ch => '-'); + + -- + Next (N); + Cursor (Xpos (N) - 2, Ypos (N)); + Add (Ch => '-'); + Cursor (Xpos (N) - 1, Ypos (N) - 1); + Add (Str => "/\\"); + Cursor (Xpos (N), Ypos (N) - 2); + Add (Str => "| O |"); + Cursor (Xpos (N) + 1, Ypos (N) - 1); + Add (Str => "\\/"); + Cursor (Xpos (N) + 2, Ypos (N)); + Add (Ch => '-'); + + -- + Next (N); + Cursor (Xpos (N) - 2, Ypos (N)); + Add (Ch => ' '); + Cursor (Xpos (N) - 1, Ypos (N) - 1); + Add (Str => " "); + Cursor (Xpos (N), Ypos (N) - 2); + Add (Str => " "); + Cursor (Xpos (N) + 1, Ypos (N) - 1); + Add (Str => " "); + Cursor (Xpos (N) + 2, Ypos (N)); + Add (Ch => ' '); + + Xpos (N) := X; + Ypos (N) := Y; + + c := Getchar; + case c is + when Character'Pos ('q') => done := True; + when Character'Pos ('Q') => done := True; + when Character'Pos ('s') => Set_NoDelay_Mode (Standard_Window, False); + when Character'Pos (' ') => Set_NoDelay_Mode (Standard_Window, True); + when others => null; + end case; + + Nap_Milli_Seconds (50); + end loop; + + Visibility := Normal; + Set_Cursor_Visibility (Visibility); + End_Windows; + Curses_Free_All; + +end Rain; diff --git a/ncurses/Ada95/samples/rain.ads b/ncurses/Ada95/samples/rain.ads new file mode 100644 index 0000000..3ad1912 --- /dev/null +++ b/ncurses/Ada95/samples/rain.ads @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Rain -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Laurent Pautet +-- Modified by: Juergen Pfeifer, 1997 +-- Version Control +-- $Revision: 1.6 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- -- +procedure Rain; diff --git a/ncurses/Ada95/samples/sample-curses_demo-attributes.adb b/ncurses/Ada95/samples/sample-curses_demo-attributes.adb new file mode 100644 index 0000000..c49f37d --- /dev/null +++ b/ncurses/Ada95/samples/sample-curses_demo-attributes.adb @@ -0,0 +1,122 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Curses_Demo.Attributes -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.12 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Explanation; use Sample.Explanation; + +package body Sample.Curses_Demo.Attributes is + + procedure Demo + is + P : Panel := Create (Standard_Window); + K : Real_Key_Code; + begin + Set_Meta_Mode; + Set_KeyPad_Mode; + + Top (P); + + Push_Environment ("ATTRIBDEMO"); + Default_Labels; + Notepad ("ATTRIB-PAD00"); + + Set_Character_Attributes (Attr => (others => False)); + Add (Line => 1, Column => Columns / 2 - 10, + Str => "This is NORMAL"); + + Set_Character_Attributes (Attr => (Stand_Out => True, + others => False)); + Add (Line => 2, Column => Columns / 2 - 10, + Str => "This is Stand_Out"); + + Set_Character_Attributes (Attr => (Under_Line => True, + others => False)); + Add (Line => 3, Column => Columns / 2 - 10, + Str => "This is Under_Line"); + + Set_Character_Attributes (Attr => (Reverse_Video => True, + others => False)); + Add (Line => 4, Column => Columns / 2 - 10, + Str => "This is Reverse_Video"); + + Set_Character_Attributes (Attr => (Blink => True, + others => False)); + Add (Line => 5, Column => Columns / 2 - 10, + Str => "This is Blink"); + + Set_Character_Attributes (Attr => (Dim_Character => True, + others => False)); + Add (Line => 6, Column => Columns / 2 - 10, + Str => "This is Dim_Character"); + + Set_Character_Attributes (Attr => (Bold_Character => True, + others => False)); + Add (Line => 7, Column => Columns / 2 - 10, + Str => "This is Bold_Character"); + + Refresh_Without_Update; + Update_Panels; Update_Screen; + + loop + K := Get_Key; + if K in Special_Key_Code'Range then + case K is + when QUIT_CODE => exit; + when HELP_CODE => Explain_Context; + when EXPLAIN_CODE => Explain ("ATTRIBKEYS"); + when others => null; + end case; + end if; + end loop; + + Pop_Environment; + Clear; + Refresh_Without_Update; + Delete (P); + Update_Panels; Update_Screen; + + end Demo; + +end Sample.Curses_Demo.Attributes; diff --git a/ncurses/Ada95/samples/sample-curses_demo-attributes.ads b/ncurses/Ada95/samples/sample-curses_demo-attributes.ads new file mode 100644 index 0000000..6d9b4e8 --- /dev/null +++ b/ncurses/Ada95/samples/sample-curses_demo-attributes.ads @@ -0,0 +1,45 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Curses_Demo.Attributes -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample.Curses_Demo.Attributes is + + procedure Demo; + +end Sample.Curses_Demo.Attributes; diff --git a/ncurses/Ada95/samples/sample-curses_demo-mouse.adb b/ncurses/Ada95/samples/sample-curses_demo-mouse.adb new file mode 100644 index 0000000..490685c --- /dev/null +++ b/ncurses/Ada95/samples/sample-curses_demo-mouse.adb @@ -0,0 +1,220 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Curses_Demo.Mouse -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.16 $ +-- $Date: 2008/07/26 18:48:19 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; +with Terminal_Interface.Curses.Text_IO; use Terminal_Interface.Curses.Text_IO; +with Terminal_Interface.Curses.Text_IO.Integer_IO; +with Terminal_Interface.Curses.Text_IO.Enumeration_IO; + +with Sample.Helpers; use Sample.Helpers; +with Sample.Manifest; use Sample.Manifest; +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Explanation; use Sample.Explanation; + +package body Sample.Curses_Demo.Mouse is + + package Int_IO is new + Terminal_Interface.Curses.Text_IO.Integer_IO (Integer); + use Int_IO; + + package Button_IO is new + Terminal_Interface.Curses.Text_IO.Enumeration_IO (Mouse_Button); + use Button_IO; + + package State_IO is new + Terminal_Interface.Curses.Text_IO.Enumeration_IO (Button_State); + use State_IO; + + procedure Demo is + + type Controls is array (1 .. 3) of Panel; + + Frame : Window; + Msg : Window; + Ctl : Controls; + Pan : Panel; + K : Real_Key_Code; + V : Cursor_Visibility := Invisible; + W : Window; + Note : Window; + Msg_L : constant Line_Count := 8; + Lins : Line_Position := Lines; + Cols : Column_Position; + Mask : Event_Mask; + procedure Show_Mouse_Event; + + procedure Show_Mouse_Event + is + Evt : constant Mouse_Event := Get_Mouse; + Y : Line_Position; + X : Column_Position; + Button : Mouse_Button; + State : Button_State; + W : Window; + begin + Get_Event (Evt, Y, X, Button, State); + Put (Msg, "Event at"); + Put (Msg, " X="); Put (Msg, Integer (X), 3); + Put (Msg, ", Y="); Put (Msg, Integer (Y), 3); + Put (Msg, ", Btn="); Put (Msg, Button, 10); + Put (Msg, ", Stat="); Put (Msg, State, 15); + for I in Ctl'Range loop + W := Get_Window (Ctl (I)); + if Enclosed_In_Window (W, Evt) then + Transform_Coordinates (W, Y, X, From_Screen); + Put (Msg, ",Box("); + Put (Msg, (I), 1); Put (Msg, ","); + Put (Msg, Integer (Y), 1); Put (Msg, ","); + Put (Msg, Integer (X), 1); Put (Msg, ")"); + end if; + end loop; + New_Line (Msg); + Flush (Msg); + Update_Panels; Update_Screen; + end Show_Mouse_Event; + + begin + Push_Environment ("MOUSE00"); + Notepad ("MOUSE-PAD00"); + Default_Labels; + Set_Cursor_Visibility (V); + + Note := Notepad_Window; + if Note /= Null_Window then + Get_Window_Position (Note, Lins, Cols); + end if; + Frame := Create (Msg_L, Columns, Lins - Msg_L, 0); + if Has_Colors then + Set_Background (Win => Frame, + Ch => (Color => Default_Colors, + Attr => Normal_Video, + Ch => ' ')); + Set_Character_Attributes (Win => Frame, + Attr => Normal_Video, + Color => Default_Colors); + Erase (Frame); + end if; + Msg := Derived_Window (Frame, Msg_L - 2, Columns - 2, 1, 1); + Pan := Create (Frame); + + Set_Meta_Mode; + Set_KeyPad_Mode; + Mask := Start_Mouse; + + Box (Frame); + Window_Title (Frame, "Mouse Protocol"); + Refresh_Without_Update (Frame); + Allow_Scrolling (Msg, True); + + declare + Middle_Column : constant Integer := Integer (Columns) / 2; + Middle_Index : constant Natural := Ctl'First + (Ctl'Length / 2); + Width : constant Column_Count := 5; + Height : constant Line_Count := 3; + Half : constant Column_Count := Width / 2; + Space : constant Column_Count := 3; + Position : Integer; + W : Window; + begin + for I in Ctl'Range loop + Position := ((I) - Integer (Middle_Index)) * + Integer (Half + Space + Width) + Middle_Column; + W := Create (Height, + Width, + 1, + Column_Position (Position)); + if Has_Colors then + Set_Background (Win => W, + Ch => (Color => Menu_Back_Color, + Attr => Normal_Video, + Ch => ' ')); + Set_Character_Attributes (Win => W, + Attr => Normal_Video, + Color => Menu_Fore_Color); + Erase (W); + end if; + Ctl (I) := Create (W); + Box (W); + Move_Cursor (W, 1, Half); + Put (W, (I), 1); + Refresh_Without_Update (W); + end loop; + end; + + Update_Panels; Update_Screen; + + loop + K := Get_Key; + if K in Special_Key_Code'Range then + case K is + when QUIT_CODE => exit; + when HELP_CODE => Explain_Context; + when EXPLAIN_CODE => Explain ("MOUSEKEYS"); + when Key_Mouse => Show_Mouse_Event; + when others => null; + end case; + end if; + end loop; + + for I in Ctl'Range loop + W := Get_Window (Ctl (I)); + Clear (W); + Delete (Ctl (I)); + Delete (W); + end loop; + + Clear (Frame); + Delete (Pan); + Delete (Msg); + Delete (Frame); + + Set_Cursor_Visibility (V); + End_Mouse (Mask); + + Pop_Environment; + Update_Panels; Update_Screen; + + end Demo; + +end Sample.Curses_Demo.Mouse; diff --git a/ncurses/Ada95/samples/sample-curses_demo-mouse.ads b/ncurses/Ada95/samples/sample-curses_demo-mouse.ads new file mode 100644 index 0000000..ad78d0d --- /dev/null +++ b/ncurses/Ada95/samples/sample-curses_demo-mouse.ads @@ -0,0 +1,45 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Curses_Demo.Mouse -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample.Curses_Demo.Mouse is + + procedure Demo; + +end Sample.Curses_Demo.Mouse; diff --git a/ncurses/Ada95/samples/sample-curses_demo.adb b/ncurses/Ada95/samples/sample-curses_demo.adb new file mode 100644 index 0000000..700da76 --- /dev/null +++ b/ncurses/Ada95/samples/sample-curses_demo.adb @@ -0,0 +1,143 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Curses_Demo -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.15 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Panels.User_Data; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Helpers; use Sample.Helpers; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; + +with Sample.Explanation; use Sample.Explanation; + +with Sample.Menu_Demo.Handler; +with Sample.Curses_Demo.Mouse; +with Sample.Curses_Demo.Attributes; + +package body Sample.Curses_Demo is + + type User_Data is new Integer; + type User_Data_Access is access all User_Data; + package PUD is new Panels.User_Data (User_Data, User_Data_Access); + -- We use above instantiation of the generic User_Data package to + -- demonstrate and test the use of the user data maechanism. + + procedure Demo + is + function My_Driver (M : Menu; + K : Key_Code; + Pan : Panel) return Boolean; + package Mh is new Sample.Menu_Demo.Handler (My_Driver); + + Itm : Item_Array_Access := new Item_Array' + (New_Item ("Attributes Demo"), + New_Item ("Mouse Demo"), + Null_Item); + M : Menu := New_Menu (Itm); + U1 : constant User_Data_Access := new User_Data'(4711); + U2 : User_Data_Access; + + function My_Driver (M : Menu; + K : Key_Code; + Pan : Panel) return Boolean + is + Idx : constant Positive := Get_Index (Current (M)); + Result : Boolean := False; + begin + PUD.Set_User_Data (Pan, U1); -- set some user data, just for fun + if K in User_Key_Code'Range then + if K = QUIT then + Result := True; + elsif K = SELECT_ITEM then + if Idx in Itm'Range then + Hide (Pan); + Update_Panels; + end if; + case Idx is + when 1 => Sample.Curses_Demo.Attributes.Demo; + when 2 => Sample.Curses_Demo.Mouse.Demo; + when others => Not_Implemented; + end case; + if Idx in Itm'Range then + Top (Pan); + Show (Pan); + Update_Panels; + Update_Screen; + end if; + end if; + end if; + PUD.Get_User_Data (Pan, U2); -- get the user data + pragma Assert (U1.all = U2.all and then U1 = U2); + return Result; + end My_Driver; + + begin + + if (1 + Item_Count (M)) /= Itm'Length then + raise Constraint_Error; + end if; + + if not Has_Mouse then + declare + O : Item_Option_Set; + begin + Get_Options (Itm (2), O); + O.Selectable := False; + Set_Options (Itm (2), O); + end; + end if; + + Push_Environment ("CURSES00"); + Notepad ("CURSES-PAD00"); + Default_Labels; + Refresh_Soft_Label_Keys_Without_Update; + + Mh.Drive_Me (M, " Demo "); + Pop_Environment; + + Delete (M); + Free (Itm, True); + end Demo; + +end Sample.Curses_Demo; diff --git a/ncurses/Ada95/samples/sample-curses_demo.ads b/ncurses/Ada95/samples/sample-curses_demo.ads new file mode 100644 index 0000000..ed4ad0f --- /dev/null +++ b/ncurses/Ada95/samples/sample-curses_demo.ads @@ -0,0 +1,45 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Curses_Demo -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample.Curses_Demo is + + procedure Demo; + +end Sample.Curses_Demo; diff --git a/ncurses/Ada95/samples/sample-explanation.adb b/ncurses/Ada95/samples/sample-explanation.adb new file mode 100644 index 0000000..12a8deb --- /dev/null +++ b/ncurses/Ada95/samples/sample-explanation.adb @@ -0,0 +1,408 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Explanation -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.20 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- Poor mans help system. This scans a sequential file for key lines and +-- then reads the lines up to the next key. Those lines are presented in +-- a window as help or explanation. +-- +with Ada.Text_IO; use Ada.Text_IO; +with Ada.Unchecked_Deallocation; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; + +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Manifest; use Sample.Manifest; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Helpers; use Sample.Helpers; + +package body Sample.Explanation is + + Help_Keys : constant String := "HELPKEYS"; + In_Help : constant String := "INHELP"; + + File_Name : constant String := "explain.msg"; + F : File_Type; + + type Help_Line; + type Help_Line_Access is access Help_Line; + pragma Controlled (Help_Line_Access); + type String_Access is access String; + pragma Controlled (String_Access); + + type Help_Line is + record + Prev, Next : Help_Line_Access; + Line : String_Access; + end record; + + procedure Explain (Key : in String; + Win : in Window); + + procedure Release_String is + new Ada.Unchecked_Deallocation (String, + String_Access); + procedure Release_Help_Line is + new Ada.Unchecked_Deallocation (Help_Line, + Help_Line_Access); + + function Search (Key : String) return Help_Line_Access; + procedure Release_Help (Root : in out Help_Line_Access); + + procedure Explain (Key : in String) + is + begin + Explain (Key, Null_Window); + end Explain; + + procedure Explain (Key : in String; + Win : in Window) + is + -- Retrieve the text associated with this key and display it in this + -- window. If no window argument is passed, the routine will create + -- a temporary window and use it. + + function Filter_Key return Real_Key_Code; + procedure Unknown_Key; + procedure Redo; + procedure To_Window (C : in out Help_Line_Access; + More : in out Boolean); + + Frame : Window := Null_Window; + + W : Window := Win; + K : Real_Key_Code; + P : Panel; + + Height : Line_Count; + Width : Column_Count; + Help : Help_Line_Access := Search (Key); + Current : Help_Line_Access; + Top_Line : Help_Line_Access; + + Has_More : Boolean := True; + + procedure Unknown_Key + is + begin + Add (W, "Help message with ID "); + Add (W, Key); + Add (W, " not found."); + Add (W, Character'Val (10)); + Add (W, "Press the Function key labelled 'Quit' key to continue."); + end Unknown_Key; + + procedure Redo + is + H : Help_Line_Access := Top_Line; + begin + if Top_Line /= null then + for L in 0 .. (Height - 1) loop + Add (W, L, 0, H.Line.all); + exit when H.Next = null; + H := H.Next; + end loop; + else + Unknown_Key; + end if; + end Redo; + + function Filter_Key return Real_Key_Code + is + K : Real_Key_Code; + begin + loop + K := Get_Key (W); + if K in Special_Key_Code'Range then + case K is + when HELP_CODE => + if not Find_Context (In_Help) then + Push_Environment (In_Help, False); + Explain (In_Help, W); + Pop_Environment; + Redo; + end if; + when EXPLAIN_CODE => + if not Find_Context (Help_Keys) then + Push_Environment (Help_Keys, False); + Explain (Help_Keys, W); + Pop_Environment; + Redo; + end if; + when others => exit; + end case; + else + exit; + end if; + end loop; + return K; + end Filter_Key; + + procedure To_Window (C : in out Help_Line_Access; + More : in out Boolean) + is + L : Line_Position := 0; + begin + loop + Add (W, L, 0, C.Line.all); + L := L + 1; + exit when C.Next = null or else L = Height; + C := C.Next; + end loop; + if C.Next /= null then + pragma Assert (L = Height); + More := True; + else + More := False; + end if; + end To_Window; + + begin + if W = Null_Window then + Push_Environment ("HELP"); + Default_Labels; + Frame := New_Window (Lines - 2, Columns, 0, 0); + if Has_Colors then + Set_Background (Win => Frame, + Ch => (Ch => ' ', + Color => Help_Color, + Attr => Normal_Video)); + Set_Character_Attributes (Win => Frame, + Attr => Normal_Video, + Color => Help_Color); + Erase (Frame); + end if; + Box (Frame); + Set_Character_Attributes (Frame, (Reverse_Video => True, + others => False)); + Add (Frame, Lines - 3, 2, "Cursor Up/Down scrolls"); + Set_Character_Attributes (Frame); -- Back to default. + Window_Title (Frame, "Explanation"); + W := Derived_Window (Frame, Lines - 4, Columns - 2, 1, 1); + Refresh_Without_Update (Frame); + Get_Size (W, Height, Width); + Set_Meta_Mode (W); + Set_KeyPad_Mode (W); + Allow_Scrolling (W, True); + Set_Echo_Mode (False); + P := Create (Frame); + Top (P); + Update_Panels; + else + Clear (W); + Refresh_Without_Update (W); + end if; + + Current := Help; Top_Line := Help; + + if null = Help then + Unknown_Key; + loop + K := Filter_Key; + exit when K = QUIT_CODE; + end loop; + else + To_Window (Current, Has_More); + if Has_More then + -- This means there are more lines available, so we have to go + -- into a scroll manager. + loop + K := Filter_Key; + if K in Special_Key_Code'Range then + case K is + when Key_Cursor_Down => + if Current.Next /= null then + Move_Cursor (W, Height - 1, 0); + Scroll (W, 1); + Current := Current.Next; + Top_Line := Top_Line.Next; + Add (W, Current.Line.all); + end if; + when Key_Cursor_Up => + if Top_Line.Prev /= null then + Move_Cursor (W, 0, 0); + Scroll (W, -1); + Top_Line := Top_Line.Prev; + Current := Current.Prev; + Add (W, Top_Line.Line.all); + end if; + when QUIT_CODE => exit; + when others => null; + end case; + end if; + end loop; + else + loop + K := Filter_Key; + exit when K = QUIT_CODE; + end loop; + end if; + end if; + + Clear (W); + + if Frame /= Null_Window then + Clear (Frame); + Delete (P); + Delete (W); + Delete (Frame); + Pop_Environment; + end if; + + Update_Panels; + Update_Screen; + + Release_Help (Help); + + end Explain; + + function Search (Key : String) return Help_Line_Access + is + Last : Natural; + Buffer : String (1 .. 256); + Root : Help_Line_Access := null; + Current : Help_Line_Access; + Tail : Help_Line_Access := null; + + function Next_Line return Boolean; + + function Next_Line return Boolean + is + H_End : constant String := "#END"; + begin + Get_Line (F, Buffer, Last); + if Last = H_End'Length and then H_End = Buffer (1 .. Last) then + return False; + else + return True; + end if; + end Next_Line; + begin + Reset (F); + Outer : + loop + exit Outer when not Next_Line; + if Last = (1 + Key'Length) and then Key = Buffer (2 .. Last) + and then Buffer (1) = '#' then + loop + exit when not Next_Line; + exit when Buffer (1) = '#'; + Current := new Help_Line'(null, null, + new String'(Buffer (1 .. Last))); + if Tail = null then + Release_Help (Root); + Root := Current; + else + Tail.Next := Current; + Current.Prev := Tail; + end if; + Tail := Current; + end loop; + exit Outer; + end if; + end loop Outer; + return Root; + end Search; + + procedure Release_Help (Root : in out Help_Line_Access) + is + Next : Help_Line_Access; + begin + loop + exit when Root = null; + Next := Root.Next; + Release_String (Root.Line); + Release_Help_Line (Root); + Root := Next; + end loop; + end Release_Help; + + procedure Explain_Context + is + begin + Explain (Context); + end Explain_Context; + + procedure Notepad (Key : in String) + is + H : constant Help_Line_Access := Search (Key); + T : Help_Line_Access := H; + N : Line_Count := 1; + L : Line_Position := 0; + W : Window; + P : Panel; + begin + if H /= null then + loop + T := T.Next; + exit when T = null; + N := N + 1; + end loop; + W := New_Window (N + 2, Columns, Lines - N - 2, 0); + if Has_Colors then + Set_Background (Win => W, + Ch => (Ch => ' ', + Color => Notepad_Color, + Attr => Normal_Video)); + Set_Character_Attributes (Win => W, + Attr => Normal_Video, + Color => Notepad_Color); + Erase (W); + end if; + Box (W); + Window_Title (W, "Notepad"); + P := New_Panel (W); + T := H; + loop + Add (W, L + 1, 1, T.Line.all, Integer (Columns - 2)); + L := L + 1; + T := T.Next; + exit when T = null; + end loop; + T := H; + Release_Help (T); + Refresh_Without_Update (W); + Notepad_To_Context (P); + end if; + end Notepad; + +begin + Open (F, In_File, File_Name); +end Sample.Explanation; diff --git a/ncurses/Ada95/samples/sample-explanation.ads b/ncurses/Ada95/samples/sample-explanation.ads new file mode 100644 index 0000000..18617ac --- /dev/null +++ b/ncurses/Ada95/samples/sample-explanation.ads @@ -0,0 +1,59 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Explanation -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- Poor mans help system. This scans a sequential file for key lines and +-- then reads the lines up to the next key. Those lines are presented in +-- a window as help or explanation. +-- +package Sample.Explanation is + + procedure Explain (Key : in String); + -- Retrieve the text associated with this key and display it. + + procedure Explain_Context; + -- Explain the current context. + + procedure Notepad (Key : in String); + -- Put a note on the screen and maintain it with the context + + Explanation_Not_Found : exception; + Explanation_Error : exception; + +end Sample.Explanation; diff --git a/ncurses/Ada95/samples/sample-form_demo-aux.adb b/ncurses/Ada95/samples/sample-form_demo-aux.adb new file mode 100644 index 0000000..81c97ad --- /dev/null +++ b/ncurses/Ada95/samples/sample-form_demo-aux.adb @@ -0,0 +1,263 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Form_Demo.Aux -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.16 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Helpers; use Sample.Helpers; +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Explanation; use Sample.Explanation; + +package body Sample.Form_Demo.Aux is + + procedure Geometry (F : in Form; + L : out Line_Count; -- Lines used for menu + C : out Column_Count; -- Columns used for menu + Y : out Line_Position; -- Proposed Line for menu + X : out Column_Position) -- Proposed Column for menu + is + begin + Scale (F, L, C); + + L := L + 2; -- count for frame at top and bottom + C := C + 2; -- " + + -- Calculate horizontal coordinate at the screen center + X := (Columns - C) / 2; + Y := 1; -- start always in line 1 + end Geometry; + + function Create (F : Form; + Title : String; + Lin : Line_Position; + Col : Column_Position) return Panel + is + W, S : Window; + L : Line_Count; + C : Column_Count; + Y : Line_Position; + X : Column_Position; + Pan : Panel; + begin + Geometry (F, L, C, Y, X); + W := New_Window (L, C, Lin, Col); + Set_Meta_Mode (W); + Set_KeyPad_Mode (W); + if Has_Colors then + Set_Background (Win => W, + Ch => (Ch => ' ', + Color => Default_Colors, + Attr => Normal_Video)); + Set_Character_Attributes (Win => W, + Color => Default_Colors, + Attr => Normal_Video); + Erase (W); + end if; + S := Derived_Window (W, L - 2, C - 2, 1, 1); + Set_Meta_Mode (S); + Set_KeyPad_Mode (S); + Box (W); + Set_Window (F, W); + Set_Sub_Window (F, S); + if Title'Length > 0 then + Window_Title (W, Title); + end if; + Pan := New_Panel (W); + Post (F); + return Pan; + end Create; + + procedure Destroy (F : in Form; + P : in out Panel) + is + W, S : Window; + begin + W := Get_Window (F); + S := Get_Sub_Window (F); + Post (F, False); + Erase (W); + Delete (P); + Set_Window (F, Null_Window); + Set_Sub_Window (F, Null_Window); + Delete (S); + Delete (W); + Update_Panels; + end Destroy; + + function Get_Request (F : Form; + P : Panel; + Handle_CRLF : Boolean := True) return Key_Code + is + W : constant Window := Get_Window (F); + K : Real_Key_Code; + Ch : Character; + begin + Top (P); + loop + K := Get_Key (W); + if K in Special_Key_Code'Range then + case K is + when HELP_CODE => Explain_Context; + when EXPLAIN_CODE => Explain ("FORMKEYS"); + when Key_Home => return F_First_Field; + when Key_End => return F_Last_Field; + when QUIT_CODE => return QUIT; + when Key_Cursor_Down => return F_Down_Char; + when Key_Cursor_Up => return F_Up_Char; + when Key_Cursor_Left => return F_Previous_Char; + when Key_Cursor_Right => return F_Next_Char; + when Key_Next_Page => return F_Next_Page; + when Key_Previous_Page => return F_Previous_Page; + when Key_Backspace => return F_Delete_Previous; + when Key_Clear_Screen => return F_Clear_Field; + when Key_Clear_End_Of_Line => return F_Clear_EOF; + when others => return K; + end case; + elsif K in Normal_Key_Code'Range then + Ch := Character'Val (K); + case Ch is + when CAN => return QUIT; -- CTRL-X + + when ACK => return F_Next_Field; -- CTRL-F + when STX => return F_Previous_Field; -- CTRL-B + when FF => return F_Left_Field; -- CTRL-L + when DC2 => return F_Right_Field; -- CTRL-R + when NAK => return F_Up_Field; -- CTRL-U + when EOT => return F_Down_Field; -- CTRL-D + + when ETB => return F_Next_Word; -- CTRL-W + when DC4 => return F_Previous_Word; -- CTRL-T + + when SOH => return F_Begin_Field; -- CTRL-A + when ENQ => return F_End_Field; -- CTRL-E + + when HT => return F_Insert_Char; -- CTRL-I + when SI => return F_Insert_Line; -- CTRL-O + when SYN => return F_Delete_Char; -- CTRL-V + when BS => return F_Delete_Previous; -- CTRL-H + when EM => return F_Delete_Line; -- CTRL-Y + when BEL => return F_Delete_Word; -- CTRL-G + when VT => return F_Clear_EOF; -- CTRL-K + + when SO => return F_Next_Choice; -- CTRL-N + when DLE => return F_Previous_Choice; -- CTRL-P + + when CR | LF => + if Handle_CRLF then + return F_New_Line; + else + return K; + end if; + when others => return K; + end case; + else + return K; + end if; + end loop; + end Get_Request; + + function Make (Top : Line_Position; + Left : Column_Position; + Text : String) return Field + is + Fld : Field; + C : constant Column_Count := Column_Count (Text'Length); + begin + Fld := New_Field (1, C, Top, Left); + Set_Buffer (Fld, 0, Text); + Switch_Options (Fld, (Active => True, others => False), False); + if Has_Colors then + Set_Background (Fld => Fld, Color => Default_Colors); + end if; + return Fld; + end Make; + + function Make (Height : Line_Count := 1; + Width : Column_Count; + Top : Line_Position; + Left : Column_Position; + Off_Screen : Natural := 0) return Field + is + Fld : constant Field := New_Field (Height, Width, Top, Left, Off_Screen); + begin + if Has_Colors then + Set_Foreground (Fld => Fld, Color => Form_Fore_Color); + Set_Background (Fld => Fld, Color => Form_Back_Color); + else + Set_Background (Fld, (Reverse_Video => True, others => False)); + end if; + return Fld; + end Make; + + function Default_Driver (F : Form; + K : Key_Code; + P : Panel) return Boolean + is + begin + if P = Null_Panel then + raise Panel_Exception; + end if; + if K in User_Key_Code'Range and then K = QUIT then + if Driver (F, F_Validate_Field) = Form_Ok then + return True; + end if; + end if; + return False; + end Default_Driver; + + function Count_Active (F : Form) return Natural + is + N : Natural := 0; + O : Field_Option_Set; + H : constant Natural := Field_Count (F); + begin + if H > 0 then + for I in 1 .. H loop + Get_Options (Fields (F, I), O); + if O.Active then + N := N + 1; + end if; + end loop; + end if; + return N; + end Count_Active; + +end Sample.Form_Demo.Aux; diff --git a/ncurses/Ada95/samples/sample-form_demo-aux.ads b/ncurses/Ada95/samples/sample-form_demo-aux.ads new file mode 100644 index 0000000..2317e14 --- /dev/null +++ b/ncurses/Ada95/samples/sample-form_demo-aux.ads @@ -0,0 +1,92 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Form_Demo.Aux -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms; + +package Sample.Form_Demo.Aux is + + procedure Geometry (F : in Form; + L : out Line_Count; + C : out Column_Count; + Y : out Line_Position; + X : out Column_Position); + -- Calculate the geometry for a panel beeing able to be used to display + -- the menu. + + function Create (F : Form; + Title : String; + Lin : Line_Position; + Col : Column_Position) return Panel; + -- Create a panel decorated with a frame and the title at the specified + -- position. The dimension of the panel is derived from the menus layout. + + procedure Destroy (F : in Form; + P : in out Panel); + -- Destroy all the windowing structures associated with this menu and + -- panel. + + function Get_Request (F : Form; + P : Panel; + Handle_CRLF : Boolean := True) return Key_Code; + -- Centralized request driver for all menus in this sample. This + -- gives us a common key binding for all menus. + + function Make (Top : Line_Position; + Left : Column_Position; + Text : String) return Field; + -- create a label + + function Make (Height : Line_Count := 1; + Width : Column_Count; + Top : Line_Position; + Left : Column_Position; + Off_Screen : Natural := 0) return Field; + -- create a editable field + + function Default_Driver (F : Form; + K : Key_Code; + P : Panel) return Boolean; + + function Count_Active (F : Form) return Natural; + -- Count the number of active fields in the form + +end Sample.Form_Demo.Aux; diff --git a/ncurses/Ada95/samples/sample-form_demo-handler.adb b/ncurses/Ada95/samples/sample-form_demo-handler.adb new file mode 100644 index 0000000..afe86f7 --- /dev/null +++ b/ncurses/Ada95/samples/sample-form_demo-handler.adb @@ -0,0 +1,98 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Form_Demo.Handler -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.13 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Sample.Form_Demo.Aux; + +package body Sample.Form_Demo.Handler is + + package Aux renames Sample.Form_Demo.Aux; + + procedure Drive_Me (F : in Form; + Title : in String := "") + is + L : Line_Count; + C : Column_Count; + Y : Line_Position; + X : Column_Position; + begin + Aux.Geometry (F, L, C, Y, X); + Drive_Me (F, Y, X, Title); + end Drive_Me; + + procedure Drive_Me (F : in Form; + Lin : in Line_Position; + Col : in Column_Position; + Title : in String := "") + is + Pan : Panel := Aux.Create (F, Title, Lin, Col); + V : Cursor_Visibility := Normal; + Handle_CRLF : Boolean := True; + + begin + Set_Cursor_Visibility (V); + if Aux.Count_Active (F) = 1 then + Handle_CRLF := False; + end if; + loop + declare + K : constant Key_Code := Aux.Get_Request (F, Pan, Handle_CRLF); + R : Driver_Result; + begin + if (K = 13 or else K = 10) and then not Handle_CRLF then + R := Unknown_Request; + else + R := Driver (F, K); + end if; + case R is + when Form_Ok => null; + when Unknown_Request => + if My_Driver (F, K, Pan) then + exit; + end if; + when others => Beep; + end case; + end; + end loop; + Set_Cursor_Visibility (V); + Aux.Destroy (F, Pan); + end Drive_Me; + +end Sample.Form_Demo.Handler; diff --git a/ncurses/Ada95/samples/sample-form_demo-handler.ads b/ncurses/Ada95/samples/sample-form_demo-handler.ads new file mode 100644 index 0000000..4a56412 --- /dev/null +++ b/ncurses/Ada95/samples/sample-form_demo-handler.ads @@ -0,0 +1,64 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Form_Demo.Handler -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; +use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; +use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Forms; +use Terminal_Interface.Curses.Forms; + +generic + with function My_Driver (Frm : Form; + K : Key_Code; + Pan : Panel) return Boolean; +package Sample.Form_Demo.Handler is + + procedure Drive_Me (F : in Form; + Lin : in Line_Position; + Col : in Column_Position; + Title : in String := ""); + -- Position the menu at the given point and drive it. + + procedure Drive_Me (F : in Form; + Title : in String := ""); + -- Center menu and drive it. + +end Sample.Form_Demo.Handler; diff --git a/ncurses/Ada95/samples/sample-form_demo.adb b/ncurses/Ada95/samples/sample-form_demo.adb new file mode 100644 index 0000000..e26a5d9 --- /dev/null +++ b/ncurses/Ada95/samples/sample-form_demo.adb @@ -0,0 +1,130 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Form_Demo -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.15 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms; +with Terminal_Interface.Curses.Forms.Field_User_Data; +with Sample.My_Field_Type; use Sample.My_Field_Type; +with Sample.Explanation; use Sample.Explanation; +with Sample.Form_Demo.Aux; use Sample.Form_Demo.Aux; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Form_Demo.Handler; + +with Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada; +with Terminal_Interface.Curses.Forms.Field_Types.Enumeration; +use Terminal_Interface.Curses.Forms.Field_Types.Enumeration; +with Terminal_Interface.Curses.Forms.Field_Types.IntField; +use Terminal_Interface.Curses.Forms.Field_Types.IntField; + +package body Sample.Form_Demo is + + type User_Data is + record + Data : Integer; + end record; + type User_Access is access User_Data; + + package Fld_U is new + Terminal_Interface.Curses.Forms.Field_User_Data (User_Data, + User_Access); + + type Weekday is (Sunday, Monday, Tuesday, Wednesday, Thursday, + Friday, Saturday); + + package Weekday_Enum is new + Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada (Weekday); + + Enum_Field : constant Enumeration_Field := + Weekday_Enum.Create; + + procedure Demo + is + + Mft : constant My_Data := (Ch => 'X'); + + FA : Field_Array_Access := new Field_Array' + (Make (0, 14, "Sample Entry Form"), + Make (2, 0, "WeekdayEnumeration"), + Make (2, 20, "Numeric 1-10"), + Make (2, 34, "Only 'X'"), + Make (5, 0, "Multiple Lines offscreen(Scroll)"), + Make (Width => 18, Top => 3, Left => 0), + Make (Width => 12, Top => 3, Left => 20), + Make (Width => 12, Top => 3, Left => 34), + Make (Width => 46, Top => 6, Left => 0, Height => 4, Off_Screen => 2), + Null_Field + ); + + Frm : Terminal_Interface.Curses.Forms.Form := Create (FA); + + I_F : constant Integer_Field := (Precision => 0, + Lower_Limit => 1, + Upper_Limit => 10); + + F1, F2 : User_Access; + + package Fh is new Sample.Form_Demo.Handler (Default_Driver); + + begin + Push_Environment ("FORM00"); + Notepad ("FORM-PAD00"); + Default_Labels; + + Set_Field_Type (FA (6), Enum_Field); + Set_Field_Type (FA (7), I_F); + Set_Field_Type (FA (8), Mft); + + F1 := new User_Data'(Data => 4711); + Fld_U.Set_User_Data (FA (1), F1); + + Fh.Drive_Me (Frm); + + Fld_U.Get_User_Data (FA (1), F2); + pragma Assert (F1 = F2); + pragma Assert (F1.Data = F2.Data); + + Pop_Environment; + Delete (Frm); + + Free (FA, True); + end Demo; + +end Sample.Form_Demo; diff --git a/ncurses/Ada95/samples/sample-form_demo.ads b/ncurses/Ada95/samples/sample-form_demo.ads new file mode 100644 index 0000000..bd33f57 --- /dev/null +++ b/ncurses/Ada95/samples/sample-form_demo.ads @@ -0,0 +1,45 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Form_Demo -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample.Form_Demo is + + procedure Demo; + +end Sample.Form_Demo; diff --git a/ncurses/Ada95/samples/sample-function_key_setting.adb b/ncurses/Ada95/samples/sample-function_key_setting.adb new file mode 100644 index 0000000..e40e4a4 --- /dev/null +++ b/ncurses/Ada95/samples/sample-function_key_setting.adb @@ -0,0 +1,214 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Function_Key_Setting -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.13 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Deallocation; +with Sample.Manifest; use Sample.Manifest; + +-- This package implements a simple stack of function key label environments. +-- +package body Sample.Function_Key_Setting is + + Max_Label_Length : constant Positive := 8; + Number_Of_Keys : Label_Number := Label_Number'Last; + Justification : Label_Justification := Left; + + subtype Label is String (1 .. Max_Label_Length); + type Label_Array is array (Label_Number range <>) of Label; + + type Key_Environment (N : Label_Number := Label_Number'Last); + type Env_Ptr is access Key_Environment; + pragma Controlled (Env_Ptr); + + type String_Access is access String; + pragma Controlled (String_Access); + + Active_Context : String_Access := new String'("MAIN"); + Active_Notepad : Panel := Null_Panel; + + type Key_Environment (N : Label_Number := Label_Number'Last) is + record + Prev : Env_Ptr; + Help : String_Access; + Notepad : Panel; + Labels : Label_Array (1 .. N); + end record; + + procedure Release_String is + new Ada.Unchecked_Deallocation (String, + String_Access); + + procedure Release_Environment is + new Ada.Unchecked_Deallocation (Key_Environment, + Env_Ptr); + + Top_Of_Stack : Env_Ptr := null; + + procedure Push_Environment (Key : in String; + Reset : in Boolean := True) + is + P : constant Env_Ptr := new Key_Environment (Number_Of_Keys); + begin + -- Store the current labels in the environment + for I in 1 .. Number_Of_Keys loop + Get_Soft_Label_Key (I, P.Labels (I)); + if Reset then + Set_Soft_Label_Key (I, " "); + end if; + end loop; + P.Prev := Top_Of_Stack; + -- now store active help context and notepad + P.Help := Active_Context; + P.Notepad := Active_Notepad; + -- The notepad must now vanish and the new notepad is empty. + if P.Notepad /= Null_Panel then + Hide (P.Notepad); + Update_Panels; + end if; + Active_Notepad := Null_Panel; + Active_Context := new String'(Key); + + Top_Of_Stack := P; + if Reset then + Refresh_Soft_Label_Keys_Without_Update; + end if; + end Push_Environment; + + procedure Pop_Environment + is + P : Env_Ptr := Top_Of_Stack; + begin + if Top_Of_Stack = null then + raise Function_Key_Stack_Error; + else + for I in 1 .. Number_Of_Keys loop + Set_Soft_Label_Key (I, P.Labels (I), Justification); + end loop; + pragma Assert (Active_Context /= null); + Release_String (Active_Context); + Active_Context := P.Help; + Refresh_Soft_Label_Keys_Without_Update; + Notepad_To_Context (P.Notepad); + Top_Of_Stack := P.Prev; + Release_Environment (P); + end if; + end Pop_Environment; + + function Context return String + is + begin + if Active_Context /= null then + return Active_Context.all; + else + return ""; + end if; + end Context; + + function Find_Context (Key : String) return Boolean + is + P : Env_Ptr := Top_Of_Stack; + begin + if Active_Context.all = Key then + return True; + else + loop + exit when P = null; + if P.Help.all = Key then + return True; + else + P := P.Prev; + end if; + end loop; + return False; + end if; + end Find_Context; + + procedure Notepad_To_Context (Pan : in Panel) + is + W : Window; + begin + if Active_Notepad /= Null_Panel then + W := Get_Window (Active_Notepad); + Clear (W); + Delete (Active_Notepad); + Delete (W); + end if; + Active_Notepad := Pan; + if Pan /= Null_Panel then + Top (Pan); + end if; + Update_Panels; + Update_Screen; + end Notepad_To_Context; + + procedure Initialize (Mode : Soft_Label_Key_Format := PC_Style; + Just : Label_Justification := Left) + is + begin + case Mode is + when PC_Style .. PC_Style_With_Index + => Number_Of_Keys := 12; + when others + => Number_Of_Keys := 8; + end case; + Init_Soft_Label_Keys (Mode); + Justification := Just; + end Initialize; + + procedure Default_Labels + is + begin + Set_Soft_Label_Key (FKEY_QUIT, "Quit"); + Set_Soft_Label_Key (FKEY_HELP, "Help"); + Set_Soft_Label_Key (FKEY_EXPLAIN, "Keys"); + Refresh_Soft_Label_Keys_Without_Update; + end Default_Labels; + + function Notepad_Window return Window + is + begin + if Active_Notepad /= Null_Panel then + return Get_Window (Active_Notepad); + else + return Null_Window; + end if; + end Notepad_Window; + +end Sample.Function_Key_Setting; diff --git a/ncurses/Ada95/samples/sample-function_key_setting.ads b/ncurses/Ada95/samples/sample-function_key_setting.ads new file mode 100644 index 0000000..e20f619 --- /dev/null +++ b/ncurses/Ada95/samples/sample-function_key_setting.ads @@ -0,0 +1,82 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Function_Key_Setting -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; + +-- This package implements a simple stack of function key label environments. +-- +package Sample.Function_Key_Setting is + + procedure Push_Environment (Key : in String; + Reset : in Boolean := True); + -- Push the definition of the current function keys on an internal + -- stack. If the reset flag is true, all labels are reset while + -- pushed, so the new environment can assume a tabula rasa. + -- The Key defines the new Help Context associated with the new + -- Environment. This saves also the currently active Notepad. + + procedure Pop_Environment; + -- Pop the Definitions from the stack and make them the current ones. + -- This also restores the Help context and the previous Notepad. + + procedure Initialize (Mode : Soft_Label_Key_Format := PC_Style; + Just : Label_Justification := Left); + -- Initialize the environment + + function Context return String; + -- Return the current context identitfier + + function Find_Context (Key : String) return Boolean; + -- Look for a context, return true if it is in the stack, + -- false otherwise. + + procedure Notepad_To_Context (Pan : in Panel); + -- Add a panel representing a notepad to the current context. + + Function_Key_Stack_Error : exception; + + procedure Default_Labels; + -- Set the default labels used in all environments + + function Notepad_Window return Window; + -- Return the current notepad window or Null_Window if there is none. + +end Sample.Function_Key_Setting; diff --git a/ncurses/Ada95/samples/sample-header_handler.adb b/ncurses/Ada95/samples/sample-header_handler.adb new file mode 100644 index 0000000..d198d66 --- /dev/null +++ b/ncurses/Ada95/samples/sample-header_handler.adb @@ -0,0 +1,180 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Header_Handler -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.16 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Calendar; use Ada.Calendar; +with Terminal_Interface.Curses.Text_IO.Integer_IO; +with Sample.Manifest; use Sample.Manifest; + +-- This package handles the painting of the header line of the screen. +-- +package body Sample.Header_Handler is + + package Int_IO is new + Terminal_Interface.Curses.Text_IO.Integer_IO (Integer); + use Int_IO; + + Header_Window : Window := Null_Window; + + Display_Hour : Integer := -1; -- hour last displayed + Display_Min : Integer := -1; -- minute last displayed + Display_Day : Integer := -1; -- day last displayed + Display_Month : Integer := -1; -- month last displayed + + -- This is the routine handed over to the curses library to be called + -- as initialization routine when ripping of the header lines from + -- the screen. This routine must follow C conventions. + function Init_Header_Window (Win : Window; + Columns : Column_Count) return Integer; + pragma Convention (C, Init_Header_Window); + + procedure Internal_Update_Header_Window (Do_Update : in Boolean); + + -- The initialization must be called before Init_Screen. It steals two + -- lines from the top of the screen. + procedure Init_Header_Handler + is + begin + Rip_Off_Lines (2, Init_Header_Window'Access); + end Init_Header_Handler; + + procedure N_Out (N : in Integer); + + -- Emit a two digit number and ensure that a leading zero is generated if + -- necessary. + procedure N_Out (N : in Integer) + is + begin + if N < 10 then + Add (Header_Window, '0'); + Put (Header_Window, N, 1); + else + Put (Header_Window, N, 2); + end if; + end N_Out; + + -- Paint the header window. The input parameter is a flag indicating + -- whether or not the screen should be updated physically after painting. + procedure Internal_Update_Header_Window (Do_Update : in Boolean) + is + type Month_Name_Array is + array (Month_Number'First .. Month_Number'Last) of String (1 .. 9); + + Month_Names : constant Month_Name_Array := + ("January ", + "February ", + "March ", + "April ", + "May ", + "June ", + "July ", + "August ", + "September", + "October ", + "November ", + "December "); + + Now : constant Time := Clock; + Sec : constant Integer := Integer (Seconds (Now)); + Hour : constant Integer := Sec / 3600; + Minute : constant Integer := (Sec - Hour * 3600) / 60; + Mon : constant Month_Number := Month (Now); + D : constant Day_Number := Day (Now); + begin + if Header_Window /= Null_Window then + if Minute /= Display_Min or else Hour /= Display_Hour + or else Display_Day /= D or else Display_Month /= Mon then + Move_Cursor (Header_Window, 0, 0); + N_Out (D); Add (Header_Window, '.'); + Add (Header_Window, Month_Names (Mon)); + Move_Cursor (Header_Window, 1, 0); + N_Out (Hour); Add (Header_Window, ':'); + N_Out (Minute); + Display_Min := Minute; + Display_Hour := Hour; + Display_Month := Mon; + Display_Day := D; + Refresh_Without_Update (Header_Window); + if Do_Update then + Update_Screen; + end if; + end if; + end if; + end Internal_Update_Header_Window; + + -- This routine is called in the keyboard input timeout handler. So it will + -- periodically update the header line of the screen. + procedure Update_Header_Window + is + begin + Internal_Update_Header_Window (True); + end Update_Header_Window; + + function Init_Header_Window (Win : Window; + Columns : Column_Count) return Integer + is + Title : constant String := "Ada 95 ncurses Binding Sample"; + Pos : Column_Position; + begin + Header_Window := Win; + if Win /= Null_Window then + if Has_Colors then + Set_Background (Win => Win, + Ch => (Ch => ' ', + Color => Header_Color, + Attr => Normal_Video)); + Set_Character_Attributes (Win => Win, + Attr => Normal_Video, + Color => Header_Color); + Erase (Win); + end if; + Leave_Cursor_After_Update (Win, True); + Pos := Columns - Column_Position (Title'Length); + Add (Win, 0, Pos / 2, Title); + -- In this phase we must not allow a physical update, because + -- ncurses isn´t properly initialized at this point. + Internal_Update_Header_Window (False); + return 0; + else + return -1; + end if; + end Init_Header_Window; + +end Sample.Header_Handler; diff --git a/ncurses/Ada95/samples/sample-header_handler.ads b/ncurses/Ada95/samples/sample-header_handler.ads new file mode 100644 index 0000000..aa0a0c2 --- /dev/null +++ b/ncurses/Ada95/samples/sample-header_handler.ads @@ -0,0 +1,53 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Header_Handler -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +-- This package handles the painting of the header line of the screen. +-- +package Sample.Header_Handler is + + procedure Init_Header_Handler; + -- Initialize the handler for the headerlines. + + procedure Update_Header_Window; + -- Update the information in the header window + +end Sample.Header_Handler; diff --git a/ncurses/Ada95/samples/sample-helpers.adb b/ncurses/Ada95/samples/sample-helpers.adb new file mode 100644 index 0000000..d04853e --- /dev/null +++ b/ncurses/Ada95/samples/sample-helpers.adb @@ -0,0 +1,68 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Helpers -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.12 $ +-- $Date: 2008/07/26 18:48:08 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Sample.Explanation; use Sample.Explanation; + +-- This package contains some conveniant helper routines used throughout +-- this example. +-- +package body Sample.Helpers is + + procedure Window_Title (Win : in Window; + Title : in String) + is + Height : Line_Count; + Width : Column_Count; + Pos : Column_Position := 0; + begin + Get_Size (Win, Height, Width); + if Title'Length < Width then + Pos := (Width - Title'Length) / 2; + end if; + Add (Win, 0, Pos, Title); + end Window_Title; + + procedure Not_Implemented is + begin + Explain ("NOTIMPL"); + end Not_Implemented; + +end Sample.Helpers; diff --git a/ncurses/Ada95/samples/sample-helpers.ads b/ncurses/Ada95/samples/sample-helpers.ads new file mode 100644 index 0000000..c1c8e79 --- /dev/null +++ b/ncurses/Ada95/samples/sample-helpers.ads @@ -0,0 +1,54 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Helpers -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +-- This package contains some conveniant helper routines used throughout +-- this example. +-- +package Sample.Helpers is + + procedure Window_Title (Win : in Window; + Title : in String); + -- Put a title string into the first line of the window + + procedure Not_Implemented; + +end Sample.Helpers; diff --git a/ncurses/Ada95/samples/sample-keyboard_handler.adb b/ncurses/Ada95/samples/sample-keyboard_handler.adb new file mode 100644 index 0000000..fdac054 --- /dev/null +++ b/ncurses/Ada95/samples/sample-keyboard_handler.adb @@ -0,0 +1,194 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Keyboard_Handler -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.14 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Strings; use Ada.Strings; +with Ada.Strings.Fixed; use Ada.Strings.Fixed; +with Ada.Strings.Maps.Constants; use Ada.Strings.Maps.Constants; +with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; +with Ada.Characters.Handling; use Ada.Characters.Handling; + +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms; +with Terminal_Interface.Curses.Forms.Field_Types.Enumeration; +use Terminal_Interface.Curses.Forms.Field_Types.Enumeration; + +with Sample.Header_Handler; use Sample.Header_Handler; +with Sample.Form_Demo.Aux; use Sample.Form_Demo.Aux; +with Sample.Manifest; use Sample.Manifest; +with Sample.Form_Demo.Handler; + +-- This package contains a centralized keyboard handler used throughout +-- this example. The handler establishes a timeout mechanism that provides +-- periodical updates of the common header lines used in this example. +-- + +package body Sample.Keyboard_Handler is + + In_Command : Boolean := False; + + function Get_Key (Win : Window := Standard_Window) return Real_Key_Code + is + K : Real_Key_Code; + + function Command return Real_Key_Code; + + function Command return Real_Key_Code + is + function My_Driver (F : Form; + C : Key_Code; + P : Panel) return Boolean; + package Fh is new Sample.Form_Demo.Handler (My_Driver); + + type Label_Array is array (Label_Number) of String (1 .. 8); + + Labels : Label_Array; + + FA : Field_Array_Access := new Field_Array' + (Make (0, 0, "Command:"), + Make (Top => 0, Left => 9, Width => Columns - 11), + Null_Field); + + K : Real_Key_Code := Key_None; + N : Natural := 0; + + function My_Driver (F : Form; + C : Key_Code; + P : Panel) return Boolean + is + Ch : Character; + begin + if P = Null_Panel then + raise Panel_Exception; + end if; + if C in User_Key_Code'Range and then C = QUIT then + if Driver (F, F_Validate_Field) = Form_Ok then + K := Key_None; + return True; + end if; + elsif C in Normal_Key_Code'Range then + Ch := Character'Val (C); + if Ch = LF or else Ch = CR then + if Driver (F, F_Validate_Field) = Form_Ok then + declare + Buffer : String (1 .. Positive (Columns - 11)); + Cmdc : String (1 .. 8); + begin + Get_Buffer (Fld => FA (2), Str => Buffer); + Trim (Buffer, Left); + if Buffer (1) /= ' ' then + Cmdc := To_Upper (Buffer (Cmdc'Range)); + for I in Labels'Range loop + if Cmdc = Labels (I) then + K := Function_Key_Code + (Function_Key_Number (I)); + exit; + end if; + end loop; + end if; + return True; + end; + end if; + end if; + end if; + return False; + end My_Driver; + + begin + In_Command := True; + for I in Label_Number'Range loop + Get_Soft_Label_Key (I, Labels (I)); + Trim (Labels (I), Left); + Translate (Labels (I), Upper_Case_Map); + if Labels (I) (1) /= ' ' then + N := N + 1; + end if; + end loop; + if N > 0 then -- some labels were really set + declare + Enum_Info : Enumeration_Info (N); + Enum_Field : Enumeration_Field; + J : Positive := Enum_Info.Names'First; + + Frm : Form := Create (FA); + + begin + for I in Label_Number'Range loop + if Labels (I) (1) /= ' ' then + Enum_Info.Names (J) := new String'(Labels (I)); + J := J + 1; + end if; + end loop; + Enum_Field := Create (Enum_Info, True); + Set_Field_Type (FA (2), Enum_Field); + Set_Background (FA (2), Normal_Video); + + Fh.Drive_Me (Frm, Lines - 3, 0); + Delete (Frm); + Update_Panels; Update_Screen; + end; + end if; + Free (FA, True); + In_Command := False; + return K; + end Command; + + begin + Set_Timeout_Mode (Win, Delayed, 30000); + loop + K := Get_Keystroke (Win); + if K = Key_None then -- a timeout occured + Update_Header_Window; + elsif K = 3 and then not In_Command then -- CTRL-C + K := Command; + exit when K /= Key_None; + else + exit; + end if; + end loop; + return K; + end Get_Key; + + procedure Init_Keyboard_Handler is + begin + null; + end Init_Keyboard_Handler; + +end Sample.Keyboard_Handler; diff --git a/ncurses/Ada95/samples/sample-keyboard_handler.ads b/ncurses/Ada95/samples/sample-keyboard_handler.ads new file mode 100644 index 0000000..ac5b139 --- /dev/null +++ b/ncurses/Ada95/samples/sample-keyboard_handler.ads @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Keyboard_Handler -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +-- This package contains a centralized keyboard handler used throughout +-- this example. The handler establishes a timeout mechanism that provides +-- periodical updates of the common header lines used in this example. +-- +package Sample.Keyboard_Handler is + + function Get_Key (Win : Window := Standard_Window) return Real_Key_Code; + -- The central routine for handling keystrokes. + + procedure Init_Keyboard_Handler; + -- Initialize the keyboard + +end Sample.Keyboard_Handler; diff --git a/ncurses/Ada95/samples/sample-manifest.ads b/ncurses/Ada95/samples/sample-manifest.ads new file mode 100644 index 0000000..bb76c4c --- /dev/null +++ b/ncurses/Ada95/samples/sample-manifest.ads @@ -0,0 +1,67 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Manifest -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +package Sample.Manifest is + + QUIT : constant User_Key_Code := User_Key_Code'First; + SELECT_ITEM : constant User_Key_Code := QUIT + 1; + + FKEY_HELP : constant Label_Number := 1; + HELP_CODE : constant Special_Key_Code := Key_F1; + FKEY_EXPLAIN : constant Label_Number := 2; + EXPLAIN_CODE : constant Special_Key_Code := Key_F2; + FKEY_QUIT : constant Label_Number := 3; + QUIT_CODE : constant Special_Key_Code := Key_F3; + + Menu_Marker : constant String := "=> "; + + Default_Colors : constant Redefinable_Color_Pair := 1; + Menu_Fore_Color : constant Redefinable_Color_Pair := 2; + Menu_Back_Color : constant Redefinable_Color_Pair := 3; + Menu_Grey_Color : constant Redefinable_Color_Pair := 4; + Form_Fore_Color : constant Redefinable_Color_Pair := 5; + Form_Back_Color : constant Redefinable_Color_Pair := 6; + Notepad_Color : constant Redefinable_Color_Pair := 7; + Help_Color : constant Redefinable_Color_Pair := 8; + Header_Color : constant Redefinable_Color_Pair := 9; + +end Sample.Manifest; diff --git a/ncurses/Ada95/samples/sample-menu_demo-aux.adb b/ncurses/Ada95/samples/sample-menu_demo-aux.adb new file mode 100644 index 0000000..b9b237c --- /dev/null +++ b/ncurses/Ada95/samples/sample-menu_demo-aux.adb @@ -0,0 +1,204 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Menu_Demo.Aux -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.13 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Helpers; use Sample.Helpers; +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Explanation; use Sample.Explanation; + +package body Sample.Menu_Demo.Aux is + + procedure Geometry (M : in Menu; + L : out Line_Count; + C : out Column_Count; + Y : out Line_Position; + X : out Column_Position; + Fy : out Line_Position; + Fx : out Column_Position); + + procedure Geometry (M : in Menu; + L : out Line_Count; -- Lines used for menu + C : out Column_Count; -- Columns used for menu + Y : out Line_Position; -- Proposed Line for menu + X : out Column_Position; -- Proposed Column for menu + Fy : out Line_Position; -- Vertical inner frame + Fx : out Column_Position) -- Horiz. inner frame + is + Spc_Desc : Column_Position; -- spaces between description and item + begin + Set_Mark (M, Menu_Marker); + + Spacing (M, Spc_Desc, Fy, Fx); + Scale (M, L, C); + + Fx := Fx + Column_Position (Fy - 1); -- looks a bit nicer + + L := L + 2 * Fy; -- count for frame at top and bottom + C := C + 2 * Fx; -- " + + -- Calculate horizontal coordinate at the screen center + X := (Columns - C) / 2; + Y := 1; -- always startin line 1 + + end Geometry; + + procedure Geometry (M : in Menu; + L : out Line_Count; -- Lines used for menu + C : out Column_Count; -- Columns used for menu + Y : out Line_Position; -- Proposed Line for menu + X : out Column_Position) -- Proposed Column for menu + is + Fy : Line_Position; + Fx : Column_Position; + begin + Geometry (M, L, C, Y, X, Fy, Fx); + end Geometry; + + function Create (M : Menu; + Title : String; + Lin : Line_Position; + Col : Column_Position) return Panel + is + W, S : Window; + L : Line_Count; + C : Column_Count; + Y, Fy : Line_Position; + X, Fx : Column_Position; + Pan : Panel; + begin + Geometry (M, L, C, Y, X, Fy, Fx); + W := New_Window (L, C, Lin, Col); + Set_Meta_Mode (W); + Set_KeyPad_Mode (W); + if Has_Colors then + Set_Background (Win => W, + Ch => (Ch => ' ', + Color => Menu_Back_Color, + Attr => Normal_Video)); + Set_Foreground (Men => M, Color => Menu_Fore_Color); + Set_Background (Men => M, Color => Menu_Back_Color); + Set_Grey (Men => M, Color => Menu_Grey_Color); + Erase (W); + end if; + S := Derived_Window (W, L - Fy, C - Fx, Fy, Fx); + Set_Meta_Mode (S); + Set_KeyPad_Mode (S); + Box (W); + Set_Window (M, W); + Set_Sub_Window (M, S); + if Title'Length > 0 then + Window_Title (W, Title); + end if; + Pan := New_Panel (W); + Post (M); + return Pan; + end Create; + + procedure Destroy (M : in Menu; + P : in out Panel) + is + W, S : Window; + begin + W := Get_Window (M); + S := Get_Sub_Window (M); + Post (M, False); + Erase (W); + Delete (P); + Set_Window (M, Null_Window); + Set_Sub_Window (M, Null_Window); + Delete (S); + Delete (W); + Update_Panels; + end Destroy; + + function Get_Request (M : Menu; P : Panel) return Key_Code + is + W : constant Window := Get_Window (M); + K : Real_Key_Code; + Ch : Character; + begin + Top (P); + loop + K := Get_Key (W); + if K in Special_Key_Code'Range then + case K is + when HELP_CODE => Explain_Context; + when EXPLAIN_CODE => Explain ("MENUKEYS"); + when Key_Home => return REQ_FIRST_ITEM; + when QUIT_CODE => return QUIT; + when Key_Cursor_Down => return REQ_DOWN_ITEM; + when Key_Cursor_Up => return REQ_UP_ITEM; + when Key_Cursor_Left => return REQ_LEFT_ITEM; + when Key_Cursor_Right => return REQ_RIGHT_ITEM; + when Key_End => return REQ_LAST_ITEM; + when Key_Backspace => return REQ_BACK_PATTERN; + when Key_Next_Page => return REQ_SCR_DPAGE; + when Key_Previous_Page => return REQ_SCR_UPAGE; + when others => return K; + end case; + elsif K in Normal_Key_Code'Range then + Ch := Character'Val (K); + case Ch is + when CAN => return QUIT; -- CTRL-X + when SO => return REQ_NEXT_ITEM; -- CTRL-N + when DLE => return REQ_PREV_ITEM; -- CTRL-P + when NAK => return REQ_SCR_ULINE; -- CTRL-U + when EOT => return REQ_SCR_DLINE; -- CTRL-D + when ACK => return REQ_SCR_DPAGE; -- CTRL-F + when STX => return REQ_SCR_UPAGE; -- CTRL-B + when EM => return REQ_CLEAR_PATTERN; -- CTRL-Y + when BS => return REQ_BACK_PATTERN; -- CTRL-H + when SOH => return REQ_NEXT_MATCH; -- CTRL-A + when ENQ => return REQ_PREV_MATCH; -- CTRL-E + when DC4 => return REQ_TOGGLE_ITEM; -- CTRL-T + + when CR | LF => return SELECT_ITEM; + when others => return K; + end case; + else + return K; + end if; + end loop; + end Get_Request; + +end Sample.Menu_Demo.Aux; diff --git a/ncurses/Ada95/samples/sample-menu_demo-aux.ads b/ncurses/Ada95/samples/sample-menu_demo-aux.ads new file mode 100644 index 0000000..964e38e --- /dev/null +++ b/ncurses/Ada95/samples/sample-menu_demo-aux.ads @@ -0,0 +1,71 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Menu_Demo.Aux -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus; + +package Sample.Menu_Demo.Aux is + + procedure Geometry (M : in Menu; + L : out Line_Count; + C : out Column_Count; + Y : out Line_Position; + X : out Column_Position); + -- Calculate the geometry for a panel beeing able to be used to display + -- the menu. + + function Create (M : Menu; + Title : String; + Lin : Line_Position; + Col : Column_Position) return Panel; + -- Create a panel decorated with a frame and the title at the specified + -- position. The dimension of the panel is derived from the menus layout. + + procedure Destroy (M : in Menu; + P : in out Panel); + -- Destroy all the windowing structures associated with this menu and + -- panel. + + function Get_Request (M : Menu; P : Panel) return Key_Code; + -- Centralized request driver for all menus in this sample. This + -- gives us a common key binding for all menus. + +end Sample.Menu_Demo.Aux; diff --git a/ncurses/Ada95/samples/sample-menu_demo-handler.adb b/ncurses/Ada95/samples/sample-menu_demo-handler.adb new file mode 100644 index 0000000..18747e9 --- /dev/null +++ b/ncurses/Ada95/samples/sample-menu_demo-handler.adb @@ -0,0 +1,108 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Menu_Demo.Handler -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.15 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Sample.Menu_Demo.Aux; +with Sample.Manifest; use Sample.Manifest; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; + +package body Sample.Menu_Demo.Handler is + + package Aux renames Sample.Menu_Demo.Aux; + + procedure Drive_Me (M : in Menu; + Title : in String := "") + is + L : Line_Count; + C : Column_Count; + Y : Line_Position; + X : Column_Position; + begin + Aux.Geometry (M, L, C, Y, X); + Drive_Me (M, Y, X, Title); + end Drive_Me; + + procedure Drive_Me (M : in Menu; + Lin : in Line_Position; + Col : in Column_Position; + Title : in String := "") + is + Mask : Event_Mask := No_Events; + Old : Event_Mask; + Pan : Panel := Aux.Create (M, Title, Lin, Col); + V : Cursor_Visibility := Invisible; + begin + -- We are only interested in Clicks with the left button + Register_Reportable_Events (Left, All_Clicks, Mask); + Old := Start_Mouse (Mask); + Set_Cursor_Visibility (V); + loop + declare + K : Key_Code := Aux.Get_Request (M, Pan); + R : constant Driver_Result := Driver (M, K); + begin + case R is + when Menu_Ok => null; + when Unknown_Request => + declare + I : constant Item := Current (M); + O : Item_Option_Set; + begin + if K = Key_Mouse then + K := SELECT_ITEM; + end if; + Get_Options (I, O); + if K = SELECT_ITEM and then not O.Selectable then + Beep; + else + if My_Driver (M, K, Pan) then + exit; + end if; + end if; + end; + when others => Beep; + end case; + end; + end loop; + End_Mouse (Old); + Aux.Destroy (M, Pan); + end Drive_Me; + +end Sample.Menu_Demo.Handler; diff --git a/ncurses/Ada95/samples/sample-menu_demo-handler.ads b/ncurses/Ada95/samples/sample-menu_demo-handler.ads new file mode 100644 index 0000000..1a82f9f --- /dev/null +++ b/ncurses/Ada95/samples/sample-menu_demo-handler.ads @@ -0,0 +1,64 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Menu_Demo.Handler -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; +use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; +use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Menus; +use Terminal_Interface.Curses.Menus; + +generic + with function My_Driver (Men : Menu; + K : Key_Code; + Pan : Panel) return Boolean; +package Sample.Menu_Demo.Handler is + + procedure Drive_Me (M : in Menu; + Lin : in Line_Position; + Col : in Column_Position; + Title : in String := ""); + -- Position the menu at the given point and drive it. + + procedure Drive_Me (M : in Menu; + Title : in String := ""); + -- Center menu and drive it. + +end Sample.Menu_Demo.Handler; diff --git a/ncurses/Ada95/samples/sample-menu_demo.adb b/ncurses/Ada95/samples/sample-menu_demo.adb new file mode 100644 index 0000000..3864674 --- /dev/null +++ b/ncurses/Ada95/samples/sample-menu_demo.adb @@ -0,0 +1,396 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Menu_Demo -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.18 $ +-- $Date: 2008/07/26 18:48:30 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus; +with Terminal_Interface.Curses.Menus.Menu_User_Data; +with Terminal_Interface.Curses.Menus.Item_User_Data; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Menu_Demo.Handler; +with Sample.Helpers; use Sample.Helpers; +with Sample.Explanation; use Sample.Explanation; + +package body Sample.Menu_Demo is + + package Spacing_Demo is + procedure Spacing_Test; + end Spacing_Demo; + + package body Spacing_Demo is + + procedure Spacing_Test + is + function My_Driver (M : Menu; + K : Key_Code; + P : Panel) return Boolean; + + procedure Set_Option_Key; + procedure Set_Select_Key; + procedure Set_Description_Key; + procedure Set_Hide_Key; + + package Mh is new Sample.Menu_Demo.Handler (My_Driver); + + I : Item_Array_Access := new Item_Array' + (New_Item ("January", "31 Days"), + New_Item ("February", "28/29 Days"), + New_Item ("March", "31 Days"), + New_Item ("April", "30 Days"), + New_Item ("May", "31 Days"), + New_Item ("June", "30 Days"), + New_Item ("July", "31 Days"), + New_Item ("August", "31 Days"), + New_Item ("September", "30 Days"), + New_Item ("October", "31 Days"), + New_Item ("November", "30 Days"), + New_Item ("December", "31 Days"), + Null_Item); + + M : Menu := New_Menu (I); + Flip_State : Boolean := True; + Hide_Long : Boolean := False; + + type Format_Code is (Four_By_1, Four_By_2, Four_By_3); + type Operations is (Flip, Reorder, Reformat, Reselect, Describe); + + type Change is array (Operations) of Boolean; + pragma Pack (Change); + No_Change : constant Change := Change'(others => False); + + Current_Format : Format_Code := Four_By_1; + To_Change : Change := No_Change; + + function My_Driver (M : Menu; + K : Key_Code; + P : Panel) return Boolean + is + begin + if M = Null_Menu then + raise Menu_Exception; + end if; + if P = Null_Panel then + raise Panel_Exception; + end if; + To_Change := No_Change; + if K in User_Key_Code'Range then + if K = QUIT then + return True; + end if; + end if; + if K in Special_Key_Code'Range then + case K is + when Key_F4 => + To_Change (Flip) := True; + return True; + when Key_F5 => + To_Change (Reformat) := True; + Current_Format := Four_By_1; + return True; + when Key_F6 => + To_Change (Reformat) := True; + Current_Format := Four_By_2; + return True; + when Key_F7 => + To_Change (Reformat) := True; + Current_Format := Four_By_3; + return True; + when Key_F8 => + To_Change (Reorder) := True; + return True; + when Key_F9 => + To_Change (Reselect) := True; + return True; + when Key_F10 => + if Current_Format /= Four_By_3 then + To_Change (Describe) := True; + return True; + else + return False; + end if; + when Key_F11 => + Hide_Long := not Hide_Long; + declare + O : Item_Option_Set; + begin + for J in I'Range loop + Get_Options (I (J), O); + O.Selectable := True; + if Hide_Long then + case J is + when 1 | 3 | 5 | 7 | 8 | 10 | 12 => + O.Selectable := False; + when others => null; + end case; + end if; + Set_Options (I (J), O); + end loop; + end; + return False; + when others => null; + end case; + end if; + return False; + end My_Driver; + + procedure Set_Option_Key + is + O : Menu_Option_Set; + begin + if Current_Format = Four_By_1 then + Set_Soft_Label_Key (8, ""); + else + Get_Options (M, O); + if O.Row_Major_Order then + Set_Soft_Label_Key (8, "O-Col"); + else + Set_Soft_Label_Key (8, "O-Row"); + end if; + end if; + Refresh_Soft_Label_Keys_Without_Update; + end Set_Option_Key; + + procedure Set_Select_Key + is + O : Menu_Option_Set; + begin + Get_Options (M, O); + if O.One_Valued then + Set_Soft_Label_Key (9, "Multi"); + else + Set_Soft_Label_Key (9, "Singl"); + end if; + Refresh_Soft_Label_Keys_Without_Update; + end Set_Select_Key; + + procedure Set_Description_Key + is + O : Menu_Option_Set; + begin + if Current_Format = Four_By_3 then + Set_Soft_Label_Key (10, ""); + else + Get_Options (M, O); + if O.Show_Descriptions then + Set_Soft_Label_Key (10, "-Desc"); + else + Set_Soft_Label_Key (10, "+Desc"); + end if; + end if; + Refresh_Soft_Label_Keys_Without_Update; + end Set_Description_Key; + + procedure Set_Hide_Key + is + begin + if Hide_Long then + Set_Soft_Label_Key (11, "Enab"); + else + Set_Soft_Label_Key (11, "Disab"); + end if; + Refresh_Soft_Label_Keys_Without_Update; + end Set_Hide_Key; + + begin + Push_Environment ("MENU01"); + Notepad ("MENU-PAD01"); + Default_Labels; + Set_Soft_Label_Key (4, "Flip"); + Set_Soft_Label_Key (5, "4x1"); + Set_Soft_Label_Key (6, "4x2"); + Set_Soft_Label_Key (7, "4x3"); + Set_Option_Key; + Set_Select_Key; + Set_Description_Key; + Set_Hide_Key; + + Set_Format (M, 4, 1); + loop + Mh.Drive_Me (M); + exit when To_Change = No_Change; + if To_Change (Flip) then + if Flip_State then + Flip_State := False; + Set_Spacing (M, 3, 2, 0); + else + Flip_State := True; + Set_Spacing (M); + end if; + elsif To_Change (Reformat) then + case Current_Format is + when Four_By_1 => Set_Format (M, 4, 1); + when Four_By_2 => Set_Format (M, 4, 2); + when Four_By_3 => + declare + O : Menu_Option_Set; + begin + Get_Options (M, O); + O.Show_Descriptions := False; + Set_Options (M, O); + Set_Format (M, 4, 3); + end; + end case; + Set_Option_Key; + Set_Description_Key; + elsif To_Change (Reorder) then + declare + O : Menu_Option_Set; + begin + Get_Options (M, O); + O.Row_Major_Order := not O.Row_Major_Order; + Set_Options (M, O); + Set_Option_Key; + end; + elsif To_Change (Reselect) then + declare + O : Menu_Option_Set; + begin + Get_Options (M, O); + O.One_Valued := not O.One_Valued; + Set_Options (M, O); + Set_Select_Key; + end; + elsif To_Change (Describe) then + declare + O : Menu_Option_Set; + begin + Get_Options (M, O); + O.Show_Descriptions := not O.Show_Descriptions; + Set_Options (M, O); + Set_Description_Key; + end; + else + null; + end if; + end loop; + Set_Spacing (M); + + Pop_Environment; + pragma Assert (Get_Index (Items (M, 1)) = Get_Index (I (1))); + Delete (M); + Free (I, True); + end Spacing_Test; + end Spacing_Demo; + + procedure Demo + is + -- We use this datatype only to test the instantiation of + -- the Menu_User_Data generic package. No functionality + -- behind it. + type User_Data is new Integer; + type User_Data_Access is access User_Data; + + -- Those packages are only instantiated to test the usability. + -- No real functionality is shown in the demo. + package MUD is new Menu_User_Data (User_Data, User_Data_Access); + package IUD is new Item_User_Data (User_Data, User_Data_Access); + + function My_Driver (M : Menu; + K : Key_Code; + P : Panel) return Boolean; + + package Mh is new Sample.Menu_Demo.Handler (My_Driver); + + Itm : Item_Array_Access := new Item_Array' + (New_Item ("Menu Layout Options"), + New_Item ("Demo of Hook functions"), + Null_Item); + M : Menu := New_Menu (Itm); + + U1 : constant User_Data_Access := new User_Data'(4711); + U2 : User_Data_Access; + U3 : constant User_Data_Access := new User_Data'(4712); + U4 : User_Data_Access; + + function My_Driver (M : Menu; + K : Key_Code; + P : Panel) return Boolean + is + Idx : constant Positive := Get_Index (Current (M)); + begin + if K in User_Key_Code'Range then + if K = QUIT then + return True; + elsif K = SELECT_ITEM then + if Idx in Itm'Range then + Hide (P); + Update_Panels; + end if; + case Idx is + when 1 => Spacing_Demo.Spacing_Test; + when others => Not_Implemented; + end case; + if Idx in Itm'Range then + Top (P); + Show (P); + Update_Panels; + Update_Screen; + end if; + end if; + end if; + return False; + end My_Driver; + begin + Push_Environment ("MENU00"); + Notepad ("MENU-PAD00"); + Default_Labels; + Refresh_Soft_Label_Keys_Without_Update; + Set_Pad_Character (M, '|'); + + MUD.Set_User_Data (M, U1); + IUD.Set_User_Data (Itm (1), U3); + + Mh.Drive_Me (M); + + MUD.Get_User_Data (M, U2); + pragma Assert (U1 = U2 and U1.all = 4711); + + IUD.Get_User_Data (Itm (1), U4); + pragma Assert (U3 = U4 and U3.all = 4712); + + Pop_Environment; + Delete (M); + Free (Itm, True); + end Demo; + +end Sample.Menu_Demo; diff --git a/ncurses/Ada95/samples/sample-menu_demo.ads b/ncurses/Ada95/samples/sample-menu_demo.ads new file mode 100644 index 0000000..b071afc --- /dev/null +++ b/ncurses/Ada95/samples/sample-menu_demo.ads @@ -0,0 +1,45 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Menu_Demo -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample.Menu_Demo is + + procedure Demo; + +end Sample.Menu_Demo; diff --git a/ncurses/Ada95/samples/sample-my_field_type.adb b/ncurses/Ada95/samples/sample-my_field_type.adb new file mode 100644 index 0000000..e0d6f67 --- /dev/null +++ b/ncurses/Ada95/samples/sample-my_field_type.adb @@ -0,0 +1,68 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.My_Field_Type -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.16 $ +-- $Date: 2008/07/26 18:47:58 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +-- This is a very simple user defined field type. It accepts only a +-- defined character as input into the field. +-- +package body Sample.My_Field_Type is + + -- That's simple. There are minimal field validity checks. + function Field_Check (Fld : Field; + Typ : My_Data) return Boolean + is + begin + if Fld = Null_Field or Typ.Ch = Character'Val (0) then + return False; + end if; + return True; + end Field_Check; + + -- Check exactly against the specified character. + function Character_Check (Ch : Character; + Typ : My_Data) return Boolean + is + C : constant Character := Typ.Ch; + begin + return Ch = C; + end Character_Check; + +end Sample.My_Field_Type; diff --git a/ncurses/Ada95/samples/sample-my_field_type.ads b/ncurses/Ada95/samples/sample-my_field_type.ads new file mode 100644 index 0000000..b8f3653 --- /dev/null +++ b/ncurses/Ada95/samples/sample-my_field_type.ads @@ -0,0 +1,61 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.My_Field_Type -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.12 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms; +with Terminal_Interface.Curses.Forms.Field_Types.User; +use Terminal_Interface.Curses.Forms.Field_Types.User; + +-- This is a very simple user defined field type. It accepts only a +-- defined character as input into the field. +-- +package Sample.My_Field_Type is + + type My_Data is new User_Defined_Field_Type with + record + Ch : Character; + end record; + + function Field_Check (Fld : Field; + Typ : My_Data) return Boolean; + + function Character_Check (Ch : Character; + Typ : My_Data) return Boolean; + +end Sample.My_Field_Type; diff --git a/ncurses/Ada95/samples/sample-text_io_demo.adb b/ncurses/Ada95/samples/sample-text_io_demo.adb new file mode 100644 index 0000000..0b385c4 --- /dev/null +++ b/ncurses/Ada95/samples/sample-text_io_demo.adb @@ -0,0 +1,181 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Text_IO_Demo -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.16 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Numerics.Generic_Elementary_Functions; +with Ada.Numerics.Complex_Types; +use Ada.Numerics.Complex_Types; + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Text_IO; +use Terminal_Interface.Curses.Text_IO; +with Terminal_Interface.Curses.Text_IO.Integer_IO; +with Terminal_Interface.Curses.Text_IO.Float_IO; +with Terminal_Interface.Curses.Text_IO.Enumeration_IO; +with Terminal_Interface.Curses.Text_IO.Complex_IO; +with Terminal_Interface.Curses.Text_IO.Fixed_IO; +with Terminal_Interface.Curses.Text_IO.Decimal_IO; +with Terminal_Interface.Curses.Text_IO.Modular_IO; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Explanation; use Sample.Explanation; + +package body Sample.Text_IO_Demo is + + type Weekday is (Sunday, + Monday, + Tuesday, + Wednesday, + Thursday, + Friday, + Saturday); + + type Fix is delta 0.1 range 0.0 .. 4.0; + type Dec is delta 0.01 digits 5 range 0.0 .. 4.0; + type Md is mod 5; + + package Math is new + Ada.Numerics.Generic_Elementary_Functions (Float); + + package Int_IO is new + Terminal_Interface.Curses.Text_IO.Integer_IO (Integer); + use Int_IO; + + package Real_IO is new + Terminal_Interface.Curses.Text_IO.Float_IO (Float); + use Real_IO; + + package Enum_IO is new + Terminal_Interface.Curses.Text_IO.Enumeration_IO (Weekday); + use Enum_IO; + + package C_IO is new + Terminal_Interface.Curses.Text_IO.Complex_IO (Ada.Numerics.Complex_Types); + use C_IO; + + package F_IO is new + Terminal_Interface.Curses.Text_IO.Fixed_IO (Fix); + use F_IO; + + package D_IO is new + Terminal_Interface.Curses.Text_IO.Decimal_IO (Dec); + use D_IO; + + package M_IO is new + Terminal_Interface.Curses.Text_IO.Modular_IO (Md); + use M_IO; + + procedure Demo + is + W : Window; + P : Panel := Create (Standard_Window); + K : Real_Key_Code; + Im : constant Complex := (0.0, 1.0); + Fx : constant Dec := 3.14; + Dc : constant Dec := 2.72; + L : Md; + + begin + Push_Environment ("TEXTIO"); + Default_Labels; + Notepad ("TEXTIO-PAD00"); + + Set_Echo_Mode (False); + Set_Meta_Mode; + Set_KeyPad_Mode; + W := Sub_Window (Standard_Window, Lines - 2, Columns - 2, 1, 1); + Box; + Refresh_Without_Update; + Set_Meta_Mode (W); + Set_KeyPad_Mode (W); + Immediate_Update_Mode (W, True); + + Set_Window (W); + + for I in 1 .. 10 loop + Put ("Square root of "); + Put (Item => I, Width => 5); + Put (" is "); + Put (Item => Math.Sqrt (Float (I)), Exp => 0, Aft => 7); + New_Line; + end loop; + + for W in Weekday loop + Put (Item => W); Put (' '); + end loop; + New_Line; + + L := Md'First; + for I in 1 .. 2 loop + for J in Md'Range loop + Put (L); Put (' '); + L := L + 1; + end loop; + end loop; + New_Line; + + Put (Im); New_Line; + Put (Fx); New_Line; + Put (Dc); New_Line; + + loop + K := Get_Key; + if K in Special_Key_Code'Range then + case K is + when QUIT_CODE => exit; + when HELP_CODE => Explain_Context; + when EXPLAIN_CODE => Explain ("TEXTIOKEYS"); + when others => null; + end case; + end if; + end loop; + + Set_Window (Null_Window); + Erase; Refresh_Without_Update; + Delete (P); + Delete (W); + + Pop_Environment; + end Demo; + +end Sample.Text_IO_Demo; diff --git a/ncurses/Ada95/samples/sample-text_io_demo.ads b/ncurses/Ada95/samples/sample-text_io_demo.ads new file mode 100644 index 0000000..d3f5a18 --- /dev/null +++ b/ncurses/Ada95/samples/sample-text_io_demo.ads @@ -0,0 +1,45 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Text_IO_Demo -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample.Text_IO_Demo is + + procedure Demo; + +end Sample.Text_IO_Demo; diff --git a/ncurses/Ada95/samples/sample.adb b/ncurses/Ada95/samples/sample.adb new file mode 100644 index 0000000..648036f --- /dev/null +++ b/ncurses/Ada95/samples/sample.adb @@ -0,0 +1,220 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.17 $ +-- $Date: 2008/09/27 14:42:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Text_IO; + +with Ada.Exceptions; use Ada.Exceptions; + +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; +with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus; +with Terminal_Interface.Curses.Menus.Menu_User_Data; +with Terminal_Interface.Curses.Menus.Item_User_Data; + +with Sample.Manifest; use Sample.Manifest; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Header_Handler; use Sample.Header_Handler; +with Sample.Explanation; use Sample.Explanation; + +with Sample.Menu_Demo.Handler; +with Sample.Curses_Demo; +with Sample.Form_Demo; +with Sample.Menu_Demo; +with Sample.Text_IO_Demo; + +with GNAT.OS_Lib; + +package body Sample is + + type User_Data is + record + Data : Integer; + end record; + type User_Access is access User_Data; + + package Ud is new + Terminal_Interface.Curses.Menus.Menu_User_Data + (User_Data, User_Access); + + package Id is new + Terminal_Interface.Curses.Menus.Item_User_Data + (User_Data, User_Access); + + procedure Whow is + procedure Main_Menu; + procedure Main_Menu + is + function My_Driver (M : Menu; + K : Key_Code; + Pan : Panel) return Boolean; + + package Mh is new Sample.Menu_Demo.Handler (My_Driver); + + I : Item_Array_Access := new Item_Array' + (New_Item ("Curses Core Demo"), + New_Item ("Menu Demo"), + New_Item ("Form Demo"), + New_Item ("Text IO Demo"), + Null_Item); + + M : Menu := New_Menu (I); + + D1, D2 : User_Access; + I1, I2 : User_Access; + + function My_Driver (M : Menu; + K : Key_Code; + Pan : Panel) return Boolean + is + Idx : constant Positive := Get_Index (Current (M)); + begin + if K in User_Key_Code'Range then + if K = QUIT then + return True; + elsif K = SELECT_ITEM then + if Idx <= 4 then + Hide (Pan); + Update_Panels; + end if; + case Idx is + when 1 => Sample.Curses_Demo.Demo; + when 2 => Sample.Menu_Demo.Demo; + when 3 => Sample.Form_Demo.Demo; + when 4 => Sample.Text_IO_Demo.Demo; + when others => null; + end case; + if Idx <= 4 then + Top (Pan); + Show (Pan); + Update_Panels; + Update_Screen; + end if; + end if; + end if; + return False; + end My_Driver; + + begin + + if (1 + Item_Count (M)) /= I'Length then + raise Constraint_Error; + end if; + + D1 := new User_Data'(Data => 4711); + Ud.Set_User_Data (M, D1); + + I1 := new User_Data'(Data => 1174); + Id.Set_User_Data (I (1), I1); + + Set_Spacing (Men => M, Row => 2); + + Default_Labels; + Notepad ("MAINPAD"); + + Mh.Drive_Me (M, " Demo "); + + Ud.Get_User_Data (M, D2); + pragma Assert (D1 = D2); + pragma Assert (D1.Data = D2.Data); + + Id.Get_User_Data (I (1), I2); + pragma Assert (I1 = I2); + pragma Assert (I1.Data = I2.Data); + + Delete (M); + Free (I, True); + end Main_Menu; + + begin + Initialize (PC_Style_With_Index); + Init_Header_Handler; + Init_Screen; + + if Has_Colors then + Start_Color; + + Init_Pair (Pair => Default_Colors, Fore => Black, Back => White); + Init_Pair (Pair => Menu_Back_Color, Fore => Black, Back => Cyan); + Init_Pair (Pair => Menu_Fore_Color, Fore => Red, Back => Cyan); + Init_Pair (Pair => Menu_Grey_Color, Fore => White, Back => Cyan); + Init_Pair (Pair => Notepad_Color, Fore => Black, Back => Yellow); + Init_Pair (Pair => Help_Color, Fore => Blue, Back => Cyan); + Init_Pair (Pair => Form_Back_Color, Fore => Black, Back => Cyan); + Init_Pair (Pair => Form_Fore_Color, Fore => Red, Back => Cyan); + Init_Pair (Pair => Header_Color, Fore => Black, Back => Green); + + Set_Background (Ch => (Color => Default_Colors, + Attr => Normal_Video, + Ch => ' ')); + Set_Character_Attributes (Attr => Normal_Video, + Color => Default_Colors); + Erase; + + Set_Soft_Label_Key_Attributes (Color => Header_Color); + -- This propagates the attributes to the label window + Refresh_Soft_Label_Keys; + end if; + + Init_Keyboard_Handler; + + Set_Echo_Mode (False); + Set_Raw_Mode; + Set_Meta_Mode; + Set_KeyPad_Mode; + + -- Initialize the Function Key Environment + -- We have some fixed key throughout this sample + Main_Menu; + End_Windows; + Curses_Free_All; + + exception + when Event : others => + Terminal_Interface.Curses.End_Windows; + Text_IO.Put ("Exception: "); + Text_IO.Put (Exception_Name (Event)); + Text_IO.New_Line; + GNAT.OS_Lib.OS_Exit (1); + + end Whow; + +end Sample; diff --git a/ncurses/Ada95/samples/sample.ads b/ncurses/Ada95/samples/sample.ads new file mode 100644 index 0000000..9d0647d --- /dev/null +++ b/ncurses/Ada95/samples/sample.ads @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Sample is + procedure Whow; +end Sample; diff --git a/ncurses/Ada95/samples/status.adb b/ncurses/Ada95/samples/status.adb new file mode 100644 index 0000000..e658131 --- /dev/null +++ b/ncurses/Ada95/samples/status.adb @@ -0,0 +1,57 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Status -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Laurent Pautet +-- Modified by: Juergen Pfeifer, 1997 +-- Version Control +-- $Revision: 1.7 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- This package has been contributed by Laurent Pautet -- +-- -- +package body Status is + + protected body Process is + procedure Stop is + begin + Done := True; + end Stop; + function Continue return Boolean is + begin + return not Done; + end Continue; + end Process; + +end Status; diff --git a/ncurses/Ada95/samples/status.ads b/ncurses/Ada95/samples/status.ads new file mode 100644 index 0000000..e9e3ee8 --- /dev/null +++ b/ncurses/Ada95/samples/status.ads @@ -0,0 +1,60 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Status -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Laurent Pautet +-- Modified by: Juergen Pfeifer, 1997 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- This package has been contributed by Laurent Pautet -- +-- -- +with Ada.Interrupts.Names; + +package Status is + + pragma Warnings (Off); -- the next pragma exists since 3.11p + pragma Unreserve_All_Interrupts; + pragma Warnings (On); + + protected Process is + procedure Stop; + function Continue return Boolean; + pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT); + private + Done : Boolean := False; + end Process; + +end Status; diff --git a/ncurses/Ada95/samples/tour.adb b/ncurses/Ada95/samples/tour.adb new file mode 100644 index 0000000..1cc91c1 --- /dev/null +++ b/ncurses/Ada95/samples/tour.adb @@ -0,0 +1,46 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- tour -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Sample; use Sample; + +procedure Tour is +begin + Whow; +end Tour; diff --git a/ncurses/Ada95/samples/tour.ads b/ncurses/Ada95/samples/tour.ads new file mode 100644 index 0000000..8888169 --- /dev/null +++ b/ncurses/Ada95/samples/tour.ads @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Tour -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control +-- $Revision: 1.9 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +procedure Tour; diff --git a/ncurses/Ada95/src/Makefile.in b/ncurses/Ada95/src/Makefile.in new file mode 100644 index 0000000..1c072bf --- /dev/null +++ b/ncurses/Ada95/src/Makefile.in @@ -0,0 +1,388 @@ +############################################################################## +# Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Juergen Pfeifer, 1996 +# +# $Id: Makefile.in,v 1.31 2007/09/15 18:22:24 tom Exp $ +# +.SUFFIXES: + +SHELL = /bin/sh +THIS = Makefile + +MODEL = ../../@DFT_OBJ_SUBDIR@ +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +ADA_INCLUDE = @ADA_INCLUDE@ + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = @AR@ +AR_OPTS = @AR_OPTS@ +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +CFLAGS = @CFLAGS@ + +CPPFLAGS = @ACPPFLAGS@ \ + -DHAVE_CONFIG_H -I$(srcdir) + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_NORMAL = $(CCFLAGS) +CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +LINK = $(CC) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +RANLIB = @RANLIB@ +################################################################################ +ADA = @cf_ada_compiler@ +ADAPREP = gnatprep +ADAFLAGS = @ADAFLAGS@ -I. -I$(srcdir) + +ADAMAKE = @cf_ada_make@ +ADAMAKEFLAGS = + +CARGS = -cargs $(ADAFLAGS) +LARGS = + +ALIB = @cf_ada_package@ +ABASE = $(ALIB)-curses + +LIBALIS=$(ALIB).ali \ + $(ABASE)-aux.ali \ + $(ABASE).ali \ + $(ABASE)-terminfo.ali \ + $(ABASE)-termcap.ali \ + $(ABASE)-putwin.ali \ + $(ABASE)-trace.ali \ + $(ABASE)-mouse.ali \ + $(ABASE)-panels.ali \ + $(ABASE)-menus.ali \ + $(ABASE)-forms.ali \ + $(ABASE)-forms-field_types.ali \ + $(ABASE)-forms-field_types-alpha.ali \ + $(ABASE)-forms-field_types-alphanumeric.ali \ + $(ABASE)-forms-field_types-intfield.ali \ + $(ABASE)-forms-field_types-numeric.ali \ + $(ABASE)-forms-field_types-regexp.ali \ + $(ABASE)-forms-field_types-enumeration.ali \ + $(ABASE)-forms-field_types-ipv4_address.ali \ + $(ABASE)-forms-field_types-user.ali \ + $(ABASE)-forms-field_types-user-choice.ali \ + $(ABASE)-text_io.ali \ + $(ABASE)-text_io-aux.ali + +# Ada Library files for generic packages. Since gnat 3.10 they are +# also compiled +GENALIS=$(ABASE)-menus-menu_user_data.ali \ + $(ABASE)-menus-item_user_data.ali \ + $(ABASE)-forms-form_user_data.ali \ + $(ABASE)-forms-field_user_data.ali \ + $(ABASE)-forms-field_types-enumeration-ada.ali \ + $(ABASE)-panels-user_data.ali \ + $(ABASE)-text_io-integer_io.ali \ + $(ABASE)-text_io-float_io.ali \ + $(ABASE)-text_io-fixed_io.ali \ + $(ABASE)-text_io-decimal_io.ali \ + $(ABASE)-text_io-enumeration_io.ali \ + $(ABASE)-text_io-modular_io.ali \ + $(ABASE)-text_io-complex_io.ali + +LIBOBJS=$(ALIB).o \ + $(ABASE)-aux.o \ + $(ABASE).o \ + $(ABASE)-terminfo.o \ + $(ABASE)-termcap.o \ + $(ABASE)-putwin.o \ + $(ABASE)-trace.o \ + $(ABASE)-mouse.o \ + $(ABASE)-panels.o \ + $(ABASE)-menus.o \ + $(ABASE)-forms.o \ + $(ABASE)-forms-field_types.o \ + $(ABASE)-forms-field_types-alpha.o \ + $(ABASE)-forms-field_types-alphanumeric.o \ + $(ABASE)-forms-field_types-intfield.o \ + $(ABASE)-forms-field_types-numeric.o \ + $(ABASE)-forms-field_types-regexp.o \ + $(ABASE)-forms-field_types-enumeration.o \ + $(ABASE)-forms-field_types-ipv4_address.o \ + $(ABASE)-forms-field_types-user.o \ + $(ABASE)-forms-field_types-user-choice.o \ + $(ABASE)-text_io.o \ + $(ABASE)-text_io-aux.o + +# Ada object files for generic packages. Since gnat 3.10 they are +# also compiled +GENOBJS=$(ABASE)-menus-menu_user_data.o \ + $(ABASE)-menus-item_user_data.o \ + $(ABASE)-forms-form_user_data.o \ + $(ABASE)-forms-field_user_data.o \ + $(ABASE)-forms-field_types-enumeration-ada.o \ + $(ABASE)-panels-user_data.o \ + $(ABASE)-text_io-integer_io.o \ + $(ABASE)-text_io-float_io.o \ + $(ABASE)-text_io-fixed_io.o \ + $(ABASE)-text_io-decimal_io.o \ + $(ABASE)-text_io-enumeration_io.o \ + $(ABASE)-text_io-modular_io.o \ + $(ABASE)-text_io-complex_io.o + + +all :: libAdaCurses.a + @echo done + +libAdaCurses.a :: dotouch $(LIBOBJS) @cf_generic_objects@ + $(AR) $(AR_OPTS) $@ $(LIBOBJS) @cf_generic_objects@ + +dotouch : + @sh -c 'for f in $(LIBALIS) $(GENALIS); do test -f $$f || touch $$f; done' + +sources : + @echo made $@ + +libs \ +install \ +install.libs \ +uninstall \ +uninstall.libs :: + @echo made $@ + +generics: $(GENALIS) + @echo made $@ + +mostlyclean :: + rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a + +clean :: mostlyclean + rm -f $(LIBALIS) $(GENALIS) $(LIBOBJS) $(GENOBJS) $(ABASE)-trace.adb + +distclean :: clean + rm -f Makefile + +realclean :: distclean + +BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb + +$(ALIB).o: $(srcdir)/$(ALIB).ads + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ALIB).ads + + +$(ABASE)-aux.o: $(srcdir)/$(ABASE)-aux.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-aux.adb + + +$(ABASE).o: $(ABASE).adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(ABASE).adb + + +$(ABASE)-terminfo.o: \ + $(srcdir)/$(ABASE)-terminfo.ads \ + $(srcdir)/$(ABASE)-terminfo.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-terminfo.adb + + +$(ABASE)-termcap.o: \ + $(srcdir)/$(ABASE)-termcap.ads \ + $(srcdir)/$(ABASE)-termcap.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-termcap.adb + + +$(ABASE)-putwin.o: \ + $(srcdir)/$(ABASE)-putwin.ads \ + $(srcdir)/$(ABASE)-putwin.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-putwin.adb + + +$(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p + rm -f $@ + $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ -DPRAGMA_UNREF=@PRAGMA_UNREF@ $(srcdir)/$(ABASE)-trace.adb_p $@ + +$(ABASE)-trace.o: \ + $(ABASE)-trace.ads \ + $(ABASE)-trace.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(ABASE)-trace.adb + + +$(ABASE)-mouse.o: \ + $(ABASE)-mouse.ads \ + $(srcdir)/$(ABASE)-mouse.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-mouse.adb + + +$(ABASE)-panels.o: \ + $(ABASE)-panels.ads \ + $(srcdir)/$(ABASE)-panels.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-panels.adb + + +$(ABASE)-menus.o: \ + $(ABASE)-menus.ads \ + $(srcdir)/$(ABASE)-menus.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus.adb + + +$(ABASE)-forms.o: \ + $(ABASE)-forms.ads \ + $(srcdir)/$(ABASE)-forms.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms.adb + +$(ABASE)-forms-field_types.o: \ + $(ABASE)-forms-field_types.ads \ + $(srcdir)/$(ABASE)-forms-field_types.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types.adb + +$(ABASE)-forms-field_types-alpha.o: \ + $(srcdir)/$(ABASE)-forms-field_types-alpha.ads \ + $(srcdir)/$(ABASE)-forms-field_types-alpha.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-alpha.adb + +$(ABASE)-forms-field_types-alphanumeric.o: \ + $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.ads \ + $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.adb + +$(ABASE)-forms-field_types-intfield.o: \ + $(srcdir)/$(ABASE)-forms-field_types-intfield.ads \ + $(srcdir)/$(ABASE)-forms-field_types-intfield.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-intfield.adb + +$(ABASE)-forms-field_types-numeric.o: \ + $(srcdir)/$(ABASE)-forms-field_types-numeric.ads \ + $(srcdir)/$(ABASE)-forms-field_types-numeric.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-numeric.adb + +$(ABASE)-forms-field_types-regexp.o: \ + $(srcdir)/$(ABASE)-forms-field_types-regexp.ads \ + $(srcdir)/$(ABASE)-forms-field_types-regexp.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-regexp.adb + +$(ABASE)-forms-field_types-enumeration.o: \ + $(srcdir)/$(ABASE)-forms-field_types-enumeration.ads \ + $(srcdir)/$(ABASE)-forms-field_types-enumeration.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-enumeration.adb + +$(ABASE)-forms-field_types-ipv4_address.o: \ + $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.ads \ + $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.adb + +$(ABASE)-forms-field_types-user.o: \ + $(srcdir)/$(ABASE)-forms-field_types-user.ads \ + $(srcdir)/$(ABASE)-forms-field_types-user.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-user.adb + +$(ABASE)-forms-field_types-user-choice.o: \ + $(srcdir)/$(ABASE)-forms-field_types-user-choice.ads \ + $(srcdir)/$(ABASE)-forms-field_types-user-choice.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-user-choice.adb + +$(ABASE)-text_io.o: \ + $(srcdir)/$(ABASE)-text_io.ads \ + $(srcdir)/$(ABASE)-text_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io.adb + +$(ABASE)-text_io-aux.o: \ + $(srcdir)/$(ABASE)-text_io-aux.ads \ + $(srcdir)/$(ABASE)-text_io-aux.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-aux.adb + +$(ABASE)-menus-menu_user_data.o: \ + $(ABASE)-menus-menu_user_data.ads \ + $(srcdir)/$(ABASE)-menus-menu_user_data.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus-menu_user_data.adb + +$(ABASE)-menus-item_user_data.o: \ + $(ABASE)-menus-item_user_data.ads \ + $(srcdir)/$(ABASE)-menus-item_user_data.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus-item_user_data.adb + +$(ABASE)-forms-form_user_data.o: \ + $(ABASE)-forms-form_user_data.ads \ + $(srcdir)/$(ABASE)-forms-form_user_data.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-form_user_data.adb + +$(ABASE)-forms-field_user_data.o: \ + $(ABASE)-forms-field_user_data.ads \ + $(srcdir)/$(ABASE)-forms-field_user_data.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_user_data.adb + +$(ABASE)-forms-field_types-enumeration-ada.o: \ + $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.ads \ + $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.adb + +$(ABASE)-panels-user_data.o: \ + $(ABASE)-panels-user_data.ads \ + $(srcdir)/$(ABASE)-panels-user_data.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-panels-user_data.adb + +$(ABASE)-text_io-integer_io.o: \ + $(srcdir)/$(ABASE)-text_io-integer_io.ads \ + $(srcdir)/$(ABASE)-text_io-integer_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-integer_io.adb + +$(ABASE)-text_io-float_io.o: \ + $(srcdir)/$(ABASE)-text_io-float_io.ads \ + $(srcdir)/$(ABASE)-text_io-float_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-float_io.adb + +$(ABASE)-text_io-fixed_io.o: \ + $(srcdir)/$(ABASE)-text_io-fixed_io.ads \ + $(srcdir)/$(ABASE)-text_io-fixed_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-fixed_io.adb + +$(ABASE)-text_io-decimal_io.o: \ + $(srcdir)/$(ABASE)-text_io-decimal_io.ads \ + $(srcdir)/$(ABASE)-text_io-decimal_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-decimal_io.adb + +$(ABASE)-text_io-enumeration_io.o: \ + $(srcdir)/$(ABASE)-text_io-enumeration_io.ads \ + $(srcdir)/$(ABASE)-text_io-enumeration_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-enumeration_io.adb + +$(ABASE)-text_io-modular_io.o: \ + $(srcdir)/$(ABASE)-text_io-modular_io.ads \ + $(srcdir)/$(ABASE)-text_io-modular_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-modular_io.adb + +$(ABASE)-text_io-complex_io.o: \ + $(srcdir)/$(ABASE)-text_io-complex_io.ads \ + $(srcdir)/$(ABASE)-text_io-complex_io.adb $(BASEDEPS) + $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-complex_io.adb diff --git a/ncurses/Ada95/src/terminal_interface-curses-aux.adb b/ncurses/Ada95/src/terminal_interface-curses-aux.adb new file mode 100644 index 0000000..812e8cc --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-aux.adb @@ -0,0 +1,116 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Aux -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package body Terminal_Interface.Curses.Aux is + -- + -- Some helpers + procedure Fill_String (Cp : in chars_ptr; + Str : out String) + is + -- Fill the string with the characters referenced by the + -- chars_ptr. + -- + Len : Natural; + begin + if Cp /= Null_Ptr then + Len := Natural (Strlen (Cp)); + if Str'Length < Len then + raise Constraint_Error; + end if; + declare + S : String (1 .. Len); + begin + S := Value (Cp); + Str (Str'First .. (Str'First + Len - 1)) := S (S'Range); + end; + else + Len := 0; + end if; + + if Len < Str'Length then + Str ((Str'First + Len) .. Str'Last) := (others => ' '); + end if; + + end Fill_String; + + function Fill_String (Cp : chars_ptr) return String + is + Len : Natural; + begin + if Cp /= Null_Ptr then + Len := Natural (Strlen (Cp)); + if Len = 0 then + return ""; + else + declare + S : String (1 .. Len); + begin + Fill_String (Cp, S); + return S; + end; + end if; + else + return ""; + end if; + end Fill_String; + + procedure Eti_Exception (Code : Eti_Error) + is + begin + case Code is + when E_Ok => null; + when E_System_Error => raise Eti_System_Error; + when E_Bad_Argument => raise Eti_Bad_Argument; + when E_Posted => raise Eti_Posted; + when E_Connected => raise Eti_Connected; + when E_Bad_State => raise Eti_Bad_State; + when E_No_Room => raise Eti_No_Room; + when E_Not_Posted => raise Eti_Not_Posted; + when E_Unknown_Command => raise Eti_Unknown_Command; + when E_No_Match => raise Eti_No_Match; + when E_Not_Selectable => raise Eti_Not_Selectable; + when E_Not_Connected => raise Eti_Not_Connected; + when E_Request_Denied => raise Eti_Request_Denied; + when E_Invalid_Field => raise Eti_Invalid_Field; + when E_Current => raise Eti_Current; + end case; + end Eti_Exception; + +end Terminal_Interface.Curses.Aux; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb new file mode 100644 index 0000000..f437ce6 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb @@ -0,0 +1,66 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Alpha -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.9 $ +-- $Date: 2008/07/26 18:50:25 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is + + procedure Set_Field_Type (Fld : in Field; + Typ : in Alpha_Field) + is + C_Alpha_Field_Type : C_Field_Type; + pragma Import (C, C_Alpha_Field_Type, "TYPE_ALPHA"); + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_Alpha_Field_Type; + Arg1 : C_Int) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + begin + Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.Alpha; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads new file mode 100644 index 0000000..6f0b79d --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads @@ -0,0 +1,53 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Alpha -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface.Curses.Forms.Field_Types.Alpha is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Alpha); + + type Alpha_Field is new Field_Type + with record + Minimum_Field_Width : Natural := 0; + end record; + + procedure Set_Field_Type (Fld : in Field; + Typ : in Alpha_Field); + pragma Inline (Set_Field_Type); + +end Terminal_Interface.Curses.Forms.Field_Types.Alpha; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb new file mode 100644 index 0000000..0c3ca29 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb @@ -0,0 +1,66 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.9 $ +-- $Date: 2008/07/26 18:50:15 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is + + procedure Set_Field_Type (Fld : in Field; + Typ : in AlphaNumeric_Field) + is + C_AlphaNumeric_Field_Type : C_Field_Type; + pragma Import (C, C_AlphaNumeric_Field_Type, "TYPE_ALNUM"); + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_AlphaNumeric_Field_Type; + Arg1 : C_Int) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + begin + Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads new file mode 100644 index 0000000..1f21950 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads @@ -0,0 +1,54 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is + pragma Preelaborate + (Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric); + + type AlphaNumeric_Field is new Field_Type + with record + Minimum_Field_Width : Natural := 0; + end record; + + procedure Set_Field_Type (Fld : in Field; + Typ : in AlphaNumeric_Field); + pragma Inline (Set_Field_Type); + +end Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb new file mode 100644 index 0000000..b3eaf44 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb @@ -0,0 +1,81 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Characters.Handling; use Ada.Characters.Handling; + +package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is + + function Create (Set : Type_Set := Mixed_Case; + Case_Sensitive : Boolean := False; + Must_Be_Unique : Boolean := False) + return Enumeration_Field + is + I : Enumeration_Info (T'Pos (T'Last) - T'Pos (T'First) + 1); + J : Positive := 1; + begin + I.Case_Sensitive := Case_Sensitive; + I.Match_Must_Be_Unique := Must_Be_Unique; + + for E in T'Range loop + I.Names (J) := new String'(T'Image (E)); + -- The Image attribute defaults to upper case, so we have to handle + -- only the other ones... + if Set /= Upper_Case then + I.Names (J).all := To_Lower (I.Names (J).all); + if Set = Mixed_Case then + I.Names (J)(I.Names (J).all'First) := + To_Upper (I.Names (J)(I.Names (J).all'First)); + end if; + end if; + J := J + 1; + end loop; + + return Create (I, True); + end Create; + + function Value (Fld : Field; + Buf : Buffer_Number := Buffer_Number'First) return T + is + begin + return T'Value (Get_Buffer (Fld, Buf)); + end Value; + +end Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads new file mode 100644 index 0000000..48fad09 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads @@ -0,0 +1,59 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type T is (<>); + +package Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is + pragma Preelaborate + (Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada); + + function Create (Set : Type_Set := Mixed_Case; + Case_Sensitive : Boolean := False; + Must_Be_Unique : Boolean := False) + return Enumeration_Field; + + function Value (Fld : Field; + Buf : Buffer_Number := Buffer_Number'First) return T; + -- Translate the content of the fields buffer - indicated by the + -- buffer number - into an enumeration value. If the buffer is empty + -- or the content is invalid, a Constraint_Error is raises. + +end Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb new file mode 100644 index 0000000..8be20f2 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb @@ -0,0 +1,119 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.7 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Deallocation; +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is + + function Create (Info : Enumeration_Info; + Auto_Release_Names : Boolean := False) + return Enumeration_Field + is + procedure Release_String is + new Ada.Unchecked_Deallocation (String, + String_Access); + E : Enumeration_Field; + L : constant size_t := 1 + size_t (Info.C); + S : String_Access; + begin + E.Case_Sensitive := Info.Case_Sensitive; + E.Match_Must_Be_Unique := Info.Match_Must_Be_Unique; + E.Arr := new chars_ptr_array (size_t (1) .. L); + for I in 1 .. Positive (L - 1) loop + if Info.Names (I) = null then + raise Form_Exception; + end if; + E.Arr (size_t (I)) := New_String (Info.Names (I).all); + if Auto_Release_Names then + S := Info.Names (I); + Release_String (S); + end if; + end loop; + E.Arr (L) := Null_Ptr; + return E; + end Create; + + procedure Release (Enum : in out Enumeration_Field) + is + I : size_t := 0; + P : chars_ptr; + begin + loop + P := Enum.Arr (I); + exit when P = Null_Ptr; + Free (P); + Enum.Arr (I) := Null_Ptr; + I := I + 1; + end loop; + Enum.Arr := null; + end Release; + + procedure Set_Field_Type (Fld : in Field; + Typ : in Enumeration_Field) + is + C_Enum_Type : C_Field_Type; + pragma Import (C, C_Enum_Type, "TYPE_ENUM"); + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_Enum_Type; + Arg1 : chars_ptr_array; + Arg2 : C_Int; + Arg3 : C_Int) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + begin + if Typ.Arr = null then + raise Form_Exception; + end if; + Res := Set_Fld_Type (Arg1 => Typ.Arr.all, + Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)), + Arg3 => C_Int (Boolean'Pos + (Typ.Match_Must_Be_Unique))); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ, C_Choice_Router); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.Enumeration; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads new file mode 100644 index 0000000..5a7e411 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads @@ -0,0 +1,98 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C.Strings; + +package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is + pragma Preelaborate + (Terminal_Interface.Curses.Forms.Field_Types.Enumeration); + + type String_Access is access String; + + -- Type_Set is used by the child package Ada + type Type_Set is (Lower_Case, Upper_Case, Mixed_Case); + + type Enum_Array is array (Positive range <>) + of String_Access; + + type Enumeration_Info (C : Positive) is + record + Names : Enum_Array (1 .. C); + Case_Sensitive : Boolean := False; + Match_Must_Be_Unique : Boolean := False; + end record; + + type Enumeration_Field is new Field_Type with private; + + function Create (Info : Enumeration_Info; + Auto_Release_Names : Boolean := False) + return Enumeration_Field; + -- Make an fieldtype from the info. Enumerations are special, because + -- they normally don't copy the enum values into a private store, so + -- we have to care for the lifetime of the info we provide. + -- The Auto_Release_Names flag may be used to automatically releases + -- the strings in the Names array of the Enumeration_Info. + + function Make_Enumeration_Type (Info : Enumeration_Info; + Auto_Release_Names : Boolean := False) + return Enumeration_Field renames Create; + + procedure Release (Enum : in out Enumeration_Field); + -- But we may want to release the field to release the memory allocated + -- by it internally. After that the Enumeration field is no longer usable. + + -- The next type defintions are all ncurses extensions. They are typically + -- not available in other curses implementations. + + procedure Set_Field_Type (Fld : in Field; + Typ : in Enumeration_Field); + pragma Inline (Set_Field_Type); + +private + type CPA_Access is access Interfaces.C.Strings.chars_ptr_array; + + type Enumeration_Field is new Field_Type with + record + Case_Sensitive : Boolean := False; + Match_Must_Be_Unique : Boolean := False; + Arr : CPA_Access := null; + end record; + +end Terminal_Interface.Curses.Forms.Field_Types.Enumeration; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb new file mode 100644 index 0000000..61d66c4 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.IntField -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.9 $ +-- $Date: 2008/07/26 18:50:06 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.IntField is + + procedure Set_Field_Type (Fld : in Field; + Typ : in Integer_Field) + is + C_Integer_Field_Type : C_Field_Type; + pragma Import (C, C_Integer_Field_Type, "TYPE_INTEGER"); + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_Integer_Field_Type; + Arg1 : C_Int; + Arg2 : C_Long_Int; + Arg3 : C_Long_Int) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + begin + Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision), + Arg2 => C_Long_Int (Typ.Lower_Limit), + Arg3 => C_Long_Int (Typ.Upper_Limit)); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.IntField; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads new file mode 100644 index 0000000..b285ca2 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.IntField -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface.Curses.Forms.Field_Types.IntField is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.IntField); + + type Integer_Field is new Field_Type with + record + Precision : Natural; + Lower_Limit : Integer; + Upper_Limit : Integer; + end record; + + procedure Set_Field_Type (Fld : in Field; + Typ : in Integer_Field); + pragma Inline (Set_Field_Type); + +end Terminal_Interface.Curses.Forms.Field_Types.IntField; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb new file mode 100644 index 0000000..3d7c5b5 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb @@ -0,0 +1,66 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.9 $ +-- $Date: 2008/07/26 18:49:47 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is + + procedure Set_Field_Type (Fld : in Field; + Typ : in Internet_V4_Address_Field) + is + C_IPV4_Field_Type : C_Field_Type; + pragma Import (C, C_IPV4_Field_Type, "TYPE_IPV4"); + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_IPV4_Field_Type) + return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + begin + Res := Set_Fld_Type; + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads new file mode 100644 index 0000000..6d0aef0 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads @@ -0,0 +1,51 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is + pragma Preelaborate + (Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address); + + type Internet_V4_Address_Field is new Field_Type with null record; + + procedure Set_Field_Type (Fld : in Field; + Typ : in Internet_V4_Address_Field); + pragma Inline (Set_Field_Type); + +end Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb new file mode 100644 index 0000000..79f8489 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb @@ -0,0 +1,73 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Numeric -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- $Date: 2008/07/26 18:49:57 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is + + procedure Set_Field_Type (Fld : in Field; + Typ : in Numeric_Field) + is + type Double is new Interfaces.C.double; + + C_Numeric_Field_Type : C_Field_Type; + pragma Import (C, C_Numeric_Field_Type, "TYPE_NUMERIC"); + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_Numeric_Field_Type; + Arg1 : C_Int; + Arg2 : Double; + Arg3 : Double) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + begin + Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision), + Arg2 => Double (Typ.Lower_Limit), + Arg3 => Double (Typ.Upper_Limit)); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.Numeric; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads new file mode 100644 index 0000000..f211bc8 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Numeric -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface.Curses.Forms.Field_Types.Numeric is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Numeric); + + type Numeric_Field is new Field_Type with + record + Precision : Natural; + Lower_Limit : Float; + Upper_Limit : Float; + end record; + + procedure Set_Field_Type (Fld : in Field; + Typ : in Numeric_Field); + pragma Inline (Set_Field_Type); + +end Terminal_Interface.Curses.Forms.Field_Types.Numeric; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb new file mode 100644 index 0000000..cbd9e2f --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb @@ -0,0 +1,71 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.RegExp -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.8 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; use Interfaces.C; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is + + procedure Set_Field_Type (Fld : in Field; + Typ : in Regular_Expression_Field) + is + type Char_Ptr is access all Interfaces.C.char; + + C_Regexp_Field_Type : C_Field_Type; + pragma Import (C, C_Regexp_Field_Type, "TYPE_REGEXP"); + + function Set_Ftyp (F : Field := Fld; + Cft : C_Field_Type := C_Regexp_Field_Type; + Arg1 : Char_Ptr) return C_Int; + pragma Import (C, Set_Ftyp, "set_field_type"); + + Txt : char_array (0 .. Typ.Regular_Expression.all'Length); + Len : size_t; + Res : Eti_Error; + begin + To_C (Typ.Regular_Expression.all, Txt, Len); + Res := Set_Ftyp (Arg1 => Txt (Txt'First)'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.RegExp; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads new file mode 100644 index 0000000..1e451ab --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.RegExp -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface.Curses.Forms.Field_Types.RegExp is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.RegExp); + + type String_Access is access String; + + type Regular_Expression_Field is new Field_Type with + record + Regular_Expression : String_Access; + end record; + + procedure Set_Field_Type (Fld : in Field; + Typ : in Regular_Expression_Field); + pragma Inline (Set_Field_Type); + +end Terminal_Interface.Curses.Forms.Field_Types.RegExp; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb new file mode 100644 index 0000000..f26a42c --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb @@ -0,0 +1,110 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.User.Choice -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.15 $ +-- $Date: 2008/07/26 18:48:58 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Conversion; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is + + pragma Warnings (Off); + function To_Argument_Access is new Ada.Unchecked_Conversion + (System.Address, Argument_Access); + pragma Warnings (On); + + function Generic_Next (Fld : Field; + Usr : System.Address) return C_Int + is + Result : Boolean; + Udf : constant User_Defined_Field_Type_With_Choice_Access := + User_Defined_Field_Type_With_Choice_Access + (To_Argument_Access (Usr).Typ); + begin + Result := Next (Fld, Udf.all); + return C_Int (Boolean'Pos (Result)); + end Generic_Next; + + function Generic_Prev (Fld : Field; + Usr : System.Address) return C_Int + is + Result : Boolean; + Udf : constant User_Defined_Field_Type_With_Choice_Access := + User_Defined_Field_Type_With_Choice_Access + (To_Argument_Access (Usr).Typ); + begin + Result := Previous (Fld, Udf.all); + return C_Int (Boolean'Pos (Result)); + end Generic_Prev; + + -- ----------------------------------------------------------------------- + -- + function C_Generic_Choice return C_Field_Type + is + Res : Eti_Error; + T : C_Field_Type; + begin + if M_Generic_Choice = Null_Field_Type then + T := New_Fieldtype (Generic_Field_Check'Access, + Generic_Char_Check'Access); + if T = Null_Field_Type then + raise Form_Exception; + else + Res := Set_Fieldtype_Arg (T, + Make_Arg'Access, + Copy_Arg'Access, + Free_Arg'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + + Res := Set_Fieldtype_Choice (T, + Generic_Next'Access, + Generic_Prev'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + M_Generic_Choice := T; + end if; + pragma Assert (M_Generic_Choice /= Null_Field_Type); + return M_Generic_Choice; + end C_Generic_Choice; + +end Terminal_Interface.Curses.Forms.Field_Types.User.Choice; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads new file mode 100644 index 0000000..1e69f43 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads @@ -0,0 +1,94 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.User.Choice -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.12 $ +-- $Date: 2008/07/26 18:49:20 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; + +package Terminal_Interface.Curses.Forms.Field_Types.User.Choice is + pragma Preelaborate + (Terminal_Interface.Curses.Forms.Field_Types.User.Choice); + + subtype C_Int is Interfaces.C.int; + + type User_Defined_Field_Type_With_Choice is abstract new + User_Defined_Field_Type with null record; + -- This is the root of the mechanism we use to create field types in + -- Ada95 that allow the prev/next mechanism. You should your own type + -- derive from this one and implement the Field_Check, Character_Check + -- Next and Previous functions for your own type. + + type User_Defined_Field_Type_With_Choice_Access is access all + User_Defined_Field_Type_With_Choice'Class; + + function Next + (Fld : Field; + Typ : User_Defined_Field_Type_With_Choice) return Boolean + is abstract; + -- If True is returned, the function successfully generated a next + -- value into the fields buffer. + + function Previous + (Fld : Field; + Typ : User_Defined_Field_Type_With_Choice) return Boolean + is abstract; + -- If True is returned, the function successfully generated a previous + -- value into the fields buffer. + + -- +---------------------------------------------------------------------- + -- | Private Part. + -- | +private + function C_Generic_Choice return C_Field_Type; + + function Generic_Next (Fld : Field; + Usr : System.Address) return C_Int; + pragma Convention (C, Generic_Next); + -- This is the generic next Choice_Function for the low-level fieldtype + -- representing all the User_Defined_Field_Type derivates. It routes + -- the call to the Next implementation for the type. + + function Generic_Prev (Fld : Field; + Usr : System.Address) return C_Int; + pragma Convention (C, Generic_Prev); + -- This is the generic prev Choice_Function for the low-level fieldtype + -- representing all the User_Defined_Field_Type derivates. It routes + -- the call to the Previous implementation for the type. + +end Terminal_Interface.Curses.Forms.Field_Types.User.Choice; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user.adb new file mode 100644 index 0000000..0b4c136 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user.adb @@ -0,0 +1,133 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.User -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.15 $ +-- $Date: 2008/07/26 18:49:28 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Conversion; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.User is + + procedure Set_Field_Type (Fld : in Field; + Typ : in User_Defined_Field_Type) + is + function Allocate_Arg (T : User_Defined_Field_Type'Class) + return Argument_Access; + + function Set_Fld_Type (F : Field := Fld; + Cft : C_Field_Type := C_Generic_Type; + Arg1 : Argument_Access) + return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + Res : Eti_Error; + + function Allocate_Arg (T : User_Defined_Field_Type'Class) + return Argument_Access + is + Ptr : constant Field_Type_Access + := new User_Defined_Field_Type'Class'(T); + begin + return new Argument'(Usr => System.Null_Address, + Typ => Ptr, + Cft => Null_Field_Type); + end Allocate_Arg; + + begin + Res := Set_Fld_Type (Arg1 => Allocate_Arg (Typ)); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Field_Type; + + pragma Warnings (Off); + function To_Argument_Access is new Ada.Unchecked_Conversion + (System.Address, Argument_Access); + pragma Warnings (On); + + function Generic_Field_Check (Fld : Field; + Usr : System.Address) return C_Int + is + Result : Boolean; + Udf : constant User_Defined_Field_Type_Access := + User_Defined_Field_Type_Access (To_Argument_Access (Usr).Typ); + begin + Result := Field_Check (Fld, Udf.all); + return C_Int (Boolean'Pos (Result)); + end Generic_Field_Check; + + function Generic_Char_Check (Ch : C_Int; + Usr : System.Address) return C_Int + is + Result : Boolean; + Udf : constant User_Defined_Field_Type_Access := + User_Defined_Field_Type_Access (To_Argument_Access (Usr).Typ); + begin + Result := Character_Check (Character'Val (Ch), Udf.all); + return C_Int (Boolean'Pos (Result)); + end Generic_Char_Check; + + -- ----------------------------------------------------------------------- + -- + function C_Generic_Type return C_Field_Type + is + Res : Eti_Error; + T : C_Field_Type; + begin + if M_Generic_Type = Null_Field_Type then + T := New_Fieldtype (Generic_Field_Check'Access, + Generic_Char_Check'Access); + if T = Null_Field_Type then + raise Form_Exception; + else + Res := Set_Fieldtype_Arg (T, + Make_Arg'Access, + Copy_Arg'Access, + Free_Arg'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + M_Generic_Type := T; + end if; + pragma Assert (M_Generic_Type /= Null_Field_Type); + return M_Generic_Type; + end C_Generic_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.User; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user.ads b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user.ads new file mode 100644 index 0000000..acec636 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types-user.ads @@ -0,0 +1,95 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.User -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.12 $ +-- $Date: 2008/07/26 18:49:38 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; + +package Terminal_Interface.Curses.Forms.Field_Types.User is + pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.User); + subtype C_Int is Interfaces.C.int; + + type User_Defined_Field_Type is abstract new Field_Type with null record; + -- This is the root of the mechanism we use to create field types in + -- Ada95. You should your own type derive from this one and implement + -- the Field_Check and Character_Check functions for your own type. + + type User_Defined_Field_Type_Access is access all + User_Defined_Field_Type'Class; + + function Field_Check + (Fld : Field; + Typ : User_Defined_Field_Type) return Boolean + is abstract; + -- If True is returned, the field is considered valid, otherwise it is + -- invalid. + + function Character_Check + (Ch : Character; + Typ : User_Defined_Field_Type) return Boolean + is abstract; + -- If True is returned, the character is considered as valid for the + -- field, otherwise as invalid. + + procedure Set_Field_Type (Fld : in Field; + Typ : in User_Defined_Field_Type); + -- This should work for all types derived from User_Defined_Field_Type. + -- No need to reimplement it for your derived type. + + -- +---------------------------------------------------------------------- + -- | Private Part. + -- | Used by the Choice child package. +private + function C_Generic_Type return C_Field_Type; + + function Generic_Field_Check (Fld : Field; + Usr : System.Address) return C_Int; + pragma Convention (C, Generic_Field_Check); + -- This is the generic Field_Check_Function for the low-level fieldtype + -- representing all the User_Defined_Field_Type derivates. It routes + -- the call to the Field_Check implementation for the type. + + function Generic_Char_Check (Ch : C_Int; + Usr : System.Address) return C_Int; + pragma Convention (C, Generic_Char_Check); + -- This is the generic Char_Check_Function for the low-level fieldtype + -- representing all the User_Defined_Field_Type derivates. It routes + -- the call to the Character_Check implementation for the type. + +end Terminal_Interface.Curses.Forms.Field_Types.User; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_types.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types.adb new file mode 100644 index 0000000..c681c80 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_types.adb @@ -0,0 +1,296 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.20 $ +-- $Date: 2008/07/26 18:50:33 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; +with Ada.Unchecked_Deallocation; +with Ada.Unchecked_Conversion; +-- | +-- |===================================================================== +-- | man page form_fieldtype.3x +-- |===================================================================== +-- | +package body Terminal_Interface.Curses.Forms.Field_Types is + + use type System.Address; + + pragma Warnings (Off); + function To_Argument_Access is new Ada.Unchecked_Conversion + (System.Address, Argument_Access); + pragma Warnings (On); + + function Get_Fieldtype (F : Field) return C_Field_Type; + pragma Import (C, Get_Fieldtype, "field_type"); + + function Get_Arg (F : Field) return System.Address; + pragma Import (C, Get_Arg, "field_arg"); + -- | + -- |===================================================================== + -- | man page form_field_validation.3x + -- |===================================================================== + -- | + -- | + -- | + function Get_Type (Fld : in Field) return Field_Type_Access + is + Low_Level : constant C_Field_Type := Get_Fieldtype (Fld); + Arg : Argument_Access; + begin + if Low_Level = Null_Field_Type then + return null; + else + if Low_Level = M_Builtin_Router or else + Low_Level = M_Generic_Type or else + Low_Level = M_Choice_Router or else + Low_Level = M_Generic_Choice then + Arg := To_Argument_Access (Get_Arg (Fld)); + if Arg = null then + raise Form_Exception; + else + return Arg.Typ; + end if; + else + raise Form_Exception; + end if; + end if; + end Get_Type; + + function Make_Arg (Args : System.Address) return System.Address + is + -- Actually args is a double indirected pointer to the arguments + -- of a C variable argument list. In theory it is now quite + -- complicated to write portable routine that reads the arguments, + -- because one has to know the growth direction of the stack and + -- the sizes of the individual arguments. + -- Fortunately we are only interested in the first argument (#0), + -- we know its size and for the first arg we don't care about + -- into which stack direction we have to proceed. We simply + -- resolve the double indirection and thats it. + type V is access all System.Address; + function To_Access is new Ada.Unchecked_Conversion (System.Address, + V); + begin + return To_Access (To_Access (Args).all).all; + end Make_Arg; + + function Copy_Arg (Usr : System.Address) return System.Address + is + begin + return Usr; + end Copy_Arg; + + procedure Free_Arg (Usr : in System.Address) + is + procedure Free_Type is new Ada.Unchecked_Deallocation + (Field_Type'Class, Field_Type_Access); + procedure Freeargs is new Ada.Unchecked_Deallocation + (Argument, Argument_Access); + + To_Be_Free : Argument_Access := To_Argument_Access (Usr); + Low_Level : C_Field_Type; + begin + if To_Be_Free /= null then + if To_Be_Free.Usr /= System.Null_Address then + Low_Level := To_Be_Free.Cft; + if Low_Level.Freearg /= null then + Low_Level.Freearg (To_Be_Free.Usr); + end if; + end if; + if To_Be_Free.Typ /= null then + Free_Type (To_Be_Free.Typ); + end if; + Freeargs (To_Be_Free); + end if; + end Free_Arg; + + procedure Wrap_Builtin (Fld : Field; + Typ : Field_Type'Class; + Cft : C_Field_Type := C_Builtin_Router) + is + Usr_Arg : constant System.Address := Get_Arg (Fld); + Low_Level : constant C_Field_Type := Get_Fieldtype (Fld); + Arg : Argument_Access; + Res : Eti_Error; + function Set_Fld_Type (F : Field := Fld; + Cf : C_Field_Type := Cft; + Arg1 : Argument_Access) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type"); + + begin + pragma Assert (Low_Level /= Null_Field_Type); + if Cft /= C_Builtin_Router and then Cft /= C_Choice_Router then + raise Form_Exception; + else + Arg := new Argument'(Usr => System.Null_Address, + Typ => new Field_Type'Class'(Typ), + Cft => Get_Fieldtype (Fld)); + if Usr_Arg /= System.Null_Address then + if Low_Level.Copyarg /= null then + Arg.Usr := Low_Level.Copyarg (Usr_Arg); + else + Arg.Usr := Usr_Arg; + end if; + end if; + + Res := Set_Fld_Type (Arg1 => Arg); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + end Wrap_Builtin; + + function Field_Check_Router (Fld : Field; + Usr : System.Address) return C_Int + is + Arg : constant Argument_Access := To_Argument_Access (Usr); + begin + pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type + and then Arg.Typ /= null); + if Arg.Cft.Fcheck /= null then + return Arg.Cft.Fcheck (Fld, Arg.Usr); + else + return 1; + end if; + end Field_Check_Router; + + function Char_Check_Router (Ch : C_Int; + Usr : System.Address) return C_Int + is + Arg : constant Argument_Access := To_Argument_Access (Usr); + begin + pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type + and then Arg.Typ /= null); + if Arg.Cft.Ccheck /= null then + return Arg.Cft.Ccheck (Ch, Arg.Usr); + else + return 1; + end if; + end Char_Check_Router; + + function Next_Router (Fld : Field; + Usr : System.Address) return C_Int + is + Arg : constant Argument_Access := To_Argument_Access (Usr); + begin + pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type + and then Arg.Typ /= null); + if Arg.Cft.Next /= null then + return Arg.Cft.Next (Fld, Arg.Usr); + else + return 1; + end if; + end Next_Router; + + function Prev_Router (Fld : Field; + Usr : System.Address) return C_Int + is + Arg : constant Argument_Access := To_Argument_Access (Usr); + begin + pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type + and then Arg.Typ /= null); + if Arg.Cft.Prev /= null then + return Arg.Cft.Prev (Fld, Arg.Usr); + else + return 1; + end if; + end Prev_Router; + + -- ----------------------------------------------------------------------- + -- + function C_Builtin_Router return C_Field_Type + is + Res : Eti_Error; + T : C_Field_Type; + begin + if M_Builtin_Router = Null_Field_Type then + T := New_Fieldtype (Field_Check_Router'Access, + Char_Check_Router'Access); + if T = Null_Field_Type then + raise Form_Exception; + else + Res := Set_Fieldtype_Arg (T, + Make_Arg'Access, + Copy_Arg'Access, + Free_Arg'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + M_Builtin_Router := T; + end if; + pragma Assert (M_Builtin_Router /= Null_Field_Type); + return M_Builtin_Router; + end C_Builtin_Router; + + -- ----------------------------------------------------------------------- + -- + function C_Choice_Router return C_Field_Type + is + Res : Eti_Error; + T : C_Field_Type; + begin + if M_Choice_Router = Null_Field_Type then + T := New_Fieldtype (Field_Check_Router'Access, + Char_Check_Router'Access); + if T = Null_Field_Type then + raise Form_Exception; + else + Res := Set_Fieldtype_Arg (T, + Make_Arg'Access, + Copy_Arg'Access, + Free_Arg'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + + Res := Set_Fieldtype_Choice (T, + Next_Router'Access, + Prev_Router'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + M_Choice_Router := T; + end if; + pragma Assert (M_Choice_Router /= Null_Field_Type); + return M_Choice_Router; + end C_Choice_Router; + +end Terminal_Interface.Curses.Forms.Field_Types; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-field_user_data.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-field_user_data.adb new file mode 100644 index 0000000..817ebe5 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-field_user_data.adb @@ -0,0 +1,85 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_User_Data -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.12 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +-- | +-- |===================================================================== +-- | man page form_field_userptr.3x +-- |===================================================================== +-- | +package body Terminal_Interface.Curses.Forms.Field_User_Data is + -- | + -- | + -- | + use type Interfaces.C.int; + + procedure Set_User_Data (Fld : in Field; + Data : in User_Access) + is + function Set_Field_Userptr (Fld : Field; + Usr : User_Access) return C_Int; + pragma Import (C, Set_Field_Userptr, "set_field_userptr"); + + Res : constant Eti_Error := Set_Field_Userptr (Fld, Data); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_User_Data; + -- | + -- | + -- | + function Get_User_Data (Fld : in Field) return User_Access + is + function Field_Userptr (Fld : Field) return User_Access; + pragma Import (C, Field_Userptr, "field_userptr"); + begin + return Field_Userptr (Fld); + end Get_User_Data; + + procedure Get_User_Data (Fld : in Field; + Data : out User_Access) + is + begin + Data := Get_User_Data (Fld); + end Get_User_Data; + +end Terminal_Interface.Curses.Forms.Field_User_Data; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms-form_user_data.adb b/ncurses/Ada95/src/terminal_interface-curses-forms-form_user_data.adb new file mode 100644 index 0000000..50c6708 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms-form_user_data.adb @@ -0,0 +1,86 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Form_User_Data -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.12 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- | +-- |===================================================================== +-- | man page form__userptr.3x +-- |===================================================================== +-- | +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Form_User_Data is + + use type Interfaces.C.int; + + -- | + -- | + -- | + procedure Set_User_Data (Frm : in Form; + Data : in User_Access) + is + function Set_Form_Userptr (Frm : Form; + Data : User_Access) return C_Int; + pragma Import (C, Set_Form_Userptr, "set_form_userptr"); + + Res : constant Eti_Error := Set_Form_Userptr (Frm, Data); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_User_Data; + -- | + -- | + -- | + function Get_User_Data (Frm : in Form) return User_Access + is + function Form_Userptr (Frm : Form) return User_Access; + pragma Import (C, Form_Userptr, "form_userptr"); + begin + return Form_Userptr (Frm); + end Get_User_Data; + + procedure Get_User_Data (Frm : in Form; + Data : out User_Access) + is + begin + Data := Get_User_Data (Frm); + end Get_User_Data; + +end Terminal_Interface.Curses.Forms.Form_User_Data; diff --git a/ncurses/Ada95/src/terminal_interface-curses-forms.adb b/ncurses/Ada95/src/terminal_interface-curses-forms.adb new file mode 100644 index 0000000..8b01e16 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-forms.adb @@ -0,0 +1,1161 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.26 $ +-- $Date: 2008/07/26 18:50:44 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Deallocation; +with Ada.Unchecked_Conversion; + +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Interfaces.C.Pointers; + +with Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms is + + use Terminal_Interface.Curses.Aux; + + type C_Field_Array is array (Natural range <>) of aliased Field; + package F_Array is new + Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field); + +------------------------------------------------------------------------------ + -- | + -- | + -- | + -- subtype chars_ptr is Interfaces.C.Strings.chars_ptr; + + function FOS_2_CInt is new + Ada.Unchecked_Conversion (Field_Option_Set, + C_Int); + + function CInt_2_FOS is new + Ada.Unchecked_Conversion (C_Int, + Field_Option_Set); + + function FrmOS_2_CInt is new + Ada.Unchecked_Conversion (Form_Option_Set, + C_Int); + + function CInt_2_FrmOS is new + Ada.Unchecked_Conversion (C_Int, + Form_Option_Set); + + procedure Request_Name (Key : in Form_Request_Code; + Name : out String) + is + function Form_Request_Name (Key : C_Int) return chars_ptr; + pragma Import (C, Form_Request_Name, "form_request_name"); + begin + Fill_String (Form_Request_Name (C_Int (Key)), Name); + end Request_Name; + + function Request_Name (Key : Form_Request_Code) return String + is + function Form_Request_Name (Key : C_Int) return chars_ptr; + pragma Import (C, Form_Request_Name, "form_request_name"); + begin + return Fill_String (Form_Request_Name (C_Int (Key))); + end Request_Name; +------------------------------------------------------------------------------ + -- | + -- | + -- | + -- | + -- |===================================================================== + -- | man page form_field_new.3x + -- |===================================================================== + -- | + -- | + -- | + function Create (Height : Line_Count; + Width : Column_Count; + Top : Line_Position; + Left : Column_Position; + Off_Screen : Natural := 0; + More_Buffers : Buffer_Number := Buffer_Number'First) + return Field + is + function Newfield (H, W, T, L, O, M : C_Int) return Field; + pragma Import (C, Newfield, "new_field"); + Fld : constant Field := Newfield (C_Int (Height), C_Int (Width), + C_Int (Top), C_Int (Left), + C_Int (Off_Screen), + C_Int (More_Buffers)); + begin + if Fld = Null_Field then + raise Form_Exception; + end if; + return Fld; + end Create; +-- | +-- | +-- | + procedure Delete (Fld : in out Field) + is + function Free_Field (Fld : Field) return C_Int; + pragma Import (C, Free_Field, "free_field"); + + Res : Eti_Error; + begin + Res := Free_Field (Fld); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Fld := Null_Field; + end Delete; + -- | + -- | + -- | + function Duplicate (Fld : Field; + Top : Line_Position; + Left : Column_Position) return Field + is + function Dup_Field (Fld : Field; + Top : C_Int; + Left : C_Int) return Field; + pragma Import (C, Dup_Field, "dup_field"); + + F : constant Field := Dup_Field (Fld, + C_Int (Top), + C_Int (Left)); + begin + if F = Null_Field then + raise Form_Exception; + end if; + return F; + end Duplicate; + -- | + -- | + -- | + function Link (Fld : Field; + Top : Line_Position; + Left : Column_Position) return Field + is + function Lnk_Field (Fld : Field; + Top : C_Int; + Left : C_Int) return Field; + pragma Import (C, Lnk_Field, "link_field"); + + F : constant Field := Lnk_Field (Fld, + C_Int (Top), + C_Int (Left)); + begin + if F = Null_Field then + raise Form_Exception; + end if; + return F; + end Link; + -- | + -- |===================================================================== + -- | man page form_field_just.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Justification (Fld : in Field; + Just : in Field_Justification := None) + is + function Set_Field_Just (Fld : Field; + Just : C_Int) return C_Int; + pragma Import (C, Set_Field_Just, "set_field_just"); + + Res : constant Eti_Error := + Set_Field_Just (Fld, + C_Int (Field_Justification'Pos (Just))); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Justification; + -- | + -- | + -- | + function Get_Justification (Fld : Field) return Field_Justification + is + function Field_Just (Fld : Field) return C_Int; + pragma Import (C, Field_Just, "field_just"); + begin + return Field_Justification'Val (Field_Just (Fld)); + end Get_Justification; + -- | + -- |===================================================================== + -- | man page form_field_buffer.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Buffer + (Fld : in Field; + Buffer : in Buffer_Number := Buffer_Number'First; + Str : in String) + is + type Char_Ptr is access all Interfaces.C.char; + function Set_Fld_Buffer (Fld : Field; + Bufnum : C_Int; + S : Char_Ptr) + return C_Int; + pragma Import (C, Set_Fld_Buffer, "set_field_buffer"); + + Txt : char_array (0 .. Str'Length); + Len : size_t; + Res : Eti_Error; + begin + To_C (Str, Txt, Len); + Res := Set_Fld_Buffer (Fld, C_Int (Buffer), Txt (Txt'First)'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Buffer; + -- | + -- | + -- | + procedure Get_Buffer + (Fld : in Field; + Buffer : in Buffer_Number := Buffer_Number'First; + Str : out String) + is + function Field_Buffer (Fld : Field; + B : C_Int) return chars_ptr; + pragma Import (C, Field_Buffer, "field_buffer"); + begin + Fill_String (Field_Buffer (Fld, C_Int (Buffer)), Str); + end Get_Buffer; + + function Get_Buffer + (Fld : in Field; + Buffer : in Buffer_Number := Buffer_Number'First) return String + is + function Field_Buffer (Fld : Field; + B : C_Int) return chars_ptr; + pragma Import (C, Field_Buffer, "field_buffer"); + begin + return Fill_String (Field_Buffer (Fld, C_Int (Buffer))); + end Get_Buffer; + -- | + -- | + -- | + procedure Set_Status (Fld : in Field; + Status : in Boolean := True) + is + function Set_Fld_Status (Fld : Field; + St : C_Int) return C_Int; + pragma Import (C, Set_Fld_Status, "set_field_status"); + + Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status)); + begin + if Res /= E_Ok then + raise Form_Exception; + end if; + end Set_Status; + -- | + -- | + -- | + function Changed (Fld : Field) return Boolean + is + function Field_Status (Fld : Field) return C_Int; + pragma Import (C, Field_Status, "field_status"); + + Res : constant C_Int := Field_Status (Fld); + begin + if Res = Curses_False then + return False; + else + return True; + end if; + end Changed; + -- | + -- | + -- | + procedure Set_Maximum_Size (Fld : in Field; + Max : in Natural := 0) + is + function Set_Field_Max (Fld : Field; + M : C_Int) return C_Int; + pragma Import (C, Set_Field_Max, "set_max_field"); + + Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Maximum_Size; + -- | + -- |===================================================================== + -- | man page form_field_opts.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Options (Fld : in Field; + Options : in Field_Option_Set) + is + function Set_Field_Opts (Fld : Field; + Opt : C_Int) return C_Int; + pragma Import (C, Set_Field_Opts, "set_field_opts"); + + Opt : constant C_Int := FOS_2_CInt (Options); + Res : Eti_Error; + begin + Res := Set_Field_Opts (Fld, Opt); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Options; + -- | + -- | + -- | + procedure Switch_Options (Fld : in Field; + Options : in Field_Option_Set; + On : Boolean := True) + is + function Field_Opts_On (Fld : Field; + Opt : C_Int) return C_Int; + pragma Import (C, Field_Opts_On, "field_opts_on"); + function Field_Opts_Off (Fld : Field; + Opt : C_Int) return C_Int; + pragma Import (C, Field_Opts_Off, "field_opts_off"); + + Err : Eti_Error; + Opt : constant C_Int := FOS_2_CInt (Options); + begin + if On then + Err := Field_Opts_On (Fld, Opt); + else + Err := Field_Opts_Off (Fld, Opt); + end if; + if Err /= E_Ok then + Eti_Exception (Err); + end if; + end Switch_Options; + -- | + -- | + -- | + procedure Get_Options (Fld : in Field; + Options : out Field_Option_Set) + is + function Field_Opts (Fld : Field) return C_Int; + pragma Import (C, Field_Opts, "field_opts"); + + Res : constant C_Int := Field_Opts (Fld); + begin + Options := CInt_2_FOS (Res); + end Get_Options; + -- | + -- | + -- | + function Get_Options (Fld : Field := Null_Field) + return Field_Option_Set + is + Fos : Field_Option_Set; + begin + Get_Options (Fld, Fos); + return Fos; + end Get_Options; + -- | + -- |===================================================================== + -- | man page form_field_attributes.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Foreground + (Fld : in Field; + Fore : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Set_Field_Fore (Fld : Field; + Attr : C_Chtype) return C_Int; + pragma Import (C, Set_Field_Fore, "set_field_fore"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Fore); + Res : constant Eti_Error := + Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Foreground; + -- | + -- | + -- | + procedure Foreground (Fld : in Field; + Fore : out Character_Attribute_Set) + is + function Field_Fore (Fld : Field) return C_Chtype; + pragma Import (C, Field_Fore, "field_fore"); + begin + Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr; + end Foreground; + + procedure Foreground (Fld : in Field; + Fore : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Field_Fore (Fld : Field) return C_Chtype; + pragma Import (C, Field_Fore, "field_fore"); + begin + Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr; + Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color; + end Foreground; + -- | + -- | + -- | + procedure Set_Background + (Fld : in Field; + Back : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Set_Field_Back (Fld : Field; + Attr : C_Chtype) return C_Int; + pragma Import (C, Set_Field_Back, "set_field_back"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Back); + Res : constant Eti_Error := + Set_Field_Back (Fld, AttrChar_To_Chtype (Ch)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Background; + -- | + -- | + -- | + procedure Background (Fld : in Field; + Back : out Character_Attribute_Set) + is + function Field_Back (Fld : Field) return C_Chtype; + pragma Import (C, Field_Back, "field_back"); + begin + Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr; + end Background; + + procedure Background (Fld : in Field; + Back : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Field_Back (Fld : Field) return C_Chtype; + pragma Import (C, Field_Back, "field_back"); + begin + Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr; + Color := Chtype_To_AttrChar (Field_Back (Fld)).Color; + end Background; + -- | + -- | + -- | + procedure Set_Pad_Character (Fld : in Field; + Pad : in Character := Space) + is + function Set_Field_Pad (Fld : Field; + Ch : C_Int) return C_Int; + pragma Import (C, Set_Field_Pad, "set_field_pad"); + + Res : constant Eti_Error := Set_Field_Pad (Fld, + C_Int (Character'Pos (Pad))); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Pad_Character; + -- | + -- | + -- | + procedure Pad_Character (Fld : in Field; + Pad : out Character) + is + function Field_Pad (Fld : Field) return C_Int; + pragma Import (C, Field_Pad, "field_pad"); + begin + Pad := Character'Val (Field_Pad (Fld)); + end Pad_Character; + -- | + -- |===================================================================== + -- | man page form_field_info.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Info (Fld : in Field; + Lines : out Line_Count; + Columns : out Column_Count; + First_Row : out Line_Position; + First_Column : out Column_Position; + Off_Screen : out Natural; + Additional_Buffers : out Buffer_Number) + is + type C_Int_Access is access all C_Int; + function Fld_Info (Fld : Field; + L, C, Fr, Fc, Os, Ab : C_Int_Access) + return C_Int; + pragma Import (C, Fld_Info, "field_info"); + + L, C, Fr, Fc, Os, Ab : aliased C_Int; + Res : constant Eti_Error := Fld_Info (Fld, + L'Access, C'Access, + Fr'Access, Fc'Access, + Os'Access, Ab'Access); + begin + if Res /= E_Ok then + Eti_Exception (Res); + else + Lines := Line_Count (L); + Columns := Column_Count (C); + First_Row := Line_Position (Fr); + First_Column := Column_Position (Fc); + Off_Screen := Natural (Os); + Additional_Buffers := Buffer_Number (Ab); + end if; + end Info; +-- | +-- | +-- | + procedure Dynamic_Info (Fld : in Field; + Lines : out Line_Count; + Columns : out Column_Count; + Max : out Natural) + is + type C_Int_Access is access all C_Int; + function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int; + pragma Import (C, Dyn_Info, "dynamic_field_info"); + + L, C, M : aliased C_Int; + Res : constant Eti_Error := Dyn_Info (Fld, + L'Access, C'Access, + M'Access); + begin + if Res /= E_Ok then + Eti_Exception (Res); + else + Lines := Line_Count (L); + Columns := Column_Count (C); + Max := Natural (M); + end if; + end Dynamic_Info; + -- | + -- |===================================================================== + -- | man page form_win.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Window (Frm : in Form; + Win : in Window) + is + function Set_Form_Win (Frm : Form; + Win : Window) return C_Int; + pragma Import (C, Set_Form_Win, "set_form_win"); + + Res : constant Eti_Error := Set_Form_Win (Frm, Win); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Window; + -- | + -- | + -- | + function Get_Window (Frm : Form) return Window + is + function Form_Win (Frm : Form) return Window; + pragma Import (C, Form_Win, "form_win"); + + W : constant Window := Form_Win (Frm); + begin + return W; + end Get_Window; + -- | + -- | + -- | + procedure Set_Sub_Window (Frm : in Form; + Win : in Window) + is + function Set_Form_Sub (Frm : Form; + Win : Window) return C_Int; + pragma Import (C, Set_Form_Sub, "set_form_sub"); + + Res : constant Eti_Error := Set_Form_Sub (Frm, Win); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Sub_Window; + -- | + -- | + -- | + function Get_Sub_Window (Frm : Form) return Window + is + function Form_Sub (Frm : Form) return Window; + pragma Import (C, Form_Sub, "form_sub"); + + W : constant Window := Form_Sub (Frm); + begin + return W; + end Get_Sub_Window; + -- | + -- | + -- | + procedure Scale (Frm : in Form; + Lines : out Line_Count; + Columns : out Column_Count) + is + type C_Int_Access is access all C_Int; + function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int; + pragma Import (C, M_Scale, "scale_form"); + + X, Y : aliased C_Int; + Res : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Lines := Line_Count (Y); + Columns := Column_Count (X); + end Scale; + -- | + -- |===================================================================== + -- | man page menu_hook.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Field_Init_Hook (Frm : in Form; + Proc : in Form_Hook_Function) + is + function Set_Field_Init (Frm : Form; + Proc : Form_Hook_Function) return C_Int; + pragma Import (C, Set_Field_Init, "set_field_init"); + + Res : constant Eti_Error := Set_Field_Init (Frm, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Field_Init_Hook; + -- | + -- | + -- | + procedure Set_Field_Term_Hook (Frm : in Form; + Proc : in Form_Hook_Function) + is + function Set_Field_Term (Frm : Form; + Proc : Form_Hook_Function) return C_Int; + pragma Import (C, Set_Field_Term, "set_field_term"); + + Res : constant Eti_Error := Set_Field_Term (Frm, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Field_Term_Hook; + -- | + -- | + -- | + procedure Set_Form_Init_Hook (Frm : in Form; + Proc : in Form_Hook_Function) + is + function Set_Form_Init (Frm : Form; + Proc : Form_Hook_Function) return C_Int; + pragma Import (C, Set_Form_Init, "set_form_init"); + + Res : constant Eti_Error := Set_Form_Init (Frm, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Form_Init_Hook; + -- | + -- | + -- | + procedure Set_Form_Term_Hook (Frm : in Form; + Proc : in Form_Hook_Function) + is + function Set_Form_Term (Frm : Form; + Proc : Form_Hook_Function) return C_Int; + pragma Import (C, Set_Form_Term, "set_form_term"); + + Res : constant Eti_Error := Set_Form_Term (Frm, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Form_Term_Hook; + -- | + -- |===================================================================== + -- | man page form_fields.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Redefine (Frm : in Form; + Flds : in Field_Array_Access) + is + function Set_Frm_Fields (Frm : Form; + Items : System.Address) return C_Int; + pragma Import (C, Set_Frm_Fields, "set_form_fields"); + + Res : Eti_Error; + begin + pragma Assert (Flds (Flds'Last) = Null_Field); + if Flds (Flds'Last) /= Null_Field then + raise Form_Exception; + else + Res := Set_Frm_Fields (Frm, Flds (Flds'First)'Address); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + end Redefine; + -- | + -- | + -- | + function Fields (Frm : Form; + Index : Positive) return Field + is + use F_Array; + + function C_Fields (Frm : Form) return Pointer; + pragma Import (C, C_Fields, "form_fields"); + + P : Pointer := C_Fields (Frm); + begin + if P = null or else Index > Field_Count (Frm) then + raise Form_Exception; + else + P := P + ptrdiff_t (C_Int (Index) - 1); + return P.all; + end if; + end Fields; + -- | + -- | + -- | + function Field_Count (Frm : Form) return Natural + is + function Count (Frm : Form) return C_Int; + pragma Import (C, Count, "field_count"); + begin + return Natural (Count (Frm)); + end Field_Count; + -- | + -- | + -- | + procedure Move (Fld : in Field; + Line : in Line_Position; + Column : in Column_Position) + is + function Move (Fld : Field; L, C : C_Int) return C_Int; + pragma Import (C, Move, "move_field"); + + Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Move; + -- | + -- |===================================================================== + -- | man page form_new.3x + -- |===================================================================== + -- | + -- | + -- | + function Create (Fields : Field_Array_Access) return Form + is + function NewForm (Fields : System.Address) return Form; + pragma Import (C, NewForm, "new_form"); + + M : Form; + begin + pragma Assert (Fields (Fields'Last) = Null_Field); + if Fields (Fields'Last) /= Null_Field then + raise Form_Exception; + else + M := NewForm (Fields (Fields'First)'Address); + if M = Null_Form then + raise Form_Exception; + end if; + return M; + end if; + end Create; + -- | + -- | + -- | + procedure Delete (Frm : in out Form) + is + function Free (Frm : Form) return C_Int; + pragma Import (C, Free, "free_form"); + + Res : constant Eti_Error := Free (Frm); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Frm := Null_Form; + end Delete; + -- | + -- |===================================================================== + -- | man page form_opts.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Options (Frm : in Form; + Options : in Form_Option_Set) + is + function Set_Form_Opts (Frm : Form; + Opt : C_Int) return C_Int; + pragma Import (C, Set_Form_Opts, "set_form_opts"); + + Opt : constant C_Int := FrmOS_2_CInt (Options); + Res : Eti_Error; + begin + Res := Set_Form_Opts (Frm, Opt); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Options; + -- | + -- | + -- | + procedure Switch_Options (Frm : in Form; + Options : in Form_Option_Set; + On : Boolean := True) + is + function Form_Opts_On (Frm : Form; + Opt : C_Int) return C_Int; + pragma Import (C, Form_Opts_On, "form_opts_on"); + function Form_Opts_Off (Frm : Form; + Opt : C_Int) return C_Int; + pragma Import (C, Form_Opts_Off, "form_opts_off"); + + Err : Eti_Error; + Opt : constant C_Int := FrmOS_2_CInt (Options); + begin + if On then + Err := Form_Opts_On (Frm, Opt); + else + Err := Form_Opts_Off (Frm, Opt); + end if; + if Err /= E_Ok then + Eti_Exception (Err); + end if; + end Switch_Options; + -- | + -- | + -- | + procedure Get_Options (Frm : in Form; + Options : out Form_Option_Set) + is + function Form_Opts (Frm : Form) return C_Int; + pragma Import (C, Form_Opts, "form_opts"); + + Res : constant C_Int := Form_Opts (Frm); + begin + Options := CInt_2_FrmOS (Res); + end Get_Options; + -- | + -- | + -- | + function Get_Options (Frm : Form := Null_Form) return Form_Option_Set + is + Fos : Form_Option_Set; + begin + Get_Options (Frm, Fos); + return Fos; + end Get_Options; + -- | + -- |===================================================================== + -- | man page form_post.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Post (Frm : in Form; + Post : in Boolean := True) + is + function M_Post (Frm : Form) return C_Int; + pragma Import (C, M_Post, "post_form"); + function M_Unpost (Frm : Form) return C_Int; + pragma Import (C, M_Unpost, "unpost_form"); + + Res : Eti_Error; + begin + if Post then + Res := M_Post (Frm); + else + Res := M_Unpost (Frm); + end if; + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Post; + -- | + -- |===================================================================== + -- | man page form_cursor.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Position_Cursor (Frm : Form) + is + function Pos_Form_Cursor (Frm : Form) return C_Int; + pragma Import (C, Pos_Form_Cursor, "pos_form_cursor"); + + Res : constant Eti_Error := Pos_Form_Cursor (Frm); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Position_Cursor; + -- | + -- |===================================================================== + -- | man page form_data.3x + -- |===================================================================== + -- | + -- | + -- | + function Data_Ahead (Frm : Form) return Boolean + is + function Ahead (Frm : Form) return C_Int; + pragma Import (C, Ahead, "data_ahead"); + + Res : constant C_Int := Ahead (Frm); + begin + if Res = Curses_False then + return False; + else + return True; + end if; + end Data_Ahead; + -- | + -- | + -- | + function Data_Behind (Frm : Form) return Boolean + is + function Behind (Frm : Form) return C_Int; + pragma Import (C, Behind, "data_behind"); + + Res : constant C_Int := Behind (Frm); + begin + if Res = Curses_False then + return False; + else + return True; + end if; + end Data_Behind; + -- | + -- |===================================================================== + -- | man page form_driver.3x + -- |===================================================================== + -- | + -- | + -- | + function Driver (Frm : Form; + Key : Key_Code) return Driver_Result + is + function Frm_Driver (Frm : Form; Key : C_Int) return C_Int; + pragma Import (C, Frm_Driver, "form_driver"); + + R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key)); + begin + if R /= E_Ok then + if R = E_Unknown_Command then + return Unknown_Request; + elsif R = E_Invalid_Field then + return Invalid_Field; + elsif R = E_Request_Denied then + return Request_Denied; + else + Eti_Exception (R); + return Form_Ok; + end if; + else + return Form_Ok; + end if; + end Driver; + -- | + -- |===================================================================== + -- | man page form_page.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_Current (Frm : in Form; + Fld : in Field) + is + function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int; + pragma Import (C, Set_Current_Fld, "set_current_field"); + + Res : constant Eti_Error := Set_Current_Fld (Frm, Fld); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Current; + -- | + -- | + -- | + function Current (Frm : in Form) return Field + is + function Current_Fld (Frm : Form) return Field; + pragma Import (C, Current_Fld, "current_field"); + + Fld : constant Field := Current_Fld (Frm); + begin + if Fld = Null_Field then + raise Form_Exception; + end if; + return Fld; + end Current; + -- | + -- | + -- | + procedure Set_Page (Frm : in Form; + Page : in Page_Number := Page_Number'First) + is + function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int; + pragma Import (C, Set_Frm_Page, "set_form_page"); + + Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Page; + -- | + -- | + -- | + function Page (Frm : Form) return Page_Number + is + function Get_Page (Frm : Form) return C_Int; + pragma Import (C, Get_Page, "form_page"); + + P : constant C_Int := Get_Page (Frm); + begin + if P < 0 then + raise Form_Exception; + else + return Page_Number (P); + end if; + end Page; + + function Get_Index (Fld : Field) return Positive + is + function Get_Fieldindex (Fld : Field) return C_Int; + pragma Import (C, Get_Fieldindex, "field_index"); + + Res : constant C_Int := Get_Fieldindex (Fld); + begin + if Res = Curses_Err then + raise Form_Exception; + end if; + return Positive (Natural (Res) + Positive'First); + end Get_Index; + + -- | + -- |===================================================================== + -- | man page form_new_page.3x + -- |===================================================================== + -- | + -- | + -- | + procedure Set_New_Page (Fld : in Field; + New_Page : in Boolean := True) + is + function Set_Page (Fld : Field; Flg : C_Int) return C_Int; + pragma Import (C, Set_Page, "set_new_page"); + + Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_New_Page; + -- | + -- | + -- | + function Is_New_Page (Fld : Field) return Boolean + is + function Is_New (Fld : Field) return C_Int; + pragma Import (C, Is_New, "new_page"); + + Res : constant C_Int := Is_New (Fld); + begin + if Res = Curses_False then + return False; + else + return True; + end if; + end Is_New_Page; + + procedure Free (FA : in out Field_Array_Access; + Free_Fields : in Boolean := False) + is + procedure Release is new Ada.Unchecked_Deallocation + (Field_Array, Field_Array_Access); + begin + if FA /= null and then Free_Fields then + for I in FA'First .. (FA'Last - 1) loop + if FA (I) /= Null_Field then + Delete (FA (I)); + end if; + end loop; + end if; + Release (FA); + end Free; + + -- |===================================================================== + + function Default_Field_Options return Field_Option_Set + is + begin + return Get_Options (Null_Field); + end Default_Field_Options; + + function Default_Form_Options return Form_Option_Set + is + begin + return Get_Options (Null_Form); + end Default_Form_Options; + +end Terminal_Interface.Curses.Forms; diff --git a/ncurses/Ada95/src/terminal_interface-curses-menus-item_user_data.adb b/ncurses/Ada95/src/terminal_interface-curses-menus-item_user_data.adb new file mode 100644 index 0000000..6c35d33 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-menus-item_user_data.adb @@ -0,0 +1,77 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menus.Item_User_Data -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Menus.Item_User_Data is + + use type Interfaces.C.int; + + procedure Set_User_Data (Itm : in Item; + Data : in User_Access) + is + function Set_Item_Userptr (Itm : Item; + Addr : User_Access) return C_Int; + pragma Import (C, Set_Item_Userptr, "set_item_userptr"); + + Res : constant Eti_Error := Set_Item_Userptr (Itm, Data); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_User_Data; + + function Get_User_Data (Itm : in Item) return User_Access + is + function Item_Userptr (Itm : Item) return User_Access; + pragma Import (C, Item_Userptr, "item_userptr"); + begin + return Item_Userptr (Itm); + end Get_User_Data; + + procedure Get_User_Data (Itm : in Item; + Data : out User_Access) + is + begin + Data := Get_User_Data (Itm); + end Get_User_Data; + +end Terminal_Interface.Curses.Menus.Item_User_Data; diff --git a/ncurses/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb b/ncurses/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb new file mode 100644 index 0000000..20b9e86 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb @@ -0,0 +1,76 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menus.Menu_User_Data -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.12 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Menus.Menu_User_Data is + + use type Interfaces.C.int; + + procedure Set_User_Data (Men : in Menu; + Data : in User_Access) + is + function Set_Menu_Userptr (Men : Menu; + Data : User_Access) return C_Int; + pragma Import (C, Set_Menu_Userptr, "set_menu_userptr"); + + Res : constant Eti_Error := Set_Menu_Userptr (Men, Data); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_User_Data; + + function Get_User_Data (Men : in Menu) return User_Access + is + function Menu_Userptr (Men : Menu) return User_Access; + pragma Import (C, Menu_Userptr, "menu_userptr"); + begin + return Menu_Userptr (Men); + end Get_User_Data; + + procedure Get_User_Data (Men : in Menu; + Data : out User_Access) + is + begin + Data := Get_User_Data (Men); + end Get_User_Data; + +end Terminal_Interface.Curses.Menus.Menu_User_Data; diff --git a/ncurses/Ada95/src/terminal_interface-curses-menus.adb b/ncurses/Ada95/src/terminal_interface-curses-menus.adb new file mode 100644 index 0000000..0b24c74 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-menus.adb @@ -0,0 +1,1022 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menus -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.26 $ +-- $Date: 2008/07/26 18:50:58 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Deallocation; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Interfaces.C.Pointers; + +with Ada.Unchecked_Conversion; + +package body Terminal_Interface.Curses.Menus is + + type C_Item_Array is array (Natural range <>) of aliased Item; + package I_Array is new + Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item); + + use type System.Bit_Order; + subtype chars_ptr is Interfaces.C.Strings.chars_ptr; + + function MOS_2_CInt is new + Ada.Unchecked_Conversion (Menu_Option_Set, + C_Int); + + function CInt_2_MOS is new + Ada.Unchecked_Conversion (C_Int, + Menu_Option_Set); + + function IOS_2_CInt is new + Ada.Unchecked_Conversion (Item_Option_Set, + C_Int); + + function CInt_2_IOS is new + Ada.Unchecked_Conversion (C_Int, + Item_Option_Set); + +------------------------------------------------------------------------------ + procedure Request_Name (Key : in Menu_Request_Code; + Name : out String) + is + function Request_Name (Key : C_Int) return chars_ptr; + pragma Import (C, Request_Name, "menu_request_name"); + begin + Fill_String (Request_Name (C_Int (Key)), Name); + end Request_Name; + + function Request_Name (Key : Menu_Request_Code) return String + is + function Request_Name (Key : C_Int) return chars_ptr; + pragma Import (C, Request_Name, "menu_request_name"); + begin + return Fill_String (Request_Name (C_Int (Key))); + end Request_Name; + + function Create (Name : String; + Description : String := "") return Item + is + type Char_Ptr is access all Interfaces.C.char; + function Newitem (Name, Desc : Char_Ptr) return Item; + pragma Import (C, Newitem, "new_item"); + + type Name_String is new char_array (0 .. Name'Length); + type Name_String_Ptr is access Name_String; + pragma Controlled (Name_String_Ptr); + + type Desc_String is new char_array (0 .. Description'Length); + type Desc_String_Ptr is access Desc_String; + pragma Controlled (Desc_String_Ptr); + + Name_Str : constant Name_String_Ptr := new Name_String; + Desc_Str : constant Desc_String_Ptr := new Desc_String; + Name_Len, Desc_Len : size_t; + Result : Item; + begin + To_C (Name, Name_Str.all, Name_Len); + To_C (Description, Desc_Str.all, Desc_Len); + Result := Newitem (Name_Str.all (Name_Str.all'First)'Access, + Desc_Str.all (Desc_Str.all'First)'Access); + if Result = Null_Item then + raise Eti_System_Error; + end if; + return Result; + end Create; + + procedure Delete (Itm : in out Item) + is + function Descname (Itm : Item) return chars_ptr; + pragma Import (C, Descname, "item_description"); + function Itemname (Itm : Item) return chars_ptr; + pragma Import (C, Itemname, "item_name"); + + function Freeitem (Itm : Item) return C_Int; + pragma Import (C, Freeitem, "free_item"); + + Res : Eti_Error; + Ptr : chars_ptr; + begin + Ptr := Descname (Itm); + if Ptr /= Null_Ptr then + Interfaces.C.Strings.Free (Ptr); + end if; + Ptr := Itemname (Itm); + if Ptr /= Null_Ptr then + Interfaces.C.Strings.Free (Ptr); + end if; + Res := Freeitem (Itm); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Itm := Null_Item; + end Delete; +------------------------------------------------------------------------------- + procedure Set_Value (Itm : in Item; + Value : in Boolean := True) + is + function Set_Item_Val (Itm : Item; + Val : C_Int) return C_Int; + pragma Import (C, Set_Item_Val, "set_item_value"); + + Res : constant Eti_Error := Set_Item_Val (Itm, Boolean'Pos (Value)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Value; + + function Value (Itm : Item) return Boolean + is + function Item_Val (Itm : Item) return C_Int; + pragma Import (C, Item_Val, "item_value"); + begin + if Item_Val (Itm) = Curses_False then + return False; + else + return True; + end if; + end Value; + +------------------------------------------------------------------------------- + function Visible (Itm : Item) return Boolean + is + function Item_Vis (Itm : Item) return C_Int; + pragma Import (C, Item_Vis, "item_visible"); + begin + if Item_Vis (Itm) = Curses_False then + return False; + else + return True; + end if; + end Visible; +------------------------------------------------------------------------------- + procedure Set_Options (Itm : in Item; + Options : in Item_Option_Set) + is + function Set_Item_Opts (Itm : Item; + Opt : C_Int) return C_Int; + pragma Import (C, Set_Item_Opts, "set_item_opts"); + + Opt : constant C_Int := IOS_2_CInt (Options); + Res : Eti_Error; + begin + Res := Set_Item_Opts (Itm, Opt); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Options; + + procedure Switch_Options (Itm : in Item; + Options : in Item_Option_Set; + On : Boolean := True) + is + function Item_Opts_On (Itm : Item; + Opt : C_Int) return C_Int; + pragma Import (C, Item_Opts_On, "item_opts_on"); + function Item_Opts_Off (Itm : Item; + Opt : C_Int) return C_Int; + pragma Import (C, Item_Opts_Off, "item_opts_off"); + + Opt : constant C_Int := IOS_2_CInt (Options); + Err : Eti_Error; + begin + if On then + Err := Item_Opts_On (Itm, Opt); + else + Err := Item_Opts_Off (Itm, Opt); + end if; + if Err /= E_Ok then + Eti_Exception (Err); + end if; + end Switch_Options; + + procedure Get_Options (Itm : in Item; + Options : out Item_Option_Set) + is + function Item_Opts (Itm : Item) return C_Int; + pragma Import (C, Item_Opts, "item_opts"); + + Res : constant C_Int := Item_Opts (Itm); + begin + Options := CInt_2_IOS (Res); + end Get_Options; + + function Get_Options (Itm : Item := Null_Item) return Item_Option_Set + is + Ios : Item_Option_Set; + begin + Get_Options (Itm, Ios); + return Ios; + end Get_Options; +------------------------------------------------------------------------------- + procedure Name (Itm : in Item; + Name : out String) + is + function Itemname (Itm : Item) return chars_ptr; + pragma Import (C, Itemname, "item_name"); + begin + Fill_String (Itemname (Itm), Name); + end Name; + + function Name (Itm : in Item) return String + is + function Itemname (Itm : Item) return chars_ptr; + pragma Import (C, Itemname, "item_name"); + begin + return Fill_String (Itemname (Itm)); + end Name; + + procedure Description (Itm : in Item; + Description : out String) + is + function Descname (Itm : Item) return chars_ptr; + pragma Import (C, Descname, "item_description"); + begin + Fill_String (Descname (Itm), Description); + end Description; + + function Description (Itm : in Item) return String + is + function Descname (Itm : Item) return chars_ptr; + pragma Import (C, Descname, "item_description"); + begin + return Fill_String (Descname (Itm)); + end Description; +------------------------------------------------------------------------------- + procedure Set_Current (Men : in Menu; + Itm : in Item) + is + function Set_Curr_Item (Men : Menu; + Itm : Item) return C_Int; + pragma Import (C, Set_Curr_Item, "set_current_item"); + + Res : constant Eti_Error := Set_Curr_Item (Men, Itm); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Current; + + function Current (Men : Menu) return Item + is + function Curr_Item (Men : Menu) return Item; + pragma Import (C, Curr_Item, "current_item"); + + Res : constant Item := Curr_Item (Men); + begin + if Res = Null_Item then + raise Menu_Exception; + end if; + return Res; + end Current; + + procedure Set_Top_Row (Men : in Menu; + Line : in Line_Position) + is + function Set_Toprow (Men : Menu; + Line : C_Int) return C_Int; + pragma Import (C, Set_Toprow, "set_top_row"); + + Res : constant Eti_Error := Set_Toprow (Men, C_Int (Line)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Top_Row; + + function Top_Row (Men : Menu) return Line_Position + is + function Toprow (Men : Menu) return C_Int; + pragma Import (C, Toprow, "top_row"); + + Res : constant C_Int := Toprow (Men); + begin + if Res = Curses_Err then + raise Menu_Exception; + end if; + return Line_Position (Res); + end Top_Row; + + function Get_Index (Itm : Item) return Positive + is + function Get_Itemindex (Itm : Item) return C_Int; + pragma Import (C, Get_Itemindex, "item_index"); + + Res : constant C_Int := Get_Itemindex (Itm); + begin + if Res = Curses_Err then + raise Menu_Exception; + end if; + return Positive (Natural (Res) + Positive'First); + end Get_Index; +------------------------------------------------------------------------------- + procedure Post (Men : in Menu; + Post : in Boolean := True) + is + function M_Post (Men : Menu) return C_Int; + pragma Import (C, M_Post, "post_menu"); + function M_Unpost (Men : Menu) return C_Int; + pragma Import (C, M_Unpost, "unpost_menu"); + + Res : Eti_Error; + begin + if Post then + Res := M_Post (Men); + else + Res := M_Unpost (Men); + end if; + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Post; +------------------------------------------------------------------------------- + procedure Set_Options (Men : in Menu; + Options : in Menu_Option_Set) + is + function Set_Menu_Opts (Men : Menu; + Opt : C_Int) return C_Int; + pragma Import (C, Set_Menu_Opts, "set_menu_opts"); + + Opt : constant C_Int := MOS_2_CInt (Options); + Res : Eti_Error; + begin + Res := Set_Menu_Opts (Men, Opt); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Options; + + procedure Switch_Options (Men : in Menu; + Options : in Menu_Option_Set; + On : in Boolean := True) + is + function Menu_Opts_On (Men : Menu; + Opt : C_Int) return C_Int; + pragma Import (C, Menu_Opts_On, "menu_opts_on"); + function Menu_Opts_Off (Men : Menu; + Opt : C_Int) return C_Int; + pragma Import (C, Menu_Opts_Off, "menu_opts_off"); + + Opt : constant C_Int := MOS_2_CInt (Options); + Err : Eti_Error; + begin + if On then + Err := Menu_Opts_On (Men, Opt); + else + Err := Menu_Opts_Off (Men, Opt); + end if; + if Err /= E_Ok then + Eti_Exception (Err); + end if; + end Switch_Options; + + procedure Get_Options (Men : in Menu; + Options : out Menu_Option_Set) + is + function Menu_Opts (Men : Menu) return C_Int; + pragma Import (C, Menu_Opts, "menu_opts"); + + Res : constant C_Int := Menu_Opts (Men); + begin + Options := CInt_2_MOS (Res); + end Get_Options; + + function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set + is + Mos : Menu_Option_Set; + begin + Get_Options (Men, Mos); + return Mos; + end Get_Options; +------------------------------------------------------------------------------- + procedure Set_Window (Men : in Menu; + Win : in Window) + is + function Set_Menu_Win (Men : Menu; + Win : Window) return C_Int; + pragma Import (C, Set_Menu_Win, "set_menu_win"); + + Res : constant Eti_Error := Set_Menu_Win (Men, Win); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Window; + + function Get_Window (Men : Menu) return Window + is + function Menu_Win (Men : Menu) return Window; + pragma Import (C, Menu_Win, "menu_win"); + + W : constant Window := Menu_Win (Men); + begin + return W; + end Get_Window; + + procedure Set_Sub_Window (Men : in Menu; + Win : in Window) + is + function Set_Menu_Sub (Men : Menu; + Win : Window) return C_Int; + pragma Import (C, Set_Menu_Sub, "set_menu_sub"); + + Res : constant Eti_Error := Set_Menu_Sub (Men, Win); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Sub_Window; + + function Get_Sub_Window (Men : Menu) return Window + is + function Menu_Sub (Men : Menu) return Window; + pragma Import (C, Menu_Sub, "menu_sub"); + + W : constant Window := Menu_Sub (Men); + begin + return W; + end Get_Sub_Window; + + procedure Scale (Men : in Menu; + Lines : out Line_Count; + Columns : out Column_Count) + is + type C_Int_Access is access all C_Int; + function M_Scale (Men : Menu; + Yp, Xp : C_Int_Access) return C_Int; + pragma Import (C, M_Scale, "scale_menu"); + + X, Y : aliased C_Int; + Res : constant Eti_Error := M_Scale (Men, Y'Access, X'Access); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Lines := Line_Count (Y); + Columns := Column_Count (X); + end Scale; +------------------------------------------------------------------------------- + procedure Position_Cursor (Men : Menu) + is + function Pos_Menu_Cursor (Men : Menu) return C_Int; + pragma Import (C, Pos_Menu_Cursor, "pos_menu_cursor"); + + Res : constant Eti_Error := Pos_Menu_Cursor (Men); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Position_Cursor; + +------------------------------------------------------------------------------- + procedure Set_Mark (Men : in Menu; + Mark : in String) + is + type Char_Ptr is access all Interfaces.C.char; + function Set_Mark (Men : Menu; + Mark : Char_Ptr) return C_Int; + pragma Import (C, Set_Mark, "set_menu_mark"); + + Txt : char_array (0 .. Mark'Length); + Len : size_t; + Res : Eti_Error; + begin + To_C (Mark, Txt, Len); + Res := Set_Mark (Men, Txt (Txt'First)'Access); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Mark; + + procedure Mark (Men : in Menu; + Mark : out String) + is + function Get_Menu_Mark (Men : Menu) return chars_ptr; + pragma Import (C, Get_Menu_Mark, "menu_mark"); + begin + Fill_String (Get_Menu_Mark (Men), Mark); + end Mark; + + function Mark (Men : Menu) return String + is + function Get_Menu_Mark (Men : Menu) return chars_ptr; + pragma Import (C, Get_Menu_Mark, "menu_mark"); + begin + return Fill_String (Get_Menu_Mark (Men)); + end Mark; + +------------------------------------------------------------------------------- + procedure Set_Foreground + (Men : in Menu; + Fore : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Set_Menu_Fore (Men : Menu; + Attr : C_Chtype) return C_Int; + pragma Import (C, Set_Menu_Fore, "set_menu_fore"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Fore); + Res : constant Eti_Error := Set_Menu_Fore (Men, AttrChar_To_Chtype (Ch)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Foreground; + + procedure Foreground (Men : in Menu; + Fore : out Character_Attribute_Set) + is + function Menu_Fore (Men : Menu) return C_Chtype; + pragma Import (C, Menu_Fore, "menu_fore"); + begin + Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr; + end Foreground; + + procedure Foreground (Men : in Menu; + Fore : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Menu_Fore (Men : Menu) return C_Chtype; + pragma Import (C, Menu_Fore, "menu_fore"); + begin + Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr; + Color := Chtype_To_AttrChar (Menu_Fore (Men)).Color; + end Foreground; + + procedure Set_Background + (Men : in Menu; + Back : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Set_Menu_Back (Men : Menu; + Attr : C_Chtype) return C_Int; + pragma Import (C, Set_Menu_Back, "set_menu_back"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Back); + Res : constant Eti_Error := Set_Menu_Back (Men, AttrChar_To_Chtype (Ch)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Background; + + procedure Background (Men : in Menu; + Back : out Character_Attribute_Set) + is + function Menu_Back (Men : Menu) return C_Chtype; + pragma Import (C, Menu_Back, "menu_back"); + begin + Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr; + end Background; + + procedure Background (Men : in Menu; + Back : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Menu_Back (Men : Menu) return C_Chtype; + pragma Import (C, Menu_Back, "menu_back"); + begin + Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr; + Color := Chtype_To_AttrChar (Menu_Back (Men)).Color; + end Background; + + procedure Set_Grey (Men : in Menu; + Grey : in Character_Attribute_Set := Normal_Video; + Color : in Color_Pair := Color_Pair'First) + is + function Set_Menu_Grey (Men : Menu; + Attr : C_Chtype) return C_Int; + pragma Import (C, Set_Menu_Grey, "set_menu_grey"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Grey); + + Res : constant Eti_Error := Set_Menu_Grey (Men, AttrChar_To_Chtype (Ch)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Grey; + + procedure Grey (Men : in Menu; + Grey : out Character_Attribute_Set) + is + function Menu_Grey (Men : Menu) return C_Chtype; + pragma Import (C, Menu_Grey, "menu_grey"); + begin + Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr; + end Grey; + + procedure Grey (Men : in Menu; + Grey : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Menu_Grey (Men : Menu) return C_Chtype; + pragma Import (C, Menu_Grey, "menu_grey"); + begin + Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr; + Color := Chtype_To_AttrChar (Menu_Grey (Men)).Color; + end Grey; + + procedure Set_Pad_Character (Men : in Menu; + Pad : in Character := Space) + is + function Set_Menu_Pad (Men : Menu; + Ch : C_Int) return C_Int; + pragma Import (C, Set_Menu_Pad, "set_menu_pad"); + + Res : constant Eti_Error := Set_Menu_Pad (Men, + C_Int (Character'Pos (Pad))); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Pad_Character; + + procedure Pad_Character (Men : in Menu; + Pad : out Character) + is + function Menu_Pad (Men : Menu) return C_Int; + pragma Import (C, Menu_Pad, "menu_pad"); + begin + Pad := Character'Val (Menu_Pad (Men)); + end Pad_Character; +------------------------------------------------------------------------------- + procedure Set_Spacing (Men : in Menu; + Descr : in Column_Position := 0; + Row : in Line_Position := 0; + Col : in Column_Position := 0) + is + function Set_Spacing (Men : Menu; + D, R, C : C_Int) return C_Int; + pragma Import (C, Set_Spacing, "set_menu_spacing"); + + Res : constant Eti_Error := Set_Spacing (Men, + C_Int (Descr), + C_Int (Row), + C_Int (Col)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Spacing; + + procedure Spacing (Men : in Menu; + Descr : out Column_Position; + Row : out Line_Position; + Col : out Column_Position) + is + type C_Int_Access is access all C_Int; + function Get_Spacing (Men : Menu; + D, R, C : C_Int_Access) return C_Int; + pragma Import (C, Get_Spacing, "menu_spacing"); + + D, R, C : aliased C_Int; + Res : constant Eti_Error := Get_Spacing (Men, + D'Access, + R'Access, + C'Access); + begin + if Res /= E_Ok then + Eti_Exception (Res); + else + Descr := Column_Position (D); + Row := Line_Position (R); + Col := Column_Position (C); + end if; + end Spacing; +------------------------------------------------------------------------------- + function Set_Pattern (Men : Menu; + Text : String) return Boolean + is + type Char_Ptr is access all Interfaces.C.char; + function Set_Pattern (Men : Menu; + Pattern : Char_Ptr) return C_Int; + pragma Import (C, Set_Pattern, "set_menu_pattern"); + + S : char_array (0 .. Text'Length); + L : size_t; + Res : Eti_Error; + begin + To_C (Text, S, L); + Res := Set_Pattern (Men, S (S'First)'Access); + case Res is + when E_No_Match => return False; + when E_Ok => return True; + when others => + Eti_Exception (Res); + return False; + end case; + end Set_Pattern; + + procedure Pattern (Men : in Menu; + Text : out String) + is + function Get_Pattern (Men : Menu) return chars_ptr; + pragma Import (C, Get_Pattern, "menu_pattern"); + begin + Fill_String (Get_Pattern (Men), Text); + end Pattern; +------------------------------------------------------------------------------- + procedure Set_Format (Men : in Menu; + Lines : in Line_Count; + Columns : in Column_Count) + is + function Set_Menu_Fmt (Men : Menu; + Lin : C_Int; + Col : C_Int) return C_Int; + pragma Import (C, Set_Menu_Fmt, "set_menu_format"); + + Res : constant Eti_Error := Set_Menu_Fmt (Men, + C_Int (Lines), + C_Int (Columns)); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Format; + + procedure Format (Men : in Menu; + Lines : out Line_Count; + Columns : out Column_Count) + is + type C_Int_Access is access all C_Int; + function Menu_Fmt (Men : Menu; + Y, X : C_Int_Access) return C_Int; + pragma Import (C, Menu_Fmt, "menu_format"); + + L, C : aliased C_Int; + Res : constant Eti_Error := Menu_Fmt (Men, L'Access, C'Access); + begin + if Res /= E_Ok then + Eti_Exception (Res); + else + Lines := Line_Count (L); + Columns := Column_Count (C); + end if; + end Format; +------------------------------------------------------------------------------- + procedure Set_Item_Init_Hook (Men : in Menu; + Proc : in Menu_Hook_Function) + is + function Set_Item_Init (Men : Menu; + Proc : Menu_Hook_Function) return C_Int; + pragma Import (C, Set_Item_Init, "set_item_init"); + + Res : constant Eti_Error := Set_Item_Init (Men, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Item_Init_Hook; + + procedure Set_Item_Term_Hook (Men : in Menu; + Proc : in Menu_Hook_Function) + is + function Set_Item_Term (Men : Menu; + Proc : Menu_Hook_Function) return C_Int; + pragma Import (C, Set_Item_Term, "set_item_term"); + + Res : constant Eti_Error := Set_Item_Term (Men, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Item_Term_Hook; + + procedure Set_Menu_Init_Hook (Men : in Menu; + Proc : in Menu_Hook_Function) + is + function Set_Menu_Init (Men : Menu; + Proc : Menu_Hook_Function) return C_Int; + pragma Import (C, Set_Menu_Init, "set_menu_init"); + + Res : constant Eti_Error := Set_Menu_Init (Men, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Menu_Init_Hook; + + procedure Set_Menu_Term_Hook (Men : in Menu; + Proc : in Menu_Hook_Function) + is + function Set_Menu_Term (Men : Menu; + Proc : Menu_Hook_Function) return C_Int; + pragma Import (C, Set_Menu_Term, "set_menu_term"); + + Res : constant Eti_Error := Set_Menu_Term (Men, Proc); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end Set_Menu_Term_Hook; + + function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function + is + function Item_Init (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Item_Init, "item_init"); + begin + return Item_Init (Men); + end Get_Item_Init_Hook; + + function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function + is + function Item_Term (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Item_Term, "item_term"); + begin + return Item_Term (Men); + end Get_Item_Term_Hook; + + function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function + is + function Menu_Init (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Menu_Init, "menu_init"); + begin + return Menu_Init (Men); + end Get_Menu_Init_Hook; + + function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function + is + function Menu_Term (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Menu_Term, "menu_term"); + begin + return Menu_Term (Men); + end Get_Menu_Term_Hook; +------------------------------------------------------------------------------- + procedure Redefine (Men : in Menu; + Items : in Item_Array_Access) + is + function Set_Items (Men : Menu; + Items : System.Address) return C_Int; + pragma Import (C, Set_Items, "set_menu_items"); + + Res : Eti_Error; + begin + pragma Assert (Items (Items'Last) = Null_Item); + if Items (Items'Last) /= Null_Item then + raise Menu_Exception; + else + Res := Set_Items (Men, Items.all'Address); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + end if; + end Redefine; + + function Item_Count (Men : Menu) return Natural + is + function Count (Men : Menu) return C_Int; + pragma Import (C, Count, "item_count"); + begin + return Natural (Count (Men)); + end Item_Count; + + function Items (Men : Menu; + Index : Positive) return Item + is + use I_Array; + + function C_Mitems (Men : Menu) return Pointer; + pragma Import (C, C_Mitems, "menu_items"); + + P : Pointer := C_Mitems (Men); + begin + if P = null or else Index > Item_Count (Men) then + raise Menu_Exception; + else + P := P + ptrdiff_t (C_Int (Index) - 1); + return P.all; + end if; + end Items; + +------------------------------------------------------------------------------- + function Create (Items : Item_Array_Access) return Menu + is + function Newmenu (Items : System.Address) return Menu; + pragma Import (C, Newmenu, "new_menu"); + + M : Menu; + begin + pragma Assert (Items (Items'Last) = Null_Item); + if Items (Items'Last) /= Null_Item then + raise Menu_Exception; + else + M := Newmenu (Items.all'Address); + if M = Null_Menu then + raise Menu_Exception; + end if; + return M; + end if; + end Create; + + procedure Delete (Men : in out Menu) + is + function Free (Men : Menu) return C_Int; + pragma Import (C, Free, "free_menu"); + + Res : constant Eti_Error := Free (Men); + begin + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Men := Null_Menu; + end Delete; + +------------------------------------------------------------------------------ + function Driver (Men : Menu; + Key : Key_Code) return Driver_Result + is + function Driver (Men : Menu; + Key : C_Int) return C_Int; + pragma Import (C, Driver, "menu_driver"); + + R : constant Eti_Error := Driver (Men, C_Int (Key)); + begin + if R /= E_Ok then + case R is + when E_Unknown_Command => return Unknown_Request; + when E_No_Match => return No_Match; + when E_Request_Denied | + E_Not_Selectable => return Request_Denied; + when others => + Eti_Exception (R); + end case; + end if; + return Menu_Ok; + end Driver; + + procedure Free (IA : in out Item_Array_Access; + Free_Items : in Boolean := False) + is + procedure Release is new Ada.Unchecked_Deallocation + (Item_Array, Item_Array_Access); + begin + if IA /= null and then Free_Items then + for I in IA'First .. (IA'Last - 1) loop + if IA (I) /= Null_Item then + Delete (IA (I)); + end if; + end loop; + end if; + Release (IA); + end Free; + +------------------------------------------------------------------------------- + function Default_Menu_Options return Menu_Option_Set + is + begin + return Get_Options (Null_Menu); + end Default_Menu_Options; + + function Default_Item_Options return Item_Option_Set + is + begin + return Get_Options (Null_Item); + end Default_Item_Options; +------------------------------------------------------------------------------- + +end Terminal_Interface.Curses.Menus; diff --git a/ncurses/Ada95/src/terminal_interface-curses-mouse.adb b/ncurses/Ada95/src/terminal_interface-curses-mouse.adb new file mode 100644 index 0000000..fa4c69d --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-mouse.adb @@ -0,0 +1,217 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Mouse -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.22 $ +-- $Date: 2008/07/26 18:51:11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; +with Interfaces.C; use Interfaces.C; +use Interfaces; + +package body Terminal_Interface.Curses.Mouse is + + use type System.Bit_Order; + + function Has_Mouse return Boolean + is + function Mouse_Avail return C_Int; + pragma Import (C, Mouse_Avail, "_nc_has_mouse"); + begin + if Has_Key (Key_Mouse) or else Mouse_Avail /= 0 then + return True; + else + return False; + end if; + end Has_Mouse; + + function Get_Mouse return Mouse_Event + is + type Event_Access is access all Mouse_Event; + + function Getmouse (Ev : Event_Access) return C_Int; + pragma Import (C, Getmouse, "getmouse"); + + Event : aliased Mouse_Event; + begin + if Getmouse (Event'Access) = Curses_Err then + raise Curses_Exception; + end if; + return Event; + end Get_Mouse; + + procedure Register_Reportable_Event (Button : in Mouse_Button; + State : in Button_State; + Mask : in out Event_Mask) + is + Button_Nr : constant Natural := Mouse_Button'Pos (Button); + State_Nr : constant Natural := Button_State'Pos (State); + begin + if Button in Modifier_Keys and then State /= Pressed then + raise Curses_Exception; + else + if Button in Real_Buttons then + Mask := Mask or ((2 ** (6 * Button_Nr)) ** State_Nr); + else + Mask := Mask or (BUTTON_CTRL ** (Button_Nr - 4)); + end if; + end if; + end Register_Reportable_Event; + + procedure Register_Reportable_Events (Button : in Mouse_Button; + State : in Button_States; + Mask : in out Event_Mask) + is + begin + for S in Button_States'Range loop + if State (S) then + Register_Reportable_Event (Button, S, Mask); + end if; + end loop; + end Register_Reportable_Events; + + function Start_Mouse (Mask : Event_Mask := All_Events) + return Event_Mask + is + function MMask (M : Event_Mask; + O : access Event_Mask) return Event_Mask; + pragma Import (C, MMask, "mousemask"); + R : Event_Mask; + Old : aliased Event_Mask; + begin + R := MMask (Mask, Old'Access); + if R = No_Events then + Beep; + end if; + return Old; + end Start_Mouse; + + procedure End_Mouse (Mask : in Event_Mask := No_Events) + is + begin + if Mask /= No_Events then + Beep; + end if; + end End_Mouse; + + procedure Dispatch_Event (Mask : in Event_Mask; + Button : out Mouse_Button; + State : out Button_State); + + procedure Dispatch_Event (Mask : in Event_Mask; + Button : out Mouse_Button; + State : out Button_State) is + L : Event_Mask; + begin + Button := Alt; -- preset to non real button; + if (Mask and BUTTON1_EVENTS) /= 0 then + Button := Left; + elsif (Mask and BUTTON2_EVENTS) /= 0 then + Button := Middle; + elsif (Mask and BUTTON3_EVENTS) /= 0 then + Button := Right; + elsif (Mask and BUTTON4_EVENTS) /= 0 then + Button := Button4; + end if; + if Button in Real_Buttons then + L := 2 ** (6 * Mouse_Button'Pos (Button)); + for I in Button_State'Range loop + if (Mask and L) /= 0 then + State := I; + exit; + end if; + L := 2 * L; + end loop; + else + State := Pressed; + if (Mask and BUTTON_CTRL) /= 0 then + Button := Control; + elsif (Mask and BUTTON_SHIFT) /= 0 then + Button := Shift; + elsif (Mask and BUTTON_ALT) /= 0 then + Button := Alt; + end if; + end if; + end Dispatch_Event; + + procedure Get_Event (Event : in Mouse_Event; + Y : out Line_Position; + X : out Column_Position; + Button : out Mouse_Button; + State : out Button_State) + is + Mask : constant Event_Mask := Event.Bstate; + begin + X := Column_Position (Event.X); + Y := Line_Position (Event.Y); + Dispatch_Event (Mask, Button, State); + end Get_Event; + + procedure Unget_Mouse (Event : in Mouse_Event) + is + function Ungetmouse (Ev : Mouse_Event) return C_Int; + pragma Import (C, Ungetmouse, "ungetmouse"); + begin + if Ungetmouse (Event) = Curses_Err then + raise Curses_Exception; + end if; + end Unget_Mouse; + + function Enclosed_In_Window (Win : Window := Standard_Window; + Event : Mouse_Event) return Boolean + is + function Wenclose (Win : Window; Y : C_Int; X : C_Int) + return Curses_Bool; + pragma Import (C, Wenclose, "wenclose"); + begin + if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X)) + = Curses_Bool_False then + return False; + else + return True; + end if; + end Enclosed_In_Window; + + function Mouse_Interval (Msec : Natural := 200) return Natural + is + function Mouseinterval (Msec : C_Int) return C_Int; + pragma Import (C, Mouseinterval, "mouseinterval"); + begin + return Natural (Mouseinterval (C_Int (Msec))); + end Mouse_Interval; + +end Terminal_Interface.Curses.Mouse; diff --git a/ncurses/Ada95/src/terminal_interface-curses-panels-user_data.adb b/ncurses/Ada95/src/terminal_interface-curses-panels-user_data.adb new file mode 100644 index 0000000..231efae --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-panels-user_data.adb @@ -0,0 +1,78 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Panels.User_Data -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Interfaces.C; +with Terminal_Interface.Curses.Aux; +use Terminal_Interface.Curses.Aux; +with Terminal_Interface.Curses.Panels; +use Terminal_Interface.Curses.Panels; + +package body Terminal_Interface.Curses.Panels.User_Data is + + use type Interfaces.C.int; + + procedure Set_User_Data (Pan : in Panel; + Data : in User_Access) + is + function Set_Panel_Userptr (Pan : Panel; + Addr : User_Access) return C_Int; + pragma Import (C, Set_Panel_Userptr, "set_panel_userptr"); + begin + if Set_Panel_Userptr (Pan, Data) = Curses_Err then + raise Panel_Exception; + end if; + end Set_User_Data; + + function Get_User_Data (Pan : in Panel) return User_Access + is + function Panel_Userptr (Pan : Panel) return User_Access; + pragma Import (C, Panel_Userptr, "panel_userptr"); + begin + return Panel_Userptr (Pan); + end Get_User_Data; + + procedure Get_User_Data (Pan : in Panel; + Data : out User_Access) + is + begin + Data := Get_User_Data (Pan); + end Get_User_Data; + +end Terminal_Interface.Curses.Panels.User_Data; diff --git a/ncurses/Ada95/src/terminal_interface-curses-panels.adb b/ncurses/Ada95/src/terminal_interface-curses-panels.adb new file mode 100644 index 0000000..d7e18fa --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-panels.adb @@ -0,0 +1,165 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Panels -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.13 $ +-- $Date: 2004/08/21 21:37:00 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; +with Interfaces.C; + +package body Terminal_Interface.Curses.Panels is + + use type Interfaces.C.int; + + function Create (Win : Window) return Panel + is + function Newpanel (Win : Window) return Panel; + pragma Import (C, Newpanel, "new_panel"); + + Pan : Panel; + begin + Pan := Newpanel (Win); + if Pan = Null_Panel then + raise Panel_Exception; + end if; + return Pan; + end Create; + + procedure Bottom (Pan : in Panel) + is + function Bottompanel (Pan : Panel) return C_Int; + pragma Import (C, Bottompanel, "bottom_panel"); + begin + if Bottompanel (Pan) = Curses_Err then + raise Panel_Exception; + end if; + end Bottom; + + procedure Top (Pan : in Panel) + is + function Toppanel (Pan : Panel) return C_Int; + pragma Import (C, Toppanel, "top_panel"); + begin + if Toppanel (Pan) = Curses_Err then + raise Panel_Exception; + end if; + end Top; + + procedure Show (Pan : in Panel) + is + function Showpanel (Pan : Panel) return C_Int; + pragma Import (C, Showpanel, "show_panel"); + begin + if Showpanel (Pan) = Curses_Err then + raise Panel_Exception; + end if; + end Show; + + procedure Hide (Pan : in Panel) + is + function Hidepanel (Pan : Panel) return C_Int; + pragma Import (C, Hidepanel, "hide_panel"); + begin + if Hidepanel (Pan) = Curses_Err then + raise Panel_Exception; + end if; + end Hide; + + function Get_Window (Pan : Panel) return Window + is + function Panel_Win (Pan : Panel) return Window; + pragma Import (C, Panel_Win, "panel_window"); + + Win : constant Window := Panel_Win (Pan); + begin + if Win = Null_Window then + raise Panel_Exception; + end if; + return Win; + end Get_Window; + + procedure Replace (Pan : in Panel; + Win : in Window) + is + function Replace_Pan (Pan : Panel; + Win : Window) return C_Int; + pragma Import (C, Replace_Pan, "replace_panel"); + begin + if Replace_Pan (Pan, Win) = Curses_Err then + raise Panel_Exception; + end if; + end Replace; + + procedure Move (Pan : in Panel; + Line : in Line_Position; + Column : in Column_Position) + is + function Move (Pan : Panel; + Line : C_Int; + Column : C_Int) return C_Int; + pragma Import (C, Move, "move_panel"); + begin + if Move (Pan, C_Int (Line), C_Int (Column)) = Curses_Err then + raise Panel_Exception; + end if; + end Move; + + function Is_Hidden (Pan : Panel) return Boolean + is + function Panel_Hidden (Pan : Panel) return C_Int; + pragma Import (C, Panel_Hidden, "panel_hidden"); + begin + if Panel_Hidden (Pan) = Curses_False then + return False; + else + return True; + end if; + end Is_Hidden; + + procedure Delete (Pan : in out Panel) + is + function Del_Panel (Pan : Panel) return C_Int; + pragma Import (C, Del_Panel, "del_panel"); + begin + if Del_Panel (Pan) = Curses_Err then + raise Panel_Exception; + end if; + Pan := Null_Panel; + end Delete; + +end Terminal_Interface.Curses.Panels; diff --git a/ncurses/Ada95/src/terminal_interface-curses-putwin.adb b/ncurses/Ada95/src/terminal_interface-curses-putwin.adb new file mode 100644 index 0000000..986cd6b --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-putwin.adb @@ -0,0 +1,77 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.PutWin -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.3 $ +-- Binding Version 01.00 + +with Ada.Streams.Stream_IO.C_Streams; +with Interfaces.C_Streams; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.PutWin is + + package ICS renames Interfaces.C_Streams; + package ACS renames Ada.Streams.Stream_IO.C_Streams; + use type C_Int; + + procedure Put_Window (Win : Window; + File : Ada.Streams.Stream_IO.File_Type) is + function putwin (Win : Window; f : ICS.FILEs) return C_Int; + pragma Import (C, putwin, "putwin"); + + R : constant C_Int := putwin (Win, ACS.C_Stream (File)); + begin + if R /= Curses_Ok then + raise Curses_Exception; + end if; + end Put_Window; + + function Get_Window (File : Ada.Streams.Stream_IO.File_Type) + return Window is + function getwin (f : ICS.FILEs) return Window; + pragma Import (C, getwin, "getwin"); + + W : constant Window := getwin (ACS.C_Stream (File)); + begin + if W = Null_Window then + raise Curses_Exception; + else + return W; + end if; + end Get_Window; + +end Terminal_Interface.Curses.PutWin; diff --git a/ncurses/Ada95/src/terminal_interface-curses-putwin.ads b/ncurses/Ada95/src/terminal_interface-curses-putwin.ads new file mode 100644 index 0000000..d302bdc --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-putwin.ads @@ -0,0 +1,50 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.PutWin -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.3 $ +-- Binding Version 01.00 + +with Ada.Streams.Stream_IO; + +package Terminal_Interface.Curses.PutWin is + + procedure Put_Window (Win : Window; + File : Ada.Streams.Stream_IO.File_Type); + + function Get_Window (File : Ada.Streams.Stream_IO.File_Type) return Window; + +end Terminal_Interface.Curses.PutWin; diff --git a/ncurses/Ada95/src/terminal_interface-curses-termcap.adb b/ncurses/Ada95/src/terminal_interface-curses-termcap.adb new file mode 100644 index 0000000..fd3c646 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-termcap.adb @@ -0,0 +1,163 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Termcap -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; + +package body Terminal_Interface.Curses.Termcap is + + function Get_Entry (Name : String) return Boolean + is + function tgetent (name : char_array; val : char_array) + return C_Int; + pragma Import (C, tgetent, "tgetent"); + NameTxt : char_array (0 .. Name'Length); + Length : size_t; + ignored : constant char_array (0 .. 0) := (0 => nul); + result : C_Int; + begin + To_C (Name, NameTxt, Length); + result := tgetent (char_array (ignored), NameTxt); + if result = -1 then + raise Curses_Exception; + else + return Boolean'Val (result); + end if; + end Get_Entry; + +------------------------------------------------------------------------------ + function Get_Flag (Name : String) return Boolean + is + function tgetflag (id : char_array) return C_Int; + pragma Import (C, tgetflag, "tgetflag"); + Txt : char_array (0 .. Name'Length); + Length : size_t; + begin + To_C (Name, Txt, Length); + if tgetflag (Txt) = 0 then + return False; + else + return True; + end if; + end Get_Flag; + +------------------------------------------------------------------------------ + procedure Get_Number (Name : in String; + Value : out Integer; + Result : out Boolean) + is + function tgetnum (id : char_array) return C_Int; + pragma Import (C, tgetnum, "tgetnum"); + Txt : char_array (0 .. Name'Length); + Length : size_t; + begin + To_C (Name, Txt, Length); + Value := Integer (tgetnum (Txt)); + if Value = -1 then + Result := False; + else + Result := True; + end if; + end Get_Number; + +------------------------------------------------------------------------------ + procedure Get_String (Name : String; + Value : out String; + Result : out Boolean) + is + function tgetstr (id : char_array; + buf : char_array) return chars_ptr; + pragma Import (C, tgetstr, "tgetstr"); + Txt : char_array (0 .. Name'Length); + Length : size_t; + Txt2 : chars_ptr; + type t is new char_array (0 .. 1024); -- does it need to be 1024? + Return_Buffer : constant t := (others => nul); + begin + To_C (Name, Txt, Length); + Txt2 := tgetstr (Txt, char_array (Return_Buffer)); + if Txt2 = Null_Ptr then + Result := False; + else + Value := Fill_String (Txt2); + Result := True; + end if; + end Get_String; + + function Get_String (Name : String) return Boolean + is + function tgetstr (Id : char_array; + buf : char_array) return chars_ptr; + pragma Import (C, tgetstr, "tgetstr"); + Txt : char_array (0 .. Name'Length); + Length : size_t; + Txt2 : chars_ptr; + type t is new char_array (0 .. 1024); -- does it need to be 1024? + Phony_Txt : constant t := (others => nul); + begin + To_C (Name, Txt, Length); + Txt2 := tgetstr (Txt, char_array (Phony_Txt)); + if Txt2 = Null_Ptr then + return False; + else + return True; + end if; + end Get_String; + +------------------------------------------------------------------------------ + function TGoto (Cap : String; + Col : Column_Position; + Row : Line_Position) return Termcap_String is + function tgoto (cap : char_array; + col : C_Int; + row : C_Int) return chars_ptr; + pragma Import (C, tgoto); + Txt : char_array (0 .. Cap'Length); + Length : size_t; + begin + To_C (Cap, Txt, Length); + return Termcap_String (Fill_String + (tgoto (Txt, C_Int (Col), C_Int (Row)))); + end TGoto; + +end Terminal_Interface.Curses.Termcap; diff --git a/ncurses/Ada95/src/terminal_interface-curses-termcap.ads b/ncurses/Ada95/src/terminal_interface-curses-termcap.ads new file mode 100644 index 0000000..dd01396 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-termcap.ads @@ -0,0 +1,80 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Termcap -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.3 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +package Terminal_Interface.Curses.Termcap is + pragma Preelaborate (Terminal_Interface.Curses.Termcap); + + -- |===================================================================== + -- | Man page curs_termcap.3x + -- |===================================================================== + -- Not implemented: tputs (see curs_terminfo) + + type Termcap_String is new String; + + -- | + function TGoto (Cap : String; + Col : Column_Position; + Row : Line_Position) return Termcap_String; + -- AKA: tgoto() + + -- | + function Get_Entry (Name : String) return Boolean; + -- AKA: tgetent() + + -- | + function Get_Flag (Name : String) return Boolean; + -- AKA: tgetflag() + + -- | + procedure Get_Number (Name : String; + Value : out Integer; + Result : out Boolean); + -- AKA: tgetnum() + + -- | + procedure Get_String (Name : String; + Value : out String; + Result : out Boolean); + function Get_String (Name : String) return Boolean; + -- Returns True if the string is found. + -- AKA: tgetstr() + +end Terminal_Interface.Curses.Termcap; diff --git a/ncurses/Ada95/src/terminal_interface-curses-terminfo.adb b/ncurses/Ada95/src/terminal_interface-curses-terminfo.adb new file mode 100644 index 0000000..a3fbe25 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-terminfo.adb @@ -0,0 +1,161 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Terminfo -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2000,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.5 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Ada.Unchecked_Conversion; + +package body Terminal_Interface.Curses.Terminfo is + + function Is_MinusOne_Pointer (P : in chars_ptr) return Boolean; + + function Is_MinusOne_Pointer (P : in chars_ptr) return Boolean is + type Weird_Address is new System.Storage_Elements.Integer_Address; + Invalid_Pointer : constant Weird_Address := -1; + function To_Weird is new Ada.Unchecked_Conversion + (Source => chars_ptr, Target => Weird_Address); + begin + if To_Weird (P) = Invalid_Pointer then + return True; + else + return False; + end if; + end Is_MinusOne_Pointer; + pragma Inline (Is_MinusOne_Pointer); + +------------------------------------------------------------------------------ + function Get_Flag (Name : String) return Boolean + is + function tigetflag (id : char_array) return Curses_Bool; + pragma Import (C, tigetflag); + Txt : char_array (0 .. Name'Length); + Length : size_t; + begin + To_C (Name, Txt, Length); + if tigetflag (Txt) = Curses_Bool (Curses_True) then + return True; + else + return False; + end if; + end Get_Flag; + +------------------------------------------------------------------------------ + procedure Get_String (Name : String; + Value : out Terminfo_String; + Result : out Boolean) + is + function tigetstr (id : char_array) return chars_ptr; + pragma Import (C, tigetstr, "tigetstr"); + Txt : char_array (0 .. Name'Length); + Length : size_t; + Txt2 : chars_ptr; + begin + To_C (Name, Txt, Length); + Txt2 := tigetstr (Txt); + if Txt2 = Null_Ptr then + Result := False; + elsif Is_MinusOne_Pointer (Txt2) then + raise Curses_Exception; + else + Value := Terminfo_String (Fill_String (Txt2)); + Result := True; + end if; + end Get_String; + +------------------------------------------------------------------------------ + function Has_String (Name : String) return Boolean + is + function tigetstr (id : char_array) return chars_ptr; + pragma Import (C, tigetstr, "tigetstr"); + Txt : char_array (0 .. Name'Length); + Length : size_t; + Txt2 : chars_ptr; + begin + To_C (Name, Txt, Length); + Txt2 := tigetstr (Txt); + if Txt2 = Null_Ptr then + return False; + elsif Is_MinusOne_Pointer (Txt2) then + raise Curses_Exception; + else + return True; + end if; + end Has_String; + +------------------------------------------------------------------------------ + function Get_Number (Name : String) return Integer is + function tigetstr (s : char_array) return C_Int; + pragma Import (C, tigetstr); + Txt : char_array (0 .. Name'Length); + Length : size_t; + begin + To_C (Name, Txt, Length); + return Integer (tigetstr (Txt)); + end Get_Number; + +------------------------------------------------------------------------------ + procedure Put_String (Str : Terminfo_String; + affcnt : Natural := 1; + putc : putctype := null) is + function tputs (str : char_array; + affcnt : C_Int; + putc : putctype) return C_Int; + function putp (str : char_array) return C_Int; + pragma Import (C, tputs); + pragma Import (C, putp); + Txt : char_array (0 .. Str'Length); + Length : size_t; + Err : C_Int; + begin + To_C (String (Str), Txt, Length); + if putc = null then + Err := putp (Txt); + else + Err := tputs (Txt, C_Int (affcnt), putc); + end if; + if Err = Curses_Err then + raise Curses_Exception; + end if; + end Put_String; + +end Terminal_Interface.Curses.Terminfo; diff --git a/ncurses/Ada95/src/terminal_interface-curses-terminfo.ads b/ncurses/Ada95/src/terminal_interface-curses-terminfo.ads new file mode 100644 index 0000000..fb39bf1 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-terminfo.ads @@ -0,0 +1,81 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Terminfo -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.3 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +with Interfaces.C; + +package Terminal_Interface.Curses.Terminfo is + pragma Preelaborate (Terminal_Interface.Curses.Terminfo); + + -- |===================================================================== + -- | Man page curs_terminfo.3x + -- |===================================================================== + -- Not implemented: setupterm, setterm, set_curterm, del_curterm, + -- restartterm, tparm, putp, vidputs, vidattr, + -- mvcur + + type Terminfo_String is new String; + + -- | + procedure Get_String (Name : String; + Value : out Terminfo_String; + Result : out Boolean); + function Has_String (Name : String) return Boolean; + -- AKA: tigetstr() + + -- | + function Get_Flag (Name : String) return Boolean; + -- AKA: tigetflag() + + -- | + function Get_Number (Name : String) return Integer; + -- AKA: tigetnum() + + type putctype is access function (c : Interfaces.C.int) + return Interfaces.C.int; + pragma Convention (C, putctype); + + -- | + procedure Put_String (Str : Terminfo_String; + affcnt : Natural := 1; + putc : putctype := null); + -- AKA: tputs() + +end Terminal_Interface.Curses.Terminfo; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-aux.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-aux.adb new file mode 100644 index 0000000..06b4876 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-aux.adb @@ -0,0 +1,128 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Aux -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.12 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package body Terminal_Interface.Curses.Text_IO.Aux is + + procedure Put_Buf + (Win : in Window; + Buf : in String; + Width : in Field; + Signal : in Boolean := True; + Ljust : in Boolean := False) + is + L : Field; + Len : Field; + W : Field := Width; + LC : Line_Count; + CC : Column_Count; + Y : Line_Position; + X : Column_Position; + + procedure Output (From, To : Field); + + procedure Output (From, To : Field) + is + begin + if Len > 0 then + if W = 0 then + W := Len; + end if; + if Len > W then + -- LRM A10.6 (7) says this + W := Len; + end if; + + pragma Assert (Len <= W); + Get_Size (Win, LC, CC); + if Column_Count (Len) > CC then + if Signal then + raise Layout_Error; + else + return; + end if; + else + if Len < W and then not Ljust then + declare + Filler : constant String (1 .. (W - Len)) + := (others => ' '); + begin + Put (Win, Filler); + end; + end if; + Get_Cursor_Position (Win, Y, X); + if (X + Column_Position (Len)) > CC then + New_Line (Win); + end if; + Put (Win, Buf (From .. To)); + if Len < W and then Ljust then + declare + Filler : constant String (1 .. (W - Len)) + := (others => ' '); + begin + Put (Win, Filler); + end; + end if; + end if; + end if; + end Output; + + begin + pragma Assert (Win /= Null_Window); + if Ljust then + L := 1; + for I in 1 .. Buf'Length loop + exit when Buf (L) = ' '; + L := L + 1; + end loop; + Len := L - 1; + Output (1, Len); + else -- input buffer is not left justified + L := Buf'Length; + for I in 1 .. Buf'Length loop + exit when Buf (L) = ' '; + L := L - 1; + end loop; + Len := Buf'Length - L; + Output (L + 1, Buf'Length); + end if; + end Put_Buf; + +end Terminal_Interface.Curses.Text_IO.Aux; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-aux.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-aux.ads new file mode 100644 index 0000000..df8a9bd --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-aux.ads @@ -0,0 +1,55 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Aux -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.13 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +private package Terminal_Interface.Curses.Text_IO.Aux is + -- pragma Preelaborate (Aux); + + -- This routine is called from the Text_IO output routines for numeric + -- and enumeration types. + -- + procedure Put_Buf + (Win : in Window; -- The output window + Buf : in String; -- The buffer containing the text + Width : in Field; -- The width of the output field + Signal : in Boolean := True; -- If true, we raise Layout_Error + Ljust : in Boolean := False); -- The Buf is left justified + +end Terminal_Interface.Curses.Text_IO.Aux; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-complex_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-complex_io.adb new file mode 100644 index 0000000..3b5871e --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-complex_io.adb @@ -0,0 +1,73 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Complex_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Terminal_Interface.Curses.Text_IO.Float_IO; + +package body Terminal_Interface.Curses.Text_IO.Complex_IO is + + package FIO is new + Terminal_Interface.Curses.Text_IO.Float_IO (Complex_Types.Real'Base); + + procedure Put + (Win : in Window; + Item : in Complex; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) + is + begin + Put (Win, '('); + FIO.Put (Win, Item.Re, Fore, Aft, Exp); + Put (Win, ','); + FIO.Put (Win, Item.Im, Fore, Aft, Exp); + Put (Win, ')'); + end Put; + + procedure Put + (Item : in Complex; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) + is + begin + Put (Get_Window, Item, Fore, Aft, Exp); + end Put; + +end Terminal_Interface.Curses.Text_IO.Complex_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-complex_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-complex_io.ads new file mode 100644 index 0000000..233eb3c --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-complex_io.ads @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Complex_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Numerics.Generic_Complex_Types; + +generic + with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>); + +package Terminal_Interface.Curses.Text_IO.Complex_IO is + + use Complex_Types; + + Default_Fore : Field := 2; + Default_Aft : Field := Real'Digits - 1; + Default_Exp : Field := 3; + + procedure Put + (Win : in Window; + Item : in Complex; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + + procedure Put + (Item : in Complex; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Complex_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb new file mode 100644 index 0000000..02068a0 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb @@ -0,0 +1,75 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Decimal_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Terminal_Interface.Curses.Text_IO.Aux; + +package body Terminal_Interface.Curses.Text_IO.Decimal_IO is + + package Aux renames Terminal_Interface.Curses.Text_IO.Aux; + package DIO is new Ada.Text_IO.Decimal_IO (Num); + + procedure Put + (Win : in Window; + Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) + is + Buf : String (1 .. Field'Last); + Len : Field := Fore + 1 + Aft; + begin + if Exp > 0 then + Len := Len + 1 + Exp; + end if; + DIO.Put (Buf, Item, Aft, Exp); + Aux.Put_Buf (Win, Buf, Len, False); + end Put; + + procedure Put + (Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) is + begin + Put (Get_Window, Item, Fore, Aft, Exp); + end Put; + +end Terminal_Interface.Curses.Text_IO.Decimal_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads new file mode 100644 index 0000000..6f6fe75 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads @@ -0,0 +1,66 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Decimal_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type Num is delta <> digits <>; + +package Terminal_Interface.Curses.Text_IO.Decimal_IO is + + Default_Fore : Field := Num'Fore; + Default_Aft : Field := Num'Aft; + Default_Exp : Field := 0; + + procedure Put + (Win : in Window; + Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + + procedure Put + (Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Decimal_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb new file mode 100644 index 0000000..528873a --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb @@ -0,0 +1,80 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Enumeration_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Ada.Characters.Handling; use Ada.Characters.Handling; +with Terminal_Interface.Curses.Text_IO.Aux; + +package body Terminal_Interface.Curses.Text_IO.Enumeration_IO is + + package Aux renames Terminal_Interface.Curses.Text_IO.Aux; + package EIO is new Ada.Text_IO.Enumeration_IO (Enum); + + procedure Put + (Win : in Window; + Item : in Enum; + Width : in Field := Default_Width; + Set : in Type_Set := Default_Setting) + is + Buf : String (1 .. Field'Last); + Tset : Ada.Text_IO.Type_Set; + begin + if Set /= Mixed_Case then + Tset := Ada.Text_IO.Type_Set'Val (Type_Set'Pos (Set)); + else + Tset := Ada.Text_IO.Lower_Case; + end if; + EIO.Put (Buf, Item, Tset); + if Set = Mixed_Case then + Buf (Buf'First) := To_Upper (Buf (Buf'First)); + end if; + Aux.Put_Buf (Win, Buf, Width, True, True); + end Put; + + procedure Put + (Item : in Enum; + Width : in Field := Default_Width; + Set : in Type_Set := Default_Setting) + is + begin + Put (Get_Window, Item, Width, Set); + end Put; + +end Terminal_Interface.Curses.Text_IO.Enumeration_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads new file mode 100644 index 0000000..b221d7f --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads @@ -0,0 +1,63 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Enumeration_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type Enum is (<>); + +package Terminal_Interface.Curses.Text_IO.Enumeration_IO is + + Default_Width : Field := 0; + Default_Setting : Type_Set := Mixed_Case; + + procedure Put + (Win : in Window; + Item : in Enum; + Width : in Field := Default_Width; + Set : in Type_Set := Default_Setting); + + procedure Put + (Item : in Enum; + Width : in Field := Default_Width; + Set : in Type_Set := Default_Setting); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Enumeration_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb new file mode 100644 index 0000000..e74f148 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb @@ -0,0 +1,75 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Fixed_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Terminal_Interface.Curses.Text_IO.Aux; + +package body Terminal_Interface.Curses.Text_IO.Fixed_IO is + + package Aux renames Terminal_Interface.Curses.Text_IO.Aux; + package FIXIO is new Ada.Text_IO.Fixed_IO (Num); + + procedure Put + (Win : in Window; + Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) + is + Buf : String (1 .. Field'Last); + Len : Field := Fore + 1 + Aft; + begin + if Exp > 0 then + Len := Len + 1 + Exp; + end if; + FIXIO.Put (Buf, Item, Aft, Exp); + Aux.Put_Buf (Win, Buf, Len, False); + end Put; + + procedure Put + (Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) is + begin + Put (Get_Window, Item, Fore, Aft, Exp); + end Put; + +end Terminal_Interface.Curses.Text_IO.Fixed_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads new file mode 100644 index 0000000..4b8b136 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads @@ -0,0 +1,66 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Fixed_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type Num is delta <>; + +package Terminal_Interface.Curses.Text_IO.Fixed_IO is + + Default_Fore : Field := Num'Fore; + Default_Aft : Field := Num'Aft; + Default_Exp : Field := 0; + + procedure Put + (Win : in Window; + Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + + procedure Put + (Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Fixed_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-float_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-float_io.adb new file mode 100644 index 0000000..19d261b --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-float_io.adb @@ -0,0 +1,76 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Float_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Terminal_Interface.Curses.Text_IO.Aux; + +package body Terminal_Interface.Curses.Text_IO.Float_IO is + + package Aux renames Terminal_Interface.Curses.Text_IO.Aux; + package FIO is new Ada.Text_IO.Float_IO (Num); + + procedure Put + (Win : in Window; + Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) + is + Buf : String (1 .. Field'Last); + Len : Field := Fore + 1 + Aft; + begin + if Exp > 0 then + Len := Len + 1 + Exp; + end if; + FIO.Put (Buf, Item, Aft, Exp); + Aux.Put_Buf (Win, Buf, Len, False); + end Put; + + procedure Put + (Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp) + is + begin + Put (Get_Window, Item, Fore, Aft, Exp); + end Put; + +end Terminal_Interface.Curses.Text_IO.Float_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-float_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-float_io.ads new file mode 100644 index 0000000..0856523 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-float_io.ads @@ -0,0 +1,66 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Float_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type Num is digits <>; + +package Terminal_Interface.Curses.Text_IO.Float_IO is + + Default_Fore : Field := 2; + Default_Aft : Field := Num'Digits - 1; + Default_Exp : Field := 3; + + procedure Put + (Win : in Window; + Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + + procedure Put + (Item : in Num; + Fore : in Field := Default_Fore; + Aft : in Field := Default_Aft; + Exp : in Field := Default_Exp); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Float_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-integer_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-integer_io.adb new file mode 100644 index 0000000..e694e08 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-integer_io.adb @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Integer_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Terminal_Interface.Curses.Text_IO.Aux; + +package body Terminal_Interface.Curses.Text_IO.Integer_IO is + + package Aux renames Terminal_Interface.Curses.Text_IO.Aux; + package IIO is new Ada.Text_IO.Integer_IO (Num); + + procedure Put + (Win : in Window; + Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base) + is + Buf : String (1 .. Field'Last); + begin + IIO.Put (Buf, Item, Base); + Aux.Put_Buf (Win, Buf, Width); + end Put; + + procedure Put + (Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base) + is + begin + Put (Get_Window, Item, Width, Base); + end Put; + +end Terminal_Interface.Curses.Text_IO.Integer_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-integer_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-integer_io.ads new file mode 100644 index 0000000..d8b169a --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-integer_io.ads @@ -0,0 +1,63 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Integer_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type Num is range <>; + +package Terminal_Interface.Curses.Text_IO.Integer_IO is + + Default_Width : Field := Num'Width; + Default_Base : Number_Base := 10; + + procedure Put + (Win : in Window; + Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base); + + procedure Put + (Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Integer_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-modular_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io-modular_io.adb new file mode 100644 index 0000000..8cc1d4a --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-modular_io.adb @@ -0,0 +1,70 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Modular_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.10 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Terminal_Interface.Curses.Text_IO.Aux; + +package body Terminal_Interface.Curses.Text_IO.Modular_IO is + + package Aux renames Terminal_Interface.Curses.Text_IO.Aux; + package MIO is new Ada.Text_IO.Modular_IO (Num); + + procedure Put + (Win : in Window; + Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base) + is + Buf : String (1 .. Field'Last); + begin + MIO.Put (Buf, Item, Base); + Aux.Put_Buf (Win, Buf, Width); + end Put; + + procedure Put + (Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base) + is + begin + Put (Get_Window, Item, Width, Base); + end Put; + +end Terminal_Interface.Curses.Text_IO.Modular_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io-modular_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io-modular_io.ads new file mode 100644 index 0000000..618706f --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io-modular_io.ads @@ -0,0 +1,63 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO.Modular_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.11 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +generic + type Num is mod <>; + +package Terminal_Interface.Curses.Text_IO.Modular_IO is + + Default_Width : Field := Num'Width; + Default_Base : Number_Base := 10; + + procedure Put + (Win : in Window; + Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base); + + procedure Put + (Item : in Num; + Width : in Field := Default_Width; + Base : in Number_Base := Default_Base); + +private + pragma Inline (Put); + +end Terminal_Interface.Curses.Text_IO.Modular_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io.adb b/ncurses/Ada95/src/terminal_interface-curses-text_io.adb new file mode 100644 index 0000000..255b123 --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io.adb @@ -0,0 +1,337 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.18 $ +-- $Date: 2006/06/25 14:24:40 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package body Terminal_Interface.Curses.Text_IO is + + Default_Window : Window := Null_Window; + + procedure Set_Window (Win : in Window) + is + begin + Default_Window := Win; + end Set_Window; + + function Get_Window return Window + is + begin + if Default_Window = Null_Window then + return Standard_Window; + else + return Default_Window; + end if; + end Get_Window; + pragma Inline (Get_Window); + + procedure Flush (Win : in Window) + is + begin + Refresh (Win); + end Flush; + + procedure Flush + is + begin + Flush (Get_Window); + end Flush; + + -------------------------------------------- + -- Specification of line and page lengths -- + -------------------------------------------- + + -- There are no set routines in this package. I assume, that you allocate + -- the window with an appropriate size. + -- A scroll-window is interpreted as an page with unbounded page length, + -- i.e. it returns the conventional 0 as page length. + + function Line_Length (Win : in Window) return Count + is + N_Lines : Line_Count; + N_Cols : Column_Count; + begin + Get_Size (Win, N_Lines, N_Cols); + -- if Natural (N_Cols) > Natural (Count'Last) then + -- raise Layout_Error; + -- end if; + return Count (N_Cols); + end Line_Length; + + function Line_Length return Count + is + begin + return Line_Length (Get_Window); + end Line_Length; + + function Page_Length (Win : in Window) return Count + is + N_Lines : Line_Count; + N_Cols : Column_Count; + begin + if Scrolling_Allowed (Win) then + return 0; + else + Get_Size (Win, N_Lines, N_Cols); + -- if Natural (N_Lines) > Natural (Count'Last) then + -- raise Layout_Error; + -- end if; + return Count (N_Lines); + end if; + end Page_Length; + + function Page_Length return Count + is + begin + return Page_Length (Get_Window); + end Page_Length; + + ------------------------------------ + -- Column, Line, and Page Control -- + ------------------------------------ + procedure New_Line (Win : in Window; Spacing : in Positive_Count := 1) + is + P_Size : constant Count := Page_Length (Win); + begin + if not Spacing'Valid then + raise Constraint_Error; + end if; + + for I in 1 .. Spacing loop + if P_Size > 0 and then Line (Win) >= P_Size then + New_Page (Win); + else + Add (Win, ASCII.LF); + end if; + end loop; + end New_Line; + + procedure New_Line (Spacing : in Positive_Count := 1) + is + begin + New_Line (Get_Window, Spacing); + end New_Line; + + procedure New_Page (Win : in Window) + is + begin + Clear (Win); + end New_Page; + + procedure New_Page + is + begin + New_Page (Get_Window); + end New_Page; + + procedure Set_Col (Win : in Window; To : in Positive_Count) + is + Y : Line_Position; + X1 : Column_Position; + X2 : Column_Position; + N : Natural; + begin + if not To'Valid then + raise Constraint_Error; + end if; + + Get_Cursor_Position (Win, Y, X1); + N := Natural (To); N := N - 1; + X2 := Column_Position (N); + if X1 > X2 then + New_Line (Win, 1); + X1 := 0; + end if; + if X1 < X2 then + declare + Filler : constant String (Integer (X1) .. (Integer (X2) - 1)) + := (others => ' '); + begin + Put (Win, Filler); + end; + end if; + end Set_Col; + + procedure Set_Col (To : in Positive_Count) + is + begin + Set_Col (Get_Window, To); + end Set_Col; + + procedure Set_Line (Win : in Window; To : in Positive_Count) + is + Y1 : Line_Position; + Y2 : Line_Position; + X : Column_Position; + N : Natural; + begin + if not To'Valid then + raise Constraint_Error; + end if; + + Get_Cursor_Position (Win, Y1, X); + N := Natural (To); N := N - 1; + Y2 := Line_Position (N); + if Y2 < Y1 then + New_Page (Win); + Y1 := 0; + end if; + if Y1 < Y2 then + New_Line (Win, Positive_Count (Y2 - Y1)); + end if; + end Set_Line; + + procedure Set_Line (To : in Positive_Count) + is + begin + Set_Line (Get_Window, To); + end Set_Line; + + function Col (Win : in Window) return Positive_Count + is + Y : Line_Position; + X : Column_Position; + N : Natural; + begin + Get_Cursor_Position (Win, Y, X); + N := Natural (X); N := N + 1; + -- if N > Natural (Count'Last) then + -- raise Layout_Error; + -- end if; + return Positive_Count (N); + end Col; + + function Col return Positive_Count + is + begin + return Col (Get_Window); + end Col; + + function Line (Win : in Window) return Positive_Count + is + Y : Line_Position; + X : Column_Position; + N : Natural; + begin + Get_Cursor_Position (Win, Y, X); + N := Natural (Y); N := N + 1; + -- if N > Natural (Count'Last) then + -- raise Layout_Error; + -- end if; + return Positive_Count (N); + end Line; + + function Line return Positive_Count + is + begin + return Line (Get_Window); + end Line; + + ----------------------- + -- Characters Output -- + ----------------------- + + procedure Put (Win : in Window; Item : in Character) + is + P_Size : constant Count := Page_Length (Win); + Y : Line_Position; + X : Column_Position; + L : Line_Count; + C : Column_Count; + begin + if P_Size > 0 then + Get_Cursor_Position (Win, Y, X); + Get_Size (Win, L, C); + if (Y + 1) = L and then (X + 1) = C then + New_Page (Win); + end if; + end if; + Add (Win, Item); + end Put; + + procedure Put (Item : in Character) + is + begin + Put (Get_Window, Item); + end Put; + + -------------------- + -- Strings-Output -- + -------------------- + + procedure Put (Win : in Window; Item : in String) + is + P_Size : constant Count := Page_Length (Win); + Y : Line_Position; + X : Column_Position; + L : Line_Count; + C : Column_Count; + begin + if P_Size > 0 then + Get_Cursor_Position (Win, Y, X); + Get_Size (Win, L, C); + if (Y + 1) = L and then (X + 1 + Item'Length) >= C then + New_Page (Win); + end if; + end if; + Add (Win, Item); + end Put; + + procedure Put (Item : in String) + is + begin + Put (Get_Window, Item); + end Put; + + procedure Put_Line + (Win : in Window; + Item : in String) + is + begin + Put (Win, Item); + New_Line (Win, 1); + end Put_Line; + + procedure Put_Line + (Item : in String) + is + begin + Put_Line (Get_Window, Item); + end Put_Line; + +end Terminal_Interface.Curses.Text_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-text_io.ads b/ncurses/Ada95/src/terminal_interface-curses-text_io.ads new file mode 100644 index 0000000..2f6c48a --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-text_io.ads @@ -0,0 +1,136 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Text_IO -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.13 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Text_IO; +with Ada.IO_Exceptions; + +package Terminal_Interface.Curses.Text_IO is + + use type Ada.Text_IO.Count; + subtype Count is Ada.Text_IO.Count; + subtype Positive_Count is Count range 1 .. Count'Last; + + subtype Field is Ada.Text_IO.Field; + subtype Number_Base is Integer range 2 .. 16; + + type Type_Set is (Lower_Case, Upper_Case, Mixed_Case); + + -- For most of the routines you will see a version without a Window + -- type parameter. They will operate on a default window, which can + -- be set by the user. It is initially equal to Standard_Window. + + procedure Set_Window (Win : in Window); + -- Set Win as the default window + + function Get_Window return Window; + -- Get the current default window + + procedure Flush (Win : in Window); + procedure Flush; + + -------------------------------------------- + -- Specification of line and page lengths -- + -------------------------------------------- + + -- There are no set routines in this package. I assume, that you allocate + -- the window with an appropriate size. + -- A scroll-window is interpreted as an page with unbounded page length, + -- i.e. it returns the conventional 0 as page length. + + function Line_Length (Win : in Window) return Count; + function Line_Length return Count; + + function Page_Length (Win : in Window) return Count; + function Page_Length return Count; + + ------------------------------------ + -- Column, Line, and Page Control -- + ------------------------------------ + procedure New_Line (Win : in Window; Spacing : in Positive_Count := 1); + procedure New_Line (Spacing : in Positive_Count := 1); + + procedure New_Page (Win : in Window); + procedure New_Page; + + procedure Set_Col (Win : in Window; To : in Positive_Count); + procedure Set_Col (To : in Positive_Count); + + procedure Set_Line (Win : in Window; To : in Positive_Count); + procedure Set_Line (To : in Positive_Count); + + function Col (Win : in Window) return Positive_Count; + function Col return Positive_Count; + + function Line (Win : in Window) return Positive_Count; + function Line return Positive_Count; + + ----------------------- + -- Characters-Output -- + ----------------------- + + procedure Put (Win : in Window; Item : in Character); + procedure Put (Item : in Character); + + -------------------- + -- Strings-Output -- + -------------------- + + procedure Put (Win : in Window; Item : in String); + procedure Put (Item : in String); + + procedure Put_Line + (Win : in Window; + Item : in String); + + procedure Put_Line + (Item : in String); + + -- Exceptions + + Status_Error : exception renames Ada.IO_Exceptions.Status_Error; + Mode_Error : exception renames Ada.IO_Exceptions.Mode_Error; + Name_Error : exception renames Ada.IO_Exceptions.Name_Error; + Use_Error : exception renames Ada.IO_Exceptions.Use_Error; + Device_Error : exception renames Ada.IO_Exceptions.Device_Error; + End_Error : exception renames Ada.IO_Exceptions.End_Error; + Data_Error : exception renames Ada.IO_Exceptions.Data_Error; + Layout_Error : exception renames Ada.IO_Exceptions.Layout_Error; + +end Terminal_Interface.Curses.Text_IO; diff --git a/ncurses/Ada95/src/terminal_interface-curses-trace.adb_p b/ncurses/Ada95/src/terminal_interface-curses-trace.adb_p new file mode 100644 index 0000000..747454a --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface-curses-trace.adb_p @@ -0,0 +1,97 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Trace -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 2000,2004 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.5 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +#if ADA_TRACE then +with Interfaces.C; use Interfaces.C; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; +with Ada.Unchecked_Conversion; +#end if; + +package body Terminal_Interface.Curses.Trace is + +#if ADA_TRACE then + type C_TraceType is new C_UInt; + + function TraceAda_To_TraceC is new + Ada.Unchecked_Conversion (Source => Trace_Attribute_Set, + Target => C_TraceType); + + procedure Trace_On (x : Trace_Attribute_Set) is + procedure traceC (y : C_TraceType); + pragma Import (C, traceC, "trace"); + begin + traceC (TraceAda_To_TraceC (x)); + end Trace_On; + + -- 75. (12) A C function that takes a variable number of arguments can + -- correspond to several Ada subprograms, taking various specific + -- numbers and types of parameters. + + procedure Trace_Put (str : String) is + procedure tracef (format : char_array; s : char_array); + pragma Import (C, tracef, "_tracef"); + Txt : char_array (0 .. str'Length); + Length : size_t; + formatstr : constant String := "%s" & ASCII.Nul; + formattxt : char_array (0 .. formatstr'Length); + begin + To_C (formatstr, formattxt, Length); + To_C (str, Txt, Length); + tracef (formattxt, Txt); + end Trace_Put; +#else + procedure Trace_On (x : Trace_Attribute_Set) is +#if PRAGMA_UNREF + pragma Unreferenced (x); +#end if; + begin + null; + end Trace_On; + + procedure Trace_Put (str : String) is +#if PRAGMA_UNREF + pragma Unreferenced (str); +#end if; + begin + null; + end Trace_Put; +#end if; + +end Terminal_Interface.Curses.Trace; diff --git a/ncurses/Ada95/src/terminal_interface.ads b/ncurses/Ada95/src/terminal_interface.ads new file mode 100644 index 0000000..fdaaf9f --- /dev/null +++ b/ncurses/Ada95/src/terminal_interface.ads @@ -0,0 +1,47 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell -- +-- copies of the Software, and to permit persons to whom the Software is -- +-- furnished to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- +-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -- +-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------ +-- Author: Juergen Pfeifer, 1996 +-- Version Control: +-- $Revision: 1.14 $ +-- $Date: 2006/06/25 14:30:22 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +package Terminal_Interface is + pragma Pure (Terminal_Interface); +-- +-- Everything is in the child units +-- +end Terminal_Interface; diff --git a/ncurses/c++/Makefile.in b/ncurses/c++/Makefile.in new file mode 100644 index 0000000..96d5879 --- /dev/null +++ b/ncurses/c++/Makefile.in @@ -0,0 +1,239 @@ +# $Id: Makefile.in,v 1.84 2007/04/28 15:29:12 tom Exp $ +############################################################################## +# Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey +# +# Simple makefile for c++ window class demo + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = /bin/sh + +CF_MFLAGS = @cf_cv_makeflags@ +@SET_MAKE@ +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = ../@DFT_OBJ_SUBDIR@ +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +libdir = @libdir@ +includedir = @includedir@ + +LIBTOOL = @LIBTOOL_CXX@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ + +INSTALL = @INSTALL@ +INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = @AR@ +AR_OPTS = @AR_OPTS@ + +CXX_AR = @CXX_AR@ +CXX_AR_OPTS = @CXX_AR_OPTS@ +RANLIB = @LIB_PREP@ + +CXX = @CXX@ +CPP = @CXXCPP@ +CXXFLAGS = @CXXFLAGS@ @EXTRA_CXXFLAGS@ +CXXLIBS = @CXXLIBS@ + +INCDIR = ../include +CPPFLAGS = -I../c++ -I$(INCDIR) -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@ + +CC = ${CXX} +CCFLAGS = $(CPPFLAGS) $(CXXFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) +CFLAGS_DEBUG = $(CCFLAGS) @CXX_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ + +LOCAL_LIBDIR = @top_builddir@/lib + +LINK = @LINK_PROGS@ $(LIBTOOL_LINK) @CXXLDFLAGS@ +SHLIB_DIRS = -L../lib +SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@ + +LIBROOT = ncurses++ + +LIBNAME_LIBTOOL = @LIB_PREFIX@$(LIBROOT)@LIB_SUFFIX@.la +LIBNAME_NORMAL = @LIB_PREFIX@$(LIBROOT)@LIB_SUFFIX@.a +LIBNAME = @LIB_PREFIX@$(LIBROOT)@CXX_LIB_SUFFIX@ + +LINK_FLAGS = @EXTRA_LDFLAGS@ -L../lib -l$(LIBROOT)@LIB_SUFFIX@ + +LINK_LIBTOOL = @EXTRA_LDFLAGS@ -L../lib ../lib/$(LIBNAME) +LINK_NORMAL = $(LINK_FLAGS) +LINK_DEBUG = $(LINK_FLAGS) +LINK_PROFILE = $(LINK_FLAGS) +LINK_SHARED = $(LINK_FLAGS) + +TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ + +LDFLAGS = $(TEST_ARGS) @LDFLAGS@ \ + @LD_MODEL@ @LIBS@ @LOCAL_LDFLAGS@ $(CXXLIBS) + +LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) +LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) +LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) +LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) +LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ + +LDFLAGS_DEFAULT = $(LINK_@DFT_UPR_MODEL@) $(LDFLAGS_@DFT_UPR_MODEL@) + +AUTO_SRC = \ + etip.h + +all \ +libs :: $(AUTO_SRC) ../lib/$(LIBNAME) + +all :: demo$x + +sources : $(AUTO_SRC) + +depend : + +tags: + ctags *.[h] *.cc + +# Build a conventional library for installing, since a shared library would +# pull in all of the ncurses libraries (panel, menu, form, ncurses) as direct +# dependencies. +LIB_OBJS = \ + $(MODEL)/cursesf$o \ + $(MODEL)/cursesm$o \ + $(MODEL)/cursesw$o \ + $(MODEL)/cursespad$o \ + $(MODEL)/cursesp$o \ + $(MODEL)/cursslk$o \ + $(MODEL)/cursesapp$o \ + $(MODEL)/cursesmain$o + +../lib/$(LIBNAME_NORMAL) : $(LIB_OBJS) + $(CXX_AR) $(CXX_AR_OPTS) $@ $? + $(RANLIB) $@ + +../lib/$(LIBNAME_LIBTOOL) : $(LIB_OBJS) + cd ../lib && $(LIBTOOL_LINK) $(CXX) $(CXXFLAGS) \ + -o $(LIBNAME) $(LIB_OBJS:$o=.lo) \ + -rpath $(INSTALL_PREFIX)$(libdir) \ + -version-info $(NCURSES_MAJOR):$(NCURSES_MINOR) $(SHLIB_LIST) + +OBJS_DEMO = $(MODEL)/demo$o + +$(MODEL)/demo$o : $(srcdir)/demo.cc \ + $(cursesf_h) $(cursesm_h) $(cursesapp_h) + +demo$x: $(OBJS_DEMO) \ + ../lib/$(LIBNAME) \ + @TEST_DEPS@ + @ECHO_LINK@ $(LINK) -o $@ $(OBJS_DEMO) $(LDFLAGS_DEFAULT) + +etip.h: $(srcdir)/etip.h.in $(srcdir)/edit_cfg.sh + cp $(srcdir)/etip.h.in $@ + sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ + +$(DESTDIR)$(libdir) : + sh $(srcdir)/../mkdirs.sh $@ + +install \ +install.libs:: ../lib/$(LIBNAME) $(DESTDIR)$(libdir) + $(LIBTOOL_INSTALL) $(INSTALL_LIB) ../lib/$(LIBNAME) $(DESTDIR)$(libdir)/$(LIBNAME) + +uninstall \ +uninstall.libs:: + -$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/$(LIBNAME) + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ii *.ln *.atac trace + +clean :: mostlyclean + -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" + -rm -rf $(MODEL)/SunWS_cache + -$(LIBTOOL_CLEAN) rm -f demo$x $(AUTO_SRC) ../lib/$(LIBNAME) $(LIB_OBJS) $(OBJS_DEMO) + -rm -rf .libs + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +############################################################################### + +cursesw_h = $(srcdir)/cursesw.h \ + etip.h \ + $(INCDIR)/curses.h + +cursesp_h = $(srcdir)/cursesp.h \ + $(cursesw_h) \ + $(INCDIR)/panel.h + +cursesf_h = $(srcdir)/cursesf.h \ + $(cursesp_h) \ + $(INCDIR)/form.h + +cursesm_h = $(srcdir)/cursesm.h \ + $(cursesp_h) \ + $(INCDIR)/menu.h + +cursslk_h = $(srcdir)/cursslk.h \ + $(cursesw_h) + +cursesapp_h = $(srcdir)/cursesapp.h \ + $(cursslk_h) + +$(INCDIR)/form.h : + cd ../form && $(MAKE) $@ + +$(INCDIR)/menu.h : + cd ../menu && $(MAKE) $@ + +$(INCDIR)/panel.h : + cd ../panel && $(MAKE) $@ + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/ncurses/c++/NEWS b/ncurses/c++/NEWS new file mode 100644 index 0000000..17488a4 --- /dev/null +++ b/ncurses/c++/NEWS @@ -0,0 +1,71 @@ +------------------------------------------------------------------------------- +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- +-- $Id: NEWS,v 1.4 2006/04/22 22:19:37 tom Exp $ +------------------------------------------------------------------------------- +This is a log of changes that the ncurses C++ binding has gone +through starting with the integration of menu and forms integration +into the binding. + +990731 + Improve support for pads. A viewport window may now be added to + a pad. It will then be possible to use a builtin panning mechanism + to view the pad. + +970908 + Improve NCursesWindow class: added additional methods to + cover more ncurses functionality. Make refresh() and + noutrefresh() virtual members to allow different implementation + in the NCursesPanel class. + + CAUTION: changed order of parameters in vline() and hline() of + NCursesWindow class. + + Make refresh() in NCursesPanel non-static, it is now a + reimplementation of refresh() in the base class. Added + noutrefresh() to NCursesPanel. + + Added NCursesForm and related classes to support libform + functionality. + + Moved most of configuration related stuff from cursesw.h to + etip.h + + Added NCursesApplication class to support easy configuration + of menu and forms related attributes as well as ripped of + title lines and Soft-Label-Keys for an application. + + Support of Auto-Cleanup for a menus fieldlist. + + Change of return type for current_item() and operator[] for + menus. + + Enhanced demo. +970502 + + Introduced the THROW and THROWS functions/macros to prepare + a smoother transition to real exception handling. + + Exception classes provided in etip.h + + Added the NCursesMenu class to support libmenu functionality. + + The inheritace relation between NCursesWindow and NCursesColorWindow + was kind of brain damage. Monochrome is a special case of colored, so + the relation should be just the opposite. This would allow all + derived classes like NCursesPanel, NCursesMenu or NCursesForm to + have colors. + To resolve that design flaw I put the color functionality into the + NCursesWindow class and it can be switched on by the static member + useColors(). NCursesColorWindow is still there for compatibility + reasons. diff --git a/ncurses/c++/PROBLEMS b/ncurses/c++/PROBLEMS new file mode 100644 index 0000000..7f2a7df --- /dev/null +++ b/ncurses/c++/PROBLEMS @@ -0,0 +1,34 @@ +------------------------------------------------------------------------------- +-- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- +-- $Id: PROBLEMS,v 1.3 2006/04/22 22:19:37 tom Exp $ +------------------------------------------------------------------------------- +This is a list of open problems. This mainly lists known missing pieces +and design flaws. + +1. Testing!!! +2. Better demo program diff --git a/ncurses/c++/README-first b/ncurses/c++/README-first new file mode 100644 index 0000000..42487f5 --- /dev/null +++ b/ncurses/c++/README-first @@ -0,0 +1,80 @@ +------------------------------------------------------------------------------- +-- Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. -- +-- -- +-- Permission is hereby granted, free of charge, to any person obtaining a -- +-- copy of this software and associated documentation files (the -- +-- "Software"), to deal in the Software without restriction, including -- +-- without limitation the rights to use, copy, modify, merge, publish, -- +-- distribute, distribute with modifications, sublicense, and/or sell copies -- +-- of the Software, and to permit persons to whom the Software is furnished -- +-- to do so, subject to the following conditions: -- +-- -- +-- The above copyright notice and this permission notice shall be included -- +-- in all copies or substantial portions of the Software. -- +-- -- +-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- +-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- +-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- +-- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- +-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- +-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- +-- USE OR OTHER DEALINGS IN THE SOFTWARE. -- +-- -- +-- Except as contained in this notice, the name(s) of the above copyright -- +-- holders shall not be used in advertising or otherwise to promote the -- +-- sale, use or other dealings in this Software without prior written -- +-- authorization. -- +------------------------------------------------------------------------------- +-- $Id: README-first,v 1.9 2007/01/27 18:27:09 tom Exp $ +------------------------------------------------------------------------------- + C++ interface to ncurses routines +----------------------------------------------------------------------- + +This directory contains the source code for several C++ classes which +ease the use of writing ncurses-based programs. The code was originally +derived from the libg++ CursesWindow class, but rewritten for ncurses. + +The classes simplify the use of window specific functions by +encapsulating them in the window object. Function overloading is +used in order to narrow the interface. For example, you do not have the +distinction between `printw' and `mvprintw' anymore. + +A second benefit is the removal of all #defines which are included in +the curses.h file. This is a steady cause of trouble because many +common identifiers are used. Instead now all #defines are inline +functions, which also allows strict type checking of arguments. + +The next enhancement is color support. It was originally provided by a +derived class. This caused some trouble if you think about Panels or +Menus and Forms with colors. We decided to put color support into the +base class so that any derived class may use color support also. +The implementation chosen here is directed to unrestricted use +of mixes of color and monochrome windows. The original NCursesColorWindow +class is maintained for compatibility reasons. + +The last point to mention is the support of other packages that are +distributed with the ncurses package: the panels library, the menu library +and the form library. This support is provided by the NCursesPanel class, +which is also derived from the NCursesWindow class and the NCursesMenu +and NCursesForm classes which are derived from NCursesPanel. This allows +building interfaces with windows. + +Please see the example program for a quick introduction. + +Note that at this point, there is no documentation for these classes. +Hopefully some will be written in the not too distant future. For now, +to find out how to use the classes, read the code and the example program. + +Suggestions for enhancements and contributions of code (and docs) are +welcome. Please let us know which functionality you miss. + +Original author: + Eric Newton for FSF's libg++ + +Authors of first ncurses based release (NCursesWindow, NCursesPanel): + Ulrich Drepper + and Anatoly Ivasyuk + +Authors of this release: + Juergen Pfeifer + Thomas E. Dickey diff --git a/ncurses/c++/cursesapp.cc b/ncurses/c++/cursesapp.cc new file mode 100644 index 0000000..ddab6fd --- /dev/null +++ b/ncurses/c++/cursesapp.cc @@ -0,0 +1,164 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + * and: Thomas E. Dickey * + ****************************************************************************/ + +#include "internal.h" +#include "cursesapp.h" + +MODULE_ID("$Id: cursesapp.cc,v 1.15 2008/08/16 17:15:35 tom Exp $") + +void +NCursesApplication::init(bool bColors) +{ + if (bColors) + NCursesWindow::useColors(); + + if (Root_Window->colors() > 1) { + b_Colors = TRUE; + Root_Window->setcolor(1); + Root_Window->setpalette(COLOR_YELLOW,COLOR_BLUE); + Root_Window->setcolor(2); + Root_Window->setpalette(COLOR_CYAN,COLOR_BLUE); + Root_Window->setcolor(3); + Root_Window->setpalette(COLOR_BLACK,COLOR_BLUE); + Root_Window->setcolor(4); + Root_Window->setpalette(COLOR_BLACK,COLOR_CYAN); + Root_Window->setcolor(5); + Root_Window->setpalette(COLOR_BLUE,COLOR_YELLOW); + Root_Window->setcolor(6); + Root_Window->setpalette(COLOR_BLACK,COLOR_GREEN); + } + else + b_Colors = FALSE; + + Root_Window->bkgd(' '|window_backgrounds()); +} + +NCursesApplication* NCursesApplication::theApp = 0; +NCursesWindow* NCursesApplication::titleWindow = 0; +NCursesApplication::SLK_Link* NCursesApplication::slk_stack = 0; + +NCursesApplication::~NCursesApplication() +{ + Soft_Label_Key_Set* S; + + delete titleWindow; + titleWindow = 0; + + while( (S=top()) ) { + pop(); + delete S; + } + + delete Root_Window; + Root_Window = 0; + + ::endwin(); +} + +int NCursesApplication::rinit(NCursesWindow& w) +{ + titleWindow = &w; + return OK; +} + +void NCursesApplication::push(Soft_Label_Key_Set& S) +{ + SLK_Link* L = new SLK_Link; + assert(L != 0); + L->prev = slk_stack; + L->SLKs = &S; + slk_stack = L; + if (Root_Window) + S.show(); +} + +bool NCursesApplication::pop() +{ + if (slk_stack) { + SLK_Link* L = slk_stack; + slk_stack = slk_stack->prev; + delete L; + if (Root_Window) { + Soft_Label_Key_Set* xx = top(); + if (xx != 0) + xx->show(); + } + } + return (slk_stack ? FALSE : TRUE); +} + +Soft_Label_Key_Set* NCursesApplication::top() const +{ + if (slk_stack) + return slk_stack->SLKs; + else + return static_cast(0); +} + +int NCursesApplication::operator()(void) +{ + bool bColors = b_Colors; + Soft_Label_Key_Set* S = 0; + + int ts = titlesize(); + if (ts>0) + NCursesWindow::ripoffline(ts,rinit); + Soft_Label_Key_Set::Label_Layout fmt = useSLKs(); + if (fmt!=Soft_Label_Key_Set::None) { + S = new Soft_Label_Key_Set(fmt); + assert(S != 0); + init_labels(*S); + } + + Root_Window = new NCursesWindow(::stdscr); + init(bColors); + + if (ts>0) + title(); + if (fmt!=Soft_Label_Key_Set::None) { + push(*S); + } + + return run(); +} + +NCursesApplication::NCursesApplication(bool bColors) + : b_Colors(bColors), + Root_Window(NULL) +{ + if (theApp) + THROW(new NCursesException("Application object already created.")); + else + theApp = this; +} diff --git a/ncurses/c++/cursesapp.h b/ncurses/c++/cursesapp.h new file mode 100644 index 0000000..7e995d2 --- /dev/null +++ b/ncurses/c++/cursesapp.h @@ -0,0 +1,176 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +// $Id: cursesapp.h,v 1.11 2005/05/28 21:57:44 tom Exp $ + +#ifndef NCURSES_CURSESAPP_H_incl +#define NCURSES_CURSESAPP_H_incl + +#include + +class NCURSES_IMPEXP NCursesApplication { +public: + typedef struct _slk_link { // This structure is used to maintain + struct _slk_link* prev; // a stack of SLKs + Soft_Label_Key_Set* SLKs; + } SLK_Link; +private: + static int rinit(NCursesWindow& w); // Internal Init function for title + static NCursesApplication* theApp; // Global ref. to the application + + static SLK_Link* slk_stack; + +protected: + static NCursesWindow* titleWindow; // The Title Window (if any) + + bool b_Colors; // Is this a color application? + NCursesWindow* Root_Window; // This is the stdscr equiv. + + // Initialization of attributes; + // Rewrite this in your derived class if you prefer other settings + virtual void init(bool bColors); + + // The number of lines for the title window. Default is no title window + // You may rewrite this in your derived class + virtual int titlesize() const { + return 0; + } + + // This method is called to put something into the title window initially + // You may rewrite this in your derived class + virtual void title() { + } + + // The layout used for the Soft Label Keys. Default is to have no SLKs. + // You may rewrite this in your derived class + virtual Soft_Label_Key_Set::Label_Layout useSLKs() const { + return Soft_Label_Key_Set::None; + } + + // This method is called to initialize the SLKs. Default is nothing. + // You may rewrite this in your derived class + virtual void init_labels(Soft_Label_Key_Set& S) const { + } + + // Your derived class must implement this method. The return value must + // be the exit value of your application. + virtual int run() = 0; + + // The constructor is protected, so you may use it in your derived + // class constructor. The argument tells whether or not you want colors. + NCursesApplication(bool wantColors = FALSE); + + NCursesApplication& operator=(const NCursesApplication& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + NCursesApplication(const NCursesApplication& rhs) + : b_Colors(rhs.b_Colors), + Root_Window(rhs.Root_Window) + { + } + +public: + virtual ~NCursesApplication(); + + // Get a pointer to the current application object + static NCursesApplication* getApplication() { + return theApp; + } + + // This method runs the application and returns its exit value + int operator()(void); + + // Process the commandline arguments. The default implementation simply + // ignores them. Your derived class may rewrite this. + virtual void handleArgs(int argc, char* argv[]) { + } + + // Does this application use colors? + inline bool useColors() const { + return b_Colors; + } + + // Push the Key Set S onto the SLK Stack. S then becomes the current set + // of Soft Labelled Keys. + void push(Soft_Label_Key_Set& S); + + // Throw away the current set of SLKs and make the previous one the + // new current set. + bool pop(); + + // Retrieve the current set of Soft Labelled Keys. + Soft_Label_Key_Set* top() const; + + // Attributes to use for menu and forms foregrounds + virtual chtype foregrounds() const { + return b_Colors ? COLOR_PAIR(1) : A_BOLD; + } + + // Attributes to use for menu and forms backgrounds + virtual chtype backgrounds() const { + return b_Colors ? COLOR_PAIR(2) : A_NORMAL; + } + + // Attributes to use for inactive (menu) elements + virtual chtype inactives() const { + return b_Colors ? (COLOR_PAIR(3)|A_DIM) : A_DIM; + } + + // Attributes to use for (form) labels and SLKs + virtual chtype labels() const { + return b_Colors ? COLOR_PAIR(4) : A_NORMAL; + } + + // Attributes to use for form backgrounds + virtual chtype dialog_backgrounds() const { + return b_Colors ? COLOR_PAIR(4) : A_NORMAL; + } + + // Attributes to use as default for (form) window backgrounds + virtual chtype window_backgrounds() const { + return b_Colors ? COLOR_PAIR(5) : A_NORMAL; + } + + // Attributes to use for the title window + virtual chtype screen_titles() const { + return b_Colors ? COLOR_PAIR(6) : A_BOLD; + } + +}; + +#endif /* NCURSES_CURSESAPP_H_incl */ diff --git a/ncurses/c++/cursesf.cc b/ncurses/c++/cursesf.cc new file mode 100644 index 0000000..aaf1202 --- /dev/null +++ b/ncurses/c++/cursesf.cc @@ -0,0 +1,454 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +#include "internal.h" +#include "cursesf.h" +#include "cursesapp.h" + +MODULE_ID("$Id: cursesf.cc,v 1.21 2005/08/13 18:09:06 tom Exp $") + +NCursesFormField::~NCursesFormField () +{ + if (field) + OnError(::free_field (field)); +} + +/* Construct a FIELD* array from an array of NCursesFormField + * objects. + */ +FIELD** +NCursesForm::mapFields(NCursesFormField* nfields[]) +{ + int fieldCount = 0,lcv; + FIELD** old_fields; + + assert(nfields != 0); + + for (lcv=0; nfields[lcv]->field; ++lcv) + ++fieldCount; + + FIELD** fields = new FIELD*[fieldCount + 1]; + + for (lcv=0;nfields[lcv]->field;++lcv) { + fields[lcv] = nfields[lcv]->field; + } + fields[lcv] = NULL; + + my_fields = nfields; + + if (form && (old_fields = ::form_fields(form))) { + ::set_form_fields(form, static_cast(0)); + delete[] old_fields; + } + return fields; +} + +void NCursesForm::setDefaultAttributes() +{ + NCursesApplication* S = NCursesApplication::getApplication(); + + int n = count(); + if (n > 0) { + for(int i=0; ioptions() & (O_EDIT|O_ACTIVE))==(O_EDIT|O_ACTIVE)) { + if (S) { + f->set_foreground(S->foregrounds()); + f->set_background(S->backgrounds()); + } + f->set_pad_character('_'); + } + else { + if (S) + f->set_background(S->labels()); + } + } + } + + if (S) { + bkgd(' '|S->dialog_backgrounds()); + if (sub) + sub->bkgd(' '|S->dialog_backgrounds()); + } +} + +void +NCursesForm::InitForm(NCursesFormField* nfields[], + bool with_frame, + bool autoDelete_Fields) +{ + int mrows, mcols; + + keypad(TRUE); + meta(TRUE); + + b_framed = with_frame; + b_autoDelete = autoDelete_Fields; + + form = static_cast(0); + form = ::new_form(mapFields(nfields)); + if (!form) + OnError (E_SYSTEM_ERROR); + + UserHook* hook = new UserHook; + hook->m_user = NULL; + hook->m_back = this; + hook->m_owner = form; + ::set_form_userptr(form, reinterpret_cast(hook)); + + ::set_form_init (form, _nc_xx_frm_init); + ::set_form_term (form, _nc_xx_frm_term); + ::set_field_init (form, _nc_xx_fld_init); + ::set_field_term (form, _nc_xx_fld_term); + + scale(mrows, mcols); + ::set_form_win(form, w); + + if (with_frame) { + if ((mrows > height()-2) || (mcols > width()-2)) + OnError(E_NO_ROOM); + sub = new NCursesWindow(*this,mrows,mcols,1,1,'r'); + ::set_form_sub(form, sub->w); + b_sub_owner = TRUE; + } + else { + sub = static_cast(0); + b_sub_owner = FALSE; + } + options_on(O_NL_OVERLOAD); + setDefaultAttributes(); +} + +NCursesForm::~NCursesForm() +{ + UserHook* hook = reinterpret_cast(::form_userptr(form)); + delete hook; + if (b_sub_owner) { + delete sub; + ::set_form_sub(form, static_cast(0)); + } + if (form) { + FIELD** fields = ::form_fields(form); + int cnt = count(); + + OnError(::set_form_fields(form, static_cast(0))); + + if (b_autoDelete) { + if (cnt>0) { + for (int i=0; i <= cnt; i++) + delete my_fields[i]; + } + delete[] my_fields; + } + + ::free_form(form); + // It's essential to do this after free_form() + delete[] fields; + } +} + +void +NCursesForm::setSubWindow(NCursesWindow& nsub) +{ + if (!isDescendant(nsub)) + OnError(E_SYSTEM_ERROR); + else { + if (b_sub_owner) + delete sub; + sub = ⊄ + ::set_form_sub(form,sub->w); + } +} + +/* Internal hook functions. They will route the hook + * calls to virtual methods of the NCursesForm class, + * so in C++ providing a hook is done simply by + * implementing a virtual method in a derived class + */ +void +_nc_xx_frm_init(FORM *f) +{ + NCursesForm::getHook(f)->On_Form_Init(); +} + +void +_nc_xx_frm_term(FORM *f) +{ + NCursesForm::getHook(f)->On_Form_Termination(); +} + +void +_nc_xx_fld_init(FORM *f) +{ + NCursesForm* F = NCursesForm::getHook(f); + F->On_Field_Init (*(F->current_field ())); +} + +void +_nc_xx_fld_term(FORM *f) +{ + NCursesForm* F = NCursesForm::getHook(f); + F->On_Field_Termination (*(F->current_field ())); +} + +void +NCursesForm::On_Form_Init() +{ +} + +void +NCursesForm::On_Form_Termination() +{ +} + +void +NCursesForm::On_Field_Init(NCursesFormField& field) +{ +} + +void +NCursesForm::On_Field_Termination(NCursesFormField& field) +{ +} + +// call the form driver and do basic error checking. +int +NCursesForm::driver (int c) +{ + int res = ::form_driver (form, c); + switch (res) { + case E_OK: + case E_REQUEST_DENIED: + case E_INVALID_FIELD: + case E_UNKNOWN_COMMAND: + break; + default: + OnError (res); + } + return (res); +} + +void NCursesForm::On_Request_Denied(int c) const +{ + ::beep(); +} + +void NCursesForm::On_Invalid_Field(int c) const +{ + ::beep(); +} + +void NCursesForm::On_Unknown_Command(int c) const +{ + ::beep(); +} + +static const int CMD_QUIT = MAX_COMMAND + 1; + +NCursesFormField* +NCursesForm::operator()(void) +{ + int drvCmnd; + int err; + int c; + + post(); + show(); + refresh(); + + while (((drvCmnd = virtualize((c=getKey()))) != CMD_QUIT)) { + switch((err=driver(drvCmnd))) { + case E_REQUEST_DENIED: + On_Request_Denied(c); + break; + case E_INVALID_FIELD: + On_Invalid_Field(c); + break; + case E_UNKNOWN_COMMAND: + On_Unknown_Command(c); + break; + case E_OK: + break; + default: + OnError(err); + } + } + + unpost(); + hide(); + refresh(); + return my_fields[::field_index (::current_field (form))]; +} + +// Provide a default key virtualization. Translate the keyboard +// code c into a form request code. +// The default implementation provides a hopefully straightforward +// mapping for the most common keystrokes and form requests. +int +NCursesForm::virtualize(int c) +{ + switch(c) { + + case KEY_HOME : return(REQ_FIRST_FIELD); + case KEY_END : return(REQ_LAST_FIELD); + + case KEY_DOWN : return(REQ_DOWN_CHAR); + case KEY_UP : return(REQ_UP_CHAR); + case KEY_LEFT : return(REQ_PREV_CHAR); + case KEY_RIGHT : return(REQ_NEXT_CHAR); + + case KEY_NPAGE : return(REQ_NEXT_PAGE); + case KEY_PPAGE : return(REQ_PREV_PAGE); + + case KEY_BACKSPACE : return(REQ_DEL_PREV); + case KEY_ENTER : return(REQ_NEW_LINE); + case KEY_CLEAR : return(REQ_CLR_FIELD); + + case CTRL('X') : return(CMD_QUIT); // eXit + + case CTRL('F') : return(REQ_NEXT_FIELD); // Forward + case CTRL('B') : return(REQ_PREV_FIELD); // Backward + case CTRL('L') : return(REQ_LEFT_FIELD); // Left + case CTRL('R') : return(REQ_RIGHT_FIELD); // Right + case CTRL('U') : return(REQ_UP_FIELD); // Up + case CTRL('D') : return(REQ_DOWN_FIELD); // Down + + case CTRL('W') : return(REQ_NEXT_WORD); + case CTRL('T') : return(REQ_PREV_WORD); + + case CTRL('A') : return(REQ_BEG_FIELD); + case CTRL('E') : return(REQ_END_FIELD); + + case CTRL('I') : return(REQ_INS_CHAR); + case CTRL('M') : + case CTRL('J') : return(REQ_NEW_LINE); + case CTRL('O') : return(REQ_INS_LINE); + case CTRL('V') : return(REQ_DEL_CHAR); + case CTRL('H') : return(REQ_DEL_PREV); + case CTRL('Y') : return(REQ_DEL_LINE); + case CTRL('G') : return(REQ_DEL_WORD); + case CTRL('K') : return(REQ_CLR_EOF); + + case CTRL('N') : return(REQ_NEXT_CHOICE); + case CTRL('P') : return(REQ_PREV_CHOICE); + + default: + return(c); + } +} +// +// ------------------------------------------------------------------------- +// User Defined Fieldtypes +// ------------------------------------------------------------------------- +// +bool _nc_xx_fld_fcheck(FIELD *f, const void *u) +{ + NCursesFormField* F = reinterpret_cast(const_cast(u)); + assert(F != 0); + UserDefinedFieldType* udf = reinterpret_cast(F->fieldtype()); + assert(udf != 0); + return udf->field_check(*F); +} + +bool _nc_xx_fld_ccheck(int c, const void *u) +{ + NCursesFormField* F = reinterpret_cast(const_cast(u)); + assert(F != 0); + UserDefinedFieldType* udf = + reinterpret_cast(F->fieldtype()); + assert(udf != 0); + return udf->char_check(c); +} + +void* _nc_xx_fld_makearg(va_list* va) +{ + return va_arg(*va,NCursesFormField*); +} + +FIELDTYPE* UserDefinedFieldType::generic_fieldtype = + ::new_fieldtype(_nc_xx_fld_fcheck, + _nc_xx_fld_ccheck); + +FIELDTYPE* UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice = + ::new_fieldtype(_nc_xx_fld_fcheck, + _nc_xx_fld_ccheck); + +bool _nc_xx_next_choice(FIELD *f, const void *u) +{ + NCursesFormField* F = reinterpret_cast(const_cast(u)); + assert(F != 0); + UserDefinedFieldType_With_Choice* udf = + reinterpret_cast(F->fieldtype()); + assert(udf != 0); + return udf->next(*F); +} + +bool _nc_xx_prev_choice(FIELD *f, const void *u) +{ + NCursesFormField* F = reinterpret_cast(const_cast(u)); + assert(F != 0); + UserDefinedFieldType_With_Choice* udf = + reinterpret_cast(F->fieldtype()); + assert(udf != 0); + return udf->previous(*F); +} + +class UDF_Init +{ +private: + int code; + static UDF_Init* I; + +public: + UDF_Init() + : code(0) + { + code = ::set_fieldtype_arg(UserDefinedFieldType::generic_fieldtype, + _nc_xx_fld_makearg, + NULL, + NULL); + if (code==E_OK) + code = ::set_fieldtype_arg + (UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice, + _nc_xx_fld_makearg, + NULL, + NULL); + if (code==E_OK) + code = ::set_fieldtype_choice + (UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice, + _nc_xx_next_choice, + _nc_xx_prev_choice); + } +}; + +UDF_Init* UDF_Init::I = new UDF_Init(); diff --git a/ncurses/c++/cursesf.h b/ncurses/c++/cursesf.h new file mode 100644 index 0000000..70a30c3 --- /dev/null +++ b/ncurses/c++/cursesf.h @@ -0,0 +1,967 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +// $Id: cursesf.h,v 1.28 2005/08/13 18:08:24 tom Exp $ + +#ifndef NCURSES_CURSESF_H_incl +#define NCURSES_CURSESF_H_incl 1 + +#include + +#ifndef __EXT_QNX +#include +#endif + +extern "C" { +# include +} +// +// ------------------------------------------------------------------------- +// The abstract base class for buitin and user defined Fieldtypes. +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP NCursesFormField; // forward declaration + +// Class to represent builtin field types as well as C++ written new +// fieldtypes (see classes UserDefineFieldType... +class NCURSES_IMPEXP NCursesFieldType +{ + friend class NCursesFormField; + +protected: + FIELDTYPE* fieldtype; + + inline void OnError(int err) const THROWS(NCursesFormException) { + if (err!=E_OK) + THROW(new NCursesFormException (err)); + } + + NCursesFieldType(FIELDTYPE *f) : fieldtype(f) { + } + + virtual ~NCursesFieldType() {} + + // Set the fields f fieldtype to this one. + virtual void set(NCursesFormField& f) = 0; + +public: + NCursesFieldType() + : fieldtype(STATIC_CAST(FIELDTYPE*)(0)) + { + } + + NCursesFieldType& operator=(const NCursesFieldType& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + NCursesFieldType(const NCursesFieldType& rhs) + : fieldtype(rhs.fieldtype) + { + } + +}; + +// +// ------------------------------------------------------------------------- +// The class representing a forms field, wrapping the lowlevel FIELD struct +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP NCursesFormField +{ + friend class NCursesForm; + +protected: + FIELD *field; // lowlevel structure + NCursesFieldType* ftype; // Associated field type + + // Error handler + inline void OnError (int err) const THROWS(NCursesFormException) { + if (err != E_OK) + THROW(new NCursesFormException (err)); + } + +public: + // Create a 'Null' field. Can be used to delimit a field list + NCursesFormField() + : field(STATIC_CAST(FIELD*)(0)), + ftype(STATIC_CAST(NCursesFieldType*)(0)) + { + } + + // Create a new field + NCursesFormField (int rows, + int ncols, + int first_row = 0, + int first_col = 0, + int offscreen_rows = 0, + int additional_buffers = 0) + : field(0), + ftype(STATIC_CAST(NCursesFieldType*)(0)) + { + field = ::new_field(rows, ncols, first_row, first_col, + offscreen_rows, additional_buffers); + if (!field) + OnError(errno); + } + + NCursesFormField& operator=(const NCursesFormField& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + NCursesFormField(const NCursesFormField& rhs) + : field(rhs.field), ftype(rhs.ftype) + { + } + + virtual ~NCursesFormField (); + + // Duplicate the field at a new position + inline NCursesFormField* dup(int first_row, int first_col) + { + NCursesFormField* f = new NCursesFormField(); + if (!f) + OnError(E_SYSTEM_ERROR); + else { + f->ftype = ftype; + f->field = ::dup_field(field,first_row,first_col); + if (!f->field) + OnError(errno); + } + return f; + } + + // Link the field to a new location + inline NCursesFormField* link(int first_row, int first_col) { + NCursesFormField* f = new NCursesFormField(); + if (!f) + OnError(E_SYSTEM_ERROR); + else { + f->ftype = ftype; + f->field = ::link_field(field,first_row,first_col); + if (!f->field) + OnError(errno); + } + return f; + } + + // Get the lowlevel field representation + inline FIELD* get_field() const { + return field; + } + + // Retrieve info about the field + inline void info(int& rows, int& ncols, + int& first_row, int& first_col, + int& offscreen_rows, int& additional_buffers) const { + OnError(::field_info(field, &rows, &ncols, + &first_row, &first_col, + &offscreen_rows, &additional_buffers)); + } + + // Retrieve info about the fields dynamic properties. + inline void dynamic_info(int& dynamic_rows, int& dynamic_cols, + int& max_growth) const { + OnError(::dynamic_field_info(field, &dynamic_rows, &dynamic_cols, + &max_growth)); + } + + // For a dynamic field you may set the maximum growth limit. + // A zero means unlimited growth. + inline void set_maximum_growth(int growth = 0) { + OnError(::set_max_field(field,growth)); + } + + // Move the field to a new position + inline void move(int row, int col) { + OnError(::move_field(field,row,col)); + } + + // Mark the field to start a new page + inline void new_page(bool pageFlag = FALSE) { + OnError(::set_new_page(field,pageFlag)); + } + + // Retrieve whether or not the field starts a new page. + inline bool is_new_page() const { + return ::new_page(field); + } + + // Set the justification for the field + inline void set_justification(int just) { + OnError(::set_field_just(field,just)); + } + + // Retrieve the fields justification + inline int justification() const { + return ::field_just(field); + } + // Set the foreground attribute for the field + inline void set_foreground(chtype foreground) { + OnError(::set_field_fore(field,foreground)); + } + + // Retrieve the fields foreground attribute + inline chtype fore() const { + return ::field_fore(field); + } + + // Set the background attribute for the field + inline void set_background(chtype background) { + OnError(::set_field_back(field,background)); + } + + // Retrieve the fields background attribute + inline chtype back() const { + return ::field_back(field); + } + + // Set the padding character for the field + inline void set_pad_character(int padding) { + OnError(::set_field_pad(field, padding)); + } + + // Retrieve the fields padding character + inline int pad() const { + return ::field_pad(field); + } + + // Switch on the fields options + inline void options_on (Field_Options opts) { + OnError (::field_opts_on (field, opts)); + } + + // Switch off the fields options + inline void options_off (Field_Options opts) { + OnError (::field_opts_off (field, opts)); + } + + // Retrieve the fields options + inline Field_Options options () const { + return ::field_opts (field); + } + + // Set the fields options + inline void set_options (Field_Options opts) { + OnError (::set_field_opts (field, opts)); + } + + // Mark the field as changed + inline void set_changed(bool changeFlag = TRUE) { + OnError(::set_field_status(field,changeFlag)); + } + + // Test whether or not the field is marked as changed + inline bool changed() const { + return ::field_status(field); + } + + // Return the index of the field in the field array of a form + // or -1 if the field is not associated to a form + inline int (index)() const { + return ::field_index(field); + } + + // Store a value in a fields buffer. The default buffer is nr. 0 + inline void set_value(const char *val, int buffer = 0) { + OnError(::set_field_buffer(field,buffer,val)); + } + + // Retrieve the value of a fields buffer. The default buffer is nr. 0 + inline char* value(int buffer = 0) const { + return ::field_buffer(field,buffer); + } + + // Set the validation type of the field. + inline void set_fieldtype(NCursesFieldType& f) { + ftype = &f; + f.set(*this); // A good friend may do that... + } + + // Retrieve the validation type of the field. + inline NCursesFieldType* fieldtype() const { + return ftype; + } + +}; + + // This are the built-in hook functions in this C++ binding. In C++ we use + // virtual member functions (see below On_..._Init and On_..._Termination) + // to provide this functionality in an object oriented manner. +extern "C" { + void _nc_xx_frm_init(FORM *); + void _nc_xx_frm_term(FORM *); + void _nc_xx_fld_init(FORM *); + void _nc_xx_fld_term(FORM *); +} + +// +// ------------------------------------------------------------------------- +// The class representing a form, wrapping the lowlevel FORM struct +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP NCursesForm : public NCursesPanel +{ +protected: + FORM* form; // the lowlevel structure + +private: + NCursesWindow* sub; // the subwindow object + bool b_sub_owner; // is this our own subwindow? + bool b_framed; // has the form a border? + bool b_autoDelete; // Delete fields when deleting form? + + NCursesFormField** my_fields; // The array of fields for this form + + // This structure is used for the form's user data field to link the + // FORM* to the C++ object and to provide extra space for a user pointer. + typedef struct { + void* m_user; // the pointer for the user's data + const NCursesForm* m_back; // backward pointer to C++ object + const FORM* m_owner; + } UserHook; + + // Get the backward pointer to the C++ object from a FORM + static inline NCursesForm* getHook(const FORM *f) { + UserHook* hook = reinterpret_cast(::form_userptr(f)); + assert(hook != 0 && hook->m_owner==f); + return const_cast(hook->m_back); + } + + friend void _nc_xx_frm_init(FORM *); + friend void _nc_xx_frm_term(FORM *); + friend void _nc_xx_fld_init(FORM *); + friend void _nc_xx_fld_term(FORM *); + + // Calculate FIELD* array for the menu + FIELD** mapFields(NCursesFormField* nfields[]); + +protected: + // internal routines + inline void set_user(void *user) { + UserHook* uptr = reinterpret_cast(::form_userptr (form)); + assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form); + uptr->m_user = user; + } + + inline void *get_user() { + UserHook* uptr = reinterpret_cast(::form_userptr (form)); + assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form); + return uptr->m_user; + } + + void InitForm (NCursesFormField* Fields[], + bool with_frame, + bool autoDeleteFields); + + inline void OnError (int err) const THROWS(NCursesFormException) { + if (err != E_OK) + THROW(new NCursesFormException (err)); + } + + // this wraps the form_driver call. + virtual int driver (int c) ; + + // 'Internal' constructor, builds an object without association to a + // field array. + NCursesForm( int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0) + : NCursesPanel(nlines, ncols, begin_y, begin_x), + form (STATIC_CAST(FORM*)(0)), + sub(0), + b_sub_owner(0), + b_framed(0), + b_autoDelete(0), + my_fields(0) + { + } + +public: + // Create form for the default panel. + NCursesForm (NCursesFormField* Fields[], + bool with_frame=FALSE, // reserve space for a frame? + bool autoDelete_Fields=FALSE) // do automatic cleanup? + : NCursesPanel(), + form(0), + sub(0), + b_sub_owner(0), + b_framed(0), + b_autoDelete(0), + my_fields(0) + { + InitForm(Fields, with_frame, autoDelete_Fields); + } + + // Create a form in a panel with the given position and size. + NCursesForm (NCursesFormField* Fields[], + int nlines, + int ncols, + int begin_y, + int begin_x, + bool with_frame=FALSE, // reserve space for a frame? + bool autoDelete_Fields=FALSE) // do automatic cleanup? + : NCursesPanel(nlines, ncols, begin_y, begin_x), + form(0), + sub(0), + b_sub_owner(0), + b_framed(0), + b_autoDelete(0), + my_fields(0) + { + InitForm(Fields, with_frame, autoDelete_Fields); + } + + NCursesForm& operator=(const NCursesForm& rhs) + { + if (this != &rhs) { + *this = rhs; + NCursesPanel::operator=(rhs); + } + return *this; + } + + NCursesForm(const NCursesForm& rhs) + : NCursesPanel(rhs), + form(rhs.form), + sub(rhs.sub), + b_sub_owner(rhs.b_sub_owner), + b_framed(rhs.b_framed), + b_autoDelete(rhs.b_autoDelete), + my_fields(rhs.my_fields) + { + } + + virtual ~NCursesForm(); + + // Set the default attributes for the form + virtual void setDefaultAttributes(); + + // Retrieve current field of the form. + inline NCursesFormField* current_field() const { + return my_fields[::field_index(::current_field(form))]; + } + + // Set the forms subwindow + void setSubWindow(NCursesWindow& sub); + + // Set these fields for the form + inline void setFields(NCursesFormField* Fields[]) { + OnError(::set_form_fields(form,mapFields(Fields))); + } + + // Remove the form from the screen + inline void unpost (void) { + OnError (::unpost_form (form)); + } + + // Post the form to the screen if flag is true, unpost it otherwise + inline void post(bool flag = TRUE) { + OnError (flag ? ::post_form(form) : ::unpost_form (form)); + } + + // Decorations + inline void frame(const char *title=NULL, const char* btitle=NULL) { + if (b_framed) + NCursesPanel::frame(title,btitle); + else + OnError(E_SYSTEM_ERROR); + } + + inline void boldframe(const char *title=NULL, const char* btitle=NULL) { + if (b_framed) + NCursesPanel::boldframe(title,btitle); + else + OnError(E_SYSTEM_ERROR); + } + + inline void label(const char *topLabel, const char *bottomLabel) { + if (b_framed) + NCursesPanel::label(topLabel,bottomLabel); + else + OnError(E_SYSTEM_ERROR); + } + + // ----- + // Hooks + // ----- + + // Called after the form gets repositioned in its window. + // This is especially true if the form is posted. + virtual void On_Form_Init(); + + // Called before the form gets repositioned in its window. + // This is especially true if the form is unposted. + virtual void On_Form_Termination(); + + // Called after the field became the current field + virtual void On_Field_Init(NCursesFormField& field); + + // Called before this field is left as current field. + virtual void On_Field_Termination(NCursesFormField& field); + + // Calculate required window size for the form. + void scale(int& rows, int& ncols) const { + OnError(::scale_form(form,&rows,&ncols)); + } + + // Retrieve number of fields in the form. + int count() const { + return ::field_count(form); + } + + // Make the page the current page of the form. + void set_page(int pageNum) { + OnError(::set_form_page(form, pageNum)); + } + + // Retrieve current page number + int page() const { + return ::form_page(form); + } + + // Switch on the forms options + inline void options_on (Form_Options opts) { + OnError (::form_opts_on (form, opts)); + } + + // Switch off the forms options + inline void options_off (Form_Options opts) { + OnError (::form_opts_off (form, opts)); + } + + // Retrieve the forms options + inline Form_Options options () const { + return ::form_opts (form); + } + + // Set the forms options + inline void set_options (Form_Options opts) { + OnError (::set_form_opts (form, opts)); + } + + // Are there more data in the current field after the data shown + inline bool data_ahead() const { + return ::data_ahead(form); + } + + // Are there more data in the current field before the data shown + inline bool data_behind() const { + return ::data_behind(form); + } + + // Position the cursor to the current field + inline void position_cursor () { + OnError (::pos_form_cursor (form)); + } + // Set the current field + inline void set_current(NCursesFormField& F) { + OnError (::set_current_field(form, F.field)); + } + + // Provide a default key virtualization. Translate the keyboard + // code c into a form request code. + // The default implementation provides a hopefully straightforward + // mapping for the most common keystrokes and form requests. + virtual int virtualize(int c); + + // Operators + inline NCursesFormField* operator[](int i) const { + if ( (i < 0) || (i >= ::field_count (form)) ) + OnError (E_BAD_ARGUMENT); + return my_fields[i]; + } + + // Perform the menu's operation + // Return the field where you left the form. + virtual NCursesFormField* operator()(void); + + // Exception handlers. The default is a Beep. + virtual void On_Request_Denied(int c) const; + virtual void On_Invalid_Field(int c) const; + virtual void On_Unknown_Command(int c) const; + +}; + +// +// ------------------------------------------------------------------------- +// This is the typical C++ typesafe way to allow to attach +// user data to a field of a form. Its assumed that the user +// data belongs to some class T. Use T as template argument +// to create a UserField. +// ------------------------------------------------------------------------- +template class NCURSES_IMPEXP NCursesUserField : public NCursesFormField +{ +public: + NCursesUserField (int rows, + int ncols, + int first_row = 0, + int first_col = 0, + const T* p_UserData = STATIC_CAST(T*)(0), + int offscreen_rows = 0, + int additional_buffers = 0) + : NCursesFormField (rows, ncols, + first_row, first_col, + offscreen_rows, additional_buffers) { + if (field) + OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData))); + } + + virtual ~NCursesUserField() {}; + + inline const T* UserData (void) const { + return reinterpret_cast(::field_userptr (field)); + } + + inline virtual void setUserData(const T* p_UserData) { + if (field) + OnError (::set_field_userptr (field, STATIC_CAST(void *)(p_UserData))); + } +}; +// +// ------------------------------------------------------------------------- +// The same mechanism is used to attach user data to a form +// ------------------------------------------------------------------------- +// +template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm +{ +protected: + // 'Internal' constructor, builds an object without association to a + // field array. + NCursesUserForm( int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = STATIC_CAST(T*)(0)) + : NCursesForm(nlines,ncols,begin_y,begin_x) { + if (form) + set_user (const_cast(p_UserData)); + } + +public: + NCursesUserForm (NCursesFormField Fields[], + const T* p_UserData = STATIC_CAST(T*)(0), + bool with_frame=FALSE, + bool autoDelete_Fields=FALSE) + : NCursesForm (Fields, with_frame, autoDelete_Fields) { + if (form) + set_user (const_cast(p_UserData)); + }; + + NCursesUserForm (NCursesFormField Fields[], + int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = STATIC_CAST(T*)(0), + bool with_frame=FALSE, + bool autoDelete_Fields=FALSE) + : NCursesForm (Fields, nlines, ncols, begin_y, begin_x, + with_frame, autoDelete_Fields) { + if (form) + set_user (const_cast(p_UserData)); + }; + + virtual ~NCursesUserForm() { + }; + + inline T* UserData (void) const { + return reinterpret_cast(get_user ()); + }; + + inline virtual void setUserData (const T* p_UserData) { + if (form) + set_user (const_cast(p_UserData)); + } + +}; +// +// ------------------------------------------------------------------------- +// Builtin Fieldtypes +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP Alpha_Field : public NCursesFieldType +{ +private: + int min_field_width; + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype,min_field_width)); + } + +public: + Alpha_Field(int width) + : NCursesFieldType(TYPE_ALPHA), + min_field_width(width) { + } +}; + +class NCURSES_IMPEXP Alphanumeric_Field : public NCursesFieldType +{ +private: + int min_field_width; + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype,min_field_width)); + } + +public: + Alphanumeric_Field(int width) + : NCursesFieldType(TYPE_ALNUM), + min_field_width(width) { + } +}; + +class NCURSES_IMPEXP Integer_Field : public NCursesFieldType +{ +private: + int precision; + long lower_limit, upper_limit; + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype, + precision,lower_limit,upper_limit)); + } + +public: + Integer_Field(int prec, long low=0L, long high=0L) + : NCursesFieldType(TYPE_INTEGER), + precision(prec), lower_limit(low), upper_limit(high) { + } +}; + +class NCURSES_IMPEXP Numeric_Field : public NCursesFieldType +{ +private: + int precision; + double lower_limit, upper_limit; + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype, + precision,lower_limit,upper_limit)); + } + +public: + Numeric_Field(int prec, double low=0.0, double high=0.0) + : NCursesFieldType(TYPE_NUMERIC), + precision(prec), lower_limit(low), upper_limit(high) { + } +}; + +class NCURSES_IMPEXP Regular_Expression_Field : public NCursesFieldType +{ +private: + char* regex; + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype,regex)); + } + + void copy_regex(const char *source) + { + regex = new char[1 + ::strlen(source)]; + (::strcpy)(regex, source); + } + +public: + Regular_Expression_Field(const char *expr) + : NCursesFieldType(TYPE_REGEXP), + regex(NULL) + { + copy_regex(expr); + } + + Regular_Expression_Field& operator=(const Regular_Expression_Field& rhs) + { + if (this != &rhs) { + *this = rhs; + copy_regex(rhs.regex); + NCursesFieldType::operator=(rhs); + } + return *this; + } + + Regular_Expression_Field(const Regular_Expression_Field& rhs) + : NCursesFieldType(rhs), + regex(NULL) + { + copy_regex(rhs.regex); + } + + ~Regular_Expression_Field() { + delete[] regex; + } +}; + +class NCURSES_IMPEXP Enumeration_Field : public NCursesFieldType +{ +private: + const char** list; + int case_sensitive; + int non_unique_matches; + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype, + list,case_sensitive,non_unique_matches)); + } +public: + Enumeration_Field(const char* enums[], + bool case_sens=FALSE, + bool non_unique=FALSE) + : NCursesFieldType(TYPE_ENUM), + list(enums), + case_sensitive(case_sens ? -1 : 0), + non_unique_matches(non_unique ? -1 : 0) { + } + + Enumeration_Field& operator=(const Enumeration_Field& rhs) + { + if (this != &rhs) { + *this = rhs; + NCursesFieldType::operator=(rhs); + } + return *this; + } + + Enumeration_Field(const Enumeration_Field& rhs) + : NCursesFieldType(rhs), + list(rhs.list), + case_sensitive(rhs.case_sensitive), + non_unique_matches(rhs.non_unique_matches) + { + } +}; + +class NCURSES_IMPEXP IPV4_Address_Field : public NCursesFieldType +{ +private: + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype)); + } + +public: + IPV4_Address_Field() : NCursesFieldType(TYPE_IPV4) { + } +}; + +extern "C" { + bool _nc_xx_fld_fcheck(FIELD *, const void*); + bool _nc_xx_fld_ccheck(int c, const void *); + void* _nc_xx_fld_makearg(va_list*); +} + +// +// ------------------------------------------------------------------------- +// Abstract base class for User-Defined Fieldtypes +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP UserDefinedFieldType : public NCursesFieldType +{ + friend class UDF_Init; // Internal helper to set up statics +private: + // For all C++ defined fieldtypes we need only one generic lowlevel + // FIELDTYPE* element. + static FIELDTYPE* generic_fieldtype; + +protected: + // This are the functions required by the low level libforms functions + // to construct a fieldtype. + friend bool _nc_xx_fld_fcheck(FIELD *, const void*); + friend bool _nc_xx_fld_ccheck(int c, const void *); + friend void* _nc_xx_fld_makearg(va_list*); + + void set(NCursesFormField& f) { + OnError(::set_field_type(f.get_field(),fieldtype,&f)); + } + +protected: + // Redefine this function to do a field validation. The argument + // is a reference to the field you should validate. + virtual bool field_check(NCursesFormField& f) = 0; + + // Redefine this function to do a character validation. The argument + // is the character to be validated. + virtual bool char_check (int c) = 0; + +public: + UserDefinedFieldType() : NCursesFieldType(generic_fieldtype) { + } +}; + +extern "C" { + bool _nc_xx_next_choice(FIELD*, const void *); + bool _nc_xx_prev_choice(FIELD*, const void *); +} + +// +// ------------------------------------------------------------------------- +// Abstract base class for User-Defined Fieldtypes with Choice functions +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType +{ + friend class UDF_Init; // Internal helper to set up statics +private: + // For all C++ defined fieldtypes with choice functions we need only one + // generic lowlevel FIELDTYPE* element. + static FIELDTYPE* generic_fieldtype_with_choice; + + // This are the functions required by the low level libforms functions + // to construct a fieldtype with choice functions. + friend bool _nc_xx_next_choice(FIELD*, const void *); + friend bool _nc_xx_prev_choice(FIELD*, const void *); + +protected: + // Redefine this function to do the retrieval of the next choice value. + // The argument is a reference to the field tobe examined. + virtual bool next (NCursesFormField& f) = 0; + + // Redefine this function to do the retrieval of the previous choice value. + // The argument is a reference to the field tobe examined. + virtual bool previous(NCursesFormField& f) = 0; + +public: + UserDefinedFieldType_With_Choice() { + fieldtype = generic_fieldtype_with_choice; + } +}; + +#endif /* NCURSES_CURSESF_H_incl */ diff --git a/ncurses/c++/cursesm.cc b/ncurses/c++/cursesm.cc new file mode 100644 index 0000000..c253a67 --- /dev/null +++ b/ncurses/c++/cursesm.cc @@ -0,0 +1,407 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +#include "internal.h" +#include "cursesm.h" +#include "cursesapp.h" + +MODULE_ID("$Id: cursesm.cc,v 1.22 2005/04/02 20:39:05 tom Exp $") + +NCursesMenuItem::~NCursesMenuItem() +{ + if (item) + OnError(::free_item(item)); +} + +bool +NCursesMenuItem::action() +{ + return FALSE; +} + +NCursesMenuCallbackItem::~NCursesMenuCallbackItem() +{ +} + +bool +NCursesMenuCallbackItem::action() +{ + if (p_fct) + return p_fct (*this); + else + return FALSE; +} + +/* Internal hook functions. They will route the hook + * calls to virtual methods of the NCursesMenu class, + * so in C++ providing a hook is done simply by + * implementing a virtual method in a derived class + */ +void +_nc_xx_mnu_init(MENU *m) +{ + NCursesMenu::getHook(m)->On_Menu_Init(); +} + +void +_nc_xx_mnu_term(MENU *m) +{ + NCursesMenu::getHook(m)->On_Menu_Termination(); +} + +void +_nc_xx_itm_init(MENU *m) +{ + NCursesMenu* M = NCursesMenu::getHook(m); + M->On_Item_Init (*(M->current_item ())); +} + +void +_nc_xx_itm_term(MENU *m) +{ + NCursesMenu* M = NCursesMenu::getHook(m); + M->On_Item_Termination (*(M->current_item ())); +} + +/* Construct an ITEM* array from an array of NCursesMenuItem + * objects. + */ +ITEM** +NCursesMenu::mapItems(NCursesMenuItem* nitems[]) +{ + int itemCount = 0,lcv; + + for (lcv=0; nitems[lcv]->item; ++lcv) + ++itemCount; + + ITEM** itemArray = new ITEM*[itemCount + 1]; + + for (lcv=0;nitems[lcv]->item;++lcv) { + itemArray[lcv] = nitems[lcv]->item; + } + itemArray[lcv] = NULL; + + my_items = nitems; + + if (menu) + delete[] ::menu_items(menu); + return itemArray; +} + +void +NCursesMenu::InitMenu(NCursesMenuItem* nitems[], + bool with_frame, + bool autoDelete_Items) +{ + int mrows, mcols; + + keypad(TRUE); + meta(TRUE); + + b_framed = with_frame; + b_autoDelete = autoDelete_Items; + + menu = static_cast(0); + menu = ::new_menu(mapItems(nitems)); + if (!menu) + OnError (E_SYSTEM_ERROR); + + UserHook* hook = new UserHook; + hook->m_user = NULL; + hook->m_back = this; + hook->m_owner = menu; + ::set_menu_userptr(menu, static_cast(hook)); + + ::set_menu_init (menu, _nc_xx_mnu_init); + ::set_menu_term (menu, _nc_xx_mnu_term); + ::set_item_init (menu, _nc_xx_itm_init); + ::set_item_term (menu, _nc_xx_itm_term); + + scale(mrows, mcols); + ::set_menu_win(menu, w); + + if (with_frame) { + if ((mrows > height()-2) || (mcols > width()-2)) + OnError(E_NO_ROOM); + sub = new NCursesWindow(*this,mrows,mcols,1,1,'r'); + ::set_menu_sub(menu, sub->w); + b_sub_owner = TRUE; + } + else { + sub = static_cast(0); + b_sub_owner = FALSE; + } + setDefaultAttributes(); +} + +void +NCursesMenu::setDefaultAttributes() +{ + NCursesApplication* S = NCursesApplication::getApplication(); + if (S) { + ::set_menu_fore(menu, S->foregrounds()); + ::set_menu_back(menu, S->backgrounds()); + ::set_menu_grey(menu, S->inactives()); + } +} + +NCursesMenu::~NCursesMenu() +{ + UserHook* hook = reinterpret_cast(::menu_userptr(menu)); + delete hook; + if (b_sub_owner) { + delete sub; + ::set_menu_sub(menu, static_cast(0)); + } + if (menu) { + ITEM** itms = ::menu_items(menu); + int cnt = count(); + + OnError(::set_menu_items(menu, static_cast(0))); + + if (b_autoDelete) { + if (cnt>0) { + for (int i=0; i <= cnt; i++) + delete my_items[i]; + } + delete[] my_items; + } + + ::free_menu(menu); + // It's essential to do this after free_menu() + delete[] itms; + } +} + +void +NCursesMenu::setSubWindow(NCursesWindow& nsub) +{ + if (!isDescendant(nsub)) + OnError(E_SYSTEM_ERROR); + else { + if (b_sub_owner) + delete sub; + sub = ⊄ + ::set_menu_sub(menu,sub->w); + } +} + +bool +NCursesMenu::set_pattern (const char *pat) +{ + int res = ::set_menu_pattern (menu, pat); + switch(res) { + case E_OK: + break; + case E_NO_MATCH: + return FALSE; + default: + OnError (res); + } + return TRUE; +} + +// call the menu driver and do basic error checking. +int +NCursesMenu::driver (int c) +{ + int res = ::menu_driver (menu, c); + switch (res) { + case E_OK: + case E_REQUEST_DENIED: + case E_NOT_SELECTABLE: + case E_UNKNOWN_COMMAND: + case E_NO_MATCH: + break; + default: + OnError (res); + } + return (res); +} + +static const int CMD_QUIT = MAX_COMMAND + 1; +static const int CMD_ACTION = MAX_COMMAND + 2; +// +// ------------------------------------------------------------------------- +// Provide a default key virtualization. Translate the keyboard +// code c into a menu request code. +// The default implementation provides a hopefully straightforward +// mapping for the most common keystrokes and menu requests. +// ------------------------------------------------------------------------- +int +NCursesMenu::virtualize(int c) +{ + switch(c) { + case CTRL('X') : return(CMD_QUIT); // eXit + + case KEY_DOWN : return(REQ_DOWN_ITEM); + case CTRL('N') : return(REQ_NEXT_ITEM); // Next + case KEY_UP : return(REQ_UP_ITEM); + case CTRL('P') : return(REQ_PREV_ITEM); // Previous + + case CTRL('U') : return(REQ_SCR_ULINE); // Up + case CTRL('D') : return(REQ_SCR_DLINE); // Down + case CTRL('F') : return(REQ_SCR_DPAGE); // Forward + case CTRL('B') : return(REQ_SCR_UPAGE); // Backward + + case CTRL('Y') : return(REQ_CLEAR_PATTERN); + case CTRL('H') : return(REQ_BACK_PATTERN); + case CTRL('A') : return(REQ_NEXT_MATCH); + case CTRL('E') : return(REQ_PREV_MATCH); + case CTRL('T') : return(REQ_TOGGLE_ITEM); + + case CTRL('J') : + case CTRL('M') : return(CMD_ACTION); + + case KEY_HOME : return(REQ_FIRST_ITEM); + case KEY_LEFT : return(REQ_LEFT_ITEM); + case KEY_RIGHT : return(REQ_RIGHT_ITEM); + case KEY_END : return(REQ_LAST_ITEM); + case KEY_BACKSPACE : return(REQ_BACK_PATTERN); + case KEY_NPAGE : return(REQ_SCR_DPAGE); + case KEY_PPAGE : return(REQ_SCR_UPAGE); + + default: + return(c); + } +} + +NCursesMenuItem* +NCursesMenu::operator()(void) +{ + int drvCmnd; + int err; + int c; + bool b_action = FALSE; + + post(); + show(); + refresh(); + + while (!b_action && ((drvCmnd = virtualize((c=getKey()))) != CMD_QUIT)) { + + switch((err=driver(drvCmnd))) { + case E_REQUEST_DENIED: + On_Request_Denied(c); + break; + case E_NOT_SELECTABLE: + On_Not_Selectable(c); + break; + case E_UNKNOWN_COMMAND: + if (drvCmnd == CMD_ACTION) { + if (options() & O_ONEVALUE) { + NCursesMenuItem* itm = current_item(); + assert(itm != 0); + if (itm->options() & O_SELECTABLE) + { + b_action = itm->action(); + refresh(); + } + else + On_Not_Selectable(c); + } + else { + int n = count(); + for(int i=0; ivalue()) { + b_action |= itm->action(); + refresh(); + } + } + } + } else + On_Unknown_Command(c); + break; + case E_NO_MATCH: + On_No_Match(c); + break; + case E_OK: + break; + default: + OnError(err); + } + } + + unpost(); + hide(); + refresh(); + if (options() & O_ONEVALUE) + return my_items[::item_index (::current_item (menu))]; + else + return NULL; +} + +void +NCursesMenu::On_Menu_Init() +{ +} + +void +NCursesMenu::On_Menu_Termination() +{ +} + +void +NCursesMenu::On_Item_Init(NCursesMenuItem& item) +{ +} + +void +NCursesMenu::On_Item_Termination(NCursesMenuItem& item) +{ +} + +void +NCursesMenu::On_Request_Denied(int c) const +{ + ::beep(); +} + +void +NCursesMenu::On_Not_Selectable(int c) const +{ + ::beep(); +} + +void +NCursesMenu::On_No_Match(int c) const +{ + ::beep(); +} + +void +NCursesMenu::On_Unknown_Command(int c) const +{ + ::beep(); +} diff --git a/ncurses/c++/cursesm.h b/ncurses/c++/cursesm.h new file mode 100644 index 0000000..d9c2273 --- /dev/null +++ b/ncurses/c++/cursesm.h @@ -0,0 +1,672 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +// $Id: cursesm.h,v 1.25 2005/08/13 18:10:36 tom Exp $ + +#ifndef NCURSES_CURSESM_H_incl +#define NCURSES_CURSESM_H_incl 1 + +#include + +extern "C" { +# include +} +// +// ------------------------------------------------------------------------- +// This wraps the ITEM type of +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP NCursesMenuItem +{ + friend class NCursesMenu; + +protected: + ITEM *item; + + inline void OnError (int err) const THROWS(NCursesMenuException) { + if (err != E_OK) + THROW(new NCursesMenuException (err)); + } + +public: + NCursesMenuItem (const char* p_name = NULL, + const char* p_descript = NULL) + : item(0) + { + item = p_name ? ::new_item (p_name, p_descript) : STATIC_CAST(ITEM*)(0); + if (p_name && !item) + OnError (E_SYSTEM_ERROR); + } + // Create an item. If you pass both parameters as NULL, a delimiting + // item is constructed which can be used to terminate a list of + // NCursesMenu objects. + + NCursesMenuItem& operator=(const NCursesMenuItem& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + NCursesMenuItem(const NCursesMenuItem& rhs) + : item(0) + { + } + + virtual ~NCursesMenuItem (); + // Release the items memory + + inline const char* name () const { + return ::item_name (item); + } + // Name of the item + + inline const char* description () const { + return ::item_description (item); + } + // Description of the item + + inline int (index) (void) const { + return ::item_index (item); + } + // Index of the item in an item array (or -1) + + inline void options_on (Item_Options opts) { + OnError (::item_opts_on (item, opts)); + } + // Switch on the items options + + inline void options_off (Item_Options opts) { + OnError (::item_opts_off (item, opts)); + } + // Switch off the item's option + + inline Item_Options options () const { + return ::item_opts (item); + } + // Retrieve the items options + + inline void set_options (Item_Options opts) { + OnError (::set_item_opts (item, opts)); + } + // Set the items options + + inline void set_value (bool f) { + OnError (::set_item_value (item,f)); + } + // Set/Reset the items selection state + + inline bool value () const { + return ::item_value (item); + } + // Retrieve the items selection state + + inline bool visible () const { + return ::item_visible (item); + } + // Retrieve visibility of the item + + virtual bool action(); + // Perform an action associated with this item; you may use this in an + // user supplied driver for a menu; you may derive from this class and + // overload action() to supply items with different actions. + // If an action returns true, the menu will be exited. The default action + // is to do nothing. +}; + +// Prototype for an items callback function. +typedef bool ITEMCALLBACK(NCursesMenuItem&); + +// If you don't like to create a child class for individual items to +// overload action(), you may use this class and provide a callback +// function pointer for items. +class NCURSES_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem +{ +private: + ITEMCALLBACK* p_fct; + +public: + NCursesMenuCallbackItem(ITEMCALLBACK* fct = NULL, + const char* p_name = NULL, + const char* p_descript = NULL ) + : NCursesMenuItem (p_name, p_descript), + p_fct (fct) { + } + + NCursesMenuCallbackItem& operator=(const NCursesMenuCallbackItem& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + NCursesMenuCallbackItem(const NCursesMenuCallbackItem& rhs) + : NCursesMenuItem(rhs), + p_fct(0) + { + } + + virtual ~NCursesMenuCallbackItem(); + + bool action(); +}; + + // This are the built-in hook functions in this C++ binding. In C++ we use + // virtual member functions (see below On_..._Init and On_..._Termination) + // to provide this functionality in an object oriented manner. +extern "C" { + void _nc_xx_mnu_init(MENU *); + void _nc_xx_mnu_term(MENU *); + void _nc_xx_itm_init(MENU *); + void _nc_xx_itm_term(MENU *); +} + +// +// ------------------------------------------------------------------------- +// This wraps the MENU type of +// ------------------------------------------------------------------------- +// +class NCURSES_IMPEXP NCursesMenu : public NCursesPanel +{ +protected: + MENU *menu; + +private: + NCursesWindow* sub; // the subwindow object + bool b_sub_owner; // is this our own subwindow? + bool b_framed; // has the menu a border? + bool b_autoDelete; // Delete items when deleting menu? + + NCursesMenuItem** my_items; // The array of items for this menu + + // This structure is used for the menu's user data field to link the + // MENU* to the C++ object and to provide extra space for a user pointer. + typedef struct { + void* m_user; // the pointer for the user's data + const NCursesMenu* m_back; // backward pointer to C++ object + const MENU* m_owner; + } UserHook; + + // Get the backward pointer to the C++ object from a MENU + static inline NCursesMenu* getHook(const MENU *m) { + UserHook* hook = STATIC_CAST(UserHook*)(::menu_userptr(m)); + assert(hook != 0 && hook->m_owner==m); + return const_cast(hook->m_back); + } + + friend void _nc_xx_mnu_init(MENU *); + friend void _nc_xx_mnu_term(MENU *); + friend void _nc_xx_itm_init(MENU *); + friend void _nc_xx_itm_term(MENU *); + + // Calculate ITEM* array for the menu + ITEM** mapItems(NCursesMenuItem* nitems[]); + +protected: + // internal routines + inline void set_user(void *user) { + UserHook* uptr = STATIC_CAST(UserHook*)(::menu_userptr (menu)); + assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu); + uptr->m_user = user; + } + + inline void *get_user() { + UserHook* uptr = STATIC_CAST(UserHook*)(::menu_userptr (menu)); + assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu); + return uptr->m_user; + } + + void InitMenu (NCursesMenuItem* menu[], + bool with_frame, + bool autoDeleteItems); + + inline void OnError (int err) const THROWS(NCursesMenuException) { + if (err != E_OK) + THROW(new NCursesMenuException (this, err)); + } + + // this wraps the menu_driver call. + virtual int driver (int c) ; + + // 'Internal' constructor to create a menu without association to + // an array of items. + NCursesMenu( int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0) + : NCursesPanel(nlines,ncols,begin_y,begin_x), + menu (STATIC_CAST(MENU*)(0)), + sub(0), + b_sub_owner(0), + b_framed(0), + b_autoDelete(0), + my_items(0) + { + } + +public: + // Make a full window size menu + NCursesMenu (NCursesMenuItem* Items[], + bool with_frame=FALSE, // Reserve space for a frame? + bool autoDelete_Items=FALSE) // Autocleanup of Items? + : NCursesPanel(), + menu(0), + sub(0), + b_sub_owner(0), + b_framed(0), + b_autoDelete(0), + my_items(0) + { + InitMenu(Items, with_frame, autoDelete_Items); + } + + // Make a menu with a window of this size. + NCursesMenu (NCursesMenuItem* Items[], + int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + bool with_frame=FALSE, // Reserve space for a frame? + bool autoDelete_Items=FALSE) // Autocleanup of Items? + : NCursesPanel(nlines, ncols, begin_y, begin_x), + menu(0), + sub(0), + b_sub_owner(0), + b_framed(0), + b_autoDelete(0), + my_items(0) + { + InitMenu(Items, with_frame, autoDelete_Items); + } + + NCursesMenu& operator=(const NCursesMenu& rhs) + { + if (this != &rhs) { + *this = rhs; + NCursesPanel::operator=(rhs); + } + return *this; + } + + NCursesMenu(const NCursesMenu& rhs) + : NCursesPanel(rhs), + menu(rhs.menu), + sub(rhs.sub), + b_sub_owner(rhs.b_sub_owner), + b_framed(rhs.b_framed), + b_autoDelete(rhs.b_autoDelete), + my_items(rhs.my_items) + { + } + + virtual ~NCursesMenu (); + + // Retrieve the menus subwindow + inline NCursesWindow& subWindow() const { + assert(sub!=NULL); + return *sub; + } + + // Set the menus subwindow + void setSubWindow(NCursesWindow& sub); + + // Set these items for the menu + inline void setItems(NCursesMenuItem* Items[]) { + OnError(::set_menu_items(menu,mapItems(Items))); + } + + // Remove the menu from the screen + inline void unpost (void) { + OnError (::unpost_menu (menu)); + } + + // Post the menu to the screen if flag is true, unpost it otherwise + inline void post(bool flag = TRUE) { + flag ? OnError (::post_menu(menu)) : OnError (::unpost_menu (menu)); + } + + // Get the numer of rows and columns for this menu + inline void scale (int& mrows, int& mcols) const { + OnError (::scale_menu (menu, &mrows, &mcols)); + } + + // Set the format of this menu + inline void set_format(int mrows, int mcols) { + OnError (::set_menu_format(menu, mrows, mcols)); + } + + // Get the format of this menu + inline void menu_format(int& rows,int& ncols) { + ::menu_format(menu,&rows,&ncols); + } + + // Items of the menu + inline NCursesMenuItem* items() const { + return *my_items; + } + + // Get the number of items in this menu + inline int count() const { + return ::item_count(menu); + } + + // Get the current item (i.e. the one the cursor is located) + inline NCursesMenuItem* current_item() const { + return my_items[::item_index(::current_item(menu))]; + } + + // Get the marker string + inline const char* mark() const { + return ::menu_mark(menu); + } + + // Set the marker string + inline void set_mark(const char *marker) { + OnError (::set_menu_mark (menu, marker)); + } + + // Get the name of the request code c + inline static const char* request_name(int c) { + return ::menu_request_name(c); + } + + // Get the current pattern + inline char* pattern() const { + return ::menu_pattern(menu); + } + + // true if there is a pattern match, false otherwise. + bool set_pattern (const char *pat); + + // set the default attributes for the menu + // i.e. set fore, back and grey attribute + virtual void setDefaultAttributes(); + + // Get the menus background attributes + inline chtype back() const { + return ::menu_back(menu); + } + + // Get the menus foreground attributes + inline chtype fore() const { + return ::menu_fore(menu); + } + + // Get the menus grey attributes (used for unselectable items) + inline chtype grey() const { + return ::menu_grey(menu); + } + + // Set the menus background attributes + inline chtype set_background(chtype a) { + return ::set_menu_back(menu,a); + } + + // Set the menus foreground attributes + inline chtype set_foreground(chtype a) { + return ::set_menu_fore(menu,a); + } + + // Set the menus grey attributes (used for unselectable items) + inline chtype set_grey(chtype a) { + return ::set_menu_grey(menu,a); + } + + inline void options_on (Menu_Options opts) { + OnError (::menu_opts_on (menu,opts)); + } + + inline void options_off(Menu_Options opts) { + OnError (::menu_opts_off(menu,opts)); + } + + inline Menu_Options options() const { + return ::menu_opts(menu); + } + + inline void set_options (Menu_Options opts) { + OnError (::set_menu_opts (menu,opts)); + } + + inline int pad() const { + return ::menu_pad(menu); + } + + inline void set_pad (int padch) { + OnError (::set_menu_pad (menu, padch)); + } + + // Position the cursor to the current item + inline void position_cursor () const { + OnError (::pos_menu_cursor (menu)); + } + + // Set the current item + inline void set_current(NCursesMenuItem& I) { + OnError (::set_current_item(menu, I.item)); + } + + // Get the current top row of the menu + inline int top_row (void) const { + return ::top_row (menu); + } + + // Set the current top row of the menu + inline void set_top_row (int row) { + OnError (::set_top_row (menu, row)); + } + + // spacing control + // Set the spacing for the menu + inline void setSpacing(int spc_description, + int spc_rows, + int spc_columns) { + OnError(::set_menu_spacing(menu, + spc_description, + spc_rows, + spc_columns)); + } + + // Get the spacing info for the menu + inline void Spacing(int& spc_description, + int& spc_rows, + int& spc_columns) const { + OnError(::menu_spacing(menu, + &spc_description, + &spc_rows, + &spc_columns)); + } + + // Decorations + inline void frame(const char *title=NULL, const char* btitle=NULL) { + if (b_framed) + NCursesPanel::frame(title,btitle); + else + OnError(E_SYSTEM_ERROR); + } + + inline void boldframe(const char *title=NULL, const char* btitle=NULL) { + if (b_framed) + NCursesPanel::boldframe(title,btitle); + else + OnError(E_SYSTEM_ERROR); + } + + inline void label(const char *topLabel, const char *bottomLabel) { + if (b_framed) + NCursesPanel::label(topLabel,bottomLabel); + else + OnError(E_SYSTEM_ERROR); + } + + // ----- + // Hooks + // ----- + + // Called after the menu gets repositioned in its window. + // This is especially true if the menu is posted. + virtual void On_Menu_Init(); + + // Called before the menu gets repositioned in its window. + // This is especially true if the menu is unposted. + virtual void On_Menu_Termination(); + + // Called after the item became the current item + virtual void On_Item_Init(NCursesMenuItem& item); + + // Called before this item is left as current item. + virtual void On_Item_Termination(NCursesMenuItem& item); + + // Provide a default key virtualization. Translate the keyboard + // code c into a menu request code. + // The default implementation provides a hopefully straightforward + // mapping for the most common keystrokes and menu requests. + virtual int virtualize(int c); + + + // Operators + inline NCursesMenuItem* operator[](int i) const { + if ( (i < 0) || (i >= ::item_count (menu)) ) + OnError (E_BAD_ARGUMENT); + return (my_items[i]); + } + + // Perform the menu's operation + // Return the item where you left the selection mark for a single + // selection menu, or NULL for a multivalued menu. + virtual NCursesMenuItem* operator()(void); + + // -------------------- + // Exception handlers + // Called by operator() + // -------------------- + + // Called if the request is denied + virtual void On_Request_Denied(int c) const; + + // Called if the item is not selectable + virtual void On_Not_Selectable(int c) const; + + // Called if pattern doesn't match + virtual void On_No_Match(int c) const; + + // Called if the command is unknown + virtual void On_Unknown_Command(int c) const; + +}; +// +// ------------------------------------------------------------------------- +// This is the typical C++ typesafe way to allow to attach +// user data to an item of a menu. Its assumed that the user +// data belongs to some class T. Use T as template argument +// to create a UserItem. +// ------------------------------------------------------------------------- +// +template class NCURSES_IMPEXP NCursesUserItem : public NCursesMenuItem +{ +public: + NCursesUserItem (const char* p_name, + const char* p_descript = NULL, + const T* p_UserData = STATIC_CAST(T*)(0)) + : NCursesMenuItem (p_name, p_descript) { + if (item) + OnError (::set_item_userptr (item, const_cast(reinterpret_cast(p_UserData)))); + } + + virtual ~NCursesUserItem() {} + + inline const T* UserData (void) const { + return reinterpret_cast(::item_userptr (item)); + }; + + inline virtual void setUserData(const T* p_UserData) { + if (item) + OnError (::set_item_userptr (item, const_cast(reinterpret_cast(p_UserData)))); + } +}; +// +// ------------------------------------------------------------------------- +// The same mechanism is used to attach user data to a menu +// ------------------------------------------------------------------------- +// +template class NCURSES_IMPEXP NCursesUserMenu : public NCursesMenu +{ +protected: + NCursesUserMenu( int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = STATIC_CAST(T*)(0)) + : NCursesMenu(nlines,ncols,begin_y,begin_x) { + if (menu) + set_user (const_cast(p_UserData)); + } + +public: + NCursesUserMenu (NCursesMenuItem Items[], + const T* p_UserData = STATIC_CAST(T*)(0), + bool with_frame=FALSE, + bool autoDelete_Items=FALSE) + : NCursesMenu (Items, with_frame, autoDelete_Items) { + if (menu) + set_user (const_cast(p_UserData)); + }; + + NCursesUserMenu (NCursesMenuItem Items[], + int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = STATIC_CAST(T*)(0), + bool with_frame=FALSE) + : NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) { + if (menu) + set_user (const_cast(p_UserData)); + }; + + virtual ~NCursesUserMenu() { + }; + + inline T* UserData (void) const { + return reinterpret_cast(get_user ()); + }; + + inline virtual void setUserData (const T* p_UserData) { + if (menu) + set_user (const_cast(p_UserData)); + } +}; + +#endif /* NCURSES_CURSESM_H_incl */ diff --git a/ncurses/c++/cursesmain.cc b/ncurses/c++/cursesmain.cc new file mode 100644 index 0000000..1f82d4a --- /dev/null +++ b/ncurses/c++/cursesmain.cc @@ -0,0 +1,93 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2007 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +#include "internal.h" +#include "cursesapp.h" + +#if CPP_HAS_TRY_CATCH && HAVE_IOSTREAM +#include +#else +#undef CPP_HAS_TRY_CATCH +#define CPP_HAS_TRY_CATCH 0 +#endif + +MODULE_ID("$Id: cursesmain.cc,v 1.14 2007/04/07 17:10:11 tom Exp $") + +#if HAVE_LOCALE_H +#include +#else +#define setlocale(name,string) /* nothing */ +#endif + +#if NO_LEAKS +#include +#endif + +/* This is the default implementation of main() for a NCursesApplication. + * You only have to instantiate a static NCursesApplication object in your + * main application source file and link this module with your application. + */ +int main(int argc, char* argv[]) +{ + setlocale(LC_ALL, ""); + + NCursesApplication* A = NCursesApplication::getApplication(); + if (!A) + return(1); + else { + int res; + + A->handleArgs(argc,argv); + ::endwin(); +#if CPP_HAS_TRY_CATCH + try { + res = (*A)(); + ::endwin(); + } + catch(const NCursesException &e) { + ::endwin(); + std::cerr << e.message << std::endl; + res = e.errorno; + } +#else + res = (*A)(); + ::endwin(); +#endif +#if NO_LEAKS + delete A; + _nc_free_and_exit(res); +#else + return(res); +#endif + } +} diff --git a/ncurses/c++/cursesp.cc b/ncurses/c++/cursesp.cc new file mode 100644 index 0000000..9c4eab6 --- /dev/null +++ b/ncurses/c++/cursesp.cc @@ -0,0 +1,138 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1993, 1997 * + ****************************************************************************/ + +#include "internal.h" +#include "cursesp.h" + +MODULE_ID("$Id: cursesp.cc,v 1.25 2005/08/06 22:12:36 tom Exp $") + +NCursesPanel* NCursesPanel::dummy = static_cast(0); + +void NCursesPanel::init() +{ + p = ::new_panel(w); + if (!p) + OnError(ERR); + + UserHook* hook = new UserHook; + hook->m_user = NULL; + hook->m_back = this; + hook->m_owner = p; + ::set_panel_userptr(p, reinterpret_cast(hook)); +} + +NCursesPanel::~NCursesPanel() +{ + UserHook* hook = UserPointer(); + assert(hook != 0 && hook->m_back==this && hook->m_owner==p); + delete hook; + ::del_panel(p); + ::update_panels(); +} + +void +NCursesPanel::redraw() +{ + PANEL *pan; + + pan = ::panel_above(NULL); + while (pan) { + ::touchwin(panel_window(pan)); + pan = ::panel_above(pan); + } + ::update_panels(); + ::doupdate(); +} + +int +NCursesPanel::refresh() +{ + ::update_panels(); + return ::doupdate(); +} + +int +NCursesPanel::noutrefresh() +{ + ::update_panels(); + return OK; +} + +void +NCursesPanel::boldframe(const char *title, const char* btitle) +{ + standout(); + frame(title, btitle); + standend(); +} + +void +NCursesPanel::frame(const char *title,const char *btitle) +{ + int err = OK; + if (!title && !btitle) { + err = box(); + } + else { + err = box(); + if (err==OK) + label(title,btitle); + } + OnError(err); +} + +void +NCursesPanel::label(const char *tLabel, const char *bLabel) +{ + if (tLabel) + centertext(0,tLabel); + if (bLabel) + centertext(maxy(),bLabel); +} + +void +NCursesPanel::centertext(int row,const char *labelText) +{ + if (labelText) { + int x = (maxx() - ::strlen(labelText)) / 2; + if (x<0) + x=0; + OnError(addstr(row, x, labelText, width())); + } +} + +int +NCursesPanel::getKey(void) +{ + return getch(); +} diff --git a/ncurses/c++/cursesp.h b/ncurses/c++/cursesp.h new file mode 100644 index 0000000..9b63d6d --- /dev/null +++ b/ncurses/c++/cursesp.h @@ -0,0 +1,268 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +#ifndef NCURSES_CURSESP_H_incl +#define NCURSES_CURSESP_H_incl 1 + +// $Id: cursesp.h,v 1.29 2008/08/16 17:20:23 tom Exp $ + +#include + +extern "C" { +# include +} + +class NCURSES_IMPEXP NCursesPanel + : public NCursesWindow +{ +protected: + PANEL *p; + static NCursesPanel *dummy; + +private: + // This structure is used for the panel's user data field to link the + // PANEL* to the C++ object and to provide extra space for a user pointer. + typedef struct { + void* m_user; // the pointer for the user's data + const NCursesPanel* m_back; // backward pointer to C++ object + const PANEL* m_owner; // the panel itself + } UserHook; + + inline UserHook *UserPointer() + { + UserHook* uptr = reinterpret_cast( + const_cast(::panel_userptr (p))); + return uptr; + } + + void init(); // Initialize the panel object + +protected: + void set_user(void *user) + { + UserHook* uptr = UserPointer(); + if (uptr != 0 && uptr->m_back==this && uptr->m_owner==p) { + uptr->m_user = user; + } + } + // Set the user pointer of the panel. + + void *get_user() + { + UserHook* uptr = UserPointer(); + void *result = 0; + if (uptr != 0 && uptr->m_back==this && uptr->m_owner==p) + result = uptr->m_user; + return result; + } + + void OnError (int err) const THROWS(NCursesPanelException) + { + if (err==ERR) + THROW(new NCursesPanelException (this, err)); + } + // If err is equal to the curses error indicator ERR, an error handler + // is called. + + // Get a keystroke. Default implementation calls getch() + virtual int getKey(void); + +public: + NCursesPanel(int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0) + : NCursesWindow(nlines,ncols,begin_y,begin_x), p(0) + { + init(); + } + // Create a panel with this size starting at the requested position. + + NCursesPanel() + : NCursesWindow(::stdscr), p(0) + { + init(); + } + // This constructor creates the default Panel associated with the + // ::stdscr window + + NCursesPanel& operator=(const NCursesPanel& rhs) + { + if (this != &rhs) { + *this = rhs; + NCursesWindow::operator=(rhs); + } + return *this; + } + + NCursesPanel(const NCursesPanel& rhs) + : NCursesWindow(rhs), + p(rhs.p) + { + } + + virtual ~NCursesPanel(); + + // basic manipulation + inline void hide() + { + OnError (::hide_panel(p)); + } + // Hide the panel. It stays in the stack but becomes invisible. + + inline void show() + { + OnError (::show_panel(p)); + } + // Show the panel, i.e. make it visible. + + inline void top() + { + OnError (::top_panel(p)); + } + // Make this panel the top panel in the stack. + + inline void bottom() + { + OnError (::bottom_panel(p)); + } + // Make this panel the bottom panel in the stack. + // N.B.: The panel associated with ::stdscr is always on the bottom. So + // actually bottom() makes the panel the first above ::stdscr. + + virtual int mvwin(int y, int x) + { + OnError(::move_panel(p, y, x)); + return OK; + } + + inline bool hidden() const + { + return (::panel_hidden (p) ? TRUE : FALSE); + } + // Return TRUE if the panel is hidden, FALSE otherwise. + +/* The functions panel_above() and panel_below() are not reflected in + the NCursesPanel class. The reason for this is, that we cannot + assume that a panel retrieved by those operations is one wrapped + by a C++ class. Although this situation might be handled, we also + need a reverse mapping from PANEL to NCursesPanel which needs some + redesign of the low level stuff. At the moment, we define them in the + interface but they will always produce an error. */ + inline NCursesPanel& above() const + { + OnError(ERR); + return *dummy; + } + + inline NCursesPanel& below() const + { + OnError(ERR); + return *dummy; + } + + // Those two are rewrites of the corresponding virtual members of + // NCursesWindow + virtual int refresh(); + // Propagate all panel changes to the virtual screen and update the + // physical screen. + + virtual int noutrefresh(); + // Propagate all panel changes to the virtual screen. + + static void redraw(); + // Redraw all panels. + + // decorations + virtual void frame(const char* title=NULL, + const char* btitle=NULL); + // Put a frame around the panel and put the title centered in the top line + // and btitle in the bottom line. + + virtual void boldframe(const char* title=NULL, + const char* btitle=NULL); + // Same as frame(), but use highlighted attributes. + + virtual void label(const char* topLabel, + const char* bottomLabel); + // Put the title centered in the top line and btitle in the bottom line. + + virtual void centertext(int row,const char* label); + // Put the label text centered in the specified row. +}; + +/* We use templates to provide a typesafe mechanism to associate + * user data with a panel. A NCursesUserPanel is a panel + * associated with some user data of type T. + */ +template class NCursesUserPanel : public NCursesPanel +{ +public: + NCursesUserPanel (int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = STATIC_CAST(T*)(0)) + : NCursesPanel (nlines, ncols, begin_y, begin_x) + { + if (p) + set_user (const_cast(p_UserData)); + }; + // This creates an user panel of the requested size with associated + // user data pointed to by p_UserData. + + NCursesUserPanel(const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesPanel() + { + if (p) + set_user(const_cast(p_UserData)); + }; + // This creates an user panel associated with the ::stdscr and user data + // pointed to by p_UserData. + + virtual ~NCursesUserPanel() {}; + + T* UserData (void) const + { + return reinterpret_cast(get_user ()); + }; + // Retrieve the user data associated with the panel. + + virtual void setUserData (const T* p_UserData) + { + if (p) + set_user (const_cast(p_UserData)); + } + // Associate the user panel with the user data pointed to by p_UserData. +}; + +#endif /* NCURSES_CURSESP_H_incl */ diff --git a/ncurses/c++/cursespad.cc b/ncurses/c++/cursespad.cc new file mode 100644 index 0000000..28c58fa --- /dev/null +++ b/ncurses/c++/cursespad.cc @@ -0,0 +1,279 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1999 * + ****************************************************************************/ + +#include "internal.h" + +#include +#include + +MODULE_ID("$Id: cursespad.cc,v 1.13 2008/08/04 18:59:22 tom Exp $") + +NCursesPad::NCursesPad(int nlines, int ncols) + : NCursesWindow(), + viewWin(static_cast(0)), + viewSub(static_cast(0)), + h_gridsize(0), v_gridsize(0), + min_row(0), min_col(0) +{ + w = ::newpad(nlines, ncols); + if (static_cast(0) == w) { + count--; + err_handler("Cannot construct window"); + } + alloced = TRUE; +} + + +int NCursesPad::driver (int key) +{ + // Default implementation + switch(key) { + case KEY_UP: + // ======= + return REQ_PAD_UP; + case KEY_DOWN: + // ========= + return REQ_PAD_DOWN; + case KEY_LEFT: + // ========= + return REQ_PAD_LEFT; + case KEY_RIGHT: + // ========== + return REQ_PAD_RIGHT; + case KEY_EXIT: + // ========= + case CTRL('X'): + // ========== + return REQ_PAD_EXIT; + + default: return(key); + } +} + + +void NCursesPad::operator()(void) +{ + NCursesWindow* W = Win(); + + if (static_cast(0) != W) { + int Width = W->width(); + int Height = W->height(); + + int req = REQ_PAD_REFRESH; + + W->keypad(TRUE); + W->meta(TRUE); + refresh(); + + do { + bool changed = FALSE; + + switch (req) { + case REQ_PAD_REFRESH: + // ================ + changed = TRUE; + break; + case REQ_PAD_LEFT: + // ============= + if (min_col > 0) { + changed = TRUE; + if (min_col < h_gridsize) + min_col = 0; + else + min_col -= h_gridsize; + } + else + OnNavigationError(req); + break; + case REQ_PAD_RIGHT: + // ============== + if (min_col < (width() - Width - 1)) { + changed = TRUE; + if (min_col > (width() - Width - h_gridsize - 1)) + min_col = width() - Width - 1; + else + min_col += h_gridsize; + } + else + OnNavigationError(req); + break; + case REQ_PAD_UP: + // =========== + if (min_row > 0) { + changed = TRUE; + if (min_row < v_gridsize) + min_row = 0; + else + min_row -= v_gridsize; + } + else + OnNavigationError(req); + break; + case REQ_PAD_DOWN: + // ============= + if (min_row < (height() - Height - 1)) { + changed = TRUE; + if (min_row > (height() - Height - v_gridsize - 1)) + min_row = height() - Height - 1; + else + min_row += v_gridsize; + } + else + OnNavigationError(req); + break; + + default: + OnUnknownOperation(req); + } + + if (changed) { + noutrefresh(); + W->syncup(); + OnOperation(req); + viewWin->refresh(); + } + } while( (req=driver(W->getch())) != REQ_PAD_EXIT ); + } +} + + +int NCursesPad::refresh() +{ + int res = noutrefresh(); + if (res==OK && (static_cast(0) != viewWin)) { + res = (viewWin->refresh()); + } + return(res); +} + +int NCursesPad::noutrefresh() +{ + int res = OK; + NCursesWindow* W = Win(); + if (static_cast(0) != W) { + int high = W->maxy(); + int wide = W->maxx(); + res = copywin(*W, min_row, min_col, + 0, 0, high, wide, + FALSE); + if (res==OK) { + W->syncup(); + res = viewWin->noutrefresh(); + } + } + return (res); +} + +void NCursesPad::setWindow(NCursesWindow& view, + int v_grid NCURSES_PARAM_INIT(1), + int h_grid NCURSES_PARAM_INIT(1)) +{ + viewWin = &view; + min_row = min_col = 0; + if (h_grid <=0 || v_grid <= 0) + err_handler("Illegal Gridsize"); + else { + h_gridsize = h_grid; + v_gridsize = v_grid; + } +} + +void NCursesPad::setSubWindow(NCursesWindow& sub) +{ + if (static_cast(0) == viewWin) + err_handler("Pad has no viewport"); + assert(viewWin != 0); + if (!viewWin->isDescendant(sub)) + THROW(new NCursesException("NCursesFramePad", E_SYSTEM_ERROR)); + viewSub = ⊂ +} + +void NCursesFramedPad::OnOperation(int pad_req) +{ + NCursesWindow* W = Win(); + NCursesWindow* W2 = getWindow(); + + if ((static_cast(0) != W) && (static_cast(0) != W2)) { + int Width = W->width(); + int Height = W->height(); + int i, row, col, h_len, v_len; + + h_len = (Width*Width + width() - 1)/width(); + if (h_len==0) + h_len = 1; + if (h_len > Width) + h_len = Width; + + v_len = (Height*Height + height() - 1)/height(); + if (v_len==0) + v_len = 1; + if (v_len > Height) + v_len = Height; + + col = (min_col * Width + width() - 1) / width(); + if (col + h_len > Width) + col = Width - h_len; + + row = (min_row * Height + height() - 1) / height(); + if (row + v_len > Height) + row = Height - v_len; + + W2->vline(1,Width+1,Height); + W2->attron(A_REVERSE); + if (v_len>=2) { + W2->addch(row+1,Width+1,ACS_UARROW); + for(i=2;iaddch(row+i,Width+1,' '); + W2->addch(row+v_len,Width+1,ACS_DARROW); + } + else { + for(i=1;i<=v_len;i++) + W2->addch(row+i,Width+1,' '); + } + W2->attroff(A_REVERSE); + + W2->hline(Height+1,1,Width); + W2->attron(A_REVERSE); + if (h_len >= 2) { + W2->addch(Height+1,col+1,ACS_LARROW); + for(i=2;iaddch(Height+1,col+i,' '); + W2->addch(Height+1,col+h_len,ACS_RARROW); + } + else { + for(i=1;i<=h_len;i++) + W2->addch(Height+1,col+i,' '); + } + W2->attroff(A_REVERSE); + } +} diff --git a/ncurses/c++/cursesw.cc b/ncurses/c++/cursesw.cc new file mode 100644 index 0000000..825d08d --- /dev/null +++ b/ncurses/c++/cursesw.cc @@ -0,0 +1,470 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 2007 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + * Authors: + * Thomas E. Dickey + * Juergen Pfeifer + * + * The NCursesWindow class was originally based on a file written by + * Eric Newton, later modified by Ulrich Drepper and Anatoly Ivasyuk. + * However, aside from the compatible interface definition, no trace + * of the original code remains in this version: it consists only of + * changes introduced since 1995. + */ + +#include "internal.h" +#include "cursesw.h" + +MODULE_ID("$Id: cursesw.cc,v 1.49 2007/12/15 23:01:57 tom Exp $") + +#define COLORS_NEED_INITIALIZATION -1 +#define COLORS_NOT_INITIALIZED 0 +#define COLORS_MONOCHROME 1 +#define COLORS_ARE_REALLY_THERE 2 + +#define HaveColors() (colorInitialized == COLORS_ARE_REALLY_THERE) + +// declare static variables for the class +long NCursesWindow::count = 0L; +bool NCursesWindow::b_initialized = FALSE; + +int +NCursesWindow::scanw(const char* fmt, ...) +{ + int result = ERR; + + va_list args; + va_start(args, fmt); + result = ::vw_scanw (w, const_cast(fmt), args); + va_end(args); + + return result; +} + + +int +NCursesWindow::scanw(int y, int x, const char* fmt, ...) +{ + int result = ERR; + + if (::wmove(w, y, x) != ERR) { + va_list args; + va_start(args, fmt); + result = ::vw_scanw (w, const_cast(fmt), args); + va_end(args); + } + return result; +} + + +int +NCursesWindow::scanw(const char* fmt, va_list args) +{ + int result = ERR; + + result = ::vw_scanw (w, const_cast(fmt), args); + + return result; +} + + +int +NCursesWindow::scanw(int y, int x, const char* fmt, va_list args) +{ + int result = ERR; + + if (::wmove(w, y, x) != ERR) { + result = ::vw_scanw (w, const_cast(fmt), args); + } + return result; +} + + +int +NCursesWindow::printw(const char * fmt, ...) +{ + va_list args; + va_start(args, fmt); + int result = ::vw_printw(w, fmt, args); + va_end(args); + return result; +} + + +int +NCursesWindow::printw(int y, int x, const char * fmt, ...) +{ + va_list args; + va_start(args, fmt); + int result = ::wmove(w, y, x); + if (result == OK) { + result = ::vw_printw(w, fmt, args); + } + va_end(args); + return result; +} + + +int +NCursesWindow::printw(const char * fmt, va_list args) +{ + int result = ::vw_printw(w, fmt, args); + return result; +} + + +int +NCursesWindow::printw(int y, int x, const char * fmt, va_list args) +{ + int result = ::wmove(w, y, x); + if (result == OK) { + result = ::vw_printw(w, fmt, args); + } + return result; +} + + +void +NCursesWindow::set_keyboard(void) +{ + keypad(TRUE); + meta(TRUE); +} + +void +NCursesWindow::err_handler(const char *msg) const THROWS(NCursesException) +{ + THROW(new NCursesException(msg)); +} + +void +NCursesWindow::initialize() +{ + if (!b_initialized) { + ::initscr(); + b_initialized = TRUE; + if (colorInitialized == COLORS_NEED_INITIALIZATION) { + colorInitialized = COLORS_NOT_INITIALIZED; + useColors(); + } + ::noecho(); + ::cbreak(); + } +} + +void +NCursesWindow::constructing() +{ + initialize(); + ++count; +} + +NCursesWindow::NCursesWindow() + : w(0), alloced(FALSE), par(0), subwins(0), sib(0) +{ + constructing(); + + w = static_cast(0); + set_keyboard(); +} + +NCursesWindow::NCursesWindow(int nlines, int ncols, int begin_y, int begin_x) + : w(0), alloced(TRUE), par(0), subwins(0), sib(0) +{ + constructing(); + + w = ::newwin(nlines, ncols, begin_y, begin_x); + if (w == 0) { + err_handler("Cannot construct window"); + } + set_keyboard(); +} + +NCursesWindow::NCursesWindow(WINDOW* window) + : w(0), alloced(FALSE), par(0), subwins(0), sib(0) +{ + constructing(); + + // We used to use a reference on the "window" parameter, but we cannot do + // that with an opaque pointer (see NCURSES_OPAQUE). If the parameter was + // "::stdscr", that is first set via the "constructing() call, and is null + // up to that point. So we allow a null pointer here as meaning the "same" + // as "::stdscr". + w = window ? window : ::stdscr; + set_keyboard(); +} + +NCursesWindow::NCursesWindow(NCursesWindow& win, int ny, int nx, + int begin_y, int begin_x, char absrel) + : w(0), alloced(TRUE), par(0), subwins(0), sib(0) +{ + constructing(); + if (absrel == 'a') { // absolute origin + begin_y -= win.begy(); + begin_x -= win.begx(); + } + + // Link this window into its parent's list of subwindows. + // We use derwin(), since this also works for pads. + w = ::derwin(win.w, ny, nx, begin_y, begin_x); + if (w == 0) { + err_handler("Cannot construct subwindow"); + } + + par = &win; + sib = win.subwins; + win.subwins = this; +} + +NCursesWindow::NCursesWindow(NCursesWindow& win, + bool do_box NCURSES_PARAM_INIT(TRUE)) + : w(0), alloced(TRUE), par(0), subwins(0), sib(0) +{ + constructing(); + int myHeight = win.height(); + int myWidth = win.width(); + w = :: derwin(win.w, myHeight - 2, myWidth - 2, 1, 1); + if (w == 0) { + err_handler("Cannot construct subwindow"); + } + + par = &win; + sib = win.subwins; + win.subwins = this; + subwins = 0; + + if (do_box) { + win.box(); + win.touchwin(); + } +} + +NCursesWindow NCursesWindow::Clone() +{ + WINDOW *d = ::dupwin(w); + NCursesWindow W(d); + W.subwins = subwins; + W.sib = sib; + W.par = par; + W.alloced = alloced; + return W; +} + +typedef int (*RIPOFFINIT)(NCursesWindow&); +static RIPOFFINIT R_INIT[5]; // There can't be more +static int r_init_idx = 0; +static RIPOFFINIT* prip = R_INIT; + +NCursesWindow::NCursesWindow(WINDOW *win, int ncols) + : w(0), alloced(FALSE), par(0), subwins(0), sib(0) +{ + initialize(); + w = win; + assert((w->_maxx +1 ) == ncols); +} + +int _nc_xx_ripoff_init(WINDOW *w, int ncols) +{ + int res = ERR; + + RIPOFFINIT init = *prip++; + if (init) { + NCursesWindow* W = new NCursesWindow(w,ncols); + res = init(*W); + } + return res; +} + +int NCursesWindow::ripoffline(int ripoff_lines, + int (*init)(NCursesWindow& win)) +{ + int code = ::_nc_ripoffline(ripoff_lines,_nc_xx_ripoff_init); + if (code == OK && init && ripoff_lines) { + R_INIT[r_init_idx++] = init; + } + return code; +} + +bool +NCursesWindow::isDescendant(NCursesWindow& win) +{ + bool result = FALSE; + + for (NCursesWindow* p = subwins; p != NULL; p = p->sib) { + if (p == &win || p->isDescendant(win)) { + result = TRUE; + break; + } + } + return result; +} + +void +NCursesWindow::kill_subwindows() +{ + NCursesWindow* p = subwins; + + subwins = 0; + while (p != 0) { + NCursesWindow* q = p->sib; + p->kill_subwindows(); + if (p->alloced) { + if (p->w != 0) + ::delwin(p->w); + } + delete p; + p = q; + } +} + + +NCursesWindow::~NCursesWindow() +{ + kill_subwindows(); + + if (par != 0) { + // Remove this window from the parent's list of subwindows. + NCursesWindow * next = par->subwins; + NCursesWindow * prev = 0; + while (next != 0) { + if (next == this) { + if (prev != 0) { + prev->sib = next->sib; + } else { + par->subwins = next->sib; + } + break; + } + prev = next; + next = next->sib; + } + } + + if (alloced && w != 0) + ::delwin(w); + + if (alloced) { + --count; + if (count == 0) { + ::endwin(); + } else if (count < 0) { // cannot happen! + err_handler("Too many windows destroyed"); + } + } +} + +// --------------------------------------------------------------------- +// Color stuff +// +int NCursesWindow::colorInitialized = COLORS_NOT_INITIALIZED; + +void +NCursesWindow::useColors(void) +{ + if (colorInitialized == COLORS_NOT_INITIALIZED) { + if (b_initialized) { + if (::has_colors()) { + ::start_color(); + colorInitialized = COLORS_ARE_REALLY_THERE; + } else { + colorInitialized = COLORS_MONOCHROME; + } + } else { + colorInitialized = COLORS_NEED_INITIALIZATION; + } + } +} + +short +NCursesWindow::getPair() const +{ + return static_cast(PAIR_NUMBER(getattrs(w))); +} + +short +NCursesWindow::getcolor(int getback) const +{ + short fore, back; + + if (HaveColors()) { + if (::pair_content(getPair(), &fore, &back) == ERR) + err_handler("Can't get color pair"); + } else { + // Monochrome means white on black + back = COLOR_BLACK; + fore = COLOR_WHITE; + } + return getback ? back : fore; +} + +int NCursesWindow::NumberOfColors() +{ + return (HaveColors()) ? COLORS : 1; +} + +short +NCursesWindow::getcolor() const +{ + return (HaveColors()) ? getPair() : 0; +} + +int +NCursesWindow::setpalette(short fore, short back, short pair) +{ + return (HaveColors()) ? ::init_pair(pair, fore, back) : OK; +} + +int +NCursesWindow::setpalette(short fore, short back) +{ + return setpalette(fore, back, getPair()); +} + + +int +NCursesWindow::setcolor(short pair) +{ + if (HaveColors()) { + if ((pair < 1) || (pair > COLOR_PAIRS)) + err_handler("Can't set color pair"); + + attroff(A_COLOR); + attrset(COLOR_PAIR(pair)); + } + return OK; +} + +#if HAVE_HAS_KEY +bool NCursesWindow::has_mouse() const +{ + return ((::has_key(KEY_MOUSE) || ::_nc_has_mouse()) + ? TRUE : FALSE); +} +#endif diff --git a/ncurses/c++/cursesw.h b/ncurses/c++/cursesw.h new file mode 100644 index 0000000..b8e921a --- /dev/null +++ b/ncurses/c++/cursesw.h @@ -0,0 +1,1556 @@ +// * This makes emacs happy -*-Mode: C++;-*- +// vile:cppmode +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +#ifndef NCURSES_CURSESW_H_incl +#define NCURSES_CURSESW_H_incl 1 + +// $Id: cursesw.h,v 1.48 2008/01/19 21:09:10 tom Exp $ + +#include + +extern "C" { +# include +} + +/* SCO 3.2v4 curses.h includes term.h, which defines lines as a macro. + Undefine it here, because NCursesWindow uses lines as a method. */ +#undef lines + +/* "Convert" macros to inlines. We'll define it as another symbol to avoid + * conflict with library symbols. + */ +#undef UNDEF +#define UNDEF(name) CUR_ ##name + +#ifdef addch +inline int UNDEF(addch)(chtype ch) { return addch(ch); } +#undef addch +#define addch UNDEF(addch) +#endif + +#ifdef addchstr +inline int UNDEF(addchstr)(chtype *at) { return addchstr(at); } +#undef addchstr +#define addchstr UNDEF(addchstr) +#endif + +#ifdef addnstr +inline int UNDEF(addnstr)(const char *str, int n) +{ return addnstr(str, n); } +#undef addnstr +#define addnstr UNDEF(addnstr) +#endif + +#ifdef addstr +inline int UNDEF(addstr)(const char * str) { return addstr(str); } +#undef addstr +#define addstr UNDEF(addstr) +#endif + +#ifdef attroff +inline int UNDEF(attroff)(chtype at) { return attroff(at); } +#undef attroff +#define attroff UNDEF(attroff) +#endif + +#ifdef attron +inline int UNDEF(attron)(chtype at) { return attron(at); } +#undef attron +#define attron UNDEF(attron) +#endif + +#ifdef attrset +inline chtype UNDEF(attrset)(chtype at) { return attrset(at); } +#undef attrset +#define attrset UNDEF(attrset) +#endif + +#ifdef bkgd +inline int UNDEF(bkgd)(chtype ch) { return bkgd(ch); } +#undef bkgd +#define bkgd UNDEF(bkgd) +#endif + +#ifdef bkgdset +inline void UNDEF(bkgdset)(chtype ch) { bkgdset(ch); } +#undef bkgdset +#define bkgdset UNDEF(bkgdset) +#endif + +#ifdef border +inline int UNDEF(border)(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, chtype tr, chtype bl, chtype br) +{ return border(ls, rs, ts, bs, tl, tr, bl, br); } +#undef border +#define border UNDEF(border) +#endif + +#ifdef box +inline int UNDEF(box)(WINDOW *win, int v, int h) { return box(win, v, h); } +#undef box +#define box UNDEF(box) +#endif + +#ifdef chgat +inline int UNDEF(chgat)(int n, attr_t attr, short color, const void *opts) { + return chgat(n, attr, color, opts); } +#undef chgat +#define chgat UNDEF(chgat) +#endif + +#ifdef clear +inline int UNDEF(clear)() { return clear(); } +#undef clear +#define clear UNDEF(clear) +#endif + +#ifdef clearok +inline int UNDEF(clearok)(WINDOW* win, bool bf) { return clearok(win, bf); } +#undef clearok +#define clearok UNDEF(clearok) +#else +extern "C" NCURSES_IMPEXP int NCURSES_API clearok(WINDOW*, bool); +#endif + +#ifdef clrtobot +inline int UNDEF(clrtobot)() { return clrtobot(); } +#undef clrtobot +#define clrtobot UNDEF(clrtobot) +#endif + +#ifdef clrtoeol +inline int UNDEF(clrtoeol)() { return clrtoeol(); } +#undef clrtoeol +#define clrtoeol UNDEF(clrtoeol) +#endif + +#ifdef color_set +inline chtype UNDEF(color_set)(short p, void* opts) { return color_set(p, opts); } +#undef color_set +#define color_set UNDEF(color_set) +#endif + +#ifdef crmode +inline int UNDEF(crmode)(void) { return crmode(); } +#undef crmode +#define crmode UNDEF(crmode) +#endif + +#ifdef delch +inline int UNDEF(delch)() { return delch(); } +#undef delch +#define delch UNDEF(delch) +#endif + +#ifdef deleteln +inline int UNDEF(deleteln)() { return deleteln(); } +#undef deleteln +#define deleteln UNDEF(deleteln) +#endif + +#ifdef echochar +inline int UNDEF(echochar)(chtype ch) { return echochar(ch); } +#undef echochar +#define echochar UNDEF(echochar) +#endif + +#ifdef erase +inline int UNDEF(erase)() { return erase(); } +#undef erase +#define erase UNDEF(erase) +#endif + +#ifdef fixterm +inline int UNDEF(fixterm)(void) { return fixterm(); } +#undef fixterm +#define fixterm UNDEF(fixterm) +#endif + +#ifdef flushok +inline int UNDEF(flushok)(WINDOW* _win, bool _bf) { + return flushok(_win, _bf); } +#undef flushok +#define flushok UNDEF(flushok) +#else +#define _no_flushok +#endif + +#ifdef getattrs +inline int UNDEF(getattrs)(WINDOW *win) { return getattrs(win); } +#undef getattrs +#define getattrs UNDEF(getattrs) +#endif + +#ifdef getbegyx +inline void UNDEF(getbegyx)(WINDOW* win, int& y, int& x) { getbegyx(win, y, x); } +#undef getbegyx +#define getbegyx UNDEF(getbegyx) +#endif + +#ifdef getbkgd +inline chtype UNDEF(getbkgd)(const WINDOW *win) { return getbkgd(win); } +#undef getbkgd +#define getbkgd UNDEF(getbkgd) +#endif + +#ifdef getch +inline int UNDEF(getch)() { return getch(); } +#undef getch +#define getch UNDEF(getch) +#endif + +#ifdef getmaxyx +inline void UNDEF(getmaxyx)(WINDOW* win, int& y, int& x) { getmaxyx(win, y, x); } +#undef getmaxyx +#define getmaxyx UNDEF(getmaxyx) +#endif + +#ifdef getnstr +inline int UNDEF(getnstr)(char *_str, int n) { return getnstr(_str, n); } +#undef getnstr +#define getnstr UNDEF(getnstr) +#endif + +#ifdef getparyx +inline void UNDEF(getparyx)(WINDOW* win, int& y, int& x) { getparyx(win, y, x); } +#undef getparyx +#define getparyx UNDEF(getparyx) +#endif + +#ifdef getstr +inline int UNDEF(getstr)(char *_str) { return getstr(_str); } +#undef getstr +#define getstr UNDEF(getstr) +#endif + +#ifdef getyx +inline void UNDEF(getyx)(const WINDOW* win, int& y, int& x) { + getyx(win, y, x); } +#undef getyx +#define getyx UNDEF(getyx) +#endif + +#ifdef hline +inline int UNDEF(hline)(chtype ch, int n) { return hline(ch, n); } +#undef hline +#define hline UNDEF(hline) +#endif + +#ifdef inch +inline chtype UNDEF(inch)() { return inch(); } +#undef inch +#define inch UNDEF(inch) +#endif + +#ifdef inchstr +inline int UNDEF(inchstr)(chtype *str) { return inchstr(str); } +#undef inchstr +#define inchstr UNDEF(inchstr) +#endif + +#ifdef innstr +inline int UNDEF(innstr)(char *_str, int n) { return innstr(_str, n); } +#undef innstr +#define innstr UNDEF(innstr) +#endif + +#ifdef insch +inline int UNDEF(insch)(chtype c) { return insch(c); } +#undef insch +#define insch UNDEF(insch) +#endif + +#ifdef insdelln +inline int UNDEF(insdelln)(int n) { return insdelln(n); } +#undef insdelln +#define insdelln UNDEF(insdelln) +#endif + +#ifdef insertln +inline int UNDEF(insertln)() { return insertln(); } +#undef insertln +#define insertln UNDEF(insertln) +#endif + +#ifdef insnstr +inline int UNDEF(insnstr)(const char *_str, int n) { + return insnstr(_str, n); } +#undef insnstr +#define insnstr UNDEF(insnstr) +#endif + +#ifdef insstr +inline int UNDEF(insstr)(const char *_str) { + return insstr(_str); } +#undef insstr +#define insstr UNDEF(insstr) +#endif + +#ifdef instr +inline int UNDEF(instr)(char *_str) { return instr(_str); } +#undef instr +#define instr UNDEF(instr) +#endif + +#ifdef intrflush +inline void UNDEF(intrflush)(WINDOW *win, bool bf) { intrflush(); } +#undef intrflush +#define intrflush UNDEF(intrflush) +#endif + +#ifdef leaveok +inline int UNDEF(leaveok)(WINDOW* win, bool bf) { return leaveok(win, bf); } +#undef leaveok +#define leaveok UNDEF(leaveok) +#else +extern "C" NCURSES_IMPEXP int NCURSES_API leaveok(WINDOW* win, bool bf); +#endif + +#ifdef move +inline int UNDEF(move)(int x, int y) { return move(x, y); } +#undef move +#define move UNDEF(move) +#endif + +#ifdef mvaddch +inline int UNDEF(mvaddch)(int y, int x, chtype ch) +{ return mvaddch(y, x, ch); } +#undef mvaddch +#define mvaddch UNDEF(mvaddch) +#endif + +#ifdef mvaddnstr +inline int UNDEF(mvaddnstr)(int y, int x, const char *str, int n) +{ return mvaddnstr(y, x, str, n); } +#undef mvaddnstr +#define mvaddnstr UNDEF(mvaddnstr) +#endif + +#ifdef mvaddstr +inline int UNDEF(mvaddstr)(int y, int x, const char * str) +{ return mvaddstr(y, x, str); } +#undef mvaddstr +#define mvaddstr UNDEF(mvaddstr) +#endif + +#ifdef mvchgat +inline int UNDEF(mvchgat)(int y, int x, int n, + attr_t attr, short color, const void *opts) { + return mvchgat(y, x, n, attr, color, opts); } +#undef mvchgat +#define mvchgat UNDEF(mvchgat) +#endif + +#ifdef mvdelch +inline int UNDEF(mvdelch)(int y, int x) { return mvdelch(y, x);} +#undef mvdelch +#define mvdelch UNDEF(mvdelch) +#endif + +#ifdef mvgetch +inline int UNDEF(mvgetch)(int y, int x) { return mvgetch(y, x);} +#undef mvgetch +#define mvgetch UNDEF(mvgetch) +#endif + +#ifdef mvgetnstr +inline int UNDEF(mvgetnstr)(int y, int x, char *str, int n) { + return mvgetnstr(y, x, str, n);} +#undef mvgetnstr +#define mvgetnstr UNDEF(mvgetnstr) +#endif + +#ifdef mvgetstr +inline int UNDEF(mvgetstr)(int y, int x, char *str) {return mvgetstr(y, x, str);} +#undef mvgetstr +#define mvgetstr UNDEF(mvgetstr) +#endif + +#ifdef mvinch +inline chtype UNDEF(mvinch)(int y, int x) { return mvinch(y, x);} +#undef mvinch +#define mvinch UNDEF(mvinch) +#endif + +#ifdef mvinnstr +inline int UNDEF(mvinnstr)(int y, int x, char *_str, int n) { + return mvinnstr(y, x, _str, n); } +#undef mvinnstr +#define mvinnstr UNDEF(mvinnstr) +#endif + +#ifdef mvinsch +inline int UNDEF(mvinsch)(int y, int x, chtype c) +{ return mvinsch(y, x, c); } +#undef mvinsch +#define mvinsch UNDEF(mvinsch) +#endif + +#ifdef mvinsnstr +inline int UNDEF(mvinsnstr)(int y, int x, const char *_str, int n) { + return mvinsnstr(y, x, _str, n); } +#undef mvinsnstr +#define mvinsnstr UNDEF(mvinsnstr) +#endif + +#ifdef mvinsstr +inline int UNDEF(mvinsstr)(int y, int x, const char *_str) { + return mvinsstr(y, x, _str); } +#undef mvinsstr +#define mvinsstr UNDEF(mvinsstr) +#endif + +#ifdef mvwaddch +inline int UNDEF(mvwaddch)(WINDOW *win, int y, int x, const chtype ch) +{ return mvwaddch(win, y, x, ch); } +#undef mvwaddch +#define mvwaddch UNDEF(mvwaddch) +#endif + +#ifdef mvwaddchnstr +inline int UNDEF(mvwaddchnstr)(WINDOW *win, int y, int x, const chtype *str, int n) +{ return mvwaddchnstr(win, y, x, str, n); } +#undef mvwaddchnstr +#define mvwaddchnstr UNDEF(mvwaddchnstr) +#endif + +#ifdef mvwaddchstr +inline int UNDEF(mvwaddchstr)(WINDOW *win, int y, int x, const chtype *str) +{ return mvwaddchstr(win, y, x, str); } +#undef mvwaddchstr +#define mvwaddchstr UNDEF(mvwaddchstr) +#endif + +#ifdef mvwaddnstr +inline int UNDEF(mvwaddnstr)(WINDOW *win, int y, int x, const char *str, int n) +{ return mvwaddnstr(win, y, x, str, n); } +#undef mvwaddnstr +#define mvwaddnstr UNDEF(mvwaddnstr) +#endif + +#ifdef mvwaddstr +inline int UNDEF(mvwaddstr)(WINDOW *win, int y, int x, const char * str) +{ return mvwaddstr(win, y, x, str); } +#undef mvwaddstr +#define mvwaddstr UNDEF(mvwaddstr) +#endif + +#ifdef mvwchgat +inline int UNDEF(mvwchgat)(WINDOW *win, int y, int x, int n, + attr_t attr, short color, const void *opts) { + return mvwchgat(win, y, x, n, attr, color, opts); } +#undef mvwchgat +#define mvwchgat UNDEF(mvwchgat) +#endif + +#ifdef mvwdelch +inline int UNDEF(mvwdelch)(WINDOW *win, int y, int x) +{ return mvwdelch(win, y, x); } +#undef mvwdelch +#define mvwdelch UNDEF(mvwdelch) +#endif + +#ifdef mvwgetch +inline int UNDEF(mvwgetch)(WINDOW *win, int y, int x) { return mvwgetch(win, y, x);} +#undef mvwgetch +#define mvwgetch UNDEF(mvwgetch) +#endif + +#ifdef mvwgetnstr +inline int UNDEF(mvwgetnstr)(WINDOW *win, int y, int x, char *str, int n) +{return mvwgetnstr(win, y, x, str, n);} +#undef mvwgetnstr +#define mvwgetnstr UNDEF(mvwgetnstr) +#endif + +#ifdef mvwgetstr +inline int UNDEF(mvwgetstr)(WINDOW *win, int y, int x, char *str) +{return mvwgetstr(win, y, x, str);} +#undef mvwgetstr +#define mvwgetstr UNDEF(mvwgetstr) +#endif + +#ifdef mvwhline +inline int UNDEF(mvwhline)(WINDOW *win, int y, int x, chtype c, int n) { + return mvwhline(win, y, x, c, n); } +#undef mvwhline +#define mvwhline UNDEF(mvwhline) +#endif + +#ifdef mvwinch +inline chtype UNDEF(mvwinch)(WINDOW *win, int y, int x) { + return mvwinch(win, y, x);} +#undef mvwinch +#define mvwinch UNDEF(mvwinch) +#endif + +#ifdef mvwinchnstr +inline int UNDEF(mvwinchnstr)(WINDOW *win, int y, int x, chtype *str, int n) { return mvwinchnstr(win, y, x, str, n); } +#undef mvwinchnstr +#define mvwinchnstr UNDEF(mvwinchnstr) +#endif + +#ifdef mvwinchstr +inline int UNDEF(mvwinchstr)(WINDOW *win, int y, int x, chtype *str) { return mvwinchstr(win, y, x, str); } +#undef mvwinchstr +#define mvwinchstr UNDEF(mvwinchstr) +#endif + +#ifdef mvwinnstr +inline int UNDEF(mvwinnstr)(WINDOW *win, int y, int x, char *_str, int n) { + return mvwinnstr(win, y, x, _str, n); } +#undef mvwinnstr +#define mvwinnstr UNDEF(mvwinnstr) +#endif + +#ifdef mvwinsch +inline int UNDEF(mvwinsch)(WINDOW *win, int y, int x, chtype c) +{ return mvwinsch(win, y, x, c); } +#undef mvwinsch +#define mvwinsch UNDEF(mvwinsch) +#endif + +#ifdef mvwinsnstr +inline int UNDEF(mvwinsnstr)(WINDOW *w, int y, int x, const char *_str, int n) { + return mvwinsnstr(w, y, x, _str, n); } +#undef mvwinsnstr +#define mvwinsnstr UNDEF(mvwinsnstr) +#endif + +#ifdef mvwinsstr +inline int UNDEF(mvwinsstr)(WINDOW *w, int y, int x, const char *_str) { + return mvwinsstr(w, y, x, _str); } +#undef mvwinsstr +#define mvwinsstr UNDEF(mvwinsstr) +#endif + +#ifdef mvwvline +inline int UNDEF(mvwvline)(WINDOW *win, int y, int x, chtype c, int n) { + return mvwvline(win, y, x, c, n); } +#undef mvwvline +#define mvwvline UNDEF(mvwvline) +#endif + +#ifdef napms +inline void UNDEF(napms)(unsigned long x) { napms(x); } +#undef napms +#define napms UNDEF(napms) +#endif + +#ifdef nocrmode +inline int UNDEF(nocrmode)(void) { return nocrmode(); } +#undef nocrmode +#define nocrmode UNDEF(nocrmode) +#endif + +#ifdef nodelay +inline void UNDEF(nodelay)() { nodelay(); } +#undef nodelay +#define nodelay UNDEF(nodelay) +#endif + +#ifdef redrawwin +inline int UNDEF(redrawwin)(WINDOW *win) { return redrawwin(win); } +#undef redrawwin +#define redrawwin UNDEF(redrawwin) +#endif + +#ifdef refresh +inline int UNDEF(refresh)() { return refresh(); } +#undef refresh +#define refresh UNDEF(refresh) +#endif + +#ifdef resetterm +inline int UNDEF(resetterm)(void) { return resetterm(); } +#undef resetterm +#define resetterm UNDEF(resetterm) +#endif + +#ifdef saveterm +inline int UNDEF(saveterm)(void) { return saveterm(); } +#undef saveterm +#define saveterm UNDEF(saveterm) +#endif + +#ifdef scrl +inline int UNDEF(scrl)(int l) { return scrl(l); } +#undef scrl +#define scrl UNDEF(scrl) +#endif + +#ifdef scroll +inline int UNDEF(scroll)(WINDOW *win) { return scroll(win); } +#undef scroll +#define scroll UNDEF(scroll) +#endif + +#ifdef scrollok +inline int UNDEF(scrollok)(WINDOW* win, bool bf) { return scrollok(win, bf); } +#undef scrollok +#define scrollok UNDEF(scrollok) +#else +#if defined(__NCURSES_H) +extern "C" NCURSES_IMPEXP int NCURSES_API scrollok(WINDOW*, bool); +#else +extern "C" NCURSES_IMPEXP int NCURSES_API scrollok(WINDOW*, char); +#endif +#endif + +#ifdef setscrreg +inline int UNDEF(setscrreg)(int t, int b) { return setscrreg(t, b); } +#undef setscrreg +#define setscrreg UNDEF(setscrreg) +#endif + +#ifdef standend +inline int UNDEF(standend)() { return standend(); } +#undef standend +#define standend UNDEF(standend) +#endif + +#ifdef standout +inline int UNDEF(standout)() { return standout(); } +#undef standout +#define standout UNDEF(standout) +#endif + +#ifdef subpad +inline WINDOW *UNDEF(subpad)(WINDOW *p, int l, int c, int y, int x) +{ return derwin(p, l, c, y, x); } +#undef subpad +#define subpad UNDEF(subpad) +#endif + +#ifdef timeout +inline void UNDEF(timeout)(int delay) { timeout(delay); } +#undef timeout +#define timeout UNDEF(timeout) +#endif + +#ifdef touchline +inline int UNDEF(touchline)(WINDOW *win, int s, int c) +{ return touchline(win, s, c); } +#undef touchline +#define touchline UNDEF(touchline) +#endif + +#ifdef touchwin +inline int UNDEF(touchwin)(WINDOW *win) { return touchwin(win); } +#undef touchwin +#define touchwin UNDEF(touchwin) +#endif + +#ifdef untouchwin +inline int UNDEF(untouchwin)(WINDOW *win) { return untouchwin(win); } +#undef untouchwin +#define untouchwin UNDEF(untouchwin) +#endif + +#ifdef vline +inline int UNDEF(vline)(chtype ch, int n) { return vline(ch, n); } +#undef vline +#define vline UNDEF(vline) +#endif + +#ifdef waddchstr +inline int UNDEF(waddchstr)(WINDOW *win, chtype *at) { return waddchstr(win, at); } +#undef waddchstr +#define waddchstr UNDEF(waddchstr) +#endif + +#ifdef waddstr +inline int UNDEF(waddstr)(WINDOW *win, char *str) { return waddstr(win, str); } +#undef waddstr +#define waddstr UNDEF(waddstr) +#endif + +#ifdef wattroff +inline int UNDEF(wattroff)(WINDOW *win, int att) { return wattroff(win, att); } +#undef wattroff +#define wattroff UNDEF(wattroff) +#endif + +#ifdef wattrset +inline int UNDEF(wattrset)(WINDOW *win, int att) { return wattrset(win, att); } +#undef wattrset +#define wattrset UNDEF(wattrset) +#endif + +#ifdef winch +inline chtype UNDEF(winch)(const WINDOW* win) { return winch(win); } +#undef winch +#define winch UNDEF(winch) +#endif + +#ifdef winchnstr +inline int UNDEF(winchnstr)(WINDOW *win, chtype *str, int n) { return winchnstr(win, str, n); } +#undef winchnstr +#define winchnstr UNDEF(winchnstr) +#endif + +#ifdef winchstr +inline int UNDEF(winchstr)(WINDOW *win, chtype *str) { return winchstr(win, str); } +#undef winchstr +#define winchstr UNDEF(winchstr) +#endif + +#ifdef winsstr +inline int UNDEF(winsstr)(WINDOW *w, const char *_str) { + return winsstr(w, _str); } +#undef winsstr +#define winsstr UNDEF(winsstr) +#endif + +#ifdef wstandend +inline int UNDEF(wstandend)(WINDOW *win) { return wstandend(win); } +#undef wstandend +#define wstandend UNDEF(wstandend) +#endif + +#ifdef wstandout +inline int UNDEF(wstandout)(WINDOW *win) { return wstandout(win); } +#undef wstandout +#define wstandout UNDEF(wstandout) +#endif + +/* + * + * C++ class for windows. + * + */ + +extern "C" int _nc_ripoffline(int, int (*init)(WINDOW*, int)); +extern "C" int _nc_xx_ripoff_init(WINDOW *, int); +extern "C" int _nc_has_mouse(void); + +class NCURSES_IMPEXP NCursesWindow +{ + friend class NCursesMenu; + friend class NCursesForm; + +private: + static bool b_initialized; + static void initialize(); + void constructing(); + friend int _nc_xx_ripoff_init(WINDOW *, int); + + void set_keyboard(); + + short getcolor(int getback) const; + short getPair() const; + + static int setpalette(short fore, short back, short pair); + static int colorInitialized; + + // This private constructor is only used during the initialization + // of windows generated by ripoffline() calls. + NCursesWindow(WINDOW* win, int ncols); + +protected: + virtual void err_handler(const char *) const THROWS(NCursesException); + // Signal an error with the given message text. + + static long count; // count of all active windows: + // We rely on the c++ promise that + // all otherwise uninitialized + // static class vars are set to 0 + + WINDOW* w; // the curses WINDOW + + bool alloced; // TRUE if we own the WINDOW + + NCursesWindow* par; // parent, if subwindow + NCursesWindow* subwins; // head of subwindows list + NCursesWindow* sib; // next subwindow of parent + + void kill_subwindows(); // disable all subwindows + // Destroy all subwindows. + + /* Only for use by derived classes. They are then in charge to + fill the member variables correctly. */ + NCursesWindow(); + +public: + NCursesWindow(WINDOW* window); // useful only for stdscr + + NCursesWindow(int nlines, // number of lines + int ncols, // number of columns + int begin_y, // line origin + int begin_x); // col origin + + NCursesWindow(NCursesWindow& par,// parent window + int nlines, // number of lines + int ncols, // number of columns + int begin_y, // absolute or relative + int begin_x, // origins: + char absrel = 'a');// if `a', begin_y & begin_x are + // absolute screen pos, else if `r', they are relative to par origin + + NCursesWindow(NCursesWindow& par,// parent window + bool do_box = TRUE); + // this is the very common case that we want to create the subwindow that + // is two lines and two columns smaller and begins at (1,1). + // We may automatically request the box around it. + + NCursesWindow& operator=(const NCursesWindow& rhs) + { + if (this != &rhs) + *this = rhs; + return *this; + } + + NCursesWindow(const NCursesWindow& rhs) + : w(rhs.w), alloced(rhs.alloced), par(rhs.par), subwins(rhs.subwins), sib(rhs.sib) + { + } + + virtual ~NCursesWindow(); + + NCursesWindow Clone(); + // Make an exact copy of the window. + + // Initialization. + static void useColors(void); + // Call this routine very early if you want to have colors. + + static int ripoffline(int ripoff_lines, + int (*init)(NCursesWindow& win)); + // This function is used to generate a window of ripped-of lines. + // If the argument is positive, lines are removed from the top, if it + // is negative lines are removed from the bottom. This enhances the + // lowlevel ripoffline() function because it uses the internal + // implementation that allows to remove more than just a single line. + // This function must be called before any other ncurses function. The + // creation of the window is deferred until ncurses gets initialized. + // The initialization function is then called. + + // ------------------------------------------------------------------------- + // terminal status + // ------------------------------------------------------------------------- + int lines() const { initialize(); return LINES; } + // Number of lines on terminal, *not* window + + int cols() const { initialize(); return COLS; } + // Number of cols on terminal, *not* window + + int tabsize() const { initialize(); return TABSIZE; } + // Size of a tab on terminal, *not* window + + static int NumberOfColors(); + // Number of available colors + + int colors() const { return NumberOfColors(); } + // Number of available colors + + // ------------------------------------------------------------------------- + // window status + // ------------------------------------------------------------------------- + int height() const { return maxy() + 1; } + // Number of lines in this window + + int width() const { return maxx() + 1; } + // Number of columns in this window + + int begx() const { return getbegx(w); } + // Column of top left corner relative to stdscr + + int begy() const { return getbegy(w); } + // Line of top left corner relative to stdscr + + int curx() const { return getcurx(w); } + // Column of top left corner relative to stdscr + + int cury() const { return getcury(w); } + // Line of top left corner relative to stdscr + + int maxx() const { return getmaxx(w) == ERR ? ERR : getmaxx(w)-1; } + // Largest x coord in window + + int maxy() const { return getmaxy(w) == ERR ? ERR : getmaxy(w)-1; } + // Largest y coord in window + + short getcolor() const; + // Actual color pair + + short foreground() const { return getcolor(0); } + // Actual foreground color + + short background() const { return getcolor(1); } + // Actual background color + + int setpalette(short fore, short back); + // Set color palette entry + + int setcolor(short pair); + // Set actually used palette entry + + // ------------------------------------------------------------------------- + // window positioning + // ------------------------------------------------------------------------- + virtual int mvwin(int begin_y, int begin_x) { + return ::mvwin(w, begin_y, begin_x); } + // Move window to new position with the new position as top left corner. + // This is virtual because it is redefined in NCursesPanel. + + // ------------------------------------------------------------------------- + // coordinate positioning + // ------------------------------------------------------------------------- + int move(int y, int x) { return ::wmove(w, y, x); } + // Move cursor the this position + + void getyx(int& y, int& x) const { ::getyx(w, y, x); } + // Get current position of the cursor + + void getbegyx(int& y, int& x) const { ::getbegyx(w, y, x); } + // Get beginning of the window + + void getmaxyx(int& y, int& x) const { ::getmaxyx(w, y, x); } + // Get size of the window + + void getparyx(int& y, int& x) const { ::getparyx(w, y, x); } + // Get parent's beginning of the window + + int mvcur(int oldrow, int oldcol, int newrow, int newcol) const { + return ::mvcur(oldrow, oldcol, newrow, newcol); } + // Perform lowlevel cursor motion that takes effect immediately. + + // ------------------------------------------------------------------------- + // input + // ------------------------------------------------------------------------- + int getch() { return ::wgetch(w); } + // Get a keystroke from the window. + + int getch(int y, int x) { return ::mvwgetch(w, y, x); } + // Move cursor to position and get a keystroke from the window + + int getstr(char* str, int n=-1) { + return ::wgetnstr(w, str, n); } + // Read a series of characters into str until a newline or carriage return + // is received. Read at most n characters. If n is negative, the limit is + // ignored. + + int getstr(int y, int x, char* str, int n=-1) { + return ::mvwgetnstr(w, y, x, str, n); } + // Move the cursor to the requested position and then perform the getstr() + // as described above. + + int instr(char *s, int n=-1) { return ::winnstr(w, s, n); } + // Get a string of characters from the window into the buffer s. Retrieve + // at most n characters, if n is negative retrieve all characters up to the + // end of the current line. Attributes are stripped from the characters. + + int instr(int y, int x, char *s, int n=-1) { + return ::mvwinnstr(w, y, x, s, n); } + // Move the cursor to the requested position and then perform the instr() + // as described above. + + int scanw(const char* fmt, ...) + // Perform a scanw function from the window. +#if __GNUG__ >= 2 + __attribute__ ((format (scanf, 2, 3))); +#else + ; +#endif + + int scanw(const char*, va_list); + // Perform a scanw function from the window. + + int scanw(int y, int x, const char* fmt, ...) + // Move the cursor to the requested position and then perform a scanw + // from the window. +#if __GNUG__ >= 2 + __attribute__ ((format (scanf, 4, 5))); +#else + ; +#endif + + int scanw(int y, int x, const char* fmt, va_list); + // Move the cursor to the requested position and then perform a scanw + // from the window. + + // ------------------------------------------------------------------------- + // output + // ------------------------------------------------------------------------- + int addch(const chtype ch) { return ::waddch(w, ch); } + // Put attributed character to the window. + + int addch(int y, int x, const chtype ch) { + return ::mvwaddch(w, y, x, ch); } + // Move cursor to the requested position and then put attributed character + // to the window. + + int echochar(const chtype ch) { return ::wechochar(w, ch); } + // Put attributed character to the window and refresh it immediately. + + int addstr(const char* str, int n=-1) { + return ::waddnstr(w, str, n); } + // Write the string str to the window, stop writing if the terminating + // NUL or the limit n is reached. If n is negative, it is ignored. + + int addstr(int y, int x, const char * str, int n=-1) { + return ::mvwaddnstr(w, y, x, str, n); } + // Move the cursor to the requested position and then perform the addchstr + // as described above. + + int addchstr(const chtype* str, int n=-1) { + return ::waddchnstr(w, str, n); } + // Write the string str to the window, stop writing if the terminating + // NUL or the limit n is reached. If n is negative, it is ignored. + + int addchstr(int y, int x, const chtype * str, int n=-1) { + return ::mvwaddchnstr(w, y, x, str, n); } + // Move the cursor to the requested position and then perform the addchstr + // as described above. + + int printw(const char* fmt, ...) + // Do a formatted print to the window. +#if (__GNUG__ >= 2) && !defined(printf) + __attribute__ ((format (printf, 2, 3))); +#else + ; +#endif + + int printw(int y, int x, const char * fmt, ...) + // Move the cursor and then do a formatted print to the window. +#if (__GNUG__ >= 2) && !defined(printf) + __attribute__ ((format (printf, 4, 5))); +#else + ; +#endif + + int printw(const char* fmt, va_list args); + // Do a formatted print to the window. + + int printw(int y, int x, const char * fmt, va_list args); + // Move the cursor and then do a formatted print to the window. + + chtype inch() const { return ::winch(w); } + // Retrieve attributed character under the current cursor position. + + chtype inch(int y, int x) { return ::mvwinch(w, y, x); } + // Move cursor to requested position and then retrieve attributed character + // at this position. + + int inchstr(chtype* str, int n=-1) { + return ::winchnstr(w, str, n); } + // Read the string str from the window, stop reading if the terminating + // NUL or the limit n is reached. If n is negative, it is ignored. + + int inchstr(int y, int x, chtype * str, int n=-1) { + return ::mvwinchnstr(w, y, x, str, n); } + // Move the cursor to the requested position and then perform the inchstr + // as described above. + + int insch(chtype ch) { return ::winsch(w, ch); } + // Insert attributed character into the window before current cursor + // position. + + int insch(int y, int x, chtype ch) { + return ::mvwinsch(w, y, x, ch); } + // Move cursor to requested position and then insert the attributed + // character before that position. + + int insertln() { return ::winsdelln(w, 1); } + // Insert an empty line above the current line. + + int insdelln(int n=1) { return ::winsdelln(w, n); } + // If n>0 insert that many lines above the current line. If n<0 delete + // that many lines beginning with the current line. + + int insstr(const char *s, int n=-1) { + return ::winsnstr(w, s, n); } + // Insert the string into the window before the current cursor position. + // Insert stops at end of string or when the limit n is reached. If n is + // negative, it is ignored. + + int insstr(int y, int x, const char *s, int n=-1) { + return ::mvwinsnstr(w, y, x, s, n); } + // Move the cursor to the requested position and then perform the insstr() + // as described above. + + int attron (chtype at) { return ::wattron (w, at); } + // Switch on the window attributes; + + int attroff(chtype at) { return ::wattroff(w, static_cast(at)); } + // Switch off the window attributes; + + int attrset(chtype at) { return ::wattrset(w, static_cast(at)); } + // Set the window attributes; + + chtype attrget() { return ::getattrs(w); } + // Get the window attributes; + + int color_set(short color_pair_number, void* opts=NULL) { + return ::wcolor_set(w, color_pair_number, opts); } + // Set the window color attribute; + + int chgat(int n, attr_t attr, short color, const void *opts=NULL) { + return ::wchgat(w, n, attr, color, opts); } + // Change the attributes of the next n characters in the current line. If + // n is negative or greater than the number of remaining characters in the + // line, the attributes will be changed up to the end of the line. + + int chgat(int y, int x, + int n, attr_t attr, short color, const void *opts=NULL) { + return ::mvwchgat(w, y, x, n, attr, color, opts); } + // Move the cursor to the requested position and then perform chgat() as + // described above. + + // ------------------------------------------------------------------------- + // background + // ------------------------------------------------------------------------- + chtype getbkgd() const { return ::getbkgd(w); } + // Get current background setting. + + int bkgd(const chtype ch) { return ::wbkgd(w, ch); } + // Set the background property and apply it to the window. + + void bkgdset(chtype ch) { ::wbkgdset(w, ch); } + // Set the background property. + + // ------------------------------------------------------------------------- + // borders + // ------------------------------------------------------------------------- + int box(chtype vert=0, chtype hor=0) { + return ::wborder(w, vert, vert, hor, hor, 0, 0, 0, 0); } + // Draw a box around the window with the given vertical and horizontal + // drawing characters. If you specify a zero as character, curses will try + // to find a "nice" character. + + int border(chtype left=0, chtype right=0, + chtype top =0, chtype bottom=0, + chtype top_left =0, chtype top_right=0, + chtype bottom_left =0, chtype bottom_right=0) { + return ::wborder(w, left, right, top, bottom, top_left, top_right, + bottom_left, bottom_right); } + // Draw a border around the window with the given characters for the + // various parts of the border. If you pass zero for a character, curses + // will try to find "nice" characters. + + // ------------------------------------------------------------------------- + // lines and boxes + // ------------------------------------------------------------------------- + int hline(int len, chtype ch=0) { return ::whline(w, ch, len); } + // Draw a horizontal line of len characters with the given character. If + // you pass zero for the character, curses will try to find a "nice" one. + + int hline(int y, int x, int len, chtype ch=0) { + return ::mvwhline(w, y, x, ch, len); } + // Move the cursor to the requested position and then draw a horizontal line. + + int vline(int len, chtype ch=0) { return ::wvline(w, ch, len); } + // Draw a vertical line of len characters with the given character. If + // you pass zero for the character, curses will try to find a "nice" one. + + int vline(int y, int x, int len, chtype ch=0) { + return ::mvwvline(w, y, x, ch, len); } + // Move the cursor to the requested position and then draw a vertical line. + + // ------------------------------------------------------------------------- + // erasure + // ------------------------------------------------------------------------- + int erase() { return ::werase(w); } + // Erase the window. + + int clear() { return ::wclear(w); } + // Clear the window. + + int clearok(bool bf) { return ::clearok(w, bf); } + // Set/Reset the clear flag. If set, the next refresh() will clear the + // screen. + + int clrtobot() { return ::wclrtobot(w); } + // Clear to the end of the window. + + int clrtoeol() { return ::wclrtoeol(w); } + // Clear to the end of the line. + + int delch() { return ::wdelch(w); } + // Delete character under the cursor. + + int delch(int y, int x) { return ::mvwdelch(w, y, x); } + // Move cursor to requested position and delete the character under the + // cursor. + + int deleteln() { return ::winsdelln(w, -1); } + // Delete the current line. + + // ------------------------------------------------------------------------- + // screen control + // ------------------------------------------------------------------------- + int scroll(int amount=1) { return ::wscrl(w, amount); } + // Scroll amount lines. If amount is positive, scroll up, otherwise + // scroll down. + + int scrollok(bool bf) { return ::scrollok(w, bf); } + // If bf is TRUE, window scrolls if cursor is moved off the bottom + // edge of the window or a scrolling region, otherwise the cursor is left + // at the bottom line. + + int setscrreg(int from, int to) { + return ::wsetscrreg(w, from, to); } + // Define a soft scrolling region. + + int idlok(bool bf) { return ::idlok(w, bf); } + // If bf is TRUE, use insert/delete line hardware support if possible. + // Otherwise do it in software. + + void idcok(bool bf) { ::idcok(w, bf); } + // If bf is TRUE, use insert/delete character hardware support if possible. + // Otherwise do it in software. + + int touchline(int s, int c) { return ::touchline(w, s, c); } + // Mark the given lines as modified. + + int touchwin() { return ::wtouchln(w, 0, height(), 1); } + // Mark the whole window as modified. + + int untouchwin() { return ::wtouchln(w, 0, height(), 0); } + // Mark the whole window as unmodified. + + int touchln(int s, int cnt, bool changed=TRUE) { + return ::wtouchln(w, s, cnt, static_cast(changed ? 1 : 0)); } + // Mark cnt lines beginning from line s as changed or unchanged, depending + // on the value of the changed flag. + + bool is_linetouched(int line) const { + return (::is_linetouched(w, line) ? TRUE:FALSE); } + // Return TRUE if line is marked as changed, FALSE otherwise + + bool is_wintouched() const { + return (::is_wintouched(w) ? TRUE:FALSE); } + // Return TRUE if window is marked as changed, FALSE otherwise + + int leaveok(bool bf) { return ::leaveok(w, bf); } + // If bf is TRUE, curses will leave the cursor after an update whereever + // it is after the update. + + int redrawln(int from, int n) { return ::wredrawln(w, from, n); } + // Redraw n lines starting from the requested line + + int redrawwin() { return ::wredrawln(w, 0, height()); } + // Redraw the whole window + + int doupdate() { return ::doupdate(); } + // Do all outputs to make the physical screen looking like the virtual one + + void syncdown() { ::wsyncdown(w); } + // Propagate the changes down to all descendant windows + + void syncup() { ::wsyncup(w); } + // Propagate the changes up in the hierarchy + + void cursyncup() { ::wcursyncup(w); } + // Position the cursor in all ancestor windows corresponding to our setting + + int syncok(bool bf) { return ::syncok(w, bf); } + // If called with bf=TRUE, syncup() is called whenever the window is changed + +#ifndef _no_flushok + int flushok(bool bf) { return ::flushok(w, bf); } +#endif + + void immedok(bool bf) { ::immedok(w, bf); } + // If called with bf=TRUE, any change in the window will cause an + // automatic immediate refresh() + + int intrflush(bool bf) { return ::intrflush(w, bf); } + + int keypad(bool bf) { return ::keypad(w, bf); } + // If called with bf=TRUE, the application will interpret function keys. + + int nodelay(bool bf) { return ::nodelay(w, bf); } + + int meta(bool bf) { return ::meta(w, bf); } + // If called with bf=TRUE, keys may generate 8-Bit characters. Otherwise + // 7-Bit characters are generated. + + int standout() { return ::wstandout(w); } + // Enable "standout" attributes + + int standend() { return ::wstandend(w); } + // Disable "standout" attributes + + // ------------------------------------------------------------------------- + // The next two are virtual, because we redefine them in the + // NCursesPanel class. + // ------------------------------------------------------------------------- + virtual int refresh() { return ::wrefresh(w); } + // Propagate the changes in this window to the virtual screen and call + // doupdate(). This is redefined in NCursesPanel. + + virtual int noutrefresh() { return ::wnoutrefresh(w); } + // Propagate the changes in this window to the virtual screen. This is + // redefined in NCursesPanel. + + // ------------------------------------------------------------------------- + // multiple window control + // ------------------------------------------------------------------------- + int overlay(NCursesWindow& win) { + return ::overlay(w, win.w); } + // Overlay this window over win. + + int overwrite(NCursesWindow& win) { + return ::overwrite(w, win.w); } + // Overwrite win with this window. + + int copywin(NCursesWindow& win, + int sminrow, int smincol, + int dminrow, int dmincol, + int dmaxrow, int dmaxcol, bool overlaywin=TRUE) { + return ::copywin(w, win.w, sminrow, smincol, dminrow, dmincol, + dmaxrow, dmaxcol, static_cast(overlaywin ? 1 : 0)); } + // Overlay or overwrite the rectangle in win given by dminrow,dmincol, + // dmaxrow,dmaxcol with the rectangle in this window beginning at + // sminrow,smincol. + + // ------------------------------------------------------------------------- + // Extended functions + // ------------------------------------------------------------------------- +#if defined(NCURSES_EXT_FUNCS) && (NCURSES_EXT_FUNCS != 0) + int wresize(int newLines, int newColumns) { + return ::wresize(w, newLines, newColumns); } +#endif + + // ------------------------------------------------------------------------- + // Mouse related + // ------------------------------------------------------------------------- + bool has_mouse() const; + // Return TRUE if terminal supports a mouse, FALSE otherwise + + // ------------------------------------------------------------------------- + // traversal support + // ------------------------------------------------------------------------- + NCursesWindow* child() { return subwins; } + // Get the first child window. + + NCursesWindow* sibling() { return sib; } + // Get the next child of my parent. + + NCursesWindow* parent() { return par; } + // Get my parent. + + bool isDescendant(NCursesWindow& win); + // Return TRUE if win is a descendant of this. +}; + +// ------------------------------------------------------------------------- +// We leave this here for compatibility reasons. +// ------------------------------------------------------------------------- +class NCURSES_IMPEXP NCursesColorWindow : public NCursesWindow +{ +public: + NCursesColorWindow(WINDOW* &window) // useful only for stdscr + : NCursesWindow(window) { + useColors(); } + + NCursesColorWindow(int nlines, // number of lines + int ncols, // number of columns + int begin_y, // line origin + int begin_x) // col origin + : NCursesWindow(nlines, ncols, begin_y, begin_x) { + useColors(); } + + NCursesColorWindow(NCursesWindow& parentWin,// parent window + int nlines, // number of lines + int ncols, // number of columns + int begin_y, // absolute or relative + int begin_x, // origins: + char absrel = 'a') // if `a', by & bx are + : NCursesWindow(parentWin, + nlines, ncols, // absolute screen pos, + begin_y, begin_x, // else if `r', they are + absrel ) { // relative to par origin + useColors(); } +}; + +// These enum definitions really belong inside the NCursesPad class, but only +// recent compilers support that feature. + + typedef enum { + REQ_PAD_REFRESH = KEY_MAX + 1, + REQ_PAD_UP, + REQ_PAD_DOWN, + REQ_PAD_LEFT, + REQ_PAD_RIGHT, + REQ_PAD_EXIT + } Pad_Request; + + const Pad_Request PAD_LOW = REQ_PAD_REFRESH; // lowest op-code + const Pad_Request PAD_HIGH = REQ_PAD_EXIT; // highest op-code + +// ------------------------------------------------------------------------- +// Pad Support. We allow an association of a pad with a "real" window +// through which the pad may be viewed. +// ------------------------------------------------------------------------- +class NCURSES_IMPEXP NCursesPad : public NCursesWindow +{ +private: + NCursesWindow* viewWin; // the "viewport" window + NCursesWindow* viewSub; // the "viewport" subwindow + + int h_gridsize, v_gridsize; + +protected: + int min_row, min_col; // top left row/col of the pads display area + + NCursesWindow* Win(void) const { + // Get the window into which the pad should be copied (if any) + return (viewSub?viewSub:(viewWin?viewWin:0)); + } + + NCursesWindow* getWindow(void) const { + return viewWin; + } + + NCursesWindow* getSubWindow(void) const { + return viewSub; + } + + virtual int driver (int key); // Virtualize keystroke key + // The driver translates the keystroke c into an Pad_Request + + virtual void OnUnknownOperation(int pad_req) { + ::beep(); + } + // This is called if the driver returns an unknown op-code + + virtual void OnNavigationError(int pad_req) { + ::beep(); + } + // This is called if a navigation request couldn't be satisfied + + virtual void OnOperation(int pad_req) { + }; + // OnOperation is called if a Pad_Operation was executed and just before + // the refresh() operation is done. + +public: + NCursesPad(int nlines, int ncols); + // create a pad with the given size + + NCursesPad& operator=(const NCursesPad& rhs) + { + if (this != &rhs) { + *this = rhs; + NCursesWindow::operator=(rhs); + } + return *this; + } + + NCursesPad(const NCursesPad& rhs) + : NCursesWindow(rhs), + viewWin(rhs.viewWin), + viewSub(rhs.viewSub), + h_gridsize(rhs.h_gridsize), + v_gridsize(rhs.v_gridsize), + min_row(rhs.min_row), + min_col(rhs.min_col) + { + } + + virtual ~NCursesPad() {} + + int echochar(const chtype ch) { return ::pechochar(w, ch); } + // Put the attributed character onto the pad and immediately do a + // prefresh(). + + int refresh(); + // If a viewport is defined the pad is displayed in this window, otherwise + // this is a noop. + + int refresh(int pminrow, int pmincol, + int sminrow, int smincol, + int smaxrow, int smaxcol) { + return ::prefresh(w, pminrow, pmincol, + sminrow, smincol, smaxrow, smaxcol); + } + // The coordinates sminrow,smincol,smaxrow,smaxcol describe a rectangle + // on the screen. refresh copies a rectangle of this size beginning + // with top left corner pminrow,pmincol onto the screen and calls doupdate(). + + int noutrefresh(); + // If a viewport is defined the pad is displayed in this window, otherwise + // this is a noop. + + int noutrefresh(int pminrow, int pmincol, + int sminrow, int smincol, + int smaxrow, int smaxcol) { + return ::pnoutrefresh(w, pminrow, pmincol, + sminrow, smincol, smaxrow, smaxcol); + } + // Does the same as refresh() but without calling doupdate(). + + virtual void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1); + // Add the window "view" as viewing window to the pad. + + virtual void setSubWindow(NCursesWindow& sub); + // Use the subwindow "sub" of the viewport window for the actual viewing. + // The full viewport window is usually used to provide some decorations + // like frames, titles etc. + + virtual void operator() (void); + // Perform Pad's operation +}; + +// A FramedPad is constructed always with a viewport window. This viewport +// will be framed (by a box() command) and the interior of the box is the +// viewport subwindow. On the frame we display scrollbar sliders. +class NCURSES_IMPEXP NCursesFramedPad : public NCursesPad +{ +protected: + virtual void OnOperation(int pad_req); + +public: + NCursesFramedPad(NCursesWindow& win, int nlines, int ncols, + int v_grid = 1, int h_grid = 1) + : NCursesPad(nlines, ncols) { + NCursesPad::setWindow(win, v_grid, h_grid); + NCursesPad::setSubWindow(*(new NCursesWindow(win))); + } + // Construct the FramedPad with the given Window win as viewport. + + virtual ~NCursesFramedPad() { + delete getSubWindow(); + } + + void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1) { + err_handler("Operation not allowed"); + } + // Disable this call; the viewport is already defined + + void setSubWindow(NCursesWindow& sub) { + err_handler("Operation not allowed"); + } + // Disable this call; the viewport subwindow is already defined + +}; + +#endif /* NCURSES_CURSESW_H_incl */ diff --git a/ncurses/c++/cursslk.cc b/ncurses/c++/cursslk.cc new file mode 100644 index 0000000..cfbc9da --- /dev/null +++ b/ncurses/c++/cursslk.cc @@ -0,0 +1,132 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +#include "internal.h" +#include "cursslk.h" +#include "cursesapp.h" + +MODULE_ID("$Id: cursslk.cc,v 1.15 2005/08/06 22:12:36 tom Exp $") + +Soft_Label_Key_Set::Soft_Label_Key& + Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text) +{ + delete[] label; + label = new char[1 + ::strlen(text)]; + (::strcpy)(label,text); + return *this; +} + +long Soft_Label_Key_Set::count = 0L; +int Soft_Label_Key_Set::num_labels = 0; + +Soft_Label_Key_Set::Label_Layout + Soft_Label_Key_Set::format = None; + +void Soft_Label_Key_Set::init() +{ + slk_array = new Soft_Label_Key[num_labels]; + for(int i=0; i < num_labels; i++) { + slk_array[i].num = i+1; + } + b_attrInit = FALSE; +} + +Soft_Label_Key_Set::Soft_Label_Key_Set() + : b_attrInit(FALSE), + slk_array(NULL) +{ + if (format==None) + Error("No default SLK layout"); + init(); +} + +Soft_Label_Key_Set::Soft_Label_Key_Set(Soft_Label_Key_Set::Label_Layout fmt) + : b_attrInit(FALSE), + slk_array(NULL) +{ + if (fmt==None) + Error("Invalid SLK Layout"); + if (count++==0) { + format = fmt; + if (ERR == ::slk_init(static_cast(fmt))) + Error("slk_init"); + num_labels = (fmt>=PC_Style?12:8); + } + else if (fmt!=format) + Error("All SLKs must have same layout"); + init(); +} + +Soft_Label_Key_Set::~Soft_Label_Key_Set() { + if (!::isendwin()) + clear(); + delete[] slk_array; + count--; +} + +Soft_Label_Key_Set::Soft_Label_Key& Soft_Label_Key_Set::operator[](int i) { + if (i<1 || i>num_labels) + Error("Invalid Label index"); + return slk_array[i-1]; +} + +void Soft_Label_Key_Set::activate_label(int i, bool bf) { + if (!b_attrInit) { + NCursesApplication* A = NCursesApplication::getApplication(); + if (A) attrset(A->labels()); + b_attrInit = TRUE; + } + Soft_Label_Key& K = (*this)[i]; + if (ERR==::slk_set(K.num,bf?K.label:"",K.format)) + Error("slk_set"); + noutrefresh(); +} + +void Soft_Label_Key_Set::activate_labels(bool bf) +{ + if (!b_attrInit) { + NCursesApplication* A = NCursesApplication::getApplication(); + if (A) attrset(A->labels()); + b_attrInit = TRUE; + } + for(int i=1; i <= num_labels; i++) { + Soft_Label_Key& K = (*this)[i]; + if (ERR==::slk_set(K.num,bf?K.label:"",K.format)) + Error("slk_set"); + } + if (bf) + restore(); + else + clear(); + noutrefresh(); +} diff --git a/ncurses/c++/cursslk.h b/ncurses/c++/cursslk.h new file mode 100644 index 0000000..091695e --- /dev/null +++ b/ncurses/c++/cursslk.h @@ -0,0 +1,238 @@ +// * this is for making emacs happy: -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +// $Id: cursslk.h,v 1.13 2005/05/28 21:58:18 tom Exp $ + +#ifndef NCURSES_CURSSLK_H_incl +#define NCURSES_CURSSLK_H_incl + +#include + +class NCURSES_IMPEXP Soft_Label_Key_Set { +public: + // This inner class represents the attributes of a Soft Label Key (SLK) + class NCURSES_IMPEXP Soft_Label_Key { + friend class Soft_Label_Key_Set; + public: + typedef enum { Left=0, Center=1, Right=2 } Justification; + + private: + char *label; // The Text of the Label + Justification format; // The Justification + int num; // The number of the Label + + Soft_Label_Key() : label(NULL), format(Left), num(-1) { + } + + virtual ~Soft_Label_Key() { + delete[] label; + }; + + public: + // Set the text of the Label + Soft_Label_Key& operator=(char *text); + + // Set the Justification of the Label + Soft_Label_Key& operator=(Justification just) { + format = just; + return *this; + } + + // Retrieve the text of the label + inline char* operator()(void) const { + return label; + } + + Soft_Label_Key& operator=(const Soft_Label_Key& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + Soft_Label_Key(const Soft_Label_Key& rhs) + : label(NULL), + format(rhs.format), + num(rhs.num) + { + *this = rhs.label; + } + }; + +public: + typedef enum { + None = -1, + Three_Two_Three = 0, + Four_Four = 1, + PC_Style = 2, + PC_Style_With_Index = 3 + } Label_Layout; + +private: + static long NCURSES_IMPEXP count; // Number of Key Sets + static Label_Layout NCURSES_IMPEXP format; // Layout of the Key Sets + static int NCURSES_IMPEXP num_labels; // Number Of Labels in Key Sets + bool NCURSES_IMPEXP b_attrInit; // Are attributes initialized + + Soft_Label_Key *slk_array; // The array of SLK's + + // Init the Key Set + void init(); + + // Activate or Deactivate Label# i, Label counting starts with 1! + void activate_label(int i, bool bf=TRUE); + + // Activate of Deactivate all Labels + void activate_labels(bool bf); + +protected: + inline void Error (const char* msg) const THROWS(NCursesException) { + THROW(new NCursesException (msg)); + } + + // Remove SLK's from screen + void clear() { + if (ERR==::slk_clear()) + Error("slk_clear"); + } + + // Restore them + void restore() { + if (ERR==::slk_restore()) + Error("slk_restore"); + } + +public: + + // Construct a Key Set, use the most comfortable layout as default. + // You must create a Soft_Label_Key_Set before you create any object of + // the NCursesWindow, NCursesPanel or derived classes. (Actually before + // ::initscr() is called). + Soft_Label_Key_Set(Label_Layout fmt); + + // This constructor assumes, that you already constructed a Key Set + // with a layout by the constructor above. This layout will be reused. + NCURSES_IMPEXP Soft_Label_Key_Set(); + + Soft_Label_Key_Set& operator=(const Soft_Label_Key_Set& rhs) + { + if (this != &rhs) { + *this = rhs; + init(); // allocate a new slk_array[] + } + return *this; + } + + Soft_Label_Key_Set(const Soft_Label_Key_Set& rhs) + : b_attrInit(rhs.b_attrInit), + slk_array(NULL) + { + init(); // allocate a new slk_array[] + } + + virtual ~Soft_Label_Key_Set(); + + // Get Label# i. Label counting starts with 1! + NCURSES_IMPEXP Soft_Label_Key& operator[](int i); + + // Retrieve number of Labels + inline int labels() const { return num_labels; } + + // Refresh the SLK portion of the screen + inline void refresh() { + if (ERR==::slk_refresh()) + Error("slk_refresh"); + } + + // Mark the SLK portion of the screen for refresh, defer actual refresh + // until next update call. + inline void noutrefresh() { + if (ERR==::slk_noutrefresh()) + Error("slk_noutrefresh"); + } + + // Mark the whole SLK portion of the screen as modified + inline void touch() { + if (ERR==::slk_touch()) + Error("slk_touch"); + } + + // Activate Label# i + inline void show(int i) { + activate_label(i,FALSE); + activate_label(i,TRUE); + } + + // Hide Label# i + inline void hide(int i) { + activate_label(i,FALSE); + } + + // Show all Labels + inline void show() { + activate_labels(FALSE); + activate_labels(TRUE); + } + + // Hide all Labels + inline void hide() { + activate_labels(FALSE); + } + + inline void attron(attr_t attrs) { + if (ERR==::slk_attron(attrs)) + Error("slk_attron"); + } + + inline void attroff(attr_t attrs) { + if (ERR==::slk_attroff(attrs)) + Error("slk_attroff"); + } + + inline void attrset(attr_t attrs) { + if (ERR==::slk_attrset(attrs)) + Error("slk_attrset"); + } + + inline void color(short color_pair_number) { + if (ERR==::slk_color(color_pair_number)) + Error("slk_color"); + } + + inline attr_t attr() const { + return ::slk_attr(); + } +}; + +#endif /* NCURSES_CURSSLK_H_incl */ diff --git a/ncurses/c++/demo.cc b/ncurses/c++/demo.cc new file mode 100644 index 0000000..ddd5f2b --- /dev/null +++ b/ncurses/c++/demo.cc @@ -0,0 +1,563 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + * Silly demo program for the NCursesPanel class. + * + * written by Anatoly Ivasyuk (anatoly@nick.csh.rit.edu) + * + * Demo code for NCursesMenu and NCursesForm written by + * Juergen Pfeifer + * + * $Id: demo.cc,v 1.38 2008/08/04 17:16:57 tom Exp $ + */ + +#include "internal.h" +#include "cursesapp.h" +#include "cursesm.h" +#include "cursesf.h" + +extern "C" unsigned int sleep(unsigned int); + +#undef index // needed for NeXT + +// +// ------------------------------------------------------------------------- +// +class SillyDemo +{ + public: + void run(int sleeptime) { + + NCursesPanel *mystd = new NCursesPanel(); + + // Make a few small demo panels + + NCursesPanel *u = new NCursesPanel(8, 20, 12, 4); + NCursesPanel *v = new NCursesPanel(8, 20, 10, 6); + NCursesPanel *w = new NCursesPanel(8, 20, 8, 8); + NCursesPanel *x = new NCursesPanel(8, 20, 6, 10); + NCursesPanel *y = new NCursesPanel(8, 20, 4, 12); + NCursesPanel *z = new NCursesPanel(8, 30, 2, 14); + + // Draw something on the main screen, so we can see what happens + // when panels get moved or deleted. + + mystd->box(); + mystd->move(mystd->height()/2, 1); + mystd->hline(mystd->width()-2); + mystd->move(1, mystd->width()/2); + mystd->vline(mystd->height()-2); + mystd->addch(0, mystd->width()/2, ACS_TTEE); + mystd->addch(mystd->height()-1, mystd->width()/2, ACS_BTEE); + mystd->addch(mystd->height()/2, 0, ACS_LTEE); + mystd->addch(mystd->height()/2, mystd->width()-1, ACS_RTEE); + mystd->addch(mystd->height()/2, mystd->width()/2, ACS_PLUS); + + // Draw frames with titles around panels so that we can see where + // the panels are located. + u->boldframe("Win U"); + v->frame("Win V"); + w->boldframe("Win W"); + x->frame("Win X"); + y->boldframe("Win Y"); + z->frame("Win Z"); + if (NCursesApplication::getApplication()->useColors()) { + u->bkgd(' '|COLOR_PAIR(1)); + w->bkgd(' '|COLOR_PAIR(1)); + y->bkgd(' '|COLOR_PAIR(1)); + v->bkgd(' '|COLOR_PAIR(2)); + x->bkgd(' '|COLOR_PAIR(2)); + z->bkgd(' '|COLOR_PAIR(2)); + } + + // A refresh to any valid panel updates all panels and refreshes + // the screen. Using mystd is just convenient - We know it's always + // valid until the end of the program. + + mystd->refresh(); + sleep(sleeptime); + + // Show what happens when panels are deleted and moved. + + sleep(sleeptime); + delete u; + mystd->refresh(); + + sleep(sleeptime); + delete z; + mystd->refresh(); + + sleep(sleeptime); + delete v; + mystd->refresh(); + + // show how it looks when a panel moves + sleep(sleeptime); + y->mvwin(5, 30); + mystd->refresh(); + + sleep(sleeptime); + delete y; + mystd->refresh(); + + // show how it looks when you raise a panel + sleep(sleeptime); + w->top(); + mystd->refresh(); + + sleep(sleeptime); + delete w; + mystd->refresh(); + + sleep(sleeptime); + delete x; + + mystd->clear(); + mystd->refresh(); + + // Don't forget to clean up the main screen. Since this is the + // last thing using NCursesWindow, this has the effect of + // shutting down ncurses and restoring the terminal state. + + sleep(sleeptime); + delete mystd; + } +}; + +class UserData +{ +private: + int u; +public: + UserData(int x) : u(x) {} + int sleeptime() const { return u; } +}; +// +// ------------------------------------------------------------------------- +// +template class MyAction : public NCursesUserItem +{ +public: + MyAction (const char* p_name, + const T* p_UserData) + : NCursesUserItem(p_name, static_cast(0), p_UserData) + {} + + virtual ~MyAction() {} + + bool action() { + SillyDemo a; + a.run(NCursesUserItem::UserData()->sleeptime()); + return FALSE; + } +}; + +template class MyAction; +template class NCURSES_IMPEXP NCursesUserItem; + +class QuitItem : public NCursesMenuItem +{ +public: + QuitItem() : NCursesMenuItem("Quit") { + } + + bool action() { + return TRUE; + } +}; +// +// ------------------------------------------------------------------------- +// +class Label : public NCursesFormField +{ +public: + Label(const char* title, + int row, int col) + : NCursesFormField(1, static_cast(::strlen(title)), row, col) { + set_value(title); + options_off(O_EDIT|O_ACTIVE); + } +}; +// +// ------------------------------------------------------------------------- +// +class MyFieldType : public UserDefinedFieldType +{ +private: + int chk; +protected: + bool field_check(NCursesFormField& f) { + return TRUE; + } + bool char_check(int c) { + return (c==chk?TRUE:FALSE); + } +public: + MyFieldType(int x) : chk(x) { + } +}; +// +// ------------------------------------------------------------------------- +// +class TestForm : public NCursesForm +{ +private: + NCursesFormField** F; + MyFieldType* mft; + Integer_Field *ift; + Enumeration_Field *eft; + + static const char *weekdays[]; + +public: + TestForm() + : NCursesForm(13, 51, (lines() - 15)/2, (cols() - 53)/2), + F(0), + mft(0), + ift(0), + eft(0) + { + + F = new NCursesFormField*[10]; + mft = new MyFieldType('X'); + ift = new Integer_Field(0, 1, 10); + eft = new Enumeration_Field(weekdays); + + F[0] = new Label("Demo Entry Form", 0, 16); + F[1] = new Label("Weekday Enum", 2, 1); + F[2] = new Label("Number(1-10)", 2, 21); + F[3] = new Label("Only 'X'", 2, 35); + F[4] = new Label("Multiline Field (Dynamic and Scrollable)", 5, 1); + F[5] = new NCursesFormField(1, 18, 3, 1); + F[6] = new NCursesFormField(1, 12, 3, 21); + F[7] = new NCursesFormField(1, 12, 3, 35); + F[8] = new NCursesFormField(4, 46, 6, 1, 2); + F[9] = new NCursesFormField(); + + InitForm(F, TRUE, TRUE); + boldframe(); + + F[5]->set_fieldtype(*eft); + F[6]->set_fieldtype(*ift); + + F[7]->set_fieldtype(*mft); + F[7]->set_maximum_growth(20); // max. 20 characters + F[7]->options_off(O_STATIC); // make field dynamic + + F[8]->set_maximum_growth(10); // max. 10 lines + F[8]->options_off(O_STATIC); // make field dynamic + } + + TestForm& operator=(const TestForm& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + TestForm(const TestForm& rhs) + : NCursesForm(rhs), F(0), mft(0), ift(0), eft(0) + { + } + + ~TestForm() { + delete mft; + delete ift; + delete eft; + } +}; + +const char* TestForm::weekdays[] = { + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", + "Friday", "Saturday", NULL }; +// +// ------------------------------------------------------------------------- +// +class FormAction : public NCursesMenuItem +{ +public: + FormAction(const char *s) : NCursesMenuItem(s) { + } + + bool action() { + TestForm F; + Soft_Label_Key_Set* S = new Soft_Label_Key_Set; + for(int i=1; i <= S->labels(); i++) { + char buf[8]; + assert(i < 100); + ::sprintf(buf, "Frm%02d", i); + (*S)[i] = buf; // Text + (*S)[i] = Soft_Label_Key_Set::Soft_Label_Key::Left; // Justification + } + NCursesApplication::getApplication()->push(*S); + F(); + NCursesApplication::getApplication()->pop(); + delete S; + return FALSE; + } +}; +// +// ------------------------------------------------------------------------- +// +class PadAction : public NCursesMenuItem +{ +public: + PadAction(const char* s) : NCursesMenuItem(s) { + } + + bool action() { + const int GRIDSIZE = 3; + const int PADSIZE = 200; + unsigned gridcount = 0; + + NCursesPanel mystd; + NCursesPanel P(mystd.lines()-2, mystd.cols()-2, 1, 1); + NCursesFramedPad FP(P, PADSIZE, PADSIZE); + + for (int i=0; i < PADSIZE; i++) { + for (int j=0; j < PADSIZE; j++) { + if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0) { + if (i==0 || j==0) + FP.addch('+'); + else + FP.addch(static_cast('A' + (gridcount++ % 26))); + } + else if (i % GRIDSIZE == 0) + FP.addch('-'); + else if (j % GRIDSIZE == 0) + FP.addch('|'); + else + FP.addch(' '); + } + } + + P.label("Pad Demo", NULL); + FP(); + P.clear(); + return FALSE; + } +}; + +// +// ------------------------------------------------------------------------- +// +class PassiveItem : public NCursesMenuItem +{ +public: + PassiveItem(const char* text) : NCursesMenuItem(text) { + options_off(O_SELECTABLE); + } +}; + +// +// ------------------------------------------------------------------------- +// +class ScanAction : public NCursesMenuItem +{ +public: + ScanAction(const char* s) : NCursesMenuItem(s) { + } + + bool action() { + NCursesPanel *mystd = new NCursesPanel(); + + NCursesPanel *w = new NCursesPanel(mystd->lines() - 2, mystd->cols() - 2, 1, 1); + w->box(); + w->refresh(); + + NCursesPanel *s = new NCursesPanel(w->lines() - 6, w->cols() - 6, 3, 3); + s->scrollok(TRUE); + ::echo(); + + s->printw("Enter decimal integers. The running total will be shown\n"); + int nvalue = -1; + int result = 0; + while (nvalue != 0) { + nvalue = 0; + s->scanw("%d", &nvalue); + if (nvalue != 0) { + s->printw("%d: ", result += nvalue); + } + s->refresh(); + } + s->printw("\nPress any key to continue..."); + s->getch(); + + delete s; + delete w; + delete mystd; + ::noecho(); + return FALSE; + } +}; + +// +// ------------------------------------------------------------------------- +// +class MyMenu : public NCursesMenu +{ +private: + NCursesPanel* P; + NCursesMenuItem** I; + UserData *u; + #define n_items 7 + +public: + MyMenu () + : NCursesMenu (n_items+2, 8, (lines()-10)/2, (cols()-10)/2), + P(0), I(0), u(0) + { + u = new UserData(1); + I = new NCursesMenuItem*[1+n_items]; + I[0] = new PassiveItem("One"); + I[1] = new PassiveItem("Two"); + I[2] = new MyAction ("Silly", u); + I[3] = new FormAction("Form"); + I[4] = new PadAction("Pad"); + I[5] = new ScanAction("Scan"); + I[6] = new QuitItem(); + I[7] = new NCursesMenuItem(); // Terminating empty item + + InitMenu(I, TRUE, TRUE); + + P = new NCursesPanel(1, n_items, LINES-1, 1); + boldframe("Demo", "Silly"); + P->show(); + } + + MyMenu& operator=(const MyMenu& rhs) + { + if (this != &rhs) { + *this = rhs; + } + return *this; + } + + MyMenu(const MyMenu& rhs) + : NCursesMenu(rhs), P(0), I(0), u(0) + { + } + + ~MyMenu() + { + P->hide(); + delete P; + delete u; + } + + virtual void On_Menu_Init() + { + NCursesWindow W(::stdscr); + P->move(0, 0); + P->clrtoeol(); + for(int i=1; i<=count(); i++) + P->addch('0' + i); + P->bkgd(W.getbkgd()); + refresh(); + } + + virtual void On_Menu_Termination() + { + P->move(0, 0); + P->clrtoeol(); + refresh(); + } + + virtual void On_Item_Init(NCursesMenuItem& item) + { + P->move(0, item.index()); + P->attron(A_REVERSE); + P->printw("%1d", 1+item.index()); + P->attroff(A_REVERSE); + refresh(); + } + + virtual void On_Item_Termination(NCursesMenuItem& item) + { + P->move(0, item.index()); + P->attroff(A_REVERSE); + P->printw("%1d", 1+item.index()); + refresh(); + } +}; +// +// ------------------------------------------------------------------------- +// +class TestApplication : public NCursesApplication +{ +protected: + int titlesize() const { return 1; } + void title(); + Soft_Label_Key_Set::Label_Layout useSLKs() const { + return Soft_Label_Key_Set::PC_Style_With_Index; + } + void init_labels(Soft_Label_Key_Set& S) const; + +public: + TestApplication() : NCursesApplication(TRUE) { + } + + int run(); +}; + +void TestApplication::init_labels(Soft_Label_Key_Set& S) const +{ + for(int i=1; i <= S.labels(); i++) { + char buf[8]; + assert(i < 100); + ::sprintf(buf, "Key%02d", i); + S[i] = buf; // Text + S[i] = Soft_Label_Key_Set::Soft_Label_Key::Left; // Justification + } +} + +void TestApplication::title() +{ + const char * const titleText = "Simple C++ Binding Demo"; + const int len = ::strlen(titleText); + + titleWindow->bkgd(screen_titles()); + titleWindow->addstr(0, (titleWindow->cols() - len)/2, titleText); + titleWindow->noutrefresh(); +} + + +int TestApplication::run() +{ + MyMenu M; + M(); + return 0; +} + +// +// ------------------------------------------------------------------------- +// +static TestApplication *Demo = new TestApplication(); diff --git a/ncurses/c++/edit_cfg.sh b/ncurses/c++/edit_cfg.sh new file mode 100644 index 0000000..73c31b2 --- /dev/null +++ b/ncurses/c++/edit_cfg.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# $Id: edit_cfg.sh,v 1.17 2008/08/30 19:44:25 tom Exp $ +############################################################################## +# Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey 1997-on +# +# Edit the default value of the etip.h file based on the autoconf-generated +# values: +# +# $1 = ncurses_cfg.h +# $2 = etip.h +# +echo "substituting autoconf'd values from $1 into $2" +for name in \ + CPP_HAS_PARAM_INIT \ + CPP_HAS_STATIC_CAST \ + ETIP_NEEDS_MATH_EXCEPTION \ + ETIP_NEEDS_MATH_H \ + HAVE_BUILTIN_H \ + HAVE_GPP_BUILTIN_H \ + HAVE_GXX_BUILTIN_H \ + HAVE_IOSTREAM \ + HAVE_TYPEINFO \ + HAVE_VALUES_H \ + IOSTREAM_NAMESPACE +do + rm -f $2.bak + mv $2 $2.bak + if ( grep "[ ]$name[ ]1" $1 2>&1 >/dev/null) + then + value=1 + sed -e 's/define '$name'.*$/define '$name' 1/' $2.bak >$2 + else + value=0 + sed -e 's/define '$name'.*$/define '$name' 0/' $2.bak >$2 + fi + if (cmp -s $2 $2.bak) + then + echo '... '$name $value + mv $2.bak $2 + else + echo '... '$name $value + rm -f $2.bak + fi +done diff --git a/ncurses/c++/etip.h.in b/ncurses/c++/etip.h.in new file mode 100644 index 0000000..20642a6 --- /dev/null +++ b/ncurses/c++/etip.h.in @@ -0,0 +1,378 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +// $Id: etip.h.in,v 1.37 2008/08/30 19:27:32 tom Exp $ + +#ifndef NCURSES_ETIP_H_incl +#define NCURSES_ETIP_H_incl 1 + +// These are substituted at configure/build time +#ifndef HAVE_BUILTIN_H +#define HAVE_BUILTIN_H 0 +#endif + +#ifndef HAVE_GXX_BUILTIN_H +#define HAVE_GXX_BUILTIN_H 0 +#endif + +#ifndef HAVE_GPP_BUILTIN_H +#define HAVE_GPP_BUILTIN_H 0 +#endif + +#ifndef HAVE_IOSTREAM +#define HAVE_IOSTREAM 0 +#endif + +#ifndef HAVE_TYPEINFO +#define HAVE_TYPEINFO 0 +#endif + +#ifndef HAVE_VALUES_H +#define HAVE_VALUES_H 0 +#endif + +#ifndef ETIP_NEEDS_MATH_H +#define ETIP_NEEDS_MATH_H 0 +#endif + +#ifndef ETIP_NEEDS_MATH_EXCEPTION +#define ETIP_NEEDS_MATH_EXCEPTION 0 +#endif + +#ifndef CPP_HAS_PARAM_INIT +#define CPP_HAS_PARAM_INIT 0 +#endif + +#ifndef CPP_HAS_STATIC_CAST +#define CPP_HAS_STATIC_CAST 0 // workaround for g++ 2.95.3 +#endif + +#ifndef IOSTREAM_NAMESPACE +#define IOSTREAM_NAMESPACE 0 +#endif + +#ifdef __GNUG__ +# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) +# if HAVE_TYPEINFO +# include +# endif +# endif +#endif + +#if defined(__GNUG__) +# if HAVE_BUILTIN_H || HAVE_GXX_BUILTIN_H || HAVE_GPP_BUILTIN_H +# if ETIP_NEEDS_MATH_H +# if ETIP_NEEDS_MATH_EXCEPTION +# undef exception +# define exception math_exception +# endif +# include +# endif +# undef exception +# define exception builtin_exception +# if HAVE_GPP_BUILTIN_H +# include +# elif HAVE_GXX_BUILTIN_H +# include +# else +# include +# endif +# undef exception +# endif +#elif defined (__SUNPRO_CC) +# include +#endif + +#include + +extern "C" { +#if HAVE_VALUES_H +# include +#endif + +#include +#include +#include +} + +// Language features +#if CPP_HAS_PARAM_INIT +#define NCURSES_PARAM_INIT(value) = value +#else +#define NCURSES_PARAM_INIT(value) /*nothing*/ +#endif + +#if CPP_HAS_STATIC_CAST +#define STATIC_CAST(s) static_cast +#else +#define STATIC_CAST(s) (s) +#endif + +// Forward Declarations +class NCURSES_IMPEXP NCursesPanel; +class NCURSES_IMPEXP NCursesMenu; +class NCURSES_IMPEXP NCursesForm; + +class NCURSES_IMPEXP NCursesException +{ +public: + const char *message; + int errorno; + + NCursesException (const char* msg, int err) + : message(msg), errorno (err) + {}; + + NCursesException (const char* msg) + : message(msg), errorno (E_SYSTEM_ERROR) + {}; + + NCursesException& operator=(const NCursesException& rhs) + { + errorno = rhs.errorno; + return *this; + } + + NCursesException(const NCursesException& rhs) + : message(rhs.message), errorno(rhs.errorno) + { + } + + virtual const char *classname() const { + return "NCursesWindow"; + } + + virtual ~NCursesException() + { + } +}; + +class NCURSES_IMPEXP NCursesPanelException : public NCursesException +{ +public: + const NCursesPanel* p; + + NCursesPanelException (const char *msg, int err) : + NCursesException (msg, err), + p (NULL) + {}; + + NCursesPanelException (const NCursesPanel* panel, + const char *msg, + int err) : + NCursesException (msg, err), + p (panel) + {}; + + NCursesPanelException (int err) : + NCursesException ("panel library error", err), + p (NULL) + {}; + + NCursesPanelException (const NCursesPanel* panel, + int err) : + NCursesException ("panel library error", err), + p (panel) + {}; + + NCursesPanelException& operator=(const NCursesPanelException& rhs) + { + if (this != &rhs) { + NCursesException::operator=(rhs); + p = rhs.p; + } + return *this; + } + + NCursesPanelException(const NCursesPanelException& rhs) + : NCursesException(rhs), p(rhs.p) + { + } + + virtual const char *classname() const { + return "NCursesPanel"; + } + + virtual ~NCursesPanelException() + { + } +}; + +class NCURSES_IMPEXP NCursesMenuException : public NCursesException +{ +public: + const NCursesMenu* m; + + NCursesMenuException (const char *msg, int err) : + NCursesException (msg, err), + m (NULL) + {}; + + NCursesMenuException (const NCursesMenu* menu, + const char *msg, + int err) : + NCursesException (msg, err), + m (menu) + {}; + + NCursesMenuException (int err) : + NCursesException ("menu library error", err), + m (NULL) + {}; + + NCursesMenuException (const NCursesMenu* menu, + int err) : + NCursesException ("menu library error", err), + m (menu) + {}; + + NCursesMenuException& operator=(const NCursesMenuException& rhs) + { + if (this != &rhs) { + NCursesException::operator=(rhs); + m = rhs.m; + } + return *this; + } + + NCursesMenuException(const NCursesMenuException& rhs) + : NCursesException(rhs), m(rhs.m) + { + } + + virtual const char *classname() const { + return "NCursesMenu"; + } + + virtual ~NCursesMenuException() + { + } +}; + +class NCURSES_IMPEXP NCursesFormException : public NCursesException +{ +public: + const NCursesForm* f; + + NCursesFormException (const char *msg, int err) : + NCursesException (msg, err), + f (NULL) + {}; + + NCursesFormException (const NCursesForm* form, + const char *msg, + int err) : + NCursesException (msg, err), + f (form) + {}; + + NCursesFormException (int err) : + NCursesException ("form library error", err), + f (NULL) + {}; + + NCursesFormException (const NCursesForm* form, + int err) : + NCursesException ("form library error", err), + f (form) + {}; + + NCursesFormException& operator=(const NCursesFormException& rhs) + { + if (this != &rhs) { + NCursesException::operator=(rhs); + f = rhs.f; + } + return *this; + } + + NCursesFormException(const NCursesFormException& rhs) + : NCursesException(rhs), f(rhs.f) + { + } + + virtual const char *classname() const { + return "NCursesForm"; + } + + virtual ~NCursesFormException() + { + } +}; + +#if !((defined(__GNUG__) && defined(__EXCEPTIONS)) || defined(__SUNPRO_CC)) +# if HAVE_IOSTREAM +# include +# if IOSTREAM_NAMESPACE +using std::cerr; +using std::endl; +# endif +# else +# include +# endif + extern "C" void exit(int); +#endif + +inline void THROW(const NCursesException *e) { +#if defined(__GNUG__) && defined(__EXCEPTIONS) +# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) + (*lib_error_handler)(e ? e->classname() : "", e ? e->message : ""); +#else +#define CPP_HAS_TRY_CATCH 1 +#endif +#elif defined(__SUNPRO_CC) +# if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5) + genericerror(1, ((e != 0) ? (char *)(e->message) : "")); +#else +#define CPP_HAS_TRY_CATCH 1 +#endif +#else + if (e) + cerr << e->message << endl; + exit(0); +#endif + +#ifndef CPP_HAS_TRY_CATCH +#define CPP_HAS_TRY_CATCH 0 +#define NCURSES_CPP_TRY /* nothing */ +#define NCURSES_CPP_CATCH(e) if (false) +#define THROWS(s) /* nothing */ +#elif CPP_HAS_TRY_CATCH + throw *e; +#define NCURSES_CPP_TRY try +#define NCURSES_CPP_CATCH(e) catch(e) +#define THROWS(s) throw(s) +#endif +} + +#endif /* NCURSES_ETIP_H_incl */ diff --git a/ncurses/c++/headers b/ncurses/c++/headers new file mode 100644 index 0000000..0be0311 --- /dev/null +++ b/ncurses/c++/headers @@ -0,0 +1,40 @@ +# C++ headers +# $Id: headers,v 1.3 2006/12/24 16:25:45 tom Exp $ +############################################################################## +# Copyright (c) 1998,2006 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey 1997 +# +$(srcdir)/cursesapp.h +$(srcdir)/cursesf.h +$(srcdir)/cursesm.h +$(srcdir)/cursesp.h +$(srcdir)/cursesw.h +$(srcdir)/cursslk.h +etip.h +# vile:makemode diff --git a/ncurses/c++/internal.h b/ncurses/c++/internal.h new file mode 100644 index 0000000..3066e72 --- /dev/null +++ b/ncurses/c++/internal.h @@ -0,0 +1,60 @@ +// * This makes emacs happy -*-Mode: C++;-*- +/**************************************************************************** + * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1997 * + ****************************************************************************/ + +// $Id: internal.h,v 1.16 2008/10/25 21:35:44 tom Exp $ + +#ifndef NCURSES_CPLUS_INTERNAL_H +#define NCURSES_CPLUS_INTERNAL_H 1 + +#include + +#if USE_RCS_IDS +#define MODULE_ID(id) static const char Ident[] = id; +#else +#define MODULE_ID(id) /*nothing*/ +#endif + +#ifndef _QNX_SOURCE +#include +#include +#endif + +#ifndef CTRL +#define CTRL(x) ((x) & 0x1f) +#endif + +#ifndef NULL +#define NULL 0 +#endif + +#endif /* NCURSES_CPLUS_INTERNAL_H */ diff --git a/ncurses/c++/modules b/ncurses/c++/modules new file mode 100644 index 0000000..bc4fae5 --- /dev/null +++ b/ncurses/c++/modules @@ -0,0 +1,45 @@ +# Program modules +# $Id: modules,v 1.7 2006/12/24 00:53:08 tom Exp $ +############################################################################## +# Copyright (c) 1998,2006 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey 1995-on +# + +@ base +cursesf c++ $(srcdir) $(cursesf_h) $(cursesapp_h) +cursesm c++ $(srcdir) $(cursesm_h) $(cursesapp_h) +cursesp c++ $(srcdir) $(cursesp_h) +cursesw c++ $(srcdir) $(cursesw_h) +cursespad c++ $(srcdir) $(cursesw_h) +cursslk c++ $(srcdir) $(cursslk_h) $(cursesapp_h) +cursesapp c++ $(srcdir) $(cursesapp_h) +cursesmain c++ $(srcdir) $(cursesapp_h) +demo c++ $(srcdir) $(cursesf_h) $(cursesm_h) $(cursesapp_h) + +# vile:makemode diff --git a/ncurses/config.log b/ncurses/config.log new file mode 100644 index 0000000..578e014 --- /dev/null +++ b/ncurses/config.log @@ -0,0 +1,2387 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by configure, which was +generated by GNU Autoconf 2.52.20080325. Invocation command line was + + $ /tmp/ncurses-27.roots/ncurses-27/ncurses/configure --prefix=/usr --disable-dependency-tracking --disable-mixed-case --with-shared --without-normal --without-debug --enable-termcap --enable-widec --with-abi-version=5.4 --without-cxx-binding --without-cxx --mandir=/usr/share/man + +## ---------- ## +## Platform. ## +## ---------- ## + +hostname = nanake.local +uname -m = i386 +uname -r = 10.0 +uname -s = Darwin +uname -v = Darwin Kernel Version 10.5.0: Tue Aug 3 15:46:33 PDT 2010; root:xnu-1504.9.10~1/RELEASE_I386 + +/usr/bin/uname -p = i386 +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = Mach kernel version: + Darwin Kernel Version 10.5.0: Tue Aug 3 15:46:33 PDT 2010; root:xnu-1504.9.10~1/RELEASE_I386 +Kernel configured for up to 16 processors. +8 processors are physically available. +16 processors are logically available. +Processor type: i486 (Intel 80486) +Processors active: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +Primary memory available: 6.00 gigabytes +Default processor set: 100 tasks, 422 threads, 16 processors +Load average: 3.53, Mach factor: 12.45 +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +## ------------ ## +## Core tests. ## +## ------------ ## + +configure:1088: PATH=".;."; conftest.sh +/tmp/ncurses-27.roots/ncurses-27/ncurses/configure: line 1089: conftest.sh: command not found +configure:1091: $? = 127 +configure:1104: checking for egrep +configure:1114: result: grep -E +configure:1128: result: Configuring NCURSES 5.7 ABI 5 (Sat Aug 28 18:39:20 PDT 2010) +configure:1181: WARNING: overriding ABI version 5 to 5.4 +configure:1233: checking build system type +configure:1251: result: i386-apple-darwin10.0 +configure:1258: checking host system type +configure:1272: result: i386-apple-darwin10.0 +configure:1280: checking target system type +configure:1294: result: i386-apple-darwin10.0 +configure:1325: result: Configuring for darwin10.0 +configure:1349: checking for prefix +configure:1361: result: /usr +configure:1437: checking for gcc +configure:1452: found /usr/bin/gcc +configure:1460: result: gcc +configure:1688: checking for C compiler version +configure:1691: gcc --version &5 +i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664) +Copyright (C) 2007 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:1694: $? = 0 +configure:1696: gcc -v &5 +Using built-in specs. +Target: i686-apple-darwin10 +Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1 +Thread model: posix +gcc version 4.2.1 (Apple Inc. build 5664) +configure:1699: $? = 0 +configure:1701: gcc -V &5 +gcc-4.2: argument to `-V' is missing +configure:1704: $? = 1 +configure:1724: checking for C compiler default output +configure:1727: gcc -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:1730: $? = 0 +configure:1759: result: a.out +configure:1764: checking whether the C compiler works +configure:1770: ./a.out +configure:1773: $? = 0 +configure:1788: result: yes +configure:1795: checking whether we are cross compiling +configure:1797: result: no +configure:1800: checking for executable suffix +configure:1802: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:1805: $? = 0 +configure:1827: result: +configure:1833: checking for object suffix +configure:1851: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / conftest.c >&5 +configure:1854: $? = 0 +configure:1873: result: o +configure:1877: checking whether we are using the GNU C compiler +configure:1898: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / conftest.c >&5 +configure:1901: $? = 0 +configure:1904: test -s conftest.o +configure:1907: $? = 0 +configure:1919: result: yes +configure:1925: checking whether gcc accepts -g +configure:1943: gcc -c -g conftest.c >&5 +configure:1946: $? = 0 +configure:1949: test -s conftest.o +configure:1952: $? = 0 +configure:1962: result: yes +configure:1989: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / conftest.c >&5 +conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me' +conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me' +conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me' +lipo: can't open input file: /var/tmp//ccXJv2CD.out (No such file or directory) +configure:1992: $? = 1 +configure: failed program was: +#ifndef __cplusplus + choke me +#endif +configure:2093: checking version of gcc +configure:2097: result: 4.2.1 +configure:2107: checking how to run the C preprocessor +configure:2133: gcc -E conftest.c +configure:2139: $? = 0 +configure:2166: gcc -E conftest.c +configure:2163:28: error: ac_nonexistent.h: No such file or directory +configure:2172: $? = 1 +configure: failed program was: +#line 2162 "configure" +#include "confdefs.h" +#include +configure:2209: result: gcc -E +configure:2224: gcc -E conftest.c +configure:2230: $? = 0 +configure:2257: gcc -E conftest.c +configure:2254:28: error: ac_nonexistent.h: No such file or directory +configure:2263: $? = 1 +configure: failed program was: +#line 2253 "configure" +#include "confdefs.h" +#include +configure:2304: checking whether gcc needs -traditional +configure:2327:20: error: termio.h: No such file or directory +configure:2339: result: no +configure:2346: checking whether gcc understands -c and -o together +configure:2362: gcc -c conftest.c -o conftest2.o >&5 +configure:2365: $? = 0 +configure:2367: gcc -c conftest.c -o conftest2.o >&5 +configure:2370: $? = 0 +configure:2381: result: yes +configure:2388: checking for POSIXized ISC +configure:2407: result: no +configure:2412: checking for gcc option to accept ANSI C +configure:2527: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -DCC_HAS_PROTOS conftest.c >&5 +configure:2530: $? = 0 +configure:2533: test -s conftest.o +configure:2536: $? = 0 +configure:2549: result: -DCC_HAS_PROTOS +configure:2672: checking for ldconfig +configure:2703: result: no +configure:2711: checking if you want to ensure bool is consistent with C++ +configure:2721: result: no +configure:3089: checking if you want to build C++ binding and demo +configure:3099: result: no +configure:3102: checking if you want to build with Ada95 +configure:3112: result: yes +configure:3115: checking if you want to build programs such as tic +configure:3125: result: yes +configure:3128: checking if you wish to install curses.h +configure:3138: result: yes +configure:3164: checking for mawk +configure:3190: result: no +configure:3164: checking for gawk +configure:3190: result: no +configure:3164: checking for nawk +configure:3190: result: no +configure:3164: checking for awk +configure:3179: found /usr/bin/awk +configure:3187: result: awk +configure:3201: checking for egrep +configure:3211: result: grep -E +configure:3231: checking for a BSD compatible install +configure:3280: result: /usr/bin/install -c +configure:3305: checking for tdlint +configure:3331: result: no +configure:3305: checking for lint +configure:3331: result: no +configure:3305: checking for alint +configure:3331: result: no +configure:3338: checking whether ln -s works +configure:3342: result: yes +configure:3349: checking for long file names +configure:3388: result: yes +configure:3398: checking if we should assume mixed-case filenames +configure:3408: result: no +configure:3456: checking whether make sets ${MAKE} +configure:3476: result: yes +configure:3487: checking for ctags +configure:3502: found /usr/bin/ctags +configure:3511: result: yes +configure:3568: checking for makeflags variable +configure:3602: result: +configure:3643: checking for ranlib +configure:3658: found /usr/bin/ranlib +configure:3667: result: ranlib +configure:3717: checking for ld +configure:3732: found /usr/bin/ld +configure:3741: result: ld +configure:3791: checking for ar +configure:3806: found /usr/bin/ar +configure:3815: result: ar +configure:3831: checking for archiver options (symbol AR_OPTS) +configure:3840: result: rv +configure:3845: checking if you have specified an install-prefix +configure:3858: result: +configure:4030: checking if you want to build libraries with libtool +configure:4040: result: no +configure:4171: checking if you want to build shared libraries +configure:4181: result: yes +configure:4185: checking if you want to build static libraries +configure:4195: result: no +configure:4199: checking if you want to build debug libraries +configure:4209: result: no +configure:4213: checking if you want to build profiling libraries +configure:4223: result: no +configure:4231: checking for specified models +configure:4235: result: shared +configure:4240: checking for default model +configure:4243: result: shared +configure:4272: checking if you want to build a separate terminfo library +configure:4282: result: no +configure:4285: checking if you want to build a separate tic library +configure:4295: result: no +configure:4301: checking if you want to link with the GPM mouse library +configure:4311: result: maybe +configure:4315: checking for gpm.h +configure:4325: gcc -E conftest.c +configure:4322:17: error: gpm.h: No such file or directory +configure:4331: $? = 1 +configure: failed program was: +#line 4321 "configure" +#include "confdefs.h" +#include +configure:4350: result: no +configure:4874: checking for default loader flags +configure:4883: result: +configure:4889: checking if rpath option should be used +configure:4899: result: no +configure:4902: checking if shared libraries should be relinked during install +configure:4912: result: yes +configure:4924: checking if release/abi version should be used for shared libs +configure:4948: result: auto +configure:4957: checking which gcc option to use +configure:4976: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -fPIC conftest.c >&5 +configure:4979: $? = 0 +configure:4982: test -s conftest.o +configure:4985: $? = 0 +configure:4994: result: -fPIC +configure:5030: checking if ld -search_paths_first works +configure:5051: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:5054: $? = 0 +configure:5057: test -s conftest +configure:5060: $? = 0 +configure:5071: result: yes +configure:5351: checking if you wish to install ncurses overwriting curses +configure:5361: result: yes +configure:5364: checking if external terminfo-database is used +configure:5374: result: yes +configure:5396: checking which terminfo source-file will be installed +configure:5404: result: ${top_srcdir}/misc/terminfo.src +configure:5407: checking whether to use hashed database instead of directory/tree +configure:5417: result: no +configure:5423: checking for list of fallback descriptions +configure:5433: result: +configure:5437: checking if you want modern xterm or antique +configure:5451: result: xterm-new +configure:5461: checking for list of terminfo directories +configure:5514: result: /usr/share/terminfo +configure:5520: checking for default terminfo directory +configure:5565: result: /usr/share/terminfo +configure:5575: checking if big-core option selected +configure:5601: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:5604: $? = 0 +configure:5606: ./conftest +configure:5609: $? = 0 +configure:5621: result: yes +configure:5630: checking if big-strings option selected +configure:5654: result: yes +configure:5661: checking if you want termcap-fallback support +configure:5671: result: yes +configure:5698: checking for list of termcap files +configure:5751: result: /etc/termcap:/usr/share/misc/termcap +configure:5758: checking if fast termcap-loader is needed +configure:5768: result: no +configure:5774: checking if translated termcaps will be cached in ~/.terminfo +configure:5784: result: no +configure:5793: checking if ~/.terminfo is wanted +configure:5803: result: yes +configure:5809: checking if you want to use restricted environment when running as root +configure:5819: result: yes +configure:5833: checking for remove +configure:5870: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:5873: $? = 0 +configure:5876: test -s conftest +configure:5879: $? = 0 +configure:5889: result: yes +configure:5833: checking for unlink +configure:5870: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:5873: $? = 0 +configure:5876: test -s conftest +configure:5879: $? = 0 +configure:5889: result: yes +configure:5973: checking if link/symlink functions work +configure:6016: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6019: $? = 0 +configure:6021: ./conftest +configure:6024: $? = 0 +configure:6016: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6019: $? = 0 +configure:6021: ./conftest +configure:6024: $? = 0 +configure:6042: result: link symlink +configure:6060: checking if tic should use symbolic links +configure:6070: result: no +configure:6077: checking if tic should use hard links +configure:6084: result: yes +configure:6097: checking if you want broken-linker support code +configure:6107: result: no +configure:6134: checking if tputs should process BSD-style prefix padding +configure:6144: result: no +configure:6161: checking if gcc -U and -D options work together +configure:6189: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS conftest.c >&5 +configure:6192: $? = 0 +configure:6195: test -s conftest.o +configure:6198: $? = 0 +configure:6212: result: yes +configure:6344: checking if we should define _XOPEN_SOURCE +configure:6366: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / conftest.c >&5 +configure: In function 'main': +configure:6358: error: 'make' undeclared (first use in this function) +configure:6358: error: (Each undeclared identifier is reported only once +configure:6358: error: for each function it appears in.) +configure:6358: error: expected ';' before 'an' +configure: In function 'main': +configure:6358: error: 'make' undeclared (first use in this function) +configure:6358: error: (Each undeclared identifier is reported only once +configure:6358: error: for each function it appears in.) +configure:6358: error: expected ';' before 'an' +configure: In function 'main': +configure:6358: error: 'make' undeclared (first use in this function) +configure:6358: error: (Each undeclared identifier is reported only once +configure:6358: error: for each function it appears in.) +configure:6358: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//cc7Kq2s1.out (No such file or directory) +configure:6369: $? = 1 +configure: failed program was: +#line 6351 "configure" +#include "confdefs.h" +#include +int +main () +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +configure:6399: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -D_XOPEN_SOURCE=500 conftest.c >&5 +configure: In function 'main': +configure:6391: error: 'make' undeclared (first use in this function) +configure:6391: error: (Each undeclared identifier is reported only once +configure:6391: error: for each function it appears in.) +configure:6391: error: expected ';' before 'an' +configure: In function 'main': +configure:6391: error: 'make' undeclared (first use in this function) +configure:6391: error: (Each undeclared identifier is reported only once +configure:6391: error: for each function it appears in.) +configure:6391: error: expected ';' before 'an' +configure: In function 'main': +configure:6391: error: 'make' undeclared (first use in this function) +configure:6391: error: (Each undeclared identifier is reported only once +configure:6391: error: for each function it appears in.) +configure:6391: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//ccKVEOpk.out (No such file or directory) +configure:6402: $? = 1 +configure: failed program was: +#line 6384 "configure" +#include "confdefs.h" +#include +int +main () +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +configure:6423: result: 500 +configure:6457: checking if we should define _POSIX_C_SOURCE +configure:6463: testing if the symbol is already defined go no further ... +configure:6481: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure:6484: $? = 0 +configure:6487: test -s conftest.o +configure:6490: $? = 0 +configure:6594: result: no +configure:6613: checking if SIGWINCH is defined +configure:6635: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure: In function 'main': +configure:6628: error: 'SIGWINCH' undeclared (first use in this function) +configure:6628: error: (Each undeclared identifier is reported only once +configure:6628: error: for each function it appears in.) +configure: In function 'main': +configure:6628: error: 'SIGWINCH' undeclared (first use in this function) +configure:6628: error: (Each undeclared identifier is reported only once +configure:6628: error: for each function it appears in.) +configure: In function 'main': +configure:6628: error: 'SIGWINCH' undeclared (first use in this function) +configure:6628: error: (Each undeclared identifier is reported only once +configure:6628: error: for each function it appears in.) +lipo: can't open input file: /var/tmp//ccglDsaq.out (No such file or directory) +configure:6638: $? = 1 +configure: failed program was: +#line 6620 "configure" +#include "confdefs.h" + +#include +#include + +int +main () +{ +int x = SIGWINCH + ; + return 0; +} +configure:6669: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure:6672: $? = 0 +configure:6675: test -s conftest.o +configure:6678: $? = 0 +configure:6692: result: maybe +configure:6696: checking for actual SIGWINCH definition +configure:6729: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//ccqYhu5F.out (No such file or directory) +configure:6732: $? = 1 +configure: failed program was: +#line 6707 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include + +int +main () +{ + +#if SIGWINCH != 32 +make an error +#endif +int x = SIGWINCH + ; + return 0; +} +configure:6729: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//ccUKATEn.out (No such file or directory) +configure:6732: $? = 1 +configure: failed program was: +#line 6707 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include + +int +main () +{ + +#if SIGWINCH != 31 +make an error +#endif +int x = SIGWINCH + ; + return 0; +} +configure:6729: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//ccZeEdkD.out (No such file or directory) +configure:6732: $? = 1 +configure: failed program was: +#line 6707 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include + +int +main () +{ + +#if SIGWINCH != 30 +make an error +#endif +int x = SIGWINCH + ; + return 0; +} +configure:6729: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +configure: In function 'main': +configure:6720: error: 'make' undeclared (first use in this function) +configure:6720: error: (Each undeclared identifier is reported only once +configure:6720: error: for each function it appears in.) +configure:6720: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//cczGz3qi.out (No such file or directory) +configure:6732: $? = 1 +configure: failed program was: +#line 6707 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include + +int +main () +{ + +#if SIGWINCH != 29 +make an error +#endif +int x = SIGWINCH + ; + return 0; +} +configure:6729: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 conftest.c >&5 +configure:6732: $? = 0 +configure:6735: test -s conftest.o +configure:6738: $? = 0 +configure:6752: result: 28 +configure:6762: checking for nl_langinfo and CODESET +configure:6780: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6783: $? = 0 +configure:6786: test -s conftest +configure:6789: $? = 0 +configure:6800: result: yes +configure:6814: checking if you want wide-character code +configure:6824: result: yes +configure:6832: checking if we must define _XOPEN_SOURCE_EXTENDED +configure:6851: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 conftest.c >&5 +configure: In function 'main': +configure:6843: error: 'make' undeclared (first use in this function) +configure:6843: error: (Each undeclared identifier is reported only once +configure:6843: error: for each function it appears in.) +configure:6843: error: expected ';' before 'an' +configure: In function 'main': +configure:6843: error: 'make' undeclared (first use in this function) +configure:6843: error: (Each undeclared identifier is reported only once +configure:6843: error: for each function it appears in.) +configure:6843: error: expected ';' before 'an' +configure: In function 'main': +configure:6843: error: 'make' undeclared (first use in this function) +configure:6843: error: (Each undeclared identifier is reported only once +configure:6843: error: for each function it appears in.) +configure:6843: error: expected ';' before 'an' +lipo: can't open input file: /var/tmp//ccouxjbA.out (No such file or directory) +configure:6854: $? = 1 +configure: failed program was: +#line 6835 "configure" +#include "confdefs.h" +#include + +int +main () +{ + +#ifndef _XOPEN_SOURCE_EXTENDED +make an error +#endif + ; + return 0; +} +configure:6869: result: yes +configure:6926: checking for putwc +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for btowc +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for wctob +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for mbtowc +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for wctomb +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for mblen +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for mbrlen +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for mbrtowc +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for wcsrtombs +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for mbsrtowcs +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for wcstombs +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:6926: checking for mbstowcs +configure:6963: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:6966: $? = 0 +configure:6969: test -s conftest +configure:6972: $? = 0 +configure:6982: result: yes +configure:7462: checking if we must include wchar.h to declare mbstate_t +configure:7487: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure: In function 'main': +configure:7480: error: 'mbstate_t' undeclared (first use in this function) +configure:7480: error: (Each undeclared identifier is reported only once +configure:7480: error: for each function it appears in.) +configure:7480: error: expected ';' before 'state' +configure: In function 'main': +configure:7480: error: 'mbstate_t' undeclared (first use in this function) +configure:7480: error: (Each undeclared identifier is reported only once +configure:7480: error: for each function it appears in.) +configure:7480: error: expected ';' before 'state' +configure: In function 'main': +configure:7480: error: 'mbstate_t' undeclared (first use in this function) +configure:7480: error: (Each undeclared identifier is reported only once +configure:7480: error: for each function it appears in.) +configure:7480: error: expected ';' before 'state' +lipo: can't open input file: /var/tmp//ccTiZlrw.out (No such file or directory) +configure:7490: $? = 1 +configure: failed program was: +#line 7469 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main () +{ +mbstate_t state + ; + return 0; +} +configure:7522: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:7525: $? = 0 +configure:7528: test -s conftest.o +configure:7531: $? = 0 +configure:7543: result: yes +configure:7560: checking if we must include wchar.h to declare wchar_t +configure:7585: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:7588: $? = 0 +configure:7591: test -s conftest.o +configure:7594: $? = 0 +configure:7641: result: no +configure:7663: checking if we must include wchar.h to declare wint_t +configure:7688: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure: In function 'main': +configure:7681: error: 'wint_t' undeclared (first use in this function) +configure:7681: error: (Each undeclared identifier is reported only once +configure:7681: error: for each function it appears in.) +configure:7681: error: expected ';' before 'state' +configure: In function 'main': +configure:7681: error: 'wint_t' undeclared (first use in this function) +configure:7681: error: (Each undeclared identifier is reported only once +configure:7681: error: for each function it appears in.) +configure:7681: error: expected ';' before 'state' +configure: In function 'main': +configure:7681: error: 'wint_t' undeclared (first use in this function) +configure:7681: error: (Each undeclared identifier is reported only once +configure:7681: error: for each function it appears in.) +configure:7681: error: expected ';' before 'state' +lipo: can't open input file: /var/tmp//cc1yjEhX.out (No such file or directory) +configure:7691: $? = 1 +configure: failed program was: +#line 7670 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main () +{ +wint_t state + ; + return 0; +} +configure:7723: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:7726: $? = 0 +configure:7729: test -s conftest.o +configure:7732: $? = 0 +configure:7744: result: yes +configure:7783: checking whether to enable _LP64 definition in curses.h +configure:7793: result: no +configure:7809: checking for special C compiler options needed for large files +configure:7883: result: no +configure:7889: checking for _FILE_OFFSET_BITS value needed for large files +configure:7917: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:7920: $? = 0 +configure:7923: test -s conftest.o +configure:7926: $? = 0 +configure:7976: result: no +configure:7986: checking for _LARGE_FILES value needed for large files +configure:8014: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:8017: $? = 0 +configure:8020: test -s conftest.o +configure:8023: $? = 0 +configure:8073: result: no +configure:8086: checking for _LARGEFILE_SOURCE value needed for large files +configure:8106: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:8109: $? = 0 +configure:8112: test -s conftest.o +configure:8115: $? = 0 +configure:8157: result: no +configure:8171: checking for fseeko +configure:8189: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:8192: $? = 0 +configure:8195: test -s conftest +configure:8198: $? = 0 +configure:8208: result: yes +configure:8229: checking whether to use struct dirent64 +configure:8257: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure: In function 'main': +configure:8246: error: conflicting types for 'readdir' +//usr/include/dirent.h:124: error: previous declaration of 'readdir' was here +configure:8248: warning: initialization from incompatible pointer type +configure:8249: error: invalid operands to binary - (have 'struct dirent64 *' and 'struct dirent *') +configure: In function 'main': +configure:8246: error: conflicting types for 'readdir' +//usr/include/dirent.h:124: error: previous declaration of 'readdir' was here +configure:8248: warning: initialization from incompatible pointer type +configure:8249: error: invalid operands to binary - (have 'struct dirent64 *' and 'struct dirent *') +configure: In function 'main': +configure:8246: error: conflicting types for 'readdir' +//usr/include/dirent.h:124: error: previous declaration of 'readdir' was here +configure:8248: warning: initialization from incompatible pointer type +configure:8249: error: invalid operands to binary - (have 'struct dirent64 *' and 'struct dirent *') +lipo: can't open input file: /var/tmp//ccSp51Kf.out (No such file or directory) +configure:8260: $? = 1 +configure: failed program was: +#line 8236 "configure" +#include "confdefs.h" + +#include +#include + +int +main () +{ + + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + + ; + return 0; +} +configure:8277: result: no +configure:8286: checking if you want tparm not to use X/Open fixed-parameter list +configure:8296: result: yes +configure:8320: checking for type of bool +configure:8330: result: auto +configure:8333: checking for alternate terminal capabilities file +configure:8344: result: Caps +configure:8348: checking for type of chtype +configure:8358: result: auto +configure:8362: checking for type of ospeed +configure:8372: result: short +configure:8376: checking for type of mmask_t +configure:8386: result: auto +configure:8390: checking if RCS identifiers should be compiled-in +configure:8400: result: no +configure:8408: checking format of man-pages +configure:8497: result: gzip +configure:8504: checking for manpage renaming +configure:8546: result: no +configure:8549: checking if manpage aliases will be installed +configure:8560: result: yes +configure:8571: checking if manpage symlinks should be used +configure:8590: result: yes +configure:8594: checking for manpage tbl +configure:8605: result: no +configure:8916: checking if you want to build with function extensions +configure:8926: result: yes +configure:8963: checking for extended use of const keyword +configure:8973: result: no +configure:8981: checking if you want to use extended colors +configure:8991: result: no +configure:9022: checking if you want to use extended mouse encoding +configure:9032: result: no +configure:9051: checking if you want $NCURSES_NO_PADDING code +configure:9061: result: yes +configure:9067: checking for ANSI C header files +configure:9081: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c +configure:9087: $? = 0 +configure:9174: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:9177: $? = 0 +configure:9179: ./conftest +configure:9182: $? = 0 +configure:9195: result: yes +configure:9211: checking for sys/types.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for sys/stat.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for stdlib.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for string.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for memory.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for strings.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for inttypes.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for stdint.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9211: checking for unistd.h +configure:9223: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9226: $? = 0 +configure:9229: test -s conftest.o +configure:9232: $? = 0 +configure:9242: result: yes +configure:9252: checking for signed char +configure:9273: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:9276: $? = 0 +configure:9279: test -s conftest.o +configure:9282: $? = 0 +configure:9292: result: yes +configure:9295: checking size of signed char +configure:9459: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +configure: In function 'main': +configure:9484: warning: format '%d' expects type 'int', but argument 3 has type 'long unsigned int' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure: In function 'main': +configure:9484: warning: format '%d' expects type 'int', but argument 3 has type 'long unsigned int' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure: In function 'main': +configure:9484: warning: format '%d' expects type 'int', but argument 3 has type 'long unsigned int' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:9462: $? = 0 +configure:9464: ./conftest +configure:9467: $? = 0 +configure:9483: result: 1 +configure:9494: checking if you want to use signed Boolean array in term.h +configure:9504: result: no +configure:9509: checking if you want SIGWINCH handler +configure:9519: result: yes +configure:9526: checking if you want user-definable terminal capabilities like termcap +configure:9536: result: yes +configure:9544: checking if you want all development code +configure:9554: result: no +configure:9558: checking if you want hard-tabs code +configure:9568: result: no +configure:9575: checking if you want limited support for xmc +configure:9585: result: no +configure:9594: checking if you do not want to assume colors are white-on-black +configure:9604: result: yes +configure:9611: checking if you want hashmap scrolling-optimization code +configure:9621: result: yes +configure:9628: checking if you want colorfgbg code +configure:9638: result: no +configure:9647: checking if you want to link with the pthread library +configure:9657: result: no +configure:9763: checking if you want to use weak-symbols for pthreads +configure:9773: result: no +configure:9860: checking if you want experimental reentrant code +configure:9870: result: no +configure:9907: checking if you want experimental safe-sprintf code +configure:9917: result: no +configure:9944: checking if you want experimental wgetch-events code +configure:9954: result: no +configure:9963: checking if you want to display full commands during build +configure:9980: result: yes +configure:9984: checking if you want to see compiler warnings +configure:9992: result: +configure:10336: checking for gcc __attribute__ directives... +checking for gcc __attribute__((scanf)) +configure:10377: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:10380: $? = 0 +checking for gcc __attribute__((printf)) +configure:10377: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:10380: $? = 0 +checking for gcc __attribute__((unused)) +configure:10377: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:10380: $? = 0 +checking for gcc __attribute__((noreturn)) +configure:10377: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED conftest.c >&5 +configure:10380: $? = 0 +configure:10394: checking if you want to enable runtime assertions +configure:10404: result: no +configure:10422: checking if you want to use dmalloc for testing +configure:10438: result: no +configure:10623: checking if you want to use dbmalloc for testing +configure:10639: result: no +configure:10824: checking if you want to use valgrind for testing +configure:10840: result: no +configure:10923: checking if you want to perform memory-leak testing +configure:10933: result: no +configure:10978: checking whether to add trace feature to all models +configure:10988: result: no +configure:11069: checking for gettimeofday +configure:11106: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:11109: $? = 0 +configure:11112: test -s conftest +configure:11115: $? = 0 +configure:11125: result: yes +configure:11193: checking if -lm needed for math functions +configure:11215: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:11218: $? = 0 +configure:11221: test -s conftest +configure:11224: $? = 0 +configure:11234: result: no +configure:11242: checking for ANSI C header files +configure:11370: result: yes +configure:11383: checking for dirent.h that defines DIR +configure:11404: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:11407: $? = 0 +configure:11410: test -s conftest.o +configure:11413: $? = 0 +configure:11423: result: yes +configure:11436: checking for opendir in -ldir +configure:11463: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c -ldir >&5 +ld: library not found for -ldir +collect2: ld returned 1 exit status +ld: library not found for -ldir +collect2: ld returned 1 exit status +ld: library not found for -ldir +collect2: ld returned 1 exit status +lipo: can't open input file: /var/tmp//ccBrIO27.out (No such file or directory) +configure:11466: $? = 1 +configure: failed program was: +#line 11444 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +int +main () +{ +opendir (); + ; + return 0; +} +configure:11483: result: no +configure:11545: checking whether time.h and sys/time.h may both be included +configure:11567: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:11570: $? = 0 +configure:11573: test -s conftest.o +configure:11576: $? = 0 +configure:11586: result: yes +configure:11596: checking for regular-expression headers +configure:11621: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:11624: $? = 0 +configure:11627: test -s conftest +configure:11630: $? = 0 +configure:11712: result: regex.h +configure:11748: checking for fcntl.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for getopt.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for limits.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for locale.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for poll.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for sys/bsdtypes.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11755:26: error: sys/bsdtypes.h: No such file or directory +configure:11764: $? = 1 +configure: failed program was: +#line 11754 "configure" +#include "confdefs.h" +#include +configure:11783: result: no +configure:11748: checking for sys/ioctl.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for sys/param.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for sys/poll.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for sys/select.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for sys/time.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for sys/times.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for ttyent.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11748: checking for unistd.h +configure:11783: result: yes +configure:11748: checking for wctype.h +configure:11758: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:11764: $? = 0 +configure:11783: result: yes +configure:11902: checking if sys/time.h works with sys/select.h +configure:11929: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:11932: $? = 0 +configure:11935: test -s conftest.o +configure:11938: $? = 0 +configure:11950: result: yes +configure:11964: checking for gcc option to accept ANSI C +configure:12021: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12024: $? = 0 +configure:12027: test -s conftest.o +configure:12030: $? = 0 +configure:12047: result: none needed +configure:12055: checking for an ANSI C-conforming const +configure:12119: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12122: $? = 0 +configure:12125: test -s conftest.o +configure:12128: $? = 0 +configure:12138: result: yes +configure:12148: checking for inline +configure:12165: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12168: $? = 0 +configure:12171: test -s conftest.o +configure:12174: $? = 0 +configure:12185: result: inline +configure:12208: checking if gcc supports options to tune inlining +configure:12229: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12232: $? = 0 +configure:12235: test -s conftest.o +configure:12238: $? = 0 +configure:12250: result: yes +configure:12326: checking for signal global datatype +configure:12361: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12364: $? = 0 +configure:12367: test -s conftest.o +configure:12370: $? = 0 +configure:12384: result: volatile sig_atomic_t +configure:12392: checking for type of chtype +configure:12437: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12440: $? = 0 +configure:12442: ./conftest +configure:12445: $? = 0 +configure:12460: result: int +configure:12472: checking if unsigned literals are legal +configure:12491: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12494: $? = 0 +configure:12497: test -s conftest.o +configure:12500: $? = 0 +configure:12512: result: yes +configure:12528: checking if external errno is declared +configure:12553: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12556: $? = 0 +configure:12559: test -s conftest.o +configure:12562: $? = 0 +configure:12573: result: yes +configure:12588: checking if external errno exists +configure:12610: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12613: $? = 0 +configure:12616: test -s conftest +configure:12619: $? = 0 +configure:12630: result: yes +configure:12643: checking if data-only library module links +configure:12654: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12657: $? = 0 +ar: creating archive conftest.a +[Logging for XBS] Used static archive: /private/tmp/ncurses-27.roots/ncurses-27~obj/conftest.a +configure:12677: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12680: $? = 0 +[Logging for XBS] Used static archive: /private/tmp/ncurses-27.roots/ncurses-27~obj/conftest.a +[Logging for XBS] Used static archive: /private/tmp/ncurses-27.roots/ncurses-27~obj/conftest.a +configure:12704: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c conftest.a >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used static archive: /private/tmp/ncurses-27.roots/ncurses-27~obj/conftest.a +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used static archive: /private/tmp/ncurses-27.roots/ncurses-27~obj/conftest.a +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used static archive: /private/tmp/ncurses-27.roots/ncurses-27~obj/conftest.a +configure:12707: $? = 0 +configure:12709: ./conftest +configure:12712: $? = 0 +configure:12727: result: yes +configure:12762: checking for getcwd +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for getegid +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for geteuid +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for getttynam +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for issetugid +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for poll +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for remove +configure:12818: result: yes +configure:12762: checking for select +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for setbuf +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for setbuffer +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for setvbuf +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for sigaction +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for sigvec +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for strdup +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +configure:12778: warning: conflicting types for built-in function 'strdup' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12778: warning: conflicting types for built-in function 'strdup' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12778: warning: conflicting types for built-in function 'strdup' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for strstr +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +configure:12778: warning: conflicting types for built-in function 'strstr' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12778: warning: conflicting types for built-in function 'strstr' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12778: warning: conflicting types for built-in function 'strstr' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for tcgetpgrp +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for times +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12762: checking for vsnprintf +configure:12799: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +configure:12778: warning: conflicting types for built-in function 'vsnprintf' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12778: warning: conflicting types for built-in function 'vsnprintf' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12778: warning: conflicting types for built-in function 'vsnprintf' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12802: $? = 0 +configure:12805: test -s conftest +configure:12808: $? = 0 +configure:12818: result: yes +configure:12886: checking for isascii +configure:12905: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:12908: $? = 0 +configure:12911: test -s conftest +configure:12914: $? = 0 +configure:12925: result: yes +configure:12932: checking whether sigaction needs _POSIX_SOURCE +configure:12949: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:12952: $? = 0 +configure:12955: test -s conftest.o +configure:12958: $? = 0 +configure:13005: result: no +configure:13009: checking if nanosleep really works +configure:13044: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13047: $? = 0 +configure:13049: ./conftest +configure:13052: $? = 0 +configure:13064: result: yes +configure:13078: checking for termio.h +configure:13088: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:13085:20: error: termio.h: No such file or directory +configure:13094: $? = 1 +configure: failed program was: +#line 13084 "configure" +#include "confdefs.h" +#include +configure:13113: result: no +configure:13078: checking for termios.h +configure:13088: gcc -E -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c +configure:13094: $? = 0 +configure:13113: result: yes +configure:13078: checking for unistd.h +configure:13113: result: yes +configure:13181: checking whether termios.h needs _POSIX_SOURCE +configure:13196: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:13199: $? = 0 +configure:13202: test -s conftest.o +configure:13205: $? = 0 +configure:13251: result: no +configure:13256: checking for tcgetattr +configure:13291: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13294: $? = 0 +configure:13297: test -s conftest +configure:13300: $? = 0 +configure:13310: result: yes +configure:13316: checking for vsscanf function or workaround +configure:13339: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13342: $? = 0 +configure:13345: test -s conftest +configure:13348: $? = 0 +configure:13441: result: vsscanf +configure:13459: checking for working mkstemp +configure:13566: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13569: $? = 0 +configure:13571: ./conftest +configure:13574: $? = 0 +configure:13589: result: yes +configure:13610: checking whether setvbuf arguments are reversed +configure:13638: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +configure: In function 'main': +configure:13630: warning: passing argument 2 of 'setvbuf' makes pointer from integer without a cast +configure:13630: warning: passing argument 3 of 'setvbuf' makes integer from pointer without a cast +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure: In function 'main': +configure:13630: warning: passing argument 2 of 'setvbuf' makes pointer from integer without a cast +configure:13630: warning: passing argument 3 of 'setvbuf' makes integer from pointer without a cast +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure: In function 'main': +configure:13630: warning: passing argument 2 of 'setvbuf' makes pointer from integer without a cast +configure:13630: warning: passing argument 3 of 'setvbuf' makes integer from pointer without a cast +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13641: $? = 0 +configure:13643: ./conftest +configure:13646: $? = 1 +configure: program exited with status 1 +configure: failed program was: +#line 13621 "configure" +#include "confdefs.h" +#include +/* If setvbuf has the reversed format, exit 0. */ +int +main () +{ + /* This call has the arguments reversed. + A reversed system may check and see that the address of main + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ + if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) + return(1); + putc('\r', stdout); + return(0); /* Non-reversed systems segv here. */ +} +configure:13659: result: no +configure:13670: checking return type of signal handlers +configure:13698: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:13701: $? = 0 +configure:13704: test -s conftest.o +configure:13707: $? = 0 +configure:13717: result: void +configure:13724: checking for type sigaction_t +configure:13744: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure: In function 'main': +configure:13737: error: 'sigaction_t' undeclared (first use in this function) +configure:13737: error: (Each undeclared identifier is reported only once +configure:13737: error: for each function it appears in.) +configure:13737: error: expected ';' before 'x' +configure: In function 'main': +configure:13737: error: 'sigaction_t' undeclared (first use in this function) +configure:13737: error: (Each undeclared identifier is reported only once +configure:13737: error: for each function it appears in.) +configure:13737: error: expected ';' before 'x' +configure: In function 'main': +configure:13737: error: 'sigaction_t' undeclared (first use in this function) +configure:13737: error: (Each undeclared identifier is reported only once +configure:13737: error: for each function it appears in.) +configure:13737: error: expected ';' before 'x' +lipo: can't open input file: /var/tmp//ccRiRlHr.out (No such file or directory) +configure:13747: $? = 1 +configure: failed program was: +#line 13731 "configure" +#include "confdefs.h" + +#include +int +main () +{ +sigaction_t x + ; + return 0; +} +configure:13764: result: no +configure:13770: checking declaration of size-change +configure:13829: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:13832: $? = 0 +configure:13835: test -s conftest.o +configure:13838: $? = 0 +size-change succeeded () +configure:13857: result: yes +configure:13874: checking for memmove +configure:13911: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +configure:13890: warning: conflicting types for built-in function 'memmove' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13890: warning: conflicting types for built-in function 'memmove' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13890: warning: conflicting types for built-in function 'memmove' +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:13914: $? = 0 +configure:13917: test -s conftest +configure:13920: $? = 0 +configure:13930: result: yes +configure:14062: checking if poll really works +configure:14093: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:14096: $? = 0 +configure:14098: ./conftest +configure:14101: $? = 1 +configure: program exited with status 1 +configure: failed program was: +#line 14072 "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_POLL_H +#include +#else +#include +#endif +int main() { + struct pollfd myfds; + int ret; + + myfds.fd = 0; + myfds.events = POLLIN; + + ret = poll(&myfds, 1, 100); + return(ret != 0); +} +configure:14113: result: no +configure:14121: checking for openpty in -lutil +configure:14148: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c -lutil >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libutil1.0.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libutil1.0.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libutil1.0.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:14151: $? = 0 +configure:14154: test -s conftest +configure:14157: $? = 0 +configure:14168: result: yes +configure:14176: checking for openpty header +configure:14204: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c -lutil >&5 +configure:14189:17: error: pty.h: No such file or directory +configure:14189:17: error: pty.h: No such file or directory +configure:14189:17: error: pty.h: No such file or directory +lipo: can't figure out the architecture type of: /var/tmp//ccvwDq0k.out +configure:14207: $? = 1 +configure: failed program was: +#line 14187 "configure" +#include "confdefs.h" + +#include + +int +main () +{ + + int x = openpty((int *)0, (int *)0, (char *)0, + (struct termios *)0, (struct winsize *)0); + + ; + return 0; +} +configure:14204: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c -lutil >&5 +In file included from configure:14189: +//usr/local/include/libutil.h:83: error: expected declaration specifiers or '...' before 'int64_t' +In file included from configure:14189: +//usr/local/include/libutil.h:83: error: expected declaration specifiers or '...' before 'int64_t' +In file included from configure:14189: +//usr/local/include/libutil.h:83: error: expected declaration specifiers or '...' before 'int64_t' +lipo: can't figure out the architecture type of: /var/tmp//cc3q3olI.out +configure:14207: $? = 1 +configure: failed program was: +#line 14187 "configure" +#include "confdefs.h" + +#include + +int +main () +{ + + int x = openpty((int *)0, (int *)0, (char *)0, + (struct termios *)0, (struct winsize *)0); + + ; + return 0; +} +configure:14204: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c -lutil >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libutil1.0.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libutil1.0.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libutil1.0.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:14207: $? = 0 +configure:14210: test -s conftest +configure:14213: $? = 0 +configure:14231: result: util.h +configure:14611: checking if we should include stdbool.h +configure:14631: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure: In function 'main': +configure:14624: error: 'bool' undeclared (first use in this function) +configure:14624: error: (Each undeclared identifier is reported only once +configure:14624: error: for each function it appears in.) +configure:14624: error: expected ';' before 'foo' +configure: In function 'main': +configure:14624: error: 'bool' undeclared (first use in this function) +configure:14624: error: (Each undeclared identifier is reported only once +configure:14624: error: for each function it appears in.) +configure:14624: error: expected ';' before 'foo' +configure: In function 'main': +configure:14624: error: 'bool' undeclared (first use in this function) +configure:14624: error: (Each undeclared identifier is reported only once +configure:14624: error: for each function it appears in.) +configure:14624: error: expected ';' before 'foo' +lipo: can't open input file: /var/tmp//ccxFOZsx.out (No such file or directory) +configure:14634: $? = 1 +configure: failed program was: +#line 14619 "configure" +#include "confdefs.h" + +int +main () +{ +bool foo = false + ; + return 0; +} +configure:14663: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure:14666: $? = 0 +configure:14669: test -s conftest.o +configure:14672: $? = 0 +configure:14686: result: yes +configure:14692: checking for builtin bool type +configure:14715: gcc -c -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG conftest.c >&5 +configure: In function 'main': +configure:14708: error: 'bool' undeclared (first use in this function) +configure:14708: error: (Each undeclared identifier is reported only once +configure:14708: error: for each function it appears in.) +configure:14708: error: expected ';' before 'x' +configure: In function 'main': +configure:14708: error: 'bool' undeclared (first use in this function) +configure:14708: error: (Each undeclared identifier is reported only once +configure:14708: error: for each function it appears in.) +configure:14708: error: expected ';' before 'x' +configure: In function 'main': +configure:14708: error: 'bool' undeclared (first use in this function) +configure:14708: error: (Each undeclared identifier is reported only once +configure:14708: error: for each function it appears in.) +configure:14708: error: expected ';' before 'x' +lipo: can't open input file: /var/tmp//cctDYCYM.out (No such file or directory) +configure:14718: $? = 1 +configure: failed program was: +#line 14700 "configure" +#include "confdefs.h" + +#include +#include + +int +main () +{ +bool x = false + ; + return 0; +} +configure:14739: result: no +configure:15750: checking for size of bool +configure:15803: gcc -o conftest -arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot / --param max-inline-insns-single=1200 -U_XOPEN_SOURCE -D_XOPEN_SOURCE=500 -DSIGWINCH=28 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first conftest.c >&5 +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +[Logging for XBS] Used dynamic library: /usr/lib/libSystem.B.dylib +[Logging for XBS] Used indirect dynamic library: /usr/lib/system/libmathCommon.A.dylib +configure:15806: $? = 0 +configure:15808: ./conftest +configure:15811: $? = 0 +configure:15829: result: unsigned char +configure:15886: checking for gnatmake +configure:15910: result: no +configure:16166: checking for library subsets +configure:16191: result: ticlib+termlib+ext_tinfo+base+widechar+ext_funcs +configure:16229: checking default library suffix +configure:16240: result: +configure:16243: checking default library-dependency suffix +configure:16292: result: .dylib +configure:16295: checking default object directory +configure:16311: result: obj_s +configure:16522: checking where we will install curses.h +configure:16527: result: ${prefix}/include +configure:16551: checking for src modules +configure:16614: result: ncurses progs panel menu form +configure:16763: checking for updated LDFLAGS +configure:16766: result: maybe +configure:16770: testing ...checking LDFLAGS -arch i386 -arch x86_64 -arch ppc -Wl,-search_paths_first ... +configure:16774: testing ...checking EXTRA_LDFLAGS ... +configure:16935: creating ./config.status + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by config.status 2.52.20080325, executed with + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + > ./config.status +on nanake.local + +config.status:17610: creating include/MKterm.h.awk +config.status:17610: creating include/curses.head +config.status:17610: creating include/termcap.h +config.status:17610: creating include/unctrl.h +config.status:17610: creating man/Makefile +config.status:17610: creating include/Makefile +config.status:17610: creating ncurses/Makefile +config.status:17610: creating progs/Makefile +config.status:17610: creating panel/Makefile +config.status:17610: creating menu/Makefile +config.status:17610: creating form/Makefile +config.status:17610: creating test/Makefile +config.status:17610: creating misc/Makefile +config.status:17610: creating Ada95/gen/adacurses-config +config.status:17610: creating misc/run_tic.sh +config.status:17610: creating misc/ncurses-config +config.status:17610: creating Makefile +config.status:17707: creating include/ncurses_cfg.h + +## ----------------- ## +## Cache variables. ## +## ----------------- ## + +ac_cv_build=i386-apple-darwin10.0 +ac_cv_build_alias=i386-apple-darwin10.0 +ac_cv_c_compiler_gnu=yes +ac_cv_c_const=yes +ac_cv_c_inline=inline +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set=set +ac_cv_env_CFLAGS_value='-arch i386 -arch x86_64 -arch ppc -g -Os -pipe -isysroot /' +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_CXXCPP_set= +ac_cv_env_CXXCPP_value= +ac_cv_env_CXXFLAGS_set=set +ac_cv_env_CXXFLAGS_value='-arch i386 -arch x86_64 -arch ppc -g -Os -pipe ' +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_LDFLAGS_set=set +ac_cv_env_LDFLAGS_value='-arch i386 -arch x86_64 -arch ppc ' +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func_btowc=yes +ac_cv_func_fseeko=yes +ac_cv_func_getcwd=yes +ac_cv_func_getegid=yes +ac_cv_func_geteuid=yes +ac_cv_func_gettimeofday=yes +ac_cv_func_getttynam=yes +ac_cv_func_issetugid=yes +ac_cv_func_link=yes +ac_cv_func_mblen=yes +ac_cv_func_mbrlen=yes +ac_cv_func_mbrtowc=yes +ac_cv_func_mbsrtowcs=yes +ac_cv_func_mbstowcs=yes +ac_cv_func_mbtowc=yes +ac_cv_func_memmove=yes +ac_cv_func_poll=yes +ac_cv_func_putwc=yes +ac_cv_func_remove=yes +ac_cv_func_select=yes +ac_cv_func_setbuf=yes +ac_cv_func_setbuffer=yes +ac_cv_func_setvbuf=yes +ac_cv_func_setvbuf_reversed=no +ac_cv_func_sigaction=yes +ac_cv_func_sigvec=yes +ac_cv_func_strdup=yes +ac_cv_func_strstr=yes +ac_cv_func_symlink=yes +ac_cv_func_tcgetpgrp=yes +ac_cv_func_times=yes +ac_cv_func_unlink=yes +ac_cv_func_vsnprintf=yes +ac_cv_func_wcsrtombs=yes +ac_cv_func_wcstombs=yes +ac_cv_func_wctob=yes +ac_cv_func_wctomb=yes +ac_cv_header_dirent_dirent_h=yes +ac_cv_header_fcntl_h=yes +ac_cv_header_getopt_h=yes +ac_cv_header_gpm_h=no +ac_cv_header_inttypes_h=yes +ac_cv_header_limits_h=yes +ac_cv_header_locale_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_poll_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_bsdtypes_h=no +ac_cv_header_sys_ioctl_h=yes +ac_cv_header_sys_param_h=yes +ac_cv_header_sys_poll_h=yes +ac_cv_header_sys_select_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_time_h=yes +ac_cv_header_sys_times_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_termio_h=no +ac_cv_header_termios_h=yes +ac_cv_header_time=yes +ac_cv_header_ttyent_h=yes +ac_cv_header_unistd_h=yes +ac_cv_header_wctype_h=yes +ac_cv_host=i386-apple-darwin10.0 +ac_cv_host_alias=i386-apple-darwin10.0 +ac_cv_lib_dir_opendir=no +ac_cv_lib_util_openpty=yes +ac_cv_objext=o +ac_cv_path_install='/usr/bin/install -c' +ac_cv_prog_AWK=awk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_MAKE_LOWER_TAGS=yes +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_LD=ld +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_egrep='grep -E' +ac_cv_prog_gcc_traditional=no +ac_cv_prog_gnat_exists=no +ac_cv_prog_make_make_set=yes +ac_cv_sizeof_signed_char=1 +ac_cv_sys_file_offset_bits=no +ac_cv_sys_large_files=no +ac_cv_sys_largefile_CC=no +ac_cv_sys_largefile_source=no +ac_cv_sys_long_file_names=yes +ac_cv_target=i386-apple-darwin10.0 +ac_cv_target_alias=i386-apple-darwin10.0 +ac_cv_type_signal=void +ac_cv_type_signed_char=yes +am_cv_langinfo_codeset=yes +cf_cv_1UL=1U +cf_cv_abi_version=5.4 +cf_cv_ansi_cc=-DCC_HAS_PROTOS +cf_cv_builtin_bool=1 +cf_cv_cc_bool_type=0 +cf_cv_cc_u_d_options=yes +cf_cv_dcl_errno=yes +cf_cv_define_sigwinch=maybe +cf_cv_do_relink=yes +cf_cv_do_symlinks=yes +cf_cv_enable_lp64=0 +cf_cv_enable_opaque=NCURSES_OPAQUE +cf_cv_enable_reentrant=0 +cf_cv_fixup_sigwinch=28 +cf_cv_func_mkstemp=yes +cf_cv_func_nanosleep=yes +cf_cv_func_openpty=util.h +cf_cv_func_vsscanf=vsscanf +cf_cv_gcc_inline=yes +cf_cv_have_errno=yes +cf_cv_have_isascii=yes +cf_cv_have_tcgetattr=yes +cf_cv_header_stdbool_h=1 +cf_cv_ld_rpath=no +cf_cv_ldflags_search_paths_first=yes +cf_cv_lib_util=yes +cf_cv_link_dataonly=yes +cf_cv_link_funcs=' link symlink' +cf_cv_makeflags= +cf_cv_mbstate_t=yes +cf_cv_mixedcase=no +cf_cv_need_libm=no +cf_cv_posix_c_source=no +cf_cv_prog_CC_c_o=yes +cf_cv_regex=regex.h +cf_cv_rel_version=5.7 +cf_cv_rm_so_locs=no +cf_cv_shlib_version=abi +cf_cv_shlib_version_infix=yes +cf_cv_sig_atomic_t='volatile sig_atomic_t' +cf_cv_sizechange=yes +cf_cv_src_modules='ncurses progs panel menu form' +cf_cv_struct_dirent64=no +cf_cv_subst_AR_OPTS=rv +cf_cv_sys_time_select=yes +cf_cv_system_name=darwin10.0 +cf_cv_timestamp='Sat Aug 28 18:39:20 PDT 2010' +cf_cv_type_of_bool='unsigned char' +cf_cv_type_sigaction=no +cf_cv_typeof_chtype=int +cf_cv_typeof_mmask_t=long +cf_cv_unsigned_literals=yes +cf_cv_wchar_t=no +cf_cv_weak_symbols=no +cf_cv_wint_t=yes +cf_cv_working_poll=no +cf_cv_xopen_source=500 + +## ------------ ## +## confdefs.h. ## +## ------------ ## + +#define SYSTEM_NAME "darwin10.0" +#define CC_HAS_PROTOS 1 +#define HAVE_LONG_FILE_NAMES 1 +#define USE_DATABASE 1 +#define TERMINFO_DIRS "/usr/share/terminfo" +#define TERMINFO "/usr/share/terminfo" +#define HAVE_BIG_CORE 1 +#define USE_TERMCAP 1 +#define TERMPATH "/etc/termcap:/usr/share/misc/termcap" +#define USE_HOME_TERMINFO 1 +#define USE_ROOT_ENVIRON 1 +#define HAVE_REMOVE 1 +#define HAVE_UNLINK 1 +#define HAVE_LINK 1 +#define HAVE_SYMLINK 1 +#define USE_LINKS 1 +#define HAVE_LANGINFO_CODESET 1 +#define USE_WIDEC_SUPPORT 1 +#define HAVE_PUTWC 1 +#define HAVE_BTOWC 1 +#define HAVE_WCTOB 1 +#define HAVE_MBTOWC 1 +#define HAVE_WCTOMB 1 +#define HAVE_MBLEN 1 +#define HAVE_MBRLEN 1 +#define HAVE_MBRTOWC 1 +#define HAVE_WCSRTOMBS 1 +#define HAVE_MBSRTOWCS 1 +#define HAVE_WCSTOMBS 1 +#define HAVE_MBSTOWCS 1 +#define NEED_WCHAR_H 1 +#define NEED_WCHAR_H 1 +#define HAVE_FSEEKO 1 +#define HAVE_CURSES_VERSION 1 +#define HAVE_HAS_KEY 1 +#define HAVE_RESIZETERM 1 +#define HAVE_RESIZE_TERM 1 +#define HAVE_USE_DEFAULT_COLORS 1 +#define HAVE_WRESIZE 1 +#define NCURSES_EXT_FUNCS 1 +#define NCURSES_NO_PADDING 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define SIZEOF_SIGNED_CHAR 1 +#define USE_SIGWINCH 1 +#define USE_ASSUMED_COLOR 1 +#define USE_HASHMAP 1 +#define GCC_SCANF 1 +#define GCC_PRINTF 1 +#define GCC_UNUSED __attribute__((unused)) +#define GCC_NORETURN __attribute__((noreturn)) +#define NDEBUG 1 +#define HAVE_NC_ALLOC_H 1 +#define HAVE_GETTIMEOFDAY 1 +#define STDC_HEADERS 1 +#define HAVE_DIRENT_H 1 +#define TIME_WITH_SYS_TIME 1 +#define HAVE_REGEX_H_FUNCS 1 +#define HAVE_FCNTL_H 1 +#define HAVE_GETOPT_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_POLL_H 1 +#define HAVE_SYS_IOCTL_H 1 +#define HAVE_SYS_PARAM_H 1 +#define HAVE_SYS_POLL_H 1 +#define HAVE_SYS_SELECT_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TIMES_H 1 +#define HAVE_TTYENT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_WCTYPE_H 1 +#define HAVE_SYS_TIME_SELECT 1 +#define SIG_ATOMIC_T volatile sig_atomic_t +#define TYPEOF_CHTYPE int +#define HAVE_ERRNO 1 +#define HAVE_GETCWD 1 +#define HAVE_GETEGID 1 +#define HAVE_GETEUID 1 +#define HAVE_GETTTYNAM 1 +#define HAVE_ISSETUGID 1 +#define HAVE_POLL 1 +#define HAVE_REMOVE 1 +#define HAVE_SELECT 1 +#define HAVE_SETBUF 1 +#define HAVE_SETBUFFER 1 +#define HAVE_SETVBUF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SIGVEC 1 +#define HAVE_STRDUP 1 +#define HAVE_STRSTR 1 +#define HAVE_TCGETPGRP 1 +#define HAVE_TIMES 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_ISASCII 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_TERMIOS_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_TCGETATTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_MKSTEMP 1 +#define RETSIGTYPE void +#define HAVE_SIZECHANGE 1 +#define USE_OPENPTY_HEADER +#define USE_XTERM_PTY 1 +#define HAVE_SLK_COLOR 1 +#define HAVE_PANEL_H 1 +#define HAVE_LIBPANEL 1 +#define HAVE_MENU_H 1 +#define HAVE_LIBMENU 1 +#define HAVE_FORM_H 1 +#define HAVE_LIBFORM 1 +#define NCURSES_PATHSEP ':' +#define NCURSES_VERSION_STRING "5.7.20081102" + + +configure: exit 0 diff --git a/ncurses/config.status b/ncurses/config.status old mode 100755 new mode 100644 diff --git a/ncurses/doc/hackguide.doc b/ncurses/doc/hackguide.doc new file mode 100644 index 0000000..8e0ba5c --- /dev/null +++ b/ncurses/doc/hackguide.doc @@ -0,0 +1,682 @@ + A Hacker's Guide to NCURSES + + Contents + + * Abstract + * Objective of the Package + + Why System V Curses? + + How to Design Extensions + * Portability and Configuration + * Documentation Conventions + * How to Report Bugs + * A Tour of the Ncurses Library + + Library Overview + + The Engine Room + + Keyboard Input + + Mouse Events + + Output and Screen Updating + * The Forms and Menu Libraries + * A Tour of the Terminfo Compiler + + Translation of Non-use Capabilities + + Use Capability Resolution + + Source-Form Translation + * Other Utilities + * Style Tips for Developers + * Porting Hints + + Abstract + + This document is a hacker's tour of the ncurses library and utilities. + It discusses design philosophy, implementation methods, and the + conventions used for coding and documentation. It is recommended + reading for anyone who is interested in porting, extending or + improving the package. + + Objective of the Package + + The objective of the ncurses package is to provide a free software API + for character-cell terminals and terminal emulators with the following + characteristics: + * Source-compatible with historical curses implementations + (including the original BSD curses and System V curses. + * Conformant with the XSI Curses standard issued as part of XPG4 by + X/Open. + * High-quality -- stable and reliable code, wide portability, good + packaging, superior documentation. + * Featureful -- should eliminate as much of the drudgery of C + interface programming as possible, freeing programmers to think at + a higher level of design. + + These objectives are in priority order. So, for example, source + compatibility with older version must trump featurefulness -- we + cannot add features if it means breaking the portion of the API + corresponding to historical curses versions. + +Why System V Curses? + + We used System V curses as a model, reverse-engineering their API, in + order to fulfill the first two objectives. + + System V curses implementations can support BSD curses programs with + just a recompilation, so by capturing the System V API we also capture + BSD's. + + More importantly for the future, the XSI Curses standard issued by + X/Open is explicitly and closely modeled on System V. So conformance + with System V took us most of the way to base-level XSI conformance. + +How to Design Extensions + + The third objective (standards conformance) requires that it be easy + to condition source code using ncurses so that the absence of + nonstandard extensions does not break the code. + + Accordingly, we have a policy of associating with each nonstandard + extension a feature macro, so that ncurses client code can use this + macro to condition in or out the code that requires the ncurses + extension. + + For example, there is a macro NCURSES_MOUSE_VERSION which XSI Curses + does not define, but which is defined in the ncurses library header. + You can use this to condition the calls to the mouse API calls. + + Portability and Configuration + + Code written for ncurses may assume an ANSI-standard C compiler and + POSIX-compatible OS interface. It may also assume the presence of a + System-V-compatible select(2) call. + + We encourage (but do not require) developers to make the code friendly + to less-capable UNIX environments wherever possible. + + We encourage developers to support OS-specific optimizations and + methods not available under POSIX/ANSI, provided only that: + * All such code is properly conditioned so the build process does + not attempt to compile it under a plain ANSI/POSIX environment. + * Adding such implementation methods does not introduce + incompatibilities in the ncurses API between platforms. + + We use GNU autoconf(1) as a tool to deal with portability issues. The + right way to leverage an OS-specific feature is to modify the autoconf + specification files (configure.in and aclocal.m4) to set up a new + feature macro, which you then use to condition your code. + + Documentation Conventions + + There are three kinds of documentation associated with this package. + Each has a different preferred format: + * Package-internal files (README, INSTALL, TO-DO etc.) + * Manual pages. + * Everything else (i.e., narrative documentation). + + Our conventions are simple: + 1. Maintain package-internal files in plain text. The expected viewer + for them more(1) or an editor window; there's no point in + elaborate mark-up. + 2. Mark up manual pages in the man macros. These have to be viewable + through traditional man(1) programs. + 3. Write everything else in HTML. + + When in doubt, HTMLize a master and use lynx(1) to generate plain + ASCII (as we do for the announcement document). + + The reason for choosing HTML is that it's (a) well-adapted for on-line + browsing through viewers that are everywhere; (b) more easily readable + as plain text than most other mark-ups, if you don't have a viewer; + and (c) carries enough information that you can generate a + nice-looking printed version from it. Also, of course, it make + exporting things like the announcement document to WWW pretty trivial. + + How to Report Bugs + + The reporting address for bugs is bug-ncurses@gnu.org. This is a + majordomo list; to join, write to bug-ncurses-request@gnu.org with a + message containing the line: + subscribe @ + + The ncurses code is maintained by a small group of volunteers. While + we try our best to fix bugs promptly, we simply don't have a lot of + hours to spend on elementary hand-holding. We rely on intelligent + cooperation from our users. If you think you have found a bug in + ncurses, there are some steps you can take before contacting us that + will help get the bug fixed quickly. + + In order to use our bug-fixing time efficiently, we put people who + show us they've taken these steps at the head of our queue. This means + that if you don't, you'll probably end up at the tail end and have to + wait a while. + 1. Develop a recipe to reproduce the bug. + Bugs we can reproduce are likely to be fixed very quickly, often + within days. The most effective single thing you can do to get a + quick fix is develop a way we can duplicate the bad behavior -- + ideally, by giving us source for a small, portable test program + that breaks the library. (Even better is a keystroke recipe using + one of the test programs provided with the distribution.) + 2. Try to reproduce the bug on a different terminal type. + In our experience, most of the behaviors people report as library + bugs are actually due to subtle problems in terminal descriptions. + This is especially likely to be true if you're using a traditional + asynchronous terminal or PC-based terminal emulator, rather than + xterm or a UNIX console entry. + It's therefore extremely helpful if you can tell us whether or not + your problem reproduces on other terminal types. Usually you'll + have both a console type and xterm available; please tell us + whether or not your bug reproduces on both. + If you have xterm available, it is also good to collect xterm + reports for different window sizes. This is especially true if you + normally use an unusual xterm window size -- a surprising number + of the bugs we've seen are either triggered or masked by these. + 3. Generate and examine a trace file for the broken behavior. + Recompile your program with the debugging versions of the + libraries. Insert a trace() call with the argument set to + TRACE_UPDATE. (See "Writing Programs with NCURSES" for details on + trace levels.) Reproduce your bug, then look at the trace file to + see what the library was actually doing. + Another frequent cause of apparent bugs is application coding + errors that cause the wrong things to be put on the virtual + screen. Looking at the virtual-screen dumps in the trace file will + tell you immediately if this is happening, and save you from the + possible embarrassment of being told that the bug is in your code + and is your problem rather than ours. + If the virtual-screen dumps look correct but the bug persists, + it's possible to crank up the trace level to give more and more + information about the library's update actions and the control + sequences it issues to perform them. The test directory of the + distribution contains a tool for digesting these logs to make them + less tedious to wade through. + Often you'll find terminfo problems at this stage by noticing that + the escape sequences put out for various capabilities are wrong. + If not, you're likely to learn enough to be able to characterize + any bug in the screen-update logic quite exactly. + 4. Report details and symptoms, not just interpretations. + If you do the preceding two steps, it is very likely that you'll + discover the nature of the problem yourself and be able to send us + a fix. This will create happy feelings all around and earn you + good karma for the first time you run into a bug you really can't + characterize and fix yourself. + If you're still stuck, at least you'll know what to tell us. + Remember, we need details. If you guess about what is safe to + leave out, you are too likely to be wrong. + If your bug produces a bad update, include a trace file. Try to + make the trace at the least voluminous level that pins down the + bug. Logs that have been through tracemunch are OK, it doesn't + throw away any information (actually they're better than + un-munched ones because they're easier to read). + If your bug produces a core-dump, please include a symbolic stack + trace generated by gdb(1) or your local equivalent. + Tell us about every terminal on which you've reproduced the bug -- + and every terminal on which you can't. Ideally, sent us terminfo + sources for all of these (yours might differ from ours). + Include your ncurses version and your OS/machine type, of course! + You can find your ncurses version in the curses.h file. + + If your problem smells like a logic error or in cursor movement or + scrolling or a bad capability, there are a couple of tiny test frames + for the library algorithms in the progs directory that may help you + isolate it. These are not part of the normal build, but do have their + own make productions. + + The most important of these is mvcur, a test frame for the + cursor-movement optimization code. With this program, you can see + directly what control sequences will be emitted for any given cursor + movement or scroll/insert/delete operations. If you think you've got a + bad capability identified, you can disable it and test again. The + program is command-driven and has on-line help. + + If you think the vertical-scroll optimization is broken, or just want + to understand how it works better, build hashmap and read the header + comments of hardscroll.c and hashmap.c; then try it out. You can also + test the hardware-scrolling optimization separately with hardscroll. + + A Tour of the Ncurses Library + +Library Overview + + Most of the library is superstructure -- fairly trivial convenience + interfaces to a small set of basic functions and data structures used + to manipulate the virtual screen (in particular, none of this code + does any I/O except through calls to more fundamental modules + described below). The files + + lib_addch.c lib_bkgd.c lib_box.c lib_chgat.c lib_clear.c + lib_clearok.c lib_clrbot.c lib_clreol.c lib_colorset.c lib_data.c + lib_delch.c lib_delwin.c lib_echo.c lib_erase.c lib_gen.c + lib_getstr.c lib_hline.c lib_immedok.c lib_inchstr.c lib_insch.c + lib_insdel.c lib_insstr.c lib_instr.c lib_isendwin.c lib_keyname.c + lib_leaveok.c lib_move.c lib_mvwin.c lib_overlay.c lib_pad.c + lib_printw.c lib_redrawln.c lib_scanw.c lib_screen.c lib_scroll.c + lib_scrollok.c lib_scrreg.c lib_set_term.c lib_slk.c + lib_slkatr_set.c lib_slkatrof.c lib_slkatron.c lib_slkatrset.c + lib_slkattr.c lib_slkclear.c lib_slkcolor.c lib_slkinit.c + lib_slklab.c lib_slkrefr.c lib_slkset.c lib_slktouch.c lib_touch.c + lib_unctrl.c lib_vline.c lib_wattroff.c lib_wattron.c lib_window.c + + are all in this category. They are very unlikely to need change, + barring bugs or some fundamental reorganization in the underlying data + structures. + + These files are used only for debugging support: + + lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c + lib_tracedmp.c lib_tracemse.c trace_buf.c + + It is rather unlikely you will ever need to change these, unless you + want to introduce a new debug trace level for some reason. + + There is another group of files that do direct I/O via tputs(), + computations on the terminal capabilities, or queries to the OS + environment, but nevertheless have only fairly low complexity. These + include: + + lib_acs.c lib_beep.c lib_color.c lib_endwin.c lib_initscr.c + lib_longname.c lib_newterm.c lib_options.c lib_termcap.c lib_ti.c + lib_tparm.c lib_tputs.c lib_vidattr.c read_entry.c. + + They are likely to need revision only if ncurses is being ported to an + environment without an underlying terminfo capability representation. + + These files have serious hooks into the tty driver and signal + facilities: + + lib_kernel.c lib_baudrate.c lib_raw.c lib_tstp.c lib_twait.c + + If you run into porting snafus moving the package to another UNIX, the + problem is likely to be in one of these files. The file lib_print.c + uses sleep(2) and also falls in this category. + + Almost all of the real work is done in the files + + hardscroll.c hashmap.c lib_addch.c lib_doupdate.c lib_getch.c + lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c lib_vidattr.c + + Most of the algorithmic complexity in the library lives in these + files. If there is a real bug in ncurses itself, it's probably here. + We'll tour some of these files in detail below (see The Engine Room). + + Finally, there is a group of files that is actually most of the + terminfo compiler. The reason this code lives in the ncurses library + is to support fallback to /etc/termcap. These files include + + alloc_entry.c captoinfo.c comp_captab.c comp_error.c comp_hash.c + comp_parse.c comp_scan.c parse_entry.c read_termcap.c write_entry.c + + We'll discuss these in the compiler tour. + +The Engine Room + + Keyboard Input + + All ncurses input funnels through the function wgetch(), defined in + lib_getch.c. This function is tricky; it has to poll for keyboard and + mouse events and do a running match of incoming input against the set + of defined special keys. + + The central data structure in this module is a FIFO queue, used to + match multiple-character input sequences against special-key + capabilities; also to implement pushback via ungetch(). + + The wgetch() code distinguishes between function key sequences and the + same sequences typed manually by doing a timed wait after each input + character that could lead a function key sequence. If the entire + sequence takes less than 1 second, it is assumed to have been + generated by a function key press. + + Hackers bruised by previous encounters with variant select(2) calls + may find the code in lib_twait.c interesting. It deals with the + problem that some BSD selects don't return a reliable time-left value. + The function timed_wait() effectively simulates a System V select. + + Mouse Events + + If the mouse interface is active, wgetch() polls for mouse events each + call, before it goes to the keyboard for input. It is up to + lib_mouse.c how the polling is accomplished; it may vary for different + devices. + + Under xterm, however, mouse event notifications come in via the + keyboard input stream. They are recognized by having the kmous + capability as a prefix. This is kind of klugey, but trying to wire in + recognition of a mouse key prefix without going through the + function-key machinery would be just too painful, and this turns out + to imply having the prefix somewhere in the function-key capabilities + at terminal-type initialization. + + This kluge only works because kmous isn't actually used by any + historic terminal type or curses implementation we know of. Best guess + is it's a relic of some forgotten experiment in-house at Bell Labs + that didn't leave any traces in the publicly-distributed System V + terminfo files. If System V or XPG4 ever gets serious about using it + again, this kluge may have to change. + + Here are some more details about mouse event handling: + + The lib_mouse()code is logically split into a lower level that accepts + event reports in a device-dependent format and an upper level that + parses mouse gestures and filters events. The mediating data structure + is a circular queue of event structures. + + Functionally, the lower level's job is to pick up primitive events and + put them on the circular queue. This can happen in one of two ways: + either (a) _nc_mouse_event() detects a series of incoming mouse + reports and queues them, or (b) code in lib_getch.c detects the kmous + prefix in the keyboard input stream and calls _nc_mouse_inline to + queue up a series of adjacent mouse reports. + + In either case, _nc_mouse_parse() should be called after the series is + accepted to parse the digested mouse reports (low-level events) into a + gesture (a high-level or composite event). + + Output and Screen Updating + + With the single exception of character echoes during a wgetnstr() call + (which simulates cooked-mode line editing in an ncurses window), the + library normally does all its output at refresh time. + + The main job is to go from the current state of the screen (as + represented in the curscr window structure) to the desired new state + (as represented in the newscr window structure), while doing as little + I/O as possible. + + The brains of this operation are the modules hashmap.c, hardscroll.c + and lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what + happens looks like this: + + The hashmap.c module tries to detect vertical motion changes between + the real and virtual screens. This information is represented by the + oldindex members in the newscr structure. These are modified by + vertical-motion and clear operations, and both are re-initialized + after each update. To this change-journalling information, the hashmap + code adds deductions made using a modified Heckel algorithm on hash + values generated from the line contents. + + The hardscroll.c module computes an optimum set of scroll, insertion, + and deletion operations to make the indices match. It calls + _nc_mvcur_scrolln() in lib_mvcur.c to do those motions. + + Then lib_doupdate.c goes to work. Its job is to do line-by-line + transformations of curscr lines to newscr lines. Its main tool is the + routine mvcur() in lib_mvcur.c. This routine does cursor-movement + optimization, attempting to get from given screen location A to given + location B in the fewest output characters possible. + + If you want to work on screen optimizations, you should use the fact + that (in the trace-enabled version of the library) enabling the + TRACE_TIMES trace level causes a report to be emitted after each + screen update giving the elapsed time and a count of characters + emitted during the update. You can use this to tell when an update + optimization improves efficiency. + + In the trace-enabled version of the library, it is also possible to + disable and re-enable various optimizations at runtime by tweaking the + variable _nc_optimize_enable. See the file include/curses.h.in for + mask values, near the end. + + The Forms and Menu Libraries + + The forms and menu libraries should work reliably in any environment + you can port ncurses to. The only portability issue anywhere in them + is what flavor of regular expressions the built-in form field type + TYPE_REGEXP will recognize. + + The configuration code prefers the POSIX regex facility, modeled on + System V's, but will settle for BSD regexps if the former isn't + available. + + Historical note: the panels code was written primarily to assist in + porting u386mon 2.0 (comp.sources.misc v14i001-4) to systems lacking + panels support; u386mon 2.10 and beyond use it. This version has been + slightly cleaned up for ncurses. + + A Tour of the Terminfo Compiler + + The ncurses implementation of tic is rather complex internally; it has + to do a trying combination of missions. This starts with the fact + that, in addition to its normal duty of compiling terminfo sources + into loadable terminfo binaries, it has to be able to handle termcap + syntax and compile that too into terminfo entries. + + The implementation therefore starts with a table-driven, dual-mode + lexical analyzer (in comp_scan.c). The lexer chooses its mode (termcap + or terminfo) based on the first `,' or `:' it finds in each entry. The + lexer does all the work of recognizing capability names and values; + the grammar above it is trivial, just "parse entries till you run out + of file". + +Translation of Non-use Capabilities + + Translation of most things besides use capabilities is pretty + straightforward. The lexical analyzer's tokenizer hands each + capability name to a hash function, which drives a table lookup. The + table entry yields an index which is used to look up the token type in + another table, and controls interpretation of the value. + + One possibly interesting aspect of the implementation is the way the + compiler tables are initialized. All the tables are generated by + various awk/sed/sh scripts from a master table include/Caps; these + scripts actually write C initializers which are linked to the + compiler. Furthermore, the hash table is generated in the same way, so + it doesn't have to be generated at compiler startup time (another + benefit of this organization is that the hash table can be in + shareable text space). + + Thus, adding a new capability is usually pretty trivial, just a matter + of adding one line to the include/Caps file. We'll have more to say + about this in the section on Source-Form Translation. + +Use Capability Resolution + + The background problem that makes tic tricky isn't the capability + translation itself, it's the resolution of use capabilities. Older + versions would not handle forward use references for this reason (that + is, a using terminal always had to follow its use target in the source + file). By doing this, they got away with a simple implementation + tactic; compile everything as it blows by, then resolve uses from + compiled entries. + + This won't do for ncurses. The problem is that that the whole + compilation process has to be embeddable in the ncurses library so + that it can be called by the startup code to translate termcap entries + on the fly. The embedded version can't go promiscuously writing + everything it translates out to disk -- for one thing, it will + typically be running with non-root permissions. + + So our tic is designed to parse an entire terminfo file into a + doubly-linked circular list of entry structures in-core, and then do + use resolution in-memory before writing everything out. This design + has other advantages: it makes forward and back use-references equally + easy (so we get the latter for free), and it makes checking for name + collisions before they're written out easy to do. + + And this is exactly how the embedded version works. But the + stand-alone user-accessible version of tic partly reverts to the + historical strategy; it writes to disk (not keeping in core) any entry + with no use references. + + This is strictly a core-economy kluge, implemented because the + terminfo master file is large enough that some core-poor systems swap + like crazy when you compile it all in memory...there have been reports + of this process taking three hours, rather than the twenty seconds or + less typical on the author's development box. + + So. The executable tic passes the entry-parser a hook that immediately + writes out the referenced entry if it has no use capabilities. The + compiler main loop refrains from adding the entry to the in-core list + when this hook fires. If some other entry later needs to reference an + entry that got written immediately, that's OK; the resolution code + will fetch it off disk when it can't find it in core. + + Name collisions will still be detected, just not as cleanly. The + write_entry() code complains before overwriting an entry that + postdates the time of tic's first call to write_entry(), Thus it will + complain about overwriting entries newly made during the tic run, but + not about overwriting ones that predate it. + +Source-Form Translation + + Another use of tic is to do source translation between various termcap + and terminfo formats. There are more variants out there than you might + think; the ones we know about are described in the captoinfo(1) manual + page. + + The translation output code (dump_entry() in ncurses/dump_entry.c) is + shared with the infocmp(1) utility. It takes the same internal + representation used to generate the binary form and dumps it to + standard output in a specified format. + + The include/Caps file has a header comment describing ways you can + specify source translations for nonstandard capabilities just by + altering the master table. It's possible to set up capability aliasing + or tell the compiler to plain ignore a given capability without + writing any C code at all. + + For circumstances where you need to do algorithmic translation, there + are functions in parse_entry.c called after the parse of each entry + that are specifically intended to encapsulate such translations. This, + for example, is where the AIX box1 capability get translated to an + acsc string. + + Other Utilities + + The infocmp utility is just a wrapper around the same entry-dumping + code used by tic for source translation. Perhaps the one interesting + aspect of the code is the use of a predicate function passed in to + dump_entry() to control which capabilities are dumped. This is + necessary in order to handle both the ordinary De-compilation case and + entry difference reporting. + + The tput and clear utilities just do an entry load followed by a + tputs() of a selected capability. + + Style Tips for Developers + + See the TO-DO file in the top-level directory of the source + distribution for additions that would be particularly useful. + + The prefix _nc_ should be used on library public functions that are + not part of the curses API in order to prevent pollution of the + application namespace. If you have to add to or modify the function + prototypes in curses.h.in, read ncurses/MKlib_gen.sh first so you can + avoid breaking XSI conformance. Please join the ncurses mailing list. + See the INSTALL file in the top level of the distribution for details + on the list. + + Look for the string FIXME in source files to tag minor bugs and + potential problems that could use fixing. + + Don't try to auto-detect OS features in the main body of the C code. + That's the job of the configuration system. + + To hold down complexity, do make your code data-driven. Especially, if + you can drive logic from a table filtered out of include/Caps, do it. + If you find you need to augment the data in that file in order to + generate the proper table, that's still preferable to ad-hoc code -- + that's why the fifth field (flags) is there. + + Have fun! + + Porting Hints + + The following notes are intended to be a first step towards DOS and + Macintosh ports of the ncurses libraries. + + The following library modules are `pure curses'; they operate only on + the curses internal structures, do all output through other curses + calls (not including tputs() and putp()) and do not call any other + UNIX routines such as signal(2) or the stdio library. Thus, they + should not need to be modified for single-terminal ports. + + lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c + lib_clrbot.c lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c + lib_inchstr.c lib_insch.c lib_insdel.c lib_insstr.c lib_keyname.c + lib_move.c lib_mvwin.c lib_newwin.c lib_overlay.c lib_pad.c + lib_printw.c lib_refresh.c lib_scanw.c lib_scroll.c lib_scrreg.c + lib_set_term.c lib_touch.c lib_tparm.c lib_tputs.c lib_unctrl.c + lib_window.c panel.c + + This module is pure curses, but calls outstr(): + + lib_getstr.c + + These modules are pure curses, except that they use tputs() and + putp(): + + lib_beep.c lib_color.c lib_endwin.c lib_options.c lib_slk.c + lib_vidattr.c + + This modules assist in POSIX emulation on non-POSIX systems: + + sigaction.c + signal calls + + The following source files will not be needed for a + single-terminal-type port. + + alloc_entry.c captoinfo.c clear.c comp_captab.c comp_error.c + comp_hash.c comp_main.c comp_parse.c comp_scan.c dump_entry.c + infocmp.c parse_entry.c read_entry.c tput.c write_entry.c + + The following modules will use open()/read()/write()/close()/lseek() + on files, but no other OS calls. + + lib_screen.c + used to read/write screen dumps + + lib_trace.c + used to write trace data to the logfile + + Modules that would have to be modified for a port start here: + + The following modules are `pure curses' but contain assumptions + inappropriate for a memory-mapped port. + + lib_longname.c + assumes there may be multiple terminals + + lib_acs.c + assumes acs_map as a double indirection + + lib_mvcur.c + assumes cursor moves have variable cost + + lib_termcap.c + assumes there may be multiple terminals + + lib_ti.c + assumes there may be multiple terminals + + The following modules use UNIX-specific calls: + + lib_doupdate.c + input checking + + lib_getch.c + read() + + lib_initscr.c + getenv() + + lib_newterm.c + lib_baudrate.c + lib_kernel.c + various tty-manipulation and system calls + + lib_raw.c + various tty-manipulation calls + + lib_setup.c + various tty-manipulation calls + + lib_restart.c + various tty-manipulation calls + + lib_tstp.c + signal-manipulation calls + + lib_twait.c + gettimeofday(), select(). + _________________________________________________________________ + + + Eric S. Raymond + + (Note: This is not the bug address!) diff --git a/ncurses/doc/html/Ada95.html b/ncurses/doc/html/Ada95.html new file mode 100644 index 0000000..043b9de --- /dev/null +++ b/ncurses/doc/html/Ada95.html @@ -0,0 +1,183 @@ + + + + +Ada95 Binding for ncurses + + +

Ada95 Binding for ncurses

+by Jürgen Pfeifer. + +
+

General Remarks

+
    +
  • This document describes Version 01.00 of the binding.
  • +
  • The functionality is modeled to be compatible with the ncurses +package, a clone of the SVr4 curses model.
    +I did the development on an Intel box running the latest stable release of +Linux, ncurses and the most recent released +GNU Ada Translator +gnat versions. For any older versions of ncurses and gnat +it is not guaranteed to work.
  • +
  • You must have the m4 macroprocessor to build this package. +If you don't have this program, you can get the FSF version +here.
  • +
  • Ada programs are supposed to be readable. One of my +favorite methods to make code readable is to use expressive +names for the identifiers. You can find a list of a mapping +of the cryptic curses names to the Ada names in this table.
  • +
  • This is not a typical one-to-one interface mapping. It is +close to one-to-one on the functional level. Each (n)curses function +has it's counterpart with a more or less similar formal parameter list +in the binding. It is not one-to-one with respect to the datatypes. +I tried to make records out of the flat chtype and similar structures, +so you don't have to do bit operations to mark an attributed character +as bold. Just make the boolean member bold of the record +true. The binding also hides the structures like WINDOW, PANEL, MENU, FORM +etc. ! It's a pure functional API.
  • +
  • I try to do as much error checking as possible and feasible +in the binding. I will raise an Ada exception when something +went wrong in the low-level curses. This has the effect that - at least +first time in my life - (n)curses programs have now a very rigid error +checking, but - thanks to Ada - you don't have to code the orgiastic +error checking style of C.
  • +
  • Support for wide characters is currently not in the binding, as it +is not really in ncurses at this point in time.
  • +
+ +

Limitations

+
    +
  • I provide no SCREEN datatype and functions to set a new screen. +If you need this (mostly for debugging I guess), write a small +C routine doing all this and import it into your Ada program.
  • +
  • I provide no functions to switch on/off curses tracing options. +Same suggestion as above.
  • +
  • Although Ada95 is an OO Language, this binding doesn't provide +an OO abstraction of the (n)curses functionality. As mentioned above +it's a thin binding for the (n)curses functions. But without any +doubt it would be nice to build on top of this an OO abstraction +of (n)curses functionality.
    +The only exception is the method how fieldtypes are represented in +this Binding. We provide an abstract tagged type Field_Type from +which the various fieldtypes are derived.
  • +
  • I currently do not support the link_fieldtype functionality of the +forms subsystem.
  • +
  • The *_IO packages are currently output only.
  • +
+ +

Hierarchy of packages

+ +If you want to navigate through the html pages of the package specs, click here. +

Implementation Details

+

Behind the abstraction

+All the new types like Window, Panel, +Menu, Form etc. are just +opaque representations of the pointers to the corresponding +low level (n)curses structures like +WINDOW *, PANEL *, +MENU * or FORM *. +So you can safely pass them to C routines that expect a pointer +to one of those structures. +

Extended ripoffline() usage

+The official documentation of (n)curses says, that the line parameter +determines only whether or not exactly one line is +stolen from the top or bottom of the screen. So essentially only the +sign of the parameter is evaluated. ncurses has internally implemented +it in a way, that uses the line parameter also to control the amount of +lines to steal. This mechanism is used in the Rip_Off_Lines +routine of the binding. +

How user defined field types work

+TBD +

Enumeration fields handling

+The (n)curses documentation says, that the String arrays to be passed to +an TYPE_ENUM fieldtype must not be automatic variables. This is not true +in this binding, because it is internally arranged to safely copy these +values. +

Using other Ada compilers

+This should basically not be a problem. +

Port to other curses implementations

+Basically it should not be too hard to make all this run on a regular SVr4 +implementation of curses. The problems are probably these:
+
    +
  • ncurses has some additional features which are presented in this binding. You +have two choices to deal with this: +
      +
    • Emulate the feature in this binding
    • +
    • Raise an exception for non implemented features
    • +
    +Most likely you will follow a mixed approach. Some features are easy to simulate, +others will be hard if not impossible.
  • +
+I'm quite sure I forgot something. + + diff --git a/ncurses/doc/html/NCURSES-Programming-HOWTO.html b/ncurses/doc/html/NCURSES-Programming-HOWTO.html new file mode 100644 index 0000000..3a10106 --- /dev/null +++ b/ncurses/doc/html/NCURSES-Programming-HOWTO.html @@ -0,0 +1,6413 @@ + + + + +NCURSES Programming HOWTO + + + +
+
+

NCURSES Programming +HOWTO

+

Pradeep Padala

+ +

v1.9, 2005-06-20

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Revision +History
Revision 1.92005-06-20Revised by: ppadala
The license has been changed to the +MIT-style license used by NCURSES. Note that the programs are also +re-licensed under this.
Revision 1.82005-06-17Revised by: ppadala
Lots of updates. Added references and +perl examples. Changes to examples. Many grammatical and stylistic +changes to the content. Changes to NCURSES history.
Revision 1.7.12002-06-25Revised by: ppadala
Added a README file for building and +instructions for building from source.
Revision 1.72002-06-25Revised by: ppadala
Added "Other formats" section and made +a lot of fancy changes to the programs. Inlining of programs is +gone.
Revision 1.6.12002-02-24Revised by: ppadala
Removed the old Changelog section, +cleaned the makefiles
Revision 1.62002-02-16Revised by: ppadala
Corrected a lot of spelling mistakes, +added ACS variables section
Revision 1.52002-01-05Revised by: ppadala
Changed structure to present proper +TOC
Revision 1.3.12001-07-26Revised by: ppadala
Corrected maintainers paragraph, +Corrected stable release number
Revision 1.32001-07-24Revised by: ppadala
Added copyright notices to main +document (LDP license) and programs (GPL), Corrected +printw_example.
Revision 1.22001-06-05Revised by: ppadala
Incorporated ravi's changes. Mainly to +introduction, menu, form, justforfun sections
Revision 1.12001-05-22Revised by: ppadala
Added "a word about window" section, +Added scanw_example.
+
+
+
+

This document is intended to be an "All in One" guide for +programming with ncurses and its sister libraries. We graduate from +a simple "Hello World" program to more complex form manipulation. +No prior experience in ncurses is assumed. Send comments to +this +address

+
+
+
+
+
+
Table of Contents
+
1. Introduction
+
+
+
1.1. What is NCURSES?
+
1.2. What we can do with +NCURSES
+
1.3. Where to get it
+
1.4. Purpose/Scope of the document
+
1.5. About the Programs
+
1.6. Other Formats of the +document
+
1.7. Credits
+
1.8. Wish List
+
1.9. Copyright
+
+
+
2. Hello World !!!
+
+
+
2.1. Compiling With the NCURSES +Library
+
2.2. Dissection
+
+
+
3. The Gory Details
+
4. Initialization
+
+
+
4.1. Initialization functions
+
4.2. raw() and cbreak()
+
4.3. echo() and noecho()
+
4.4. keypad()
+
4.5. halfdelay()
+
4.6. Miscellaneous Initialization +functions
+
4.7. An Example
+
+
+
5. A Word about Windows
+
6. Output functions
+
+
+
6.1. addch() class of functions
+
6.2. mvaddch(), waddch() and +mvwaddch()
+
6.3. printw() class of +functions
+
6.4. addstr() class of +functions
+
6.5. A word of caution
+
+
+
7. Input functions
+
+
+
7.1. getch() class of functions
+
7.2. scanw() class of functions
+
7.3. getstr() class of +functions
+
7.4. Some examples
+
+
+
8. Attributes
+
+
+
8.1. The details
+
8.2. attron() vs attrset()
+
8.3. attr_get()
+
8.4. attr_ functions
+
8.5. wattr functions
+
8.6. chgat() functions
+
+
+
9. Windows
+
+
+
9.1. The basics
+
9.2. Let there be a Window !!!
+
9.3. Explanation
+
9.4. The other stuff in the +example
+
9.5. Other Border +functions
+
+
+
10. Colors
+
+
+
10.1. The basics
+
10.2. Changing Color +Definitions
+
10.3. Color Content
+
+
+
11. Interfacing with the key board
+
+
+
11.1. The Basics
+
11.2. A Simple Key Usage +example
+
+
+
12. Interfacing with the mouse
+
+
+
12.1. The Basics
+
12.2. Getting the events
+
12.3. Putting it all Together
+
12.4. Miscellaneous +Functions
+
+
+
13. Screen Manipulation
+
+
+
13.1. getyx() functions
+
13.2. Screen Dumping
+
13.3. Window Dumping
+
+
+
14. Miscellaneous features
+
+
+
14.1. curs_set()
+
14.2. Temporarily Leaving Curses +mode
+
14.3. ACS_ variables
+
+
+
15. Other libraries
+
16. Panel Library
+
+
+
16.1. The Basics
+
16.2. Compiling With the Panels +Library
+
16.3. Panel Window Browsing
+
16.4. Using User Pointers
+
16.5. Moving and Resizing +Panels
+
16.6. Hiding and Showing +Panels
+
16.7. panel_above() and panel_below() +Functions
+
+
+
17. Menus Library
+
+
+
17.1. The Basics
+
17.2. Compiling With the Menu +Library
+
17.3. Menu Driver: The work horse of the +menu system
+
17.4. Menu Windows
+
17.5. Scrolling Menus
+
17.6. Multi Columnar Menus
+
17.7. Multi Valued Menus
+
17.8. Menu Options
+
17.9. The useful User Pointer
+
+
+
18. Forms Library
+
+
+
18.1. The Basics
+
18.2. Compiling With the Forms +Library
+
18.3. Playing with Fields
+
18.4. Form Windows
+
18.5. Field Validation
+
18.6. Form Driver: The work horse of the +forms system
+
+
+
19. Tools and Widget Libraries
+
+
+
19.1. CDK (Curses Development Kit)
+
19.2. The dialog
+
19.3. Perl Curses Modules CURSES::FORM +and CURSES::WIDGETS
+
+
+
20. Just For Fun !!!
+
+
+
20.1. The Game of Life
+
20.2. Magic Square
+
20.3. Towers of Hanoi
+
20.4. Queens Puzzle
+
20.5. Shuffle
+
20.6. Typing Tutor
+
+
+
21. References
+
+
+
+

1. +Introduction

+

In the olden days of teletype terminals, terminals were away +from computers and were connected to them through serial cables. +The terminals could be configured by sending a series of bytes. All +the capabilities (such as moving the cursor to a new location, +erasing part of the screen, scrolling the screen, changing modes +etc.) of terminals could be accessed through these series of bytes. +These control seeuqnces are usually called escape sequences, +because they start with an escape(0x1B) character. Even today, with +proper emulation, we can send escape sequences to the emulator and +achieve the same effect on a terminal window.

+

Suppose you wanted to print a line in color. Try typing this on +your console.

+ + + + +
+
+echo "^[[0;31;40mIn Color"
+
+

The first character is an escape character, which looks like two +characters ^ and [. To be able to print it, you have to press +CTRL+V and then the ESC key. All the others are normal printable +characters. You should be able to see the string "In Color" in red. +It stays that way and to revert back to the original mode type +this.

+ + + + +
+
+echo "^[[0;37;40m"
+
+

Now, what do these magic characters mean? Difficult to +comprehend? They might even be different for different terminals. +So the designers of UNIX invented a mechanism named termcap. It is a file that lists all the +capabilities of a particular terminal, along with the escape +sequences needed to achieve a particular effect. In the later +years, this was replaced by terminfo. +Without delving too much into details, this mechanism allows +application programs to query the terminfo database and obtain the +control characters to be sent to a terminal or terminal +emulator.

+
+
+

1.1. What is +NCURSES?

+

You might be wondering, what the import of all this technical +gibberish is. In the above scenario, every application program is +supposed to query the terminfo and perform the necessary stuff +(sending control characters etc.). It soon became difficult to +manage this complexity and this gave birth to 'CURSES'. Curses is a +pun on the name "cursor optimization". The Curses library forms a +wrapper over working with raw terminal codes, and provides highly +flexible and efficient API (Application Programming Interface). It +provides functions to move the cursor, create windows, produce +colors, play with mouse etc. The application programs need not +worry about the underlying terminal capabilities.

+

So what is NCURSES? NCURSES is a clone of the original System V +Release 4.0 (SVr4) curses. It is a freely distributable library, +fully compatible with older version of curses. In short, it is a +library of functions that manages an application's display on +character-cell terminals. In the remainder of the document, the +terms curses and ncurses are used interchangeably.

+

A detailed history of NCURSES can be found in the NEWS file from +the source distribution. The current package is maintained by +Thomas Dickey. +You can contact the maintainers at bug-ncurses@gnu.org.

+
+
+
+

1.2. What +we can do with NCURSES

+

NCURSES not only creates a wrapper over terminal capabilities, +but also gives a robust framework to create nice looking UI (User +Interface)s in text mode. It provides functions to create windows +etc. Its sister libraries panel, menu and form provide an extension +to the basic curses library. These libraries usually come along +with curses. One can create applications that contain multiple +windows, menus, panels and forms. Windows can be managed +independently, can provide 'scrollability' and even can be +hidden.

+

Menus provide the user with an easy command selection option. +Forms allow the creation of easy-to-use data entry and display +windows. Panels extend the capabilities of ncurses to deal with +overlapping and stacked windows.

+

These are just some of the basic things we can do with ncurses. +As we move along, We will see all the capabilities of these +libraries.

+
+
+
+

1.3. +Where to get it

+

All right, now that you know what you can do with ncurses, you +must be rearing to get started. NCURSES is usually shipped with +your installation. In case you don't have the library or want to +compile it on your own, read on.

+

Compiling the package

+

NCURSES can be obtained from ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz or any +of the ftp sites mentioned in http://www.gnu.org/order/ftp.html.

+

Read the README and INSTALL files for details on to how to +install it. It usually involves the following operations.

+ + + + +
+
+    tar zxvf ncurses<version>.tar.gz  # unzip and untar the archive
+    cd ncurses<version>               # cd to the directory
+    ./configure                             # configure the build according to your 
+                                            # environment
+    make                                    # make it
+    su root                                 # become root
+    make install                            # install it
+
+

Using the RPM

+

NCURSES RPM can be found and downloaded from http://rpmfind.net . The RPM +can be installed with the following command after becoming +root.

+ + + + +
+
+    rpm -i <downloaded rpm>
+
+
+
+
+

1.4. Purpose/Scope +of the document

+

This document is intended to be a "All in One" guide for +programming with ncurses and its sister libraries. We graduate from +a simple "Hello World" program to more complex form manipulation. +No prior experience in ncurses is assumed. The writing is informal, +but a lot of detail is provided for each of the examples.

+
+
+
+

1.5. +About the Programs

+

All the programs in the document are available in zipped form +here. Unzip and untar it. The directory structure +looks like this.

+ + + + +
+
+ncurses
+   |
+   |----> JustForFun     -- just for fun programs
+   |----> basics         -- basic programs
+   |----> demo           -- output files go into this directory after make
+   |          |
+   |          |----> exe -- exe files of all example programs
+   |----> forms          -- programs related to form library
+   |----> menus          -- programs related to menus library
+   |----> panels         -- programs related to panels library
+   |----> perl           -- perl equivalents of the examples (contributed
+   |                            by Anuradha Ratnaweera)
+   |----> Makefile       -- the top level Makefile
+   |----> README         -- the top level README file. contains instructions
+   |----> COPYING        -- copyright notice
+
+

The individual directories contain the following files.

+ + + + +
+
+Description of files in each directory
+--------------------------------------
+JustForFun
+    |
+    |----> hanoi.c   -- The Towers of Hanoi Solver
+    |----> life.c    -- The Game of Life demo
+    |----> magic.c   -- An Odd Order Magic Square builder 
+    |----> queens.c  -- The famous N-Queens Solver
+    |----> shuffle.c -- A fun game, if you have time to kill
+    |----> tt.c      -- A very trivial typing tutor
+
+  basics
+    |
+    |----> acs_vars.c            -- ACS_ variables example
+    |----> hello_world.c         -- Simple "Hello World" Program
+    |----> init_func_example.c   -- Initialization functions example
+    |----> key_code.c            -- Shows the scan code of the key pressed
+    |----> mouse_menu.c          -- A menu accessible by mouse
+    |----> other_border.c        -- Shows usage of other border functions apa
+    |                               -- rt from box()
+    |----> printw_example.c      -- A very simple printw() example
+    |----> scanw_example.c       -- A very simple getstr() example
+    |----> simple_attr.c         -- A program that can print a c file with 
+    |                               -- comments in attribute
+    |----> simple_color.c        -- A simple example demonstrating colors
+    |----> simple_key.c          -- A menu accessible with keyboard UP, DOWN 
+    |                               -- arrows
+    |----> temp_leave.c          -- Demonstrates temporarily leaving curses mode
+    |----> win_border.c          -- Shows Creation of windows and borders
+    |----> with_chgat.c          -- chgat() usage example
+
+  forms 
+    |
+    |----> form_attrib.c     -- Usage of field attributes
+    |----> form_options.c    -- Usage of field options
+    |----> form_simple.c     -- A simple form example
+    |----> form_win.c        -- Demo of windows associated with forms
+
+  menus 
+    |
+    |----> menu_attrib.c     -- Usage of menu attributes
+    |----> menu_item_data.c  -- Usage of item_name() etc.. functions
+    |----> menu_multi_column.c    -- Creates multi columnar menus
+    |----> menu_scroll.c     -- Demonstrates scrolling capability of menus
+    |----> menu_simple.c     -- A simple menu accessed by arrow keys
+    |----> menu_toggle.c     -- Creates multi valued menus and explains
+    |                           -- REQ_TOGGLE_ITEM
+    |----> menu_userptr.c    -- Usage of user pointer
+    |----> menu_win.c        -- Demo of windows associated with menus
+
+  panels 
+    |
+    |----> panel_browse.c    -- Panel browsing through tab. Usage of user 
+    |                           -- pointer
+    |----> panel_hide.c      -- Hiding and Un hiding of panels
+    |----> panel_resize.c    -- Moving and resizing of panels
+    |----> panel_simple.c    -- A simple panel example
+
+  perl
+    |----> 01-10.pl          -- Perl equivalents of first ten example programs
+
+

There is a top level Makefile included in the main directory. It +builds all the files and puts the ready-to-use exes in demo/exe +directory. You can also do selective make by going into the +corresponding directory. Each directory contains a README file +explaining the purpose of each c file in the directory.

+

For every example, I have included path name for the file +relative to the examples directory.

+

If you prefer browsing individual programs, point your browser +to http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/

+

All the programs are released under the same license that is +used by ncurses (MIT-style). This gives you the ability to do +pretty much anything other than claiming them as yours. Feel free +to use them in your programs as appropriate.

+
+
+
+

1.6. +Other Formats of the document

+

This howto is also availabe in various other formats on the +tldp.org site. Here are the links to other formats of this +document.

+ +
+
+

1.6.2. +Building from source

+

If above links are broken or if you want to experiment with sgml +read on.

+ + + + +
+
+
    Get both the source and the tar,gzipped programs, available at
+        http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
+        NCURSES-HOWTO/NCURSES-Programming-HOWTO.sgml
+        http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
+        NCURSES-HOWTO/ncurses_programs.tar.gz
+
+    Unzip ncurses_programs.tar.gz with
+    tar zxvf ncurses_programs.tar.gz
+
+    Use jade to create various formats. For example if you just want to create
+    the multiple html files, you would use
+        jade -t sgml -i html -d <path to docbook html stylesheet>
+        NCURSES-Programming-HOWTO.sgml
+    to get pdf, first create a single html file of the HOWTO with 
+        jade -t sgml -i html -d <path to docbook html stylesheet> -V nochunks
+        NCURSES-Programming-HOWTO.sgml > NCURSES-ONE-BIG-FILE.html
+    then use htmldoc to get pdf file with
+        htmldoc --size universal -t pdf --firstpage p1 -f <output file name.pdf>
+        NCURSES-ONE-BIG-FILE.html
+    for ps, you would use
+        htmldoc --size universal -t ps --firstpage p1 -f <output file name.ps>
+        NCURSES-ONE-BIG-FILE.html
+
+

See LDP Author guide for more details. If all else failes, +mail me at ppadala@gmail.com

+
+
+
+
+

1.7. +Credits

+

I thank Sharath and Emre Akbas for helping me with few sections. +The introduction was initially written by sharath. I rewrote it +with few excerpts taken from his initial work. Emre helped in +writing printw and scanw sections.

+

Perl equivalents of the example programs are contributed by +Anuradha +Ratnaweera.

+

Then comes Ravi Parimi, my dearest friend, who has been on this +project before even one line was written. He constantly bombarded +me with suggestions and patiently reviewed the whole text. He also +checked each program on Linux and Solaris.

+
+
+
+

1.8. Wish +List

+

This is the wish list, in the order of priority. If you have a +wish or you want to work on completing the wish, mail me.

+
    +
  • +

    Add examples to last parts of forms section.

    +
  • +
  • +

    Prepare a Demo showing all the programs and allow the user to +browse through description of each program. Let the user compile +and see the program in action. A dialog based interface is +preferred.

    +
  • +
  • +

    Add debug info. _tracef, _tracemouse stuff.

    +
  • +
  • +

    Accessing termcap, terminfo using functions provided by ncurses +package.

    +
  • +
  • +

    Working on two terminals simultaneously.

    +
  • +
  • +

    Add more stuff to miscellaneous section.

    +
  • +
+
+
+
+

1.9. +Copyright

+

Copyright © 2001 by Pradeep Padala.

+

Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, distribute with modifications, +sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the +following conditions:

+

The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software.

+

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.

+

Except as contained in this notice, the name(s) of the above +copyright holders shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without +prior written authorization.

+
+
+
+
+

2. Hello +World !!!

+

Welcome to the world of curses. Before we plunge into the +library and look into its various features, let's write a simple +program and say hello to the world.

+
+
+

2.1. +Compiling With the NCURSES Library

+

To use ncurses library functions, you have to include ncurses.h +in your programs. To link the program with ncurses the flag +-lncurses should be added.

+ + + + +
+
+    #include <ncurses.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lncurses
+
+
+

Example 1. The Hello World !!! Program

+ + + + +
+
+#include <ncurses.h>
+
+int main()
+{       
+        initscr();                      /* Start curses mode              */
+        printw("Hello World !!!");      /* Print Hello World              */
+        refresh();                      /* Print it on to the real screen */
+        getch();                        /* Wait for user input */
+        endwin();                       /* End curses mode                */
+
+        return 0;
+}
+
+
+
+
+
+

2.2. +Dissection

+

The above program prints "Hello World !!!" to the screen and +exits. This program shows how to initialize curses and do screen +manipulation and end curses mode. Let's dissect it line by +line.

+
+
+

2.2.1. +About initscr()

+

The function initscr() initializes the terminal in curses mode. +In some implementations, it clears the screen and presents a blank +screen. To do any screen manipulation using curses package this has +to be called first. This function initializes the curses system and +allocates memory for our present window (called stdscr) and some other data-structures. Under +extreme cases this function might fail due to insufficient memory +to allocate memory for curses library's data structures.

+

After this is done, we can do a variety of initializations to +customize our curses settings. These details will be explained +later .

+
+
+
+

2.2.2. +The mysterious refresh()

+

The next line printw prints the string "Hello World !!!" on to +the screen. This function is analogous to normal printf in all +respects except that it prints the data on a window called stdscr +at the current (y,x) co-ordinates. Since our present co-ordinates +are at 0,0 the string is printed at the left hand corner of the +window.

+

This brings us to that mysterious refresh(). Well, when we +called printw the data is actually written to an imaginary window, +which is not updated on the screen yet. The job of printw is to +update a few flags and data structures and write the data to a +buffer corresponding to stdscr. In order to show it on the screen, +we need to call refresh() and tell the curses system to dump the +contents on the screen.

+

The philosophy behind all this is to allow the programmer to do +multiple updates on the imaginary screen or windows and do a +refresh once all his screen update is done. refresh() checks the +window and updates only the portion which has been changed. This +improves performance and offers greater flexibility too. But, it is +sometimes frustrating to beginners. A common mistake committed by +beginners is to forget to call refresh() after they did some update +through printw() class of functions. I still forget to add it +sometimes :-)

+
+
+
+

2.2.3. +About endwin()

+

And finally don't forget to end the curses mode. Otherwise your +terminal might behave strangely after the program quits. endwin() +frees the memory taken by curses sub-system and its data structures +and puts the terminal in normal mode. This function must be called +after you are done with the curses mode.

+
+
+
+
+
+

3. The Gory +Details

+

Now that we have seen how to write a simple curses program let's +get into the details. There are many functions that help customize +what you see on screen and many features which can be put to full +use.

+

Here we go...

+
+
+
+

4. +Initialization

+

We now know that to initialize curses system the function +initscr() has to be called. There are functions which can be called +after this initialization to customize our curses session. We may +ask the curses system to set the terminal in raw mode or initialize +color or initialize the mouse etc.. Let's discuss some of the +functions that are normally called immediately after initscr();

+ +
+
+

4.2. raw() and +cbreak()

+

Normally the terminal driver buffers the characters a user types +until a new line or carriage return is encountered. But most +programs require that the characters be available as soon as the +user types them. The above two functions are used to disable line +buffering. The difference between these two functions is in the way +control characters like suspend (CTRL-Z), interrupt and quit +(CTRL-C) are passed to the program. In the raw() mode these +characters are directly passed to the program without generating a +signal. In the cbreak() mode these +control characters are interpreted as any other character by the +terminal driver. I personally prefer to use raw() as I can exercise +greater control over what the user does.

+
+
+
+

4.3. echo() +and noecho()

+

These functions control the echoing of characters typed by the +user to the terminal. noecho() switches +off echoing. The reason you might want to do this is to gain more +control over echoing or to suppress unnecessary echoing while +taking input from the user through the getch() etc. functions. Most +of the interactive programs call noecho() at initialization and do the echoing of +characters in a controlled manner. It gives the programmer the +flexibility of echoing characters at any place in the window +without updating current (y,x) co-ordinates.

+
+
+
+

4.4. +keypad()

+

This is my favorite initialization function. It enables the +reading of function keys like F1, F2, arrow keys etc. Almost every +interactive program enables this, as arrow keys are a major part of +any User Interface. Do keypad(stdscr, +TRUE) to enable this feature for the regular screen (stdscr). +You will learn more about key management in later sections of this +document.

+
+
+
+

4.5. +halfdelay()

+

This function, though not used very often, is a useful one at +times. halfdelay()is called to enable the half-delay mode, which is +similar to the cbreak() mode in that characters typed are +immediately available to program. However, it waits for 'X' tenths +of a second for input and then returns ERR, if no input is +available. 'X' is the timeout value passed to the function +halfdelay(). This function is useful when you want to ask the user +for input, and if he doesn't respond with in certain time, we can +do some thing else. One possible example is a timeout at the +password prompt.

+
+
+
+

4.6. +Miscellaneous Initialization functions

+

There are few more functions which are called at initialization +to customize curses behavior. They are not used as extensively as +those mentioned above. Some of them are explained where +appropriate.

+
+
+
+

4.7. An +Example

+

Let's write a program which will clarify the usage of these +functions.

+
+

Example 2. Initialization Function Usage example

+ + + + +
+
+#include <ncurses.h>
+
+int main()
+{       int ch;
+
+        initscr();                      /* Start curses mode            */
+        raw();                          /* Line buffering disabled      */
+        keypad(stdscr, TRUE);           /* We get F1, F2 etc..          */
+        noecho();                       /* Don't echo() while we do getch */
+
+        printw("Type any character to see it in bold\n");
+        ch = getch();                   /* If raw() hadn't been called
+                                         * we have to press enter before it
+                                         * gets to the program          */
+        if(ch == KEY_F(1))              /* Without keypad enabled this will */
+                printw("F1 Key pressed");/*  not get to us either       */
+                                        /* Without noecho() some ugly escape
+                                         * charachters might have been printed
+                                         * on screen                    */
+        else
+        {       printw("The pressed key is ");
+                attron(A_BOLD);
+                printw("%c", ch);
+                attroff(A_BOLD);
+        }
+        refresh();                      /* Print it on to the real screen */
+        getch();                        /* Wait for user input */
+        endwin();                       /* End curses mode                */
+
+        return 0;
+}
+
+
+

This program is self-explanatory. But I used functions which +aren't explained yet. The function getch() is used to get a character from user. It is +equivalent to normal getchar() except +that we can disable the line buffering to avoid <enter> after +input. Look for more about getch()and +reading keys in the key management section . +The functions attron and attroff are used to switch some attributes +on and off respectively. In the example I used them to print the +character in bold. These functions are explained in detail +later.

+
+
+
+
+

5. A +Word about Windows

+

Before we plunge into the myriad ncurses functions, let me clear +few things about windows. Windows are explained in detail in +following sections

+

A Window is an imaginary screen defined by curses system. A +window does not mean a bordered window which you usually see on +Win9X platforms. When curses is initialized, it creates a default +window named stdscr which represents +your 80x25 (or the size of window in which you are running) screen. +If you are doing simple tasks like printing few strings, reading +input etc., you can safely use this single window for all of your +purposes. You can also create windows and call functions which +explicitly work on the specified window.

+

For example, if you call

+ + + + +
+
+    printw("Hi There !!!");
+    refresh();
+
+

It prints the string on stdscr at the present cursor position. +Similarly the call to refresh(), works on stdscr only.

+

Say you have created windows then you +have to call a function with a 'w' added to the usual function.

+ + + + +
+
+    wprintw(win, "Hi There !!!");
+    wrefresh(win);
+
+

As you will see in the rest of the document, naming of functions +follow the same convention. For each function there usually are +three more functions.

+ + + + +
+
+    printw(string);        /* Print on stdscr at present cursor position */
+    mvprintw(y, x, string);/* Move to (y, x) then print string     */
+    wprintw(win, string);  /* Print on window win at present cursor position */
+                           /* in the window */
+    mvwprintw(win, y, x, string);   /* Move to (y, x) relative to window */
+                                    /* co-ordinates and then print         */
+
+

Usually the w-less functions are macros which expand to +corresponding w-function with stdscr as the window parameter.

+
+
+
+

6. Output +functions

+

I guess you can't wait any more to see some action. Back to our +odyssey of curses functions. Now that curses is initialized, let's +interact with world.

+

There are three classes of functions which you can use to do +output on screen.

+
    +
  1. +

    addch() class: Print single character with attributes

    +
  2. +
  3. +

    printw() class: Print formatted output similar to printf()

    +
  4. +
  5. +

    addstr() class: Print strings

    +
  6. +
+

These functions can be used interchangeably and it's a matter of +style as to which class is used. Let's see each one in detail.

+
+
+

6.1. addch() +class of functions

+

These functions put a single character into the current cursor +location and advance the position of the cursor. You can give the +character to be printed but they usually are used to print a +character with some attributes. Attributes are explained in detail +in later sections of the document. If a +character is associated with an attribute(bold, reverse video +etc.), when curses prints the character, it is printed in that +attribute.

+

In order to combine a character with some attributes, you have +two options:

+
    +
  • +

    By OR'ing a single character with the desired attribute macros. +These attribute macros could be found in the header file +ncurses.h. For example, you want to +print a character ch(of type char) bold and underlined, you would +call addch() as below.

    + + + + +
    +
    +    addch(ch | A_BOLD | A_UNDERLINE);
    +
    +
  • +
  • +

    By using functions like attrset(),attron(),attroff(). These functions are +explained in the Attributes section. Briefly, +they manipulate the current attributes of the given window. Once +set, the character printed in the window are associated with the +attributes until it is turned off.

    +
  • +
+

Additionally, curses provides some +special characters for character-based graphics. You can draw +tables, horizontal or vertical lines, etc. You can find all +avaliable characters in the header file ncurses.h. Try looking for macros beginning with +ACS_ in this file.

+
+
+
+

6.2. mvaddch(), +waddch() and mvwaddch()

+

mvaddch() is used to move the cursor +to a given point, and then print. Thus, the calls:

+ + + + +
+
+    move(row,col);    /* moves the cursor to rowth row and colth column */
+    addch(ch);
+
+can be replaced by + + + + +
+
+    mvaddch(row,col,ch);
+
+

waddch() is similar to addch(), except that it adds a character into the +given window. (Note that addch() adds a +character into the window stdscr.)

+

In a similar fashion mvwaddch() +function is used to add a character into the given window at the +given coordinates.

+

Now, we are familiar with the basic output function addch(). But, if we want to print a string, it +would be very annoying to print it character by character. +Fortunately, ncurses provides +printf-like or puts-like functions.

+
+
+
+

6.3. +printw() class of functions

+

These functions are similar to printf() with the added capability of printing at +any position on the screen.

+
+
+

6.3.1. printw() and mvprintw

+

These two functions work much like printf(). mvprintw() can +be used to move the cursor to a position and then print. If you +want to move the cursor first and then print using printw() function, use move() first and then use printw() though I see no point why one should avoid +using mvprintw(), you have the +flexibility to manipulate.

+
+
+
+

6.3.2. wprintw() and mvwprintw

+

These two functions are similar to above two except that they +print in the corresponding window given as argument.

+
+
+
+

6.3.3. +vwprintw()

+

This function is similar to vprintf(). This can be used when variable number of +arguments are to be printed.

+
+
+
+

6.3.4. A Simple printw example

+
+

Example 3. A Simple printw example

+ + + + +
+
+#include <ncurses.h>                   /* ncurses.h includes stdio.h */  
+#include <string.h> 
+ 
+int main()
+{
+ char mesg[]="Just a string";           /* message to be appeared on the screen */
+ int row,col;                           /* to store the number of rows and *
+                                         * the number of colums of the screen */
+ initscr();                             /* start the curses mode */
+ getmaxyx(stdscr,row,col);              /* get the number of rows and columns */
+ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
+                                        /* print the message at the center of the screen */
+ mvprintw(row-2,0,"This screen has %d rows and %d columns\n",row,col);
+ printw("Try resizing your window(if possible) and then run this program again");
+ refresh();
+ getch();
+ endwin();
+
+ return 0;
+}
+
+
+

Above program demonstrates how easy it is to use printw. You just feed the coordinates and the +message to be appeared on the screen, then it does what you +want.

+

The above program introduces us to a new function getmaxyx(), a macro defined in ncurses.h. It gives the number of columns and the +number of rows in a given window. getmaxyx() does this by updating the variables +given to it. Since getmaxyx() is not a +function we don't pass pointers to it, we just give two integer +variables.

+
+
+
+
+

6.4. +addstr() class of functions

+

addstr() is used to put a character +string into a given window. This function is similar to calling +addch() once for each character in a +given string. This is true for all output functions. There are +other functions from this family such as mvaddstr(),mvwaddstr() and waddstr(), which obey the naming convention of +curses.(e.g. mvaddstr() is similar to the respective calls move() +and then addstr().) Another function of this family is addnstr(), +which takes an integer parameter(say n) additionally. This function +puts at most n characters into the screen. If n is negative, then +the entire string will be added.

+
+
+
+

6.5. A word of +caution

+

All these functions take y co-ordinate first and then x in their +arguments. A common mistake by beginners is to pass x,y in that +order. If you are doing too many manipulations of (y,x) +co-ordinates, think of dividing the screen into windows and +manipulate each one separately. Windows are explained in the +windows section.

+
+
+
+
+

7. Input +functions

+

Well, printing without taking input, is boring. Let's see +functions which allow us to get input from user. These functions +also can be divided into three categories.

+
    +
  1. +

    getch() class: Get a character

    +
  2. +
  3. +

    scanw() class: Get formatted input

    +
  4. +
  5. +

    getstr() class: Get strings

    +
  6. +
+
+
+

7.1. getch() +class of functions

+

These functions read a single character from the terminal. But +there are several subtle facts to consider. For example if you +don't use the function cbreak(), curses will not read your input +characters contiguously but will begin read them only after a new +line or an EOF is encountered. In order to avoid this, the cbreak() +function must used so that characters are immediately available to +your program. Another widely used function is noecho(). As the name +suggests, when this function is set (used), the characters that are +keyed in by the user will not show up on the screen. The two +functions cbreak() and noecho() are typical examples of key +management. Functions of this genre are explained in the key management section .

+
+
+
+

7.2. scanw() +class of functions

+

These functions are similar to scanf() with the added capability of getting the +input from any location on the screen.

+
+
+

7.2.1. +scanw() and mvscanw

+

The usage of these functions is similar to that of sscanf(), where the line to be scanned is provided +by wgetstr() function. That is, these +functions call to wgetstr() +function(explained below) and uses the resulting line for a +scan.

+
+
+
+

7.2.2. wscanw() and mvwscanw()

+

These are similar to above two functions except that they read +from a window, which is supplied as one of the arguments to these +functions.

+
+
+
+

7.2.3. +vwscanw()

+

This function is similar to vscanf(). +This can be used when a variable number of arguments are to be +scanned.

+
+
+
+
+

7.3. +getstr() class of functions

+

These functions are used to get strings from the terminal. In +essence, this function performs the same task as would be achieved +by a series of calls to getch() until a +newline, carriage return, or end-of-file is received. The resulting +string of characters are pointed to by str, which is a character pointer provided by the +user.

+
+
+
+

7.4. Some +examples

+
+

Example 4. A Simple scanw example

+ + + + +
+
+#include <ncurses.h>                   /* ncurses.h includes stdio.h */  
+#include <string.h> 
+ 
+int main()
+{
+ char mesg[]="Enter a string: ";                /* message to be appeared on the screen */
+ char str[80];
+ int row,col;                           /* to store the number of rows and *
+                                         * the number of colums of the screen */
+ initscr();                             /* start the curses mode */
+ getmaxyx(stdscr,row,col);              /* get the number of rows and columns */
+ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
+                                /* print the message at the center of the screen */
+ getstr(str);
+ mvprintw(LINES - 2, 0, "You Entered: %s", str);
+ getch();
+ endwin();
+
+ return 0;
+}
+
+
+
+
+
+
+

8. +Attributes

+

We have seen an example of how attributes can be used to print +characters with some special effects. Attributes, when set +prudently, can present information in an easy, understandable +manner. The following program takes a C file as input and prints +the file with comments in bold. Scan through the code.

+
+

Example 5. A Simple Attributes example

+ + + + +
+
+/* pager functionality by Joseph Spainhour" <spainhou@bellsouth.net> */
+#include <ncurses.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[])
+{ 
+  int ch, prev, row, col;
+  prev = EOF;
+  FILE *fp;
+  int y, x;
+
+  if(argc != 2)
+  {
+    printf("Usage: %s <a c file name>\n", argv[0]);
+    exit(1);
+  }
+  fp = fopen(argv[1], "r");
+  if(fp == NULL)
+  {
+    perror("Cannot open input file");
+    exit(1);
+  }
+  initscr();                            /* Start curses mode */
+  getmaxyx(stdscr, row, col);           /* find the boundaries of the screeen */
+  while((ch = fgetc(fp)) != EOF)        /* read the file till we reach the end */
+  {
+    getyx(stdscr, y, x);                /* get the current curser position */
+    if(y == (row - 1))                  /* are we are at the end of the screen */
+    {
+      printw("<-Press Any Key->");      /* tell the user to press a key */
+      getch();
+      clear();                          /* clear the screen */
+      move(0, 0);                       /* start at the beginning of the screen */
+    }
+    if(prev == '/' && ch == '*')        /* If it is / and * then only
+                                         * switch bold on */    
+    {
+      attron(A_BOLD);                   /* cut bold on */
+      getyx(stdscr, y, x);              /* get the current curser position */
+      move(y, x - 1);                   /* back up one space */
+      printw("%c%c", '/', ch);          /* The actual printing is done here */
+    }
+    else
+      printw("%c", ch);
+    refresh();
+    if(prev == '*' && ch == '/')
+      attroff(A_BOLD);                  /* Switch it off once we got *
+                                         * and then / */
+    prev = ch;
+  }
+  endwin();                             /* End curses mode */
+  fclose(fp);
+  return 0;
+}
+
+
+

Don't worry about all those initialization and other crap. +Concentrate on the while loop. It reads each character in the file +and searches for the pattern /*. Once it spots the pattern, it +switches the BOLD attribute on with attron() . When we get the pattern */ it is +switched off by attroff() .

+

The above program also introduces us to two useful functions +getyx() and move(). The first function gets the co-ordinates of +the present cursor into the variables y, x. Since getyx() is a +macro we don't have to pass pointers to variables. The function +move() moves the cursor to the +co-ordinates given to it.

+

The above program is really a simple one which doesn't do much. +On these lines one could write a more useful program which reads a +C file, parses it and prints it in different colors. One could even +extend it to other languages as well.

+
+
+

8.1. +The details

+

Let's get into more details of attributes. The functions +attron(), attroff(), attrset() , and +their sister functions attr_get() etc.. +can be used to switch attributes on/off , get attributes and +produce a colorful display.

+

The functions attron and attroff take a bit-mask of attributes +and switch them on or off, respectively. The following video +attributes, which are defined in <curses.h> can be passed to +these functions.

+ + + + +
+
+    
+    A_NORMAL        Normal display (no highlight)
+    A_STANDOUT      Best highlighting mode of the terminal.
+    A_UNDERLINE     Underlining
+    A_REVERSE       Reverse video
+    A_BLINK         Blinking
+    A_DIM           Half bright
+    A_BOLD          Extra bright or bold
+    A_PROTECT       Protected mode
+    A_INVIS         Invisible or blank mode
+    A_ALTCHARSET    Alternate character set
+    A_CHARTEXT      Bit-mask to extract a character
+    COLOR_PAIR(n)   Color-pair number n 
+    
+
+

The last one is the most colorful one :-) Colors are explained +in the next sections.

+

We can OR(|) any number of above attributes to get a combined +effect. If you wanted reverse video with blinking characters you +can use

+ + + + +
+
+    attron(A_REVERSE | A_BLINK);
+
+
+
+
+

8.2. attron() vs attrset()

+

Then what is the difference between attron() and attrset()? +attrset sets the attributes of window whereas attron just switches +on the attribute given to it. So attrset() fully overrides whatever +attributes the window previously had and sets it to the new +attribute(s). Similarly attroff() just switches off the +attribute(s) given to it as an argument. This gives us the +flexibility of managing attributes easily.But if you use them +carelessly you may loose track of what attributes the window has +and garble the display. This is especially true while managing +menus with colors and highlighting. So decide on a consistent +policy and stick to it. You can always use standend() which is equivalent to attrset(A_NORMAL) which turns off all attributes +and brings you to normal mode.

+
+
+
+

8.3. +attr_get()

+

The function attr_get() gets the current attributes and color +pair of the window. Though we might not use this as often as the +above functions, this is useful in scanning areas of screen. Say we +wanted to do some complex update on screen and we are not sure what +attribute each character is associated with. Then this function can +be used with either attrset or attron to produce the desired +effect.

+
+
+
+

8.4. attr_ +functions

+

There are series of functions like attr_set(), attr_on etc.. +These are similar to above functions except that they take +parameters of type attr_t.

+
+
+
+

8.5. wattr +functions

+

For each of the above functions we have a corresponding function +with 'w' which operates on a particular window. The above functions +operate on stdscr.

+
+
+
+

8.6. chgat() +functions

+

The function chgat() is listed in the end of the man page +curs_attr. It actually is a useful one. This function can be used +to set attributes for a group of characters without moving. I mean +it !!! without moving the cursor :-) It changes the attributes of a +given number of characters starting at the current cursor +location.

+

We can give -1 as the character count to update till end of +line. If you want to change attributes of characters from current +position to end of line, just use this.

+ + + + +
+
+    chgat(-1, A_REVERSE, 0, NULL);
+
+

This function is useful when changing attributes for characters +that are already on the screen. Move to the character from which +you want to change and change the attribute.

+

Other functions wchgat(), mvchgat(), wchgat() behave similarly +except that the w functions operate on the particular window. The +mv functions first move the cursor then perform the work given to +them. Actually chgat is a macro which is replaced by a wchgat() +with stdscr as the window. Most of the "w-less" functions are +macros.

+
+

Example 6. Chgat() Usage example

+ + + + +
+
+#include <ncurses.h>
+
+int main(int argc, char *argv[])
+{       initscr();                      /* Start curses mode            */
+        start_color();                  /* Start color functionality    */
+        
+        init_pair(1, COLOR_CYAN, COLOR_BLACK);
+        printw("A Big string which i didn't care to type fully ");
+        mvchgat(0, 0, -1, A_BLINK, 1, NULL);    
+        /* 
+         * First two parameters specify the position at which to start 
+         * Third parameter number of characters to update. -1 means till 
+         * end of line
+         * Forth parameter is the normal attribute you wanted to give 
+         * to the charcter
+         * Fifth is the color index. It is the index given during init_pair()
+         * use 0 if you didn't want color
+         * Sixth one is always NULL 
+         */
+        refresh();
+        getch();
+        endwin();                       /* End curses mode                */
+        return 0;
+}
+
+
+

This example also introduces us to the color world of curses. +Colors will be explained in detail later. Use 0 for no color.

+
+
+
+
+

9. +Windows

+

Windows form the most important concept in curses. You have seen +the standard window stdscr above where all the functions implicitly +operated on this window. Now to make design even a simplest GUI, +you need to resort to windows. The main reason you may want to use +windows is to manipulate parts of the screen separately, for better +efficiency, by updating only the windows that need to be changed +and for a better design. I would say the last reason is the most +important in going for windows. You should always strive for a +better and easy-to-manage design in your programs. If you are +writing big, complex GUIs this is of pivotal importance before you +start doing anything.

+
+
+

9.1. The +basics

+

A Window can be created by calling the function newwin(). It doesn't create any thing on the screen +actually. It allocates memory for a structure to manipulate the +window and updates the structure with data regarding the window +like it's size, beginy, beginx etc.. Hence in curses, a window is +just an abstraction of an imaginary window, which can be +manipulated independent of other parts of screen. The function +newwin() returns a pointer to structure WINDOW, which can be passed +to window related functions like wprintw() etc.. Finally the window +can be destroyed with delwin(). It will deallocate the memory +associated with the window structure.

+
+
+
+

9.2. Let +there be a Window !!!

+

What fun is it, if a window is created and we can't see it. So +the fun part begins by displaying the window. The function +box() can be used to draw a border +around the window. Let's explore these functions in more detail in +this example.

+
+

Example 7. Window Border example

+ + + + +
+
+#include <ncurses.h>
+
+
+WINDOW *create_newwin(int height, int width, int starty, int startx);
+void destroy_win(WINDOW *local_win);
+
+int main(int argc, char *argv[])
+{       WINDOW *my_win;
+        int startx, starty, width, height;
+        int ch;
+
+        initscr();                      /* Start curses mode            */
+        cbreak();                       /* Line buffering disabled, Pass on
+                                         * everty thing to me           */
+        keypad(stdscr, TRUE);           /* I need that nifty F1         */
+
+        height = 3;
+        width = 10;
+        starty = (LINES - height) / 2;  /* Calculating for a center placement */
+        startx = (COLS - width) / 2;    /* of the window                */
+        printw("Press F1 to exit");
+        refresh();
+        my_win = create_newwin(height, width, starty, startx);
+
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_LEFT:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, starty,--startx);
+                                break;
+                        case KEY_RIGHT:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, starty,++startx);
+                                break;
+                        case KEY_UP:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, --starty,startx);
+                                break;
+                        case KEY_DOWN:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, ++starty,startx);
+                                break;  
+                }
+        }
+                
+        endwin();                       /* End curses mode                */
+        return 0;
+}
+
+WINDOW *create_newwin(int height, int width, int starty, int startx)
+{       WINDOW *local_win;
+
+        local_win = newwin(height, width, starty, startx);
+        box(local_win, 0 , 0);          /* 0, 0 gives default characters 
+                                         * for the vertical and horizontal
+                                         * lines                        */
+        wrefresh(local_win);            /* Show that box                */
+
+        return local_win;
+}
+
+void destroy_win(WINDOW *local_win)
+{       
+        /* box(local_win, ' ', ' '); : This won't produce the desired
+         * result of erasing the window. It will leave it's four corners 
+         * and so an ugly remnant of window. 
+         */
+        wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
+        /* The parameters taken are 
+         * 1. win: the window on which to operate
+         * 2. ls: character to be used for the left side of the window 
+         * 3. rs: character to be used for the right side of the window 
+         * 4. ts: character to be used for the top side of the window 
+         * 5. bs: character to be used for the bottom side of the window 
+         * 6. tl: character to be used for the top left corner of the window 
+         * 7. tr: character to be used for the top right corner of the window 
+         * 8. bl: character to be used for the bottom left corner of the window 
+         * 9. br: character to be used for the bottom right corner of the window
+         */
+        wrefresh(local_win);
+        delwin(local_win);
+}
+
+
+
+
+
+

9.3. +Explanation

+

Don't scream. I know it's a big example. But I have to explain +some important things here :-). This program creates a rectangular +window that can be moved with left, right, up, down arrow keys. It +repeatedly creates and destroys windows as user press a key. Don't +go beyond the screen limits. Checking for those limits is left as +an exercise for the reader. Let's dissect it by line by line.

+

The create_newwin() function creates +a window with newwin() and displays a +border around it with box. The function destroy_win() first erases the window from screen +by painting a border with ' ' character and then calling +delwin() to deallocate memory related to +it. Depending on the key the user presses, starty or startx is +changed and a new window is created.

+

In the destroy_win, as you can see, I used wborder instead of +box. The reason is written in the comments (You missed it. I know. +Read the code :-)). wborder draws a border around the window with +the characters given to it as the 4 corner points and the 4 lines. +To put it clearly, if you have called wborder as below:

+ + + + +
+
+    wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
+
+

it produces some thing like

+ + + + +
+
+    +------------+
+    |            |
+    |            |
+    |            |
+    |            |
+    |            |
+    |            |
+    +------------+
+
+
+
+
+

9.4. The +other stuff in the example

+

You can also see in the above examples, that I have used the +variables COLS, LINES which are initialized to the screen sizes +after initscr(). They can be useful in finding screen dimensions +and finding the center co-ordinate of the screen as above. The +function getch() as usual gets the key +from keyboard and according to the key it does the corresponding +work. This type of switch- case is very common in any GUI based +programs.

+
+
+
+

9.5. Other Border functions

+

Above program is grossly inefficient in that with each press of +a key, a window is destroyed and another is created. So let's write +a more efficient program which uses other border related +functions.

+

The following program uses mvhline() +and mvvline() to achieve similar effect. +These two functions are simple. They create a horizontal or +vertical line of the specified length at the specified +position.

+
+

Example 8. More border functions

+ + + + +
+
+#include <ncurses.h>
+
+typedef struct _win_border_struct {
+        chtype  ls, rs, ts, bs, 
+                tl, tr, bl, br;
+}WIN_BORDER;
+
+typedef struct _WIN_struct {
+
+        int startx, starty;
+        int height, width;
+        WIN_BORDER border;
+}WIN;
+
+void init_win_params(WIN *p_win);
+void print_win_params(WIN *p_win);
+void create_box(WIN *win, bool flag);
+
+int main(int argc, char *argv[])
+{       WIN win;
+        int ch;
+
+        initscr();                      /* Start curses mode            */
+        start_color();                  /* Start the color functionality */
+        cbreak();                       /* Line buffering disabled, Pass on
+                                         * everty thing to me           */
+        keypad(stdscr, TRUE);           /* I need that nifty F1         */
+        noecho();
+        init_pair(1, COLOR_CYAN, COLOR_BLACK);
+
+        /* Initialize the window parameters */
+        init_win_params(&win);
+        print_win_params(&win);
+
+        attron(COLOR_PAIR(1));
+        printw("Press F1 to exit");
+        refresh();
+        attroff(COLOR_PAIR(1));
+        
+        create_box(&win, TRUE);
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_LEFT:
+                                create_box(&win, FALSE);
+                                --win.startx;
+                                create_box(&win, TRUE);
+                                break;
+                        case KEY_RIGHT:
+                                create_box(&win, FALSE);
+                                ++win.startx;
+                                create_box(&win, TRUE);
+                                break;
+                        case KEY_UP:
+                                create_box(&win, FALSE);
+                                --win.starty;
+                                create_box(&win, TRUE);
+                                break;
+                        case KEY_DOWN:
+                                create_box(&win, FALSE);
+                                ++win.starty;
+                                create_box(&win, TRUE);
+                                break;  
+                }
+        }
+        endwin();                       /* End curses mode                */
+        return 0;
+}
+void init_win_params(WIN *p_win)
+{
+        p_win->height = 3;
+        p_win->width = 10;
+        p_win->starty = (LINES - p_win->height)/2;      
+        p_win->startx = (COLS - p_win->width)/2;
+
+        p_win->border.ls = '|';
+        p_win->border.rs = '|';
+        p_win->border.ts = '-';
+        p_win->border.bs = '-';
+        p_win->border.tl = '+';
+        p_win->border.tr = '+';
+        p_win->border.bl = '+';
+        p_win->border.br = '+';
+
+}
+void print_win_params(WIN *p_win)
+{
+#ifdef _DEBUG
+        mvprintw(25, 0, "%d %d %d %d", p_win->startx, p_win->starty, 
+                                p_win->width, p_win->height);
+        refresh();
+#endif
+}
+void create_box(WIN *p_win, bool flag)
+{       int i, j;
+        int x, y, w, h;
+
+        x = p_win->startx;
+        y = p_win->starty;
+        w = p_win->width;
+        h = p_win->height;
+
+        if(flag == TRUE)
+        {       mvaddch(y, x, p_win->border.tl);
+                mvaddch(y, x + w, p_win->border.tr);
+                mvaddch(y + h, x, p_win->border.bl);
+                mvaddch(y + h, x + w, p_win->border.br);
+                mvhline(y, x + 1, p_win->border.ts, w - 1);
+                mvhline(y + h, x + 1, p_win->border.bs, w - 1);
+                mvvline(y + 1, x, p_win->border.ls, h - 1);
+                mvvline(y + 1, x + w, p_win->border.rs, h - 1);
+
+        }
+        else
+                for(j = y; j <= y + h; ++j)
+                        for(i = x; i <= x + w; ++i)
+                                mvaddch(j, i, ' ');
+                                
+        refresh();
+
+}
+
+
+
+
+
+
+

10. Colors

+
+

10.1. The +basics

+

Life seems dull with no colors. Curses has a nice mechanism to +handle colors. Let's get into the thick of the things with a small +program.

+
+

Example 9. A Simple Color example

+ + + + +
+
+#include <ncurses.h>
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);
+int main(int argc, char *argv[])
+{       initscr();                      /* Start curses mode            */
+        if(has_colors() == FALSE)
+        {       endwin();
+                printf("Your terminal does not support color\n");
+                exit(1);
+        }
+        start_color();                  /* Start color                  */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+
+        attron(COLOR_PAIR(1));
+        print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
+        attroff(COLOR_PAIR(1));
+        getch();
+        endwin();
+}
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        mvwprintw(win, y, x, "%s", string);
+        refresh();
+}
+
+
+
+

As you can see, to start using color, you should first call the +function start_color(). After that, you +can use color capabilities of your terminals using various +functions. To find out whether a terminal has color capabilities or +not, you can use has_colors() function, +which returns FALSE if the terminal does not support color.

+

Curses initializes all the colors supported by terminal when +start_color() is called. These can be accessed by the define +constants like COLOR_BLACK etc. Now to +actually start using colors, you have to define pairs. Colors are +always used in pairs. That means you have to use the function +init_pair() to define the foreground and +background for the pair number you give. After that that pair +number can be used as a normal attribute with COLOR_PAIR()function. This may seem to be +cumbersome at first. But this elegant solution allows us to manage +color pairs very easily. To appreciate it, you have to look into +the the source code of "dialog", a utility for displaying dialog +boxes from shell scripts. The developers have defined foreground +and background combinations for all the colors they might need and +initialized at the beginning. This makes it very easy to set +attributes just by accessing a pair which we already have defined +as a constant.

+

The following colors are defined in curses.h. You can use these as parameters for +various color functions.

+ + + + +
+
+        COLOR_BLACK   0
+        COLOR_RED     1
+        COLOR_GREEN   2
+        COLOR_YELLOW  3
+        COLOR_BLUE    4
+        COLOR_MAGENTA 5
+        COLOR_CYAN    6
+        COLOR_WHITE   7
+
+
+
+
+

10.2. Changing Color Definitions

+

The function init_color()can be used +to change the rgb values for the colors defined by curses +initially. Say you wanted to lighten the intensity of red color by +a minuscule. Then you can use this function as

+ + + + +
+
+    init_color(COLOR_RED, 700, 0, 0);
+    /* param 1     : color name
+     * param 2, 3, 4 : rgb content min = 0, max = 1000 */
+
+

If your terminal cannot change the color definitions, the +function returns ERR. The function can_change_color() can be used to find out whether +the terminal has the capability of changing color content or not. +The rgb content is scaled from 0 to 1000. Initially RED color is +defined with content 1000(r), 0(g), 0(b).

+
+
+
+

10.3. +Color Content

+

The functions color_content() and +pair_content() can be used to find the +color content and foreground, background combination for the +pair.

+
+
+
+
+

11. Interfacing with the +key board

+
+

11.1. The +Basics

+

No GUI is complete without a strong user interface and to +interact with the user, a curses program should be sensitive to key +presses or the mouse actions done by the user. Let's deal with the +keys first.

+

As you have seen in almost all of the above examples, it's very +easy to get key input from the user. A simple way of getting key +presses is to use getch() function. The +cbreak mode should be enabled to read keys when you are interested +in reading individual key hits rather than complete lines of text +(which usually end with a carriage return). keypad should be +enabled to get the Functions keys, arrow keys etc. See the +initialization section for details.

+

getch() returns an integer +corresponding to the key pressed. If it is a normal character, the +integer value will be equivalent to the character. Otherwise it +returns a number which can be matched with the constants defined in +curses.h. For example if the user +presses F1, the integer returned is 265. This can be checked using +the macro KEY_F() defined in curses.h. This makes reading keys +portable and easy to manage.

+

For example, if you call getch() like this

+ + + + +
+
+    int ch;
+
+    ch = getch();
+
+

getch() will wait for the user to press a key, (unless you +specified a timeout) and when user presses a key, the corresponding +integer is returned. Then you can check the value returned with the +constants defined in curses.h to match against the keys you +want.

+

The following code piece will do that job.

+ + + + +
+
+    if(ch == KEY_LEFT)
+        printw("Left arrow is pressed\n");
+
+

Let's write a small program which creates a menu which can be +navigated by up and down arrows.

+
+
+
+

11.2. A +Simple Key Usage example

+
+

Example 10. A Simple Key Usage example

+ + + + +
+
+#include <stdio.h>
+#include <ncurses.h>
+
+#define WIDTH 30
+#define HEIGHT 10 
+
+int startx = 0;
+int starty = 0;
+
+char *choices[] = { 
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                  };
+int n_choices = sizeof(choices) / sizeof(char *);
+void print_menu(WINDOW *menu_win, int highlight);
+
+int main()
+{       WINDOW *menu_win;
+        int highlight = 1;
+        int choice = 0;
+        int c;
+
+        initscr();
+        clear();
+        noecho();
+        cbreak();       /* Line buffering disabled. pass on everything */
+        startx = (80 - WIDTH) / 2;
+        starty = (24 - HEIGHT) / 2;
+                
+        menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+        keypad(menu_win, TRUE);
+        mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
+        refresh();
+        print_menu(menu_win, highlight);
+        while(1)
+        {       c = wgetch(menu_win);
+                switch(c)
+                {       case KEY_UP:
+                                if(highlight == 1)
+                                        highlight = n_choices;
+                                else
+                                        --highlight;
+                                break;
+                        case KEY_DOWN:
+                                if(highlight == n_choices)
+                                        highlight = 1;
+                                else 
+                                        ++highlight;
+                                break;
+                        case 10:
+                                choice = highlight;
+                                break;
+                        default:
+                                mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
+                                refresh();
+                                break;
+                }
+                print_menu(menu_win, highlight);
+                if(choice != 0) /* User did a choice come out of the infinite loop */
+                        break;
+        }       
+        mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
+        clrtoeol();
+        refresh();
+        endwin();
+        return 0;
+}
+
+
+void print_menu(WINDOW *menu_win, int highlight)
+{
+        int x, y, i;    
+
+        x = 2;
+        y = 2;
+        box(menu_win, 0, 0);
+        for(i = 0; i < n_choices; ++i)
+        {       if(highlight == i + 1) /* High light the present choice */
+                {       wattron(menu_win, A_REVERSE); 
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                        wattroff(menu_win, A_REVERSE);
+                }
+                else
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                ++y;
+        }
+        wrefresh(menu_win);
+}
+
+
+
+
+
+
+
+

12. Interfacing with +the mouse

+

Now that you have seen how to get keys, lets do the same thing +from mouse. Usually each UI allows the user to interact with both +keyboard and mouse.

+
+
+

12.1. The +Basics

+

Before you do any thing else, the events you want to receive +have to be enabled with mousemask().

+ + + + +
+
+    mousemask(  mmask_t newmask,    /* The events you want to listen to */
+                mmask_t *oldmask)    /* The old events mask                */
+
+

The first parameter to above function is a bit mask of events +you would like to listen. By default, all the events are turned +off. The bit mask ALL_MOUSE_EVENTS can +be used to get all the events.

+

The following are all the event masks:

+ + + + +
+
+    Name            Description
+       ---------------------------------------------------------------------
+       BUTTON1_PRESSED          mouse button 1 down
+       BUTTON1_RELEASED         mouse button 1 up
+       BUTTON1_CLICKED          mouse button 1 clicked
+       BUTTON1_DOUBLE_CLICKED   mouse button 1 double clicked
+       BUTTON1_TRIPLE_CLICKED   mouse button 1 triple clicked
+       BUTTON2_PRESSED          mouse button 2 down
+       BUTTON2_RELEASED         mouse button 2 up
+       BUTTON2_CLICKED          mouse button 2 clicked
+       BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
+       BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
+       BUTTON3_PRESSED          mouse button 3 down
+       BUTTON3_RELEASED         mouse button 3 up
+       BUTTON3_CLICKED          mouse button 3 clicked
+       BUTTON3_DOUBLE_CLICKED   mouse button 3 double clicked
+       BUTTON3_TRIPLE_CLICKED   mouse button 3 triple clicked
+       BUTTON4_PRESSED          mouse button 4 down
+       BUTTON4_RELEASED         mouse button 4 up
+       BUTTON4_CLICKED          mouse button 4 clicked
+       BUTTON4_DOUBLE_CLICKED   mouse button 4 double clicked
+       BUTTON4_TRIPLE_CLICKED   mouse button 4 triple clicked
+       BUTTON_SHIFT             shift was down during button state change
+       BUTTON_CTRL              control was down during button state change
+       BUTTON_ALT               alt was down during button state change
+       ALL_MOUSE_EVENTS         report all button state changes
+       REPORT_MOUSE_POSITION    report mouse movement
+
+
+
+
+

12.2. +Getting the events

+

Once a class of mouse events have been enabled, getch() class of +functions return KEY_MOUSE every time some mouse event happens. +Then the mouse event can be retrieved with getmouse().

+

The code approximately looks like this:

+ + + + +
+
+    MEVENT event;
+
+    ch = getch();
+    if(ch == KEY_MOUSE)
+        if(getmouse(&event) == OK)
+            .    /* Do some thing with the event */
+            .
+            .
+
+

getmouse() returns the event into the pointer given to it. It's +a structure which contains

+ + + + +
+
+    typedef struct
+    {
+        short id;         /* ID to distinguish multiple devices */
+        int x, y, z;      /* event coordinates */
+        mmask_t bstate;   /* button state bits */
+    }    
+
+

The bstate is the main variable we +are interested in. It tells the button state of the mouse.

+

Then with a code snippet like the following, we can find out +what happened.

+ + + + +
+
+    if(event.bstate & BUTTON1_PRESSED)
+        printw("Left Button Pressed");
+
+
+
+
+

12.3. +Putting it all Together

+

That's pretty much interfacing with mouse. Let's create the same +menu and enable mouse interaction. To make things simpler, key +handling is removed.

+
+

Example 11. Access the menu with mouse !!!

+ + + + +
+
+#include <ncurses.h>
+
+#define WIDTH 30
+#define HEIGHT 10 
+
+int startx = 0;
+int starty = 0;
+
+char *choices[] = {     "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                  };
+
+int n_choices = sizeof(choices) / sizeof(char *);
+
+void print_menu(WINDOW *menu_win, int highlight);
+void report_choice(int mouse_x, int mouse_y, int *p_choice);
+
+int main()
+{       int c, choice = 0;
+        WINDOW *menu_win;
+        MEVENT event;
+
+        /* Initialize curses */
+        initscr();
+        clear();
+        noecho();
+        cbreak();       //Line buffering disabled. pass on everything
+
+        /* Try to put the window in the middle of screen */
+        startx = (80 - WIDTH) / 2;
+        starty = (24 - HEIGHT) / 2;
+        
+        attron(A_REVERSE);
+        mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
+        refresh();
+        attroff(A_REVERSE);
+
+        /* Print the menu for the first time */
+        menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+        print_menu(menu_win, 1);
+        /* Get all the mouse events */
+        mousemask(ALL_MOUSE_EVENTS, NULL);
+        
+        while(1)
+        {       c = wgetch(menu_win);
+                switch(c)
+                {       case KEY_MOUSE:
+                        if(getmouse(&event) == OK)
+                        {       /* When the user clicks left mouse button */
+                                if(event.bstate & BUTTON1_PRESSED)
+                                {       report_choice(event.x + 1, event.y + 1, &choice);
+                                        if(choice == -1) //Exit chosen
+                                                goto end;
+                                        mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
+                                        refresh(); 
+                                }
+                        }
+                        print_menu(menu_win, choice);
+                        break;
+                }
+        }               
+end:
+        endwin();
+        return 0;
+}
+
+
+void print_menu(WINDOW *menu_win, int highlight)
+{
+        int x, y, i;    
+
+        x = 2;
+        y = 2;
+        box(menu_win, 0, 0);
+        for(i = 0; i < n_choices; ++i)
+        {       if(highlight == i + 1)
+                {       wattron(menu_win, A_REVERSE); 
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                        wattroff(menu_win, A_REVERSE);
+                }
+                else
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                ++y;
+        }
+        wrefresh(menu_win);
+}
+
+/* Report the choice according to mouse position */
+void report_choice(int mouse_x, int mouse_y, int *p_choice)
+{       int i,j, choice;
+
+        i = startx + 2;
+        j = starty + 3;
+        
+        for(choice = 0; choice < n_choices; ++choice)
+                if(mouse_y == j + choice && mouse_x >= i && mouse_x <= i + strlen(choices[choice]))
+                {       if(choice == n_choices - 1)
+                                *p_choice = -1;         
+                        else
+                                *p_choice = choice + 1; 
+                        break;
+                }
+}
+
+
+
+
+
+

12.4. Miscellaneous Functions

+

The functions mouse_trafo() and wmouse_trafo() can be used to +convert to mouse co-ordinates to screen relative co-ordinates. See +curs_mouse(3X) man page for details.

+

The mouseinterval function sets the maximum time (in thousands +of a second) that can elapse between press and release events in +order for them to be recognized as a click. This function returns +the previous interval value. The default is one fifth of a +second.

+
+
+
+
+

13. Screen +Manipulation

+

In this section, we will look into some functions, which allow +us to manage the screen efficiently and to write some fancy +programs. This is especially important in writing games.

+
+
+

13.1. getyx() +functions

+

The function getyx() can be used to +find out the present cursor co-ordinates. It will fill the values +of x and y co-ordinates in the arguments given to it. Since getyx() +is a macro you don't have to pass the address of the variables. It +can be called as

+ + + + +
+
+    getyx(win, y, x);
+    /* win: window pointer
+     *   y, x: y, x co-ordinates will be put into this variables 
+     */
+
+

The function getparyx() gets the beginning co-ordinates of the +sub window relative to the main window. This is some times useful +to update a sub window. When designing fancy stuff like writing +multiple menus, it becomes difficult to store the menu positions, +their first option co-ordinates etc. A simple solution to this +problem, is to create menus in sub windows and later find the +starting co-ordinates of the menus by using getparyx().

+

The functions getbegyx() and getmaxyx() store current window's +beginning and maximum co-ordinates. These functions are useful in +the same way as above in managing the windows and sub windows +effectively.

+
+
+
+

13.2. Screen +Dumping

+

While writing games, some times it becomes necessary to store +the state of the screen and restore it back to the same state. The +function scr_dump() can be used to dump the screen contents to a +file given as an argument. Later it can be restored by scr_restore +function. These two simple functions can be used effectively to +maintain a fast moving game with changing scenarios.

+
+
+
+

13.3. Window +Dumping

+

To store and restore windows, the functions putwin() and getwin() +can be used. putwin() puts the present +window state into a file, which can be later restored by +getwin().

+

The function copywin() can be used to +copy a window completely onto another window. It takes the source +and destination windows as parameters and according to the +rectangle specified, it copies the rectangular region from source +to destination window. It's last parameter specifies whether to +overwrite or just overlay the contents on to the destination +window. If this argument is true, then the copying is +non-destructive.

+
+
+
+
+

14. Miscellaneous +features

+

Now you know enough features to write a good curses program, +with all bells and whistles. There are some miscellaneous functions +which are useful in various cases. Let's go headlong into some of +those.

+
+
+

14.1. +curs_set()

+

This function can be used to make the cursor invisible. The +parameter to this function should be

+ + + + +
+
+    0 : invisible      or
+    1 : normal    or
+    2 : very visible.
+
+
+
+
+

14.2. +Temporarily Leaving Curses mode

+

Some times you may want to get back to cooked mode (normal line +buffering mode) temporarily. In such a case you will first need to +save the tty modes with a call to def_prog_mode() and then call endwin() to end the curses mode. This will leave +you in the original tty mode. To get back to curses once you are +done, call reset_prog_mode() . This +function returns the tty to the state stored by def_prog_mode(). Then do refresh(), and you are +back to the curses mode. Here is an example showing the sequence of +things to be done.

+
+

Example 12. Temporarily Leaving Curses Mode

+ + + + +
+
+#include <ncurses.h>
+
+int main()
+{       
+        initscr();                      /* Start curses mode              */
+        printw("Hello World !!!\n");    /* Print Hello World              */
+        refresh();                      /* Print it on to the real screen */
+        def_prog_mode();                /* Save the tty modes             */
+        endwin();                       /* End curses mode temporarily    */
+        system("/bin/sh");              /* Do whatever you like in cooked mode */
+        reset_prog_mode();              /* Return to the previous tty mode*/
+                                        /* stored by def_prog_mode()      */
+        refresh();                      /* Do refresh() to restore the    */
+                                        /* Screen contents                */
+        printw("Another String\n");     /* Back to curses use the full    */
+        refresh();                      /* capabilities of curses         */
+        endwin();                       /* End curses mode                */
+
+        return 0;
+}
+
+
+
+
+
+

14.3. ACS_ +variables

+

If you have ever programmed in DOS, you know about those nifty +characters in extended character set. They are printable only on +some terminals. NCURSES functions like box() use these characters. All these variables +start with ACS meaning alternative character set. You might have +noticed me using these characters in some of the programs above. +Here's an example showing all the characters.

+
+

Example 13. ACS Variables Example

+ + + + +
+
+#include <ncurses.h>
+
+int main()
+{
+        initscr();
+
+        printw("Upper left corner           "); addch(ACS_ULCORNER); printw("\n"); 
+        printw("Lower left corner           "); addch(ACS_LLCORNER); printw("\n");
+        printw("Lower right corner          "); addch(ACS_LRCORNER); printw("\n");
+        printw("Tee pointing right          "); addch(ACS_LTEE); printw("\n");
+        printw("Tee pointing left           "); addch(ACS_RTEE); printw("\n");
+        printw("Tee pointing up             "); addch(ACS_BTEE); printw("\n");
+        printw("Tee pointing down           "); addch(ACS_TTEE); printw("\n");
+        printw("Horizontal line             "); addch(ACS_HLINE); printw("\n");
+        printw("Vertical line               "); addch(ACS_VLINE); printw("\n");
+        printw("Large Plus or cross over    "); addch(ACS_PLUS); printw("\n");
+        printw("Scan Line 1                 "); addch(ACS_S1); printw("\n");
+        printw("Scan Line 3                 "); addch(ACS_S3); printw("\n");
+        printw("Scan Line 7                 "); addch(ACS_S7); printw("\n");
+        printw("Scan Line 9                 "); addch(ACS_S9); printw("\n");
+        printw("Diamond                     "); addch(ACS_DIAMOND); printw("\n");
+        printw("Checker board (stipple)     "); addch(ACS_CKBOARD); printw("\n");
+        printw("Degree Symbol               "); addch(ACS_DEGREE); printw("\n");
+        printw("Plus/Minus Symbol           "); addch(ACS_PLMINUS); printw("\n");
+        printw("Bullet                      "); addch(ACS_BULLET); printw("\n");
+        printw("Arrow Pointing Left         "); addch(ACS_LARROW); printw("\n");
+        printw("Arrow Pointing Right        "); addch(ACS_RARROW); printw("\n");
+        printw("Arrow Pointing Down         "); addch(ACS_DARROW); printw("\n");
+        printw("Arrow Pointing Up           "); addch(ACS_UARROW); printw("\n");
+        printw("Board of squares            "); addch(ACS_BOARD); printw("\n");
+        printw("Lantern Symbol              "); addch(ACS_LANTERN); printw("\n");
+        printw("Solid Square Block          "); addch(ACS_BLOCK); printw("\n");
+        printw("Less/Equal sign             "); addch(ACS_LEQUAL); printw("\n");
+        printw("Greater/Equal sign          "); addch(ACS_GEQUAL); printw("\n");
+        printw("Pi                          "); addch(ACS_PI); printw("\n");
+        printw("Not equal                   "); addch(ACS_NEQUAL); printw("\n");
+        printw("UK pound sign               "); addch(ACS_STERLING); printw("\n");
+
+        refresh();
+        getch();
+        endwin();
+
+        return 0;
+}
+
+
+
+
+
+
+

15. Other +libraries

+

Apart from the curses library, there are few text mode +libraries, which provide more functionality and a lot of features. +The following sections explain three standard libraries which are +usually distributed along with curses.

+
+
+
+

16. Panel +Library

+

Now that you are proficient in curses, you wanted to do some +thing big. You created a lot of overlapping windows to give a +professional windows-type look. Unfortunately, it soon becomes +difficult to manage these. The multiple refreshes, updates plunge +you into a nightmare. The overlapping windows create blotches, +whenever you forget to refresh the windows in the proper order.

+

Don't despair. There's an elegant solution provided in panels +library. In the words of developers of ncurses

+

When your interface design is such that windows may dive +deeper into the visibility stack or pop to the top at runtime, the +resulting book-keeping can be tedious and difficult to get right. +Hence the panels library.

+

If you have lot of overlapping windows, then panels library is +the way to go. It obviates the need of doing series of +wnoutrefresh(), doupdate() and relieves the burden of doing it +correctly(bottom up). The library maintains information about the +order of windows, their overlapping and update the screen properly. +So why wait? Let's take a close peek into panels.

+
+
+

16.1. The +Basics

+

Panel object is a window that is implicitly treated as part of a +deck including all other panel objects. The deck is treated as a +stack with the top panel being completely visible and the other +panels may or may not be obscured according to their positions. So +the basic idea is to create a stack of overlapping panels and use +panels library to display them correctly. There is a function +similar to refresh() which, when called , displays panels in the +correct order. Functions are provided to hide or show panels, move +panels, change its size etc.. The overlapping problem is managed by +the panels library during all the calls to these functions.

+

The general flow of a panel program goes like this:

+
    +
  1. +

    Create the windows (with newwin()) to be attached to the +panels.

    +
  2. +
  3. +

    Create panels with the chosen visibility order. Stack them up +according to the desired visibility. The function new_panel() is +used to created panels.

    +
  4. +
  5. +

    Call update_panels() to write the panels to the virtual screen +in correct visibility order. Do a doupdate() to show it on the +screen.

    +
  6. +
  7. +

    Mainpulate the panels with show_panel(), hide_panel(), +move_panel() etc. Make use of helper functions like panel_hidden() +and panel_window(). Make use of user pointer to store custom data +for a panel. Use the functions set_panel_userptr() and +panel_userptr() to set and get the user pointer for a panel.

    +
  8. +
  9. +

    When you are done with the panel use del_panel() to delete the +panel.

    +
  10. +
+

Let's make the concepts clear, with some programs. The following +is a simple program which creates 3 overlapping panels and shows +them on the screen.

+
+
+
+

16.2. +Compiling With the Panels Library

+

To use panels library functions, you have to include panel.h and +to link the program with panels library the flag -lpanel should be +added along with -lncurses in that order.

+ + + + +
+
+    #include <panel.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lpanel -lncurses
+
+
+

Example 14. Panel basics

+ + + + +
+
+#include <panel.h>
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        int lines = 10, cols = 40, y = 2, x = 4, i;
+
+        initscr();
+        cbreak();
+        noecho();
+
+        /* Create windows for the panels */
+        my_wins[0] = newwin(lines, cols, y, x);
+        my_wins[1] = newwin(lines, cols, y + 1, x + 5);
+        my_wins[2] = newwin(lines, cols, y + 2, x + 10);
+
+        /* 
+         * Create borders around the windows so that you can see the effect
+         * of panels
+         */
+        for(i = 0; i < 3; ++i)
+                box(my_wins[i], 0, 0);
+
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        doupdate();
+        
+        getch();
+        endwin();
+}
+
+
+
+

As you can see, above program follows a simple flow as +explained. The windows are created with newwin() and then they are +attached to panels with new_panel(). As we attach one panel after +another, the stack of panels gets updated. To put them on screen +update_panels() and doupdate() are called.

+
+
+
+

16.3. +Panel Window Browsing

+

A slightly complicated example is given below. This program +creates 3 windows which can be cycled through using tab. Have a +look at the code.

+
+

Example 15. Panel Window Browsing Example

+ + + + +
+
+#include <panel.h>
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+void win_show(WINDOW *win, char *label, int label_color);
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        PANEL  *top;
+        int ch;
+
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize all the colors */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_BLUE, COLOR_BLACK);
+        init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+        init_wins(my_wins, 3);
+        
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        /* Set up the user pointers to the next panel */
+        set_panel_userptr(my_panels[0], my_panels[1]);
+        set_panel_userptr(my_panels[1], my_panels[2]);
+        set_panel_userptr(my_panels[2], my_panels[0]);
+
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        attron(COLOR_PAIR(4));
+        mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+        attroff(COLOR_PAIR(4));
+        doupdate();
+
+        top = my_panels[2];
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case 9:
+                                top = (PANEL *)panel_userptr(top);
+                                top_panel(top);
+                                break;
+                }
+                update_panels();
+                doupdate();
+        }
+        endwin();
+        return 0;
+}
+
+/* Put all the windows */
+void init_wins(WINDOW **wins, int n)
+{       int x, y, i;
+        char label[80];
+
+        y = 2;
+        x = 10;
+        for(i = 0; i < n; ++i)
+        {       wins[i] = newwin(NLINES, NCOLS, y, x);
+                sprintf(label, "Window Number %d", i + 1);
+                win_show(wins[i], label, i + 1);
+                y += 3;
+                x += 7;
+        }
+}
+
+/* Show the window with a border and a label */
+void win_show(WINDOW *win, char *label, int label_color)
+{       int startx, starty, height, width;
+
+        getbegyx(win, starty, startx);
+        getmaxyx(win, height, width);
+
+        box(win, 0, 0);
+        mvwaddch(win, 2, 0, ACS_LTEE); 
+        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
+        mvwaddch(win, 2, width - 1, ACS_RTEE); 
+        
+        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+
+
+
+

16.4. +Using User Pointers

+

In the above example I used user pointers to find out the next +window in the cycle. We can attach custom information to the panel +by specifying a user pointer, which can point to any information +you want to store. In this case I stored the pointer to the next +panel in the cycle. User pointer for a panel can be set with the +function set_panel_userptr(). It can be +accessed using the function panel_userptr() which will return the user pointer +for the panel given as argument. After finding the next panel in +the cycle It's brought to the top by the function top_panel(). This +function brings the panel given as argument to the top of the panel +stack.

+
+
+
+

16.5. Moving and Resizing Panels

+

The function move_panel() can be used +to move a panel to the desired location. It does not change the +position of the panel in the stack. Make sure that you use +move_panel() instead mvwin() on the window associated with the +panel.

+

Resizing a panel is slightly complex. There is no straight +forward function just to resize the window associated with a panel. +A solution to resize a panel is to create a new window with the +desired sizes, change the window associated with the panel using +replace_panel(). Don't forget to delete the old window. The window +associated with a panel can be found by using the function +panel_window().

+

The following program shows these concepts, in supposedly simple +program. You can cycle through the window with <TAB> as +usual. To resize or move the active panel press 'r' for resize 'm' +for moving. Then use arrow keys to resize or move it to the desired +way and press enter to end your resizing or moving. This example +makes use of user data to get the required data to do the +operations.

+
+

Example 16. Panel Moving and Resizing example

+ + + + +
+
+#include <panel.h>
+
+typedef struct _PANEL_DATA {
+        int x, y, w, h;
+        char label[80]; 
+        int label_color;
+        PANEL *next;
+}PANEL_DATA;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+void win_show(WINDOW *win, char *label, int label_color);
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+void set_user_ptrs(PANEL **panels, int n);
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        PANEL_DATA  *top;
+        PANEL *stack_top;
+        WINDOW *temp_win, *old_win;
+        int ch;
+        int newx, newy, neww, newh;
+        int size = FALSE, move = FALSE;
+
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize all the colors */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_BLUE, COLOR_BLACK);
+        init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+        init_wins(my_wins, 3);
+        
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        set_user_ptrs(my_panels, 3);
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        attron(COLOR_PAIR(4));
+        mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+        mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+        attroff(COLOR_PAIR(4));
+        doupdate();
+
+        stack_top = my_panels[2];
+        top = (PANEL_DATA *)panel_userptr(stack_top);
+        newx = top->x;
+        newy = top->y;
+        neww = top->w;
+        newh = top->h;
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case 9:         /* Tab */
+                                top = (PANEL_DATA *)panel_userptr(stack_top);
+                                top_panel(top->next);
+                                stack_top = top->next;
+                                top = (PANEL_DATA *)panel_userptr(stack_top);
+                                newx = top->x;
+                                newy = top->y;
+                                neww = top->w;
+                                newh = top->h;
+                                break;
+                        case 'r':       /* Re-Size*/
+                                size = TRUE;
+                                attron(COLOR_PAIR(4));
+                                mvprintw(LINES - 4, 0, "Entered Resizing :Use Arrow Keys to resize and press <ENTER> to end resizing");
+                                refresh();
+                                attroff(COLOR_PAIR(4));
+                                break;
+                        case 'm':       /* Move */
+                                attron(COLOR_PAIR(4));
+                                mvprintw(LINES - 4, 0, "Entered Moving: Use Arrow Keys to Move and press <ENTER> to end moving");
+                                refresh();
+                                attroff(COLOR_PAIR(4));
+                                move = TRUE;
+                                break;
+                        case KEY_LEFT:
+                                if(size == TRUE)
+                                {       --newx;
+                                        ++neww;
+                                }
+                                if(move == TRUE)
+                                        --newx;
+                                break;
+                        case KEY_RIGHT:
+                                if(size == TRUE)
+                                {       ++newx;
+                                        --neww;
+                                }
+                                if(move == TRUE)
+                                        ++newx;
+                                break;
+                        case KEY_UP:
+                                if(size == TRUE)
+                                {       --newy;
+                                        ++newh;
+                                }
+                                if(move == TRUE)
+                                        --newy;
+                                break;
+                        case KEY_DOWN:
+                                if(size == TRUE)
+                                {       ++newy;
+                                        --newh;
+                                }
+                                if(move == TRUE)
+                                        ++newy;
+                                break;
+                        case 10:        /* Enter */
+                                move(LINES - 4, 0);
+                                clrtoeol();
+                                refresh();
+                                if(size == TRUE)
+                                {       old_win = panel_window(stack_top);
+                                        temp_win = newwin(newh, neww, newy, newx);
+                                        replace_panel(stack_top, temp_win);
+                                        win_show(temp_win, top->label, top->label_color); 
+                                        delwin(old_win);
+                                        size = FALSE;
+                                }
+                                if(move == TRUE)
+                                {       move_panel(stack_top, newy, newx);
+                                        move = FALSE;
+                                }
+                                break;
+                        
+                }
+                attron(COLOR_PAIR(4));
+                mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+                mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+                attroff(COLOR_PAIR(4));
+                refresh();      
+                update_panels();
+                doupdate();
+        }
+        endwin();
+        return 0;
+}
+
+/* Put all the windows */
+void init_wins(WINDOW **wins, int n)
+{       int x, y, i;
+        char label[80];
+
+        y = 2;
+        x = 10;
+        for(i = 0; i < n; ++i)
+        {       wins[i] = newwin(NLINES, NCOLS, y, x);
+                sprintf(label, "Window Number %d", i + 1);
+                win_show(wins[i], label, i + 1);
+                y += 3;
+                x += 7;
+        }
+}
+
+/* Set the PANEL_DATA structures for individual panels */
+void set_user_ptrs(PANEL **panels, int n)
+{       PANEL_DATA *ptrs;
+        WINDOW *win;
+        int x, y, w, h, i;
+        char temp[80];
+        
+        ptrs = (PANEL_DATA *)calloc(n, sizeof(PANEL_DATA));
+
+        for(i = 0;i < n; ++i)
+        {       win = panel_window(panels[i]);
+                getbegyx(win, y, x);
+                getmaxyx(win, h, w);
+                ptrs[i].x = x;
+                ptrs[i].y = y;
+                ptrs[i].w = w;
+                ptrs[i].h = h;
+                sprintf(temp, "Window Number %d", i + 1);
+                strcpy(ptrs[i].label, temp);
+                ptrs[i].label_color = i + 1;
+                if(i + 1 == n)
+                        ptrs[i].next = panels[0];
+                else
+                        ptrs[i].next = panels[i + 1];
+                set_panel_userptr(panels[i], &ptrs[i]);
+        }
+}
+
+/* Show the window with a border and a label */
+void win_show(WINDOW *win, char *label, int label_color)
+{       int startx, starty, height, width;
+
+        getbegyx(win, starty, startx);
+        getmaxyx(win, height, width);
+
+        box(win, 0, 0);
+        mvwaddch(win, 2, 0, ACS_LTEE); 
+        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
+        mvwaddch(win, 2, width - 1, ACS_RTEE); 
+        
+        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+

Concentrate on the main while loop. Once it finds out the type +of key pressed, it takes appropriate action. If 'r' is pressed +resizing mode is started. After this the new sizes are updated as +the user presses the arrow keys. When the user presses +<ENTER> present selection ends and panel is resized by using +the concept explained. While in resizing mode the program doesn't +show how the window is getting resized. It's left as an exercise to +the reader to print a dotted border while it gets resized to a new +position.

+

When the user presses 'm' the move mode starts. This is a bit +simpler than resizing. As the arrow keys are pressed the new +position is updated and pressing of <ENTER> causes the panel +to be moved by calling the function move_panel().

+

In this program the user data which is represented as +PANEL_DATA, plays very important role in finding the associated +information with a panel. As written in the comments, the +PANEL_DATA stores the panel sizes, label, label color and a pointer +to the next panel in the cycle.

+
+
+
+

16.6. +Hiding and Showing Panels

+

A Panel can be hidden by using the function hide_panel(). This +function merely removes it form the stack of panels, thus hiding it +on the screen once you do update_panels() and doupdate(). It +doesn't destroy the PANEL structure associated with the hidden +panel. It can be shown again by using the show_panel() +function.

+

The following program shows the hiding of panels. Press 'a' or +'b' or 'c' to show or hide first, second and third windows +respectively. It uses a user data with a small variable hide, which +keeps track of whether the window is hidden or not. For some reason +the function panel_hidden() which tells +whether a panel is hidden or not is not working. A bug report was +also presented by Michael Andres here

+
+

Example 17. Panel Hiding and Showing example

+ + + + +
+
+#include <panel.h>
+
+typedef struct _PANEL_DATA {
+        int hide;       /* TRUE if panel is hidden */
+}PANEL_DATA;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+void win_show(WINDOW *win, char *label, int label_color);
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        PANEL_DATA panel_datas[3];
+        PANEL_DATA *temp;
+        int ch;
+
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize all the colors */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_BLUE, COLOR_BLACK);
+        init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+        init_wins(my_wins, 3);
+        
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        /* Initialize panel datas saying that nothing is hidden */
+        panel_datas[0].hide = FALSE;
+        panel_datas[1].hide = FALSE;
+        panel_datas[2].hide = FALSE;
+
+        set_panel_userptr(my_panels[0], &panel_datas[0]);
+        set_panel_userptr(my_panels[1], &panel_datas[1]);
+        set_panel_userptr(my_panels[2], &panel_datas[2]);
+
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        attron(COLOR_PAIR(4));
+        mvprintw(LINES - 3, 0, "Show or Hide a window with 'a'(first window)  'b'(Second Window)  'c'(Third Window)");
+        mvprintw(LINES - 2, 0, "F1 to Exit");
+
+        attroff(COLOR_PAIR(4));
+        doupdate();
+        
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case 'a':                       
+                                temp = (PANEL_DATA *)panel_userptr(my_panels[0]);
+                                if(temp->hide == FALSE)
+                                {       hide_panel(my_panels[0]);
+                                        temp->hide = TRUE;
+                                }
+                                else
+                                {       show_panel(my_panels[0]);
+                                        temp->hide = FALSE;
+                                }
+                                break;
+                        case 'b':
+                                temp = (PANEL_DATA *)panel_userptr(my_panels[1]);
+                                if(temp->hide == FALSE)
+                                {       hide_panel(my_panels[1]);
+                                        temp->hide = TRUE;
+                                }
+                                else
+                                {       show_panel(my_panels[1]);
+                                        temp->hide = FALSE;
+                                }
+                                break;
+                        case 'c':
+                                temp = (PANEL_DATA *)panel_userptr(my_panels[2]);
+                                if(temp->hide == FALSE)
+                                {       hide_panel(my_panels[2]);
+                                        temp->hide = TRUE;
+                                }
+                                else
+                                {       show_panel(my_panels[2]);
+                                        temp->hide = FALSE;
+                                }
+                                break;
+                }
+                update_panels();
+                doupdate();
+        }
+        endwin();
+        return 0;
+}
+
+/* Put all the windows */
+void init_wins(WINDOW **wins, int n)
+{       int x, y, i;
+        char label[80];
+
+        y = 2;
+        x = 10;
+        for(i = 0; i < n; ++i)
+        {       wins[i] = newwin(NLINES, NCOLS, y, x);
+                sprintf(label, "Window Number %d", i + 1);
+                win_show(wins[i], label, i + 1);
+                y += 3;
+                x += 7;
+        }
+}
+
+/* Show the window with a border and a label */
+void win_show(WINDOW *win, char *label, int label_color)
+{       int startx, starty, height, width;
+
+        getbegyx(win, starty, startx);
+        getmaxyx(win, height, width);
+
+        box(win, 0, 0);
+        mvwaddch(win, 2, 0, ACS_LTEE); 
+        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
+        mvwaddch(win, 2, width - 1, ACS_RTEE); 
+        
+        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+
+
+
+

16.7. +panel_above() and panel_below() Functions

+

The functions panel_above() and +panel_below() can be used to find out +the panel above and below a panel. If the argument to these +functions is NULL, then they return a pointer to bottom panel and +top panel respectively.

+
+
+
+
+

17. Menus +Library

+

The menus library provides a nice extension to basic curses, +through which you can create menus. It provides a set of functions +to create menus. But they have to be customized to give a nicer +look, with colors etc. Let's get into the details.

+

A menu is a screen display that assists the user to choose some +subset of a given set of items. To put it simple, a menu is a +collection of items from which one or more items can be chosen. +Some readers might not be aware of multiple item selection +capability. Menu library provides functionality to write menus from +which the user can chose more than one item as the preferred +choice. This is dealt with in a later section. Now it is time for +some rudiments.

+
+
+

17.1. The +Basics

+

To create menus, you first create items, and then post the menu +to the display. After that, all the processing of user responses is +done in an elegant function menu_driver() which is the work horse +of any menu program.

+

The general flow of control of a menu program looks like +this.

+
    +
  1. +

    Initialize curses

    +
  2. +
  3. +

    Create items using new_item(). You can specify a name and +description for the items.

    +
  4. +
  5. +

    Create the menu with new_menu() by specifying the items to be +attached with.

    +
  6. +
  7. +

    Post the menu with menu_post() and refresh the screen.

    +
  8. +
  9. +

    Process the user requests with a loop and do necessary updates +to menu with menu_driver.

    +
  10. +
  11. +

    Unpost the menu with menu_unpost()

    +
  12. +
  13. +

    Free the memory allocated to menu by free_menu()

    +
  14. +
  15. +

    Free the memory allocated to the items with free_item()

    +
  16. +
  17. +

    End curses

    +
  18. +
+

Let's see a program which prints a simple menu and updates the +current selection with up, down arrows.

+
+
+
+

17.2. +Compiling With the Menu Library

+

To use menu library functions, you have to include menu.h and to +link the program with menu library the flag -lmenu should be added +along with -lncurses in that order.

+ + + + +
+
+    #include <menu.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lmenu -lncurses
+
+
+

Example 18. Menu Basics

+ + + + +
+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+        my_items[n_choices] = (ITEM *)NULL;
+
+        my_menu = new_menu((ITEM **)my_items);
+        mvprintw(LINES - 2, 0, "F1 to Exit");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {   switch(c)
+            {   case KEY_DOWN:
+                        menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                }
+        }       
+
+        free_item(my_items[0]);
+        free_item(my_items[1]);
+        free_menu(my_menu);
+        endwin();
+}
+        
+
+
+

This program demonstrates the basic concepts involved in +creating a menu using menus library. First we create the items +using new_item() and then attach them to the menu with new_menu() +function. After posting the menu and refreshing the screen, the +main processing loop starts. It reads user input and takes +corresponding action. The function menu_driver() is the main work +horse of the menu system. The second parameter to this function +tells what's to be done with the menu. According to the parameter, +menu_driver() does the corresponding task. The value can be either +a menu navigational request, an ascii character, or a KEY_MOUSE +special key associated with a mouse event.

+

The menu_driver accepts following navigational requests.

+ + + + +
+
+
     REQ_LEFT_ITEM         Move left to an item.
+     REQ_RIGHT_ITEM      Move right to an item.
+     REQ_UP_ITEM         Move up to an item.
+     REQ_DOWN_ITEM       Move down to an item.
+     REQ_SCR_ULINE       Scroll up a line.
+     REQ_SCR_DLINE          Scroll down a line.
+     REQ_SCR_DPAGE          Scroll down a page.
+     REQ_SCR_UPAGE         Scroll up a page.
+     REQ_FIRST_ITEM     Move to the first item.
+     REQ_LAST_ITEM         Move to the last item.
+     REQ_NEXT_ITEM         Move to the next item.
+     REQ_PREV_ITEM         Move to the previous item. 
+     REQ_TOGGLE_ITEM     Select/deselect an item.
+     REQ_CLEAR_PATTERN     Clear the menu pattern buffer.
+     REQ_BACK_PATTERN      Delete the previous character from the pattern buffer.
+     REQ_NEXT_MATCH     Move to the next item matching the pattern match.
+     REQ_PREV_MATCH     Move to the previous item matching the pattern match.
+
+

Don't get overwhelmed by the number of options. We will see them +slowly one after another. The options of interest in this example +are REQ_UP_ITEM and REQ_DOWN_ITEM. These two options when passed to +menu_driver, menu driver updates the current item to one item up or +down respectively.

+
+
+
+

17.3. Menu +Driver: The work horse of the menu system

+

As you have seen in the above example, menu_driver plays an +important role in updating the menu. It is very important to +understand various options it takes and what they do. As explained +above, the second parameter to menu_driver() can be either a +navigational request, a printable character or a KEY_MOUSE key. +Let's dissect the different navigational requests.

+
    +
  • +

    REQ_LEFT_ITEM and REQ_RIGHT_ITEM

    +

    A Menu can be displayed with multiple columns for more than one +item. This can be done by using the menu_format()function. When a multi columnar menu +is displayed these requests cause the menu driver to move the +current selection to left or right.

    +
  • +
  • +

    REQ_UP_ITEM and REQ_DOWN_ITEM

    +

    These two options you have seen in the above example. These +options when given, makes the menu_driver to move the current +selection to an item up or down.

    +
  • +
  • +

    REQ_SCR_* options

    +

    The four options REQ_SCR_ULINE, REQ_SCR_DLINE, REQ_SCR_DPAGE, +REQ_SCR_UPAGE are related to scrolling. If all the items in the +menu cannot be displayed in the menu sub window, then the menu is +scrollable. These requests can be given to the menu_driver to do +the scrolling either one line up, down or one page down or up +respectively.

    +
  • +
  • +

    REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM and +REQ_PREV_ITEM

    +

    These requests are self explanatory.

    +
  • +
  • +

    REQ_TOGGLE_ITEM

    +

    This request when given, toggles the present selection. This +option is to be used only in a multi valued menu. So to use this +request the option O_ONEVALUE must be off. This option can be made +off or on with set_menu_opts().

    +
  • +
  • +

    Pattern Requests

    +

    Every menu has an associated pattern buffer, which is used to +find the nearest match to the ascii characters entered by the user. +Whenever ascii characters are given to menu_driver, it puts in to +the pattern buffer. It also tries to find the nearest match to the +pattern in the items list and moves current selection to that item. +The request REQ_CLEAR_PATTERN clears the pattern buffer. The +request REQ_BACK_PATTERN deletes the previous character in the +pattern buffer. In case the pattern matches more than one item then +the matched items can be cycled through REQ_NEXT_MATCH and +REQ_PREV_MATCH which move the current selection to the next and +previous matches respectively.

    +
  • +
  • +

    Mouse Requests

    +

    In case of KEY_MOUSE requests, according to the mouse position +an action is taken accordingly. The action to be taken is explained +in the man page as,

    + + + + +
    +
    +       If  the  second argument is the KEY_MOUSE special key, the
    +       associated mouse event is translated into one of the above
    +       pre-defined  requests.   Currently only clicks in the user
    +       window (e.g. inside the menu display area or  the  decora­
    +       tion  window)  are handled. If you click above the display
    +       region of the menu, a REQ_SCR_ULINE is generated,  if  you
    +       doubleclick  a  REQ_SCR_UPAGE  is  generated  and  if  you
    +       tripleclick a REQ_FIRST_ITEM is generated.  If  you  click
    +       below  the  display region of the menu, a REQ_SCR_DLINE is
    +       generated, if you doubleclick a REQ_SCR_DPAGE is generated
    +       and  if  you  tripleclick a REQ_LAST_ITEM is generated. If
    +       you click at an item inside the display area of the  menu,
    +       the menu cursor is positioned to that item.
    +
    +
  • +
+

Each of the above requests will be explained in the following +lines with several examples whenever appropriate.

+
+
+
+

17.4. Menu +Windows

+

Every menu created is associated with a window and a sub window. +The menu window displays any title or border associated with the +menu. The menu sub window displays the menu items currently +available for selection. But we didn't specify any window or sub +window in the simple example. When a window is not specified, +stdscr is taken as the main window, and then menu system calculates +the sub window size required for the display of items. Then items +are displayed in the calculated sub window. So let's play with +these windows and display a menu with a border and a title.

+
+

Example 19. Menu Windows Usage example

+ + + + +
+
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                        (char *)NULL,
+                  };
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        WINDOW *my_menu_win;
+        int n_choices, i;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+
+        /* Create items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+
+        /* Crate menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Create the window to be associated with the menu */
+        my_menu_win = newwin(10, 40, 4, 4);
+        keypad(my_menu_win, TRUE);
+     
+        /* Set main window and sub window */
+        set_menu_win(my_menu, my_menu_win);
+        set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
+
+        /* Set menu mark to the string " * " */
+        set_menu_mark(my_menu, " * ");
+
+        /* Print a border around the main window and print a title */
+        box(my_menu_win, 0, 0);
+        print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+        mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+        mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+        mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+        mvprintw(LINES - 2, 0, "F1 to exit");
+        refresh();
+        
+        /* Post the menu */
+        post_menu(my_menu);
+        wrefresh(my_menu_win);
+
+        while((c = wgetch(my_menu_win)) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                }
+                wrefresh(my_menu_win);
+        }       
+
+        /* Unpost and free all the memory taken up */
+        unpost_menu(my_menu);
+        free_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        endwin();
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+

This example creates a menu with a title, border, a fancy line +separating title and the items. As you can see, in order to attach +a window to a menu the function set_menu_win() has to be used. Then +we attach the sub window also. This displays the items in the sub +window. You can also set the mark string which gets displayed to +the left of the selected item with set_menu_mark().

+
+
+
+

17.5. +Scrolling Menus

+

If the sub window given for a window is not big enough to show +all the items, then the menu will be scrollable. When you are on +the last item in the present list, if you send REQ_DOWN_ITEM, it +gets translated into REQ_SCR_DLINE and the menu scrolls by one +item. You can manually give REQ_SCR_ operations to do scrolling. +Let's see how it can be done.

+
+

Example 20. Scrolling Menus example

+ + + + +
+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Choice 8",
+                        "Choice 9",
+                        "Choice 10",
+                        "Exit",
+                        (char *)NULL,
+                  };
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        WINDOW *my_menu_win;
+        int n_choices, i;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_CYAN, COLOR_BLACK);
+
+        /* Create items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+
+        /* Crate menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Create the window to be associated with the menu */
+        my_menu_win = newwin(10, 40, 4, 4);
+        keypad(my_menu_win, TRUE);
+     
+        /* Set main window and sub window */
+        set_menu_win(my_menu, my_menu_win);
+        set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
+        set_menu_format(my_menu, 5, 1);
+                        
+        /* Set menu mark to the string " * " */
+        set_menu_mark(my_menu, " * ");
+
+        /* Print a border around the main window and print a title */
+        box(my_menu_win, 0, 0);
+        print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+        mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+        mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+        mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+        
+        /* Post the menu */
+        post_menu(my_menu);
+        wrefresh(my_menu_win);
+        
+        attron(COLOR_PAIR(2));
+        mvprintw(LINES - 2, 0, "Use PageUp and PageDown to scoll down or up a page of items");
+        mvprintw(LINES - 1, 0, "Arrow Keys to navigate (F1 to Exit)");
+        attroff(COLOR_PAIR(2));
+        refresh();
+
+        while((c = wgetch(my_menu_win)) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case KEY_NPAGE:
+                                menu_driver(my_menu, REQ_SCR_DPAGE);
+                                break;
+                        case KEY_PPAGE:
+                                menu_driver(my_menu, REQ_SCR_UPAGE);
+                                break;
+                }
+                wrefresh(my_menu_win);
+        }       
+
+        /* Unpost and free all the memory taken up */
+        unpost_menu(my_menu);
+        free_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        endwin();
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+

This program is self-explanatory. In this example the number of +choices has been increased to ten, which is larger than our sub +window size which can hold 6 items. This message has to be +explicitly conveyed to the menu system with the function +set_menu_format(). In here we specify the number of rows and +columns we want to be displayed for a single page. We can specify +any number of items to be shown, in the rows variables, if it is +less than the height of the sub window. If the key pressed by the +user is a PAGE UP or PAGE DOWN, the menu is scrolled a page due to +the requests (REQ_SCR_DPAGE and REQ_SCR_UPAGE) given to +menu_driver().

+
+
+
+

17.6. +Multi Columnar Menus

+

In the above example you have seen how to use the function +set_menu_format(). I didn't mention what the cols variable (third +parameter) does. Well, If your sub window is wide enough, you can +opt to display more than one item per row. This can be specified in +the cols variable. To make things simpler, the following example +doesn't show descriptions for the items.

+
+

Example 21. Milt Columnar Menus Example

+ + + + +
+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",
+                        "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
+                        "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
+                        "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
+                        "Exit",
+                        (char *)NULL,
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        WINDOW *my_menu_win;
+        int n_choices, i;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_CYAN, COLOR_BLACK);
+
+        /* Create items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+
+        /* Crate menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Set menu option not to show the description */
+        menu_opts_off(my_menu, O_SHOWDESC);
+
+        /* Create the window to be associated with the menu */
+        my_menu_win = newwin(10, 70, 4, 4);
+        keypad(my_menu_win, TRUE);
+     
+        /* Set main window and sub window */
+        set_menu_win(my_menu, my_menu_win);
+        set_menu_sub(my_menu, derwin(my_menu_win, 6, 68, 3, 1));
+        set_menu_format(my_menu, 5, 3);
+        set_menu_mark(my_menu, " * ");
+
+        /* Print a border around the main window and print a title */
+        box(my_menu_win, 0, 0);
+        
+        attron(COLOR_PAIR(2));
+        mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
+        mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
+        attroff(COLOR_PAIR(2));
+        refresh();
+
+        /* Post the menu */
+        post_menu(my_menu);
+        wrefresh(my_menu_win);
+        
+        while((c = wgetch(my_menu_win)) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case KEY_LEFT:
+                                menu_driver(my_menu, REQ_LEFT_ITEM);
+                                break;
+                        case KEY_RIGHT:
+                                menu_driver(my_menu, REQ_RIGHT_ITEM);
+                                break;
+                        case KEY_NPAGE:
+                                menu_driver(my_menu, REQ_SCR_DPAGE);
+                                break;
+                        case KEY_PPAGE:
+                                menu_driver(my_menu, REQ_SCR_UPAGE);
+                                break;
+                }
+                wrefresh(my_menu_win);
+        }       
+
+        /* Unpost and free all the memory taken up */
+        unpost_menu(my_menu);
+        free_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        endwin();
+}
+
+
+

Watch the function call to set_menu_format(). It specifies the +number of columns to be 3, thus displaying 3 items per row. We have +also switched off the showing descriptions with the function +menu_opts_off(). There are couple of functions set_menu_opts(), +menu_opts_on() and menu_opts() which can be used to manipulate menu +options. The following menu options can be specified.

+ + + + +
+
+       O_ONEVALUE
+            Only one item can be selected for this menu.
+
+       O_SHOWDESC
+            Display  the  item  descriptions  when  the  menu  is
+            posted.
+
+       O_ROWMAJOR
+            Display the menu in row-major order.
+
+       O_IGNORECASE
+            Ignore the case when pattern-matching.
+
+       O_SHOWMATCH
+            Move the cursor to within the item  name  while  pat­
+            tern-matching.
+
+       O_NONCYCLIC
+            Don't   wrap   around  next-item  and  previous-item,
+            requests to the other end of the menu.
+
+

All options are on by default. You can switch specific +attributes on or off with menu_opts_on() and menu_opts_off() +functions. You can also use set_menu_opts() to directly specify the +options. The argument to this function should be a OR ed value of +some of those above constants. The function menu_opts() can be used +to find out a menu's present options.

+
+
+
+

17.7. Multi Valued Menus

+

You might be wondering what if you switch off the option +O_ONEVALUE. Then the menu becomes multi-valued. That means you can +select more than one item. This brings us to the request +REQ_TOGGLE_ITEM. Let's see it in action.

+
+

Example 22. Multi Valued Menus example

+ + + + +
+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Exit",
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        /* Initialize curses */ 
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+        my_items[n_choices] = (ITEM *)NULL;
+
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Make the menu multi valued */
+        menu_opts_off(my_menu, O_ONEVALUE);
+
+        mvprintw(LINES - 3, 0, "Use <SPACE> to select or unselect an item.");
+        mvprintw(LINES - 2, 0, "<ENTER> to see presently selected items(F1 to Exit)");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case ' ':
+                                menu_driver(my_menu, REQ_TOGGLE_ITEM);
+                                break;
+                        case 10:        /* Enter */
+                        {       char temp[200];
+                                ITEM **items;
+
+                                items = menu_items(my_menu);
+                                temp[0] = '\0';
+                                for(i = 0; i < item_count(my_menu); ++i)
+                                        if(item_value(items[i]) == TRUE)
+                                        {       strcat(temp, item_name(items[i]));
+                                                strcat(temp, " ");
+                                        }
+                                move(20, 0);
+                                clrtoeol();
+                                mvprintw(20, 0, temp);
+                                refresh();
+                        }
+                        break;
+                }
+        }       
+
+        free_item(my_items[0]);
+        free_item(my_items[1]);
+        free_menu(my_menu);
+        endwin();
+}
+        
+
+
+

Whew, A lot of new functions. Let's take them one after another. +Firstly, the REQ_TOGGLE_ITEM. In a multi-valued menu, the user +should be allowed to select or un select more than one item. The +request REQ_TOGGLE_ITEM toggles the present selection. In this case +when space is pressed REQ_TOGGLE_ITEM request is sent to +menu_driver to achieve the result.

+

Now when the user presses <ENTER> we show the items he +presently selected. First we find out the items associated with the +menu using the function menu_items(). Then we loop through the +items to find out if the item is selected or not. The function +item_value() returns TRUE if an item is selected. The function +item_count() returns the number of items in the menu. The item name +can be found with item_name(). You can also find the description +associated with an item using item_description().

+
+
+
+

17.8. Menu +Options

+

Well, by this time you must be itching for some difference in +your menu, with lots of functionality. I know. You want Colors !!!. +You want to create nice menus similar to those text mode dos +games. The functions set_menu_fore() and set_menu_back() can be +used to change the attribute of the selected item and unselected +item. The names are misleading. They don't change menu's foreground +or background which would have been useless.

+

The function set_menu_grey() can be used to set the display +attribute for the non-selectable items in the menu. This brings us +to the interesting option for an item the one and only +O_SELECTABLE. We can turn it off by the function item_opts_off() +and after that that item is not selectable. It's like a grayed item +in those fancy windows menus. Let's put these concepts in practice +with this example

+
+

Example 23. Menu Options example

+ + + + +
+
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Exit",
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        /* Initialize curses */ 
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+
+        /* Initialize items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+        my_items[n_choices] = (ITEM *)NULL;
+        item_opts_off(my_items[3], O_SELECTABLE);
+        item_opts_off(my_items[6], O_SELECTABLE);
+
+        /* Create menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Set fore ground and back ground of the menu */
+        set_menu_fore(my_menu, COLOR_PAIR(1) | A_REVERSE);
+        set_menu_back(my_menu, COLOR_PAIR(2));
+        set_menu_grey(my_menu, COLOR_PAIR(3));
+
+        /* Post the menu */
+        mvprintw(LINES - 3, 0, "Press <ENTER> to see the option selected");
+        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case 10: /* Enter */
+                                move(20, 0);
+                                clrtoeol();
+                                mvprintw(20, 0, "Item selected is : %s", 
+                                                item_name(current_item(my_menu)));
+                                pos_menu_cursor(my_menu);
+                                break;
+                }
+        }       
+        unpost_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        free_menu(my_menu);
+        endwin();
+}
+        
+
+
+
+
+
+

17.9. The +useful User Pointer

+

We can associate a user pointer with each item in the menu. It +works the same way as user pointer in panels. It's not touched by +menu system. You can store any thing you like in that. I usually +use it to store the function to be executed when the menu option is +chosen (It's selected and may be the user pressed +<ENTER>);

+
+

Example 24. Menu User Pointer Usage

+ + + + +
+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Exit",
+                  };
+void func(char *name);
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        /* Initialize curses */ 
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+
+        /* Initialize items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+        {       my_items[i] = new_item(choices[i], choices[i]);
+                /* Set the user pointer */
+                set_item_userptr(my_items[i], func);
+        }
+        my_items[n_choices] = (ITEM *)NULL;
+
+        /* Create menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Post the menu */
+        mvprintw(LINES - 3, 0, "Press <ENTER> to see the option selected");
+        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case 10: /* Enter */
+                        {       ITEM *cur;
+                                void (*p)(char *);
+
+                                cur = current_item(my_menu);
+                                p = item_userptr(cur);
+                                p((char *)item_name(cur));
+                                pos_menu_cursor(my_menu);
+                                break;
+                        }
+                        break;
+                }
+        }       
+        unpost_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        free_menu(my_menu);
+        endwin();
+}
+
+void func(char *name)
+{       move(20, 0);
+        clrtoeol();
+        mvprintw(20, 0, "Item selected is : %s", name);
+}       
+
+
+
+
+
+
+

18. Forms +Library

+

Well. If you have seen those forms on web pages which take input +from users and do various kinds of things, you might be wondering +how would any one create such forms in text mode display. It's +quite difficult to write those nifty forms in plain ncurses. Forms +library tries to provide a basic frame work to build and maintain +forms with ease. It has lot of features(functions) which manage +validation, dynamic expansion of fields etc.. Let's see it in full +flow.

+

A form is a collection of fields; each field can be either a +label(static text) or a data-entry location. The forms also library +provides functions to divide forms into multiple pages.

+
+
+

18.1. The +Basics

+

Forms are created in much the same way as menus. First the +fields related to the form are created with new_field(). You can +set options for the fields, so that they can be displayed with some +fancy attributes, validated before the field looses focus etc.. +Then the fields are attached to form. After this, the form can be +posted to display and is ready to receive inputs. On the similar +lines to menu_driver(), the form is manipulated with form_driver(). +We can send requests to form_driver to move focus to a certain +field, move cursor to end of the field etc.. After the user enters +values in the fields and validation done, form can be unposted and +memory allocated can be freed.

+

The general flow of control of a forms program looks like +this.

+
    +
  1. +

    Initialize curses

    +
  2. +
  3. +

    Create fields using new_field(). You can specify the height and +width of the field, and its position on the form.

    +
  4. +
  5. +

    Create the forms with new_form() by specifying the fields to be +attached with.

    +
  6. +
  7. +

    Post the form with form_post() and refresh the screen.

    +
  8. +
  9. +

    Process the user requests with a loop and do necessary updates +to form with form_driver.

    +
  10. +
  11. +

    Unpost the menu with form_unpost()

    +
  12. +
  13. +

    Free the memory allocated to menu by free_form()

    +
  14. +
  15. +

    Free the memory allocated to the items with free_field()

    +
  16. +
  17. +

    End curses

    +
  18. +
+

As you can see, working with forms library is much similar to +handling menu library. The following examples will explore various +aspects of form processing. Let's start the journey with a simple +example. first.

+
+
+
+

18.2. +Compiling With the Forms Library

+

To use forms library functions, you have to include form.h and +to link the program with forms library the flag -lform should be +added along with -lncurses in that order.

+ + + + +
+
+    #include <form.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lform -lncurses
+
+
+

Example 25. Forms Basics

+ + + + +
+
+#include <form.h>
+
+int main()
+{       FIELD *field[3];
+        FORM  *my_form;
+        int ch;
+        
+        /* Initialize curses */
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize the fields */
+        field[0] = new_field(1, 10, 4, 18, 0, 0);
+        field[1] = new_field(1, 10, 6, 18, 0, 0);
+        field[2] = NULL;
+
+        /* Set field options */
+        set_field_back(field[0], A_UNDERLINE);  /* Print a line for the option  */
+        field_opts_off(field[0], O_AUTOSKIP);   /* Don't go to next field when this */
+                                                /* Field is filled up           */
+        set_field_back(field[1], A_UNDERLINE); 
+        field_opts_off(field[1], O_AUTOSKIP);
+
+        /* Create the form and post it */
+        my_form = new_form(field);
+        post_form(my_form);
+        refresh();
+        
+        mvprintw(4, 10, "Value 1:");
+        mvprintw(6, 10, "Value 2:");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+
+

Above example is pretty straight forward. It creates two fields +with new_field(). new_field() takes +height, width, starty, startx, number of offscreen rows and number +of additional working buffers. The fifth argument number of +offscreen rows specifies how much of the field to be shown. If it +is zero, the entire field is always displayed otherwise the form +will be scrollable when the user accesses not displayed parts of +the field. The forms library allocates one buffer per field to +store the data user enters. Using the last parameter to new_field() +we can specify it to allocate some additional buffers. These can be +used for any purpose you like.

+

After creating the fields, back ground attribute of both of them +is set to an underscore with set_field_back(). The AUTOSKIP option +is turned off using field_opts_off(). If this option is turned on, +focus will move to the next field in the form once the active field +is filled up completely.

+

After attaching the fields to the form, it is posted. Here on, +user inputs are processed in the while loop, by making +corresponding requests to form_driver. The details of all the +requests to the form_driver() are explained later.

+
+
+
+

18.3. +Playing with Fields

+

Each form field is associated with a lot of attributes. They can +be manipulated to get the required effect and to have fun !!!. So +why wait?

+
+
+

18.3.1. +Fetching Size and Location of Field

+

The parameters we have given at the time of creation of a field +can be retrieved with field_info(). It returns height, width, +starty, startx, number of offscreen rows, and number of additional +buffers into the parameters given to it. It is a sort of inverse of +new_field().

+ + + + +
+
+int field_info(     FIELD *field,              /* field from which to fetch */
+                    int *height, *int width,   /* field size */ 
+                    int *top, int *left,       /* upper left corner */
+                    int *offscreen,            /* number of offscreen rows */
+                    int *nbuf);                /* number of working buffers */
+
+
+
+
+

18.3.2. Moving +the field

+

The location of the field can be moved to a different position +with move_field().

+ + + + +
+
+int move_field(    FIELD *field,              /* field to alter */
+                   int top, int left);        /* new upper-left corner */
+
+

As usual, the changed position can be queried with +field_infor().

+
+
+
+

18.3.3. +Field Justification

+

The justification to be done for the field can be fixed using +the function set_field_just().

+ + + + +
+
+    int set_field_just(FIELD *field,          /* field to alter */
+               int justmode);         /* mode to set */
+    int field_just(FIELD *field);          /* fetch justify mode of field */
+
+

The justification mode valued accepted and returned by these +functions are NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or +JUSTIFY_CENTER.

+
+
+
+

18.3.4. Field Display Attributes

+

As you have seen, in the above example, display attribute for +the fields can be set with set_field_fore() and setfield_back(). +These functions set foreground and background attribute of the +fields. You can also specify a pad character which will be filled +in the unfilled portion of the field. The pad character is set with +a call to set_field_pad(). Default pad value is a space. The +functions field_fore(), field_back, field_pad() can be used to +query the present foreground, background attributes and pad +character for the field. The following list gives the usage of +functions.

+ + + + +
+
+
int set_field_fore(FIELD *field,        /* field to alter */
+                   chtype attr);        /* attribute to set */ 
+
+chtype field_fore(FIELD *field);        /* field to query */
+                                        /* returns foreground attribute */
+
+int set_field_back(FIELD *field,        /* field to alter */
+                   chtype attr);        /* attribute to set */ 
+
+chtype field_back(FIELD *field);        /* field to query */
+                                        /* returns background attribute */
+
+int set_field_pad(FIELD *field,         /* field to alter */
+                  int pad);             /* pad character to set */ 
+
+chtype field_pad(FIELD *field);         /* field to query */  
+                                        /* returns present pad character */
+
+

Though above functions seem quite simple, using colors with +set_field_fore() may be frustrating in the beginning. Let me first +explain about foreground and background attributes of a field. The +foreground attribute is associated with the character. That means a +character in the field is printed with the attribute you have set +with set_field_fore(). Background attribute is the attribute used +to fill background of field, whether any character is there or not. +So what about colors? Since colors are always defined in pairs, +what is the right way to display colored fields? Here's an example +clarifying color attributes.

+
+

Example 26. Form Attributes example

+ + + + +
+
+#include <form.h>
+
+int main()
+{       FIELD *field[3];
+        FORM  *my_form;
+        int ch;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize few color pairs */
+        init_pair(1, COLOR_WHITE, COLOR_BLUE);
+        init_pair(2, COLOR_WHITE, COLOR_BLUE);
+
+        /* Initialize the fields */
+        field[0] = new_field(1, 10, 4, 18, 0, 0);
+        field[1] = new_field(1, 10, 6, 18, 0, 0);
+        field[2] = NULL;
+
+        /* Set field options */
+        set_field_fore(field[0], COLOR_PAIR(1));/* Put the field with blue background */
+        set_field_back(field[0], COLOR_PAIR(2));/* and white foreground (characters */
+                                                /* are printed in white         */
+        field_opts_off(field[0], O_AUTOSKIP);   /* Don't go to next field when this */
+                                                /* Field is filled up           */
+        set_field_back(field[1], A_UNDERLINE); 
+        field_opts_off(field[1], O_AUTOSKIP);
+
+        /* Create the form and post it */
+        my_form = new_form(field);
+        post_form(my_form);
+        refresh();
+        
+        set_current_field(my_form, field[0]); /* Set focus to the colored field */
+        mvprintw(4, 10, "Value 1:");
+        mvprintw(6, 10, "Value 2:");
+        mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+
+

Play with the color pairs and try to understand the foreground +and background attributes. In my programs using color attributes, I +usually set only the background with set_field_back(). Curses +simply doesn't allow defining individual color attributes.

+
+
+
+

18.3.5. Field Option Bits

+

There is also a large collection of field option bits you can +set to control various aspects of forms processing. You can +manipulate them with these functions:

+ + + + +
+
+int set_field_opts(FIELD *field,          /* field to alter */
+                   int attr);             /* attribute to set */ 
+
+int field_opts_on(FIELD *field,           /* field to alter */
+                  int attr);              /* attributes to turn on */ 
+
+int field_opts_off(FIELD *field,          /* field to alter */
+                  int attr);              /* attributes to turn off */ 
+
+int field_opts(FIELD *field);             /* field to query */ 
+
+

The function set_field_opts() can be used to directly set +attributes of a field or you can choose to switch a few attributes +on and off with field_opts_on() and field_opts_off() selectively. +Anytime you can query the attributes of a field with field_opts(). +The following is the list of available options. By default, all +options are on.

+
+
+
O_VISIBLE
+
+

Controls whether the field is visible on the screen. Can be used +during form processing to hide or pop up fields depending on the +value of parent fields.

+
+
O_ACTIVE
+
+

Controls whether the field is active during forms processing +(i.e. visited by form navigation keys). Can be used to make labels +or derived fields with buffer values alterable by the forms +application, not the user.

+
+
O_PUBLIC
+
+

Controls whether data is displayed during field entry. If this +option is turned off on a field, the library will accept and edit +data in that field, but it will not be displayed and the visible +field cursor will not move. You can turn off the O_PUBLIC bit to +define password fields.

+
+
O_EDIT
+
+

Controls whether the field's data can be modified. When this +option is off, all editing requests except REQ_PREV_CHOICE and REQ_NEXT_CHOICEwill fail. Such read-only fields may +be useful for help messages.

+
+
O_WRAP
+
+

Controls word-wrapping in multi-line fields. Normally, when any +character of a (blank-separated) word reaches the end of the +current line, the entire word is wrapped to the next line (assuming +there is one). When this option is off, the word will be split +across the line break.

+
+
O_BLANK
+
+

Controls field blanking. When this option is on, entering a +character at the first field position erases the entire field +(except for the just-entered character).

+
+
O_AUTOSKIP
+
+

Controls automatic skip to next field when this one fills. +Normally, when the forms user tries to type more data into a field +than will fit, the editing location jumps to next field. When this +option is off, the user's cursor will hang at the end of the field. +This option is ignored in dynamic fields that have not reached +their size limit.

+
+
O_NULLOK
+
+

Controls whether validation is applied to blank fields. +Normally, it is not; the user can leave a field blank without +invoking the usual validation check on exit. If this option is off +on a field, exit from it will invoke a validation check.

+
+
O_PASSOK
+
+

Controls whether validation occurs on every exit, or only after +the field is modified. Normally the latter is true. Setting +O_PASSOK may be useful if your field's validation function may +change during forms processing.

+
+
O_STATIC
+
+

Controls whether the field is fixed to its initial dimensions. +If you turn this off, the field becomes dynamic and will stretch to +fit entered data.

+
+
+
+

A field's options cannot be changed while the field is currently +selected. However, options may be changed on posted fields that are +not current.

+

The option values are bit-masks and can be composed with +logical-or in the obvious way. You have seen the usage of switching +off O_AUTOSKIP option. The following example clarifies usage of +some more options. Other options are explained where +appropriate.

+
+

Example 27. Field Options Usage example

+ + + + +
+
+#include <form.h>
+
+#define STARTX 15
+#define STARTY 4
+#define WIDTH 25
+
+#define N_FIELDS 3
+
+int main()
+{       FIELD *field[N_FIELDS];
+        FORM  *my_form;
+        int ch, i;
+        
+        /* Initialize curses */
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize the fields */
+        for(i = 0; i < N_FIELDS - 1; ++i)
+                field[i] = new_field(1, WIDTH, STARTY + i * 2, STARTX, 0, 0);
+        field[N_FIELDS - 1] = NULL;
+
+        /* Set field options */
+        set_field_back(field[1], A_UNDERLINE);  /* Print a line for the option  */
+        
+        field_opts_off(field[0], O_ACTIVE); /* This field is a static label */
+        field_opts_off(field[1], O_PUBLIC); /* This filed is like a password field*/
+        field_opts_off(field[1], O_AUTOSKIP); /* To avoid entering the same field */
+                                              /* after last character is entered */
+        
+        /* Create the form and post it */
+        my_form = new_form(field);
+        post_form(my_form);
+        refresh();
+        
+        set_field_just(field[0], JUSTIFY_CENTER); /* Center Justification */
+        set_field_buffer(field[0], 0, "This is a static Field"); 
+                                                  /* Initialize the field  */
+        mvprintw(STARTY, STARTX - 10, "Field 1:");
+        mvprintw(STARTY + 2, STARTX - 10, "Field 2:");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+
+

This example, though useless, shows the usage of options. If +used properly, they can present information very effectively in a +form. The second field being not O_PUBLIC, does not show the +characters you are typing.

+
+
+
+

18.3.6. +Field Status

+

The field status specifies whether the field has got edited or +not. It is initially set to FALSE and when user enters something +and the data buffer gets modified it becomes TRUE. So a field's +status can be queried to find out whether it has been modified or +not. The following functions can assist in those operations.

+ + + + +
+
+int set_field_status(FIELD *field,      /* field to alter */
+                   int status);         /* status to set */
+
+int field_status(FIELD *field);         /* fetch status of field */
+
+

It's better to check the field's status only after after leaving +the field, as data buffer might not have been updated yet as the +validation is still due. To guarantee that right status is +returned, call field_status() either (1) in the field's exit +validation check routine, (2) from the field's or form's +initialization or termination hooks, or (3) just after a +REQ_VALIDATION request has been processed by the forms driver

+
+
+
+

18.3.7. +Field User Pointer

+

Every field structure contains one pointer that can be used by +the user for various purposes. It is not touched by forms library +and can be used for any purpose by the user. The following +functions set and fetch user pointer.

+ + + + +
+
+int set_field_userptr(FIELD *field,   
+           char *userptr);      /* the user pointer you wish to associate */
+                                /* with the field    */
+
+char *field_userptr(FIELD *field);      /* fetch user pointer of the field */
+
+
+
+
+

18.3.8. Variable-Sized Fields

+

If you want a dynamically changing field with variable width, +this is the feature you want to put to full use. This will allow +the user to enter more data than the original size of the field and +let the field grow. According to the field orientation it will +scroll horizontally or vertically to incorporate the new data.

+

To make a field dynamically growable, the option O_STATIC should +be turned off. This can be done with a

+ + + + +
+
+    field_opts_off(field_pointer, O_STATIC);
+
+

But it's usually not advisable to allow a field to grow +infinitely. You can set a maximum limit to the growth of the field +with

+ + + + +
+
+int set_max_field(FIELD *field,    /* Field on which to operate */
+                  int max_growth); /* maximum growth allowed for the field */
+
+

The field info for a dynamically growable field can be retrieved +by

+ + + + +
+
+int dynamic_field_info( FIELD *field,     /* Field on which to operate */
+            int   *prows,     /* number of rows will be filled in this */
+            int   *pcols,     /* number of columns will be filled in this*/
+            int   *pmax)      /* maximum allowable growth will be filled */
+                              /* in this */
+
+Though field_info work as usual, it is advisable to use this +function to get the proper attributes of a dynamically growable +field. +

Recall the library routine new_field; a new field created with +height set to one will be defined to be a one line field. A new +field created with height greater than one will be defined to be a +multi line field.

+

A one line field with O_STATIC turned off (dynamically growable +field) will contain a single fixed row, but the number of columns +can increase if the user enters more data than the initial field +will hold. The number of columns displayed will remain fixed and +the additional data will scroll horizontally.

+

A multi line field with O_STATIC turned off (dynamically +growable field) will contain a fixed number of columns, but the +number of rows can increase if the user enters more data than the +initial field will hold. The number of rows displayed will remain +fixed and the additional data will scroll vertically.

+

The above two paragraphs pretty much describe a dynamically +growable field's behavior. The way other parts of forms library +behaves is described below:

+
    +
  1. +

    The field option O_AUTOSKIP will be ignored if the option +O_STATIC is off and there is no maximum growth specified for the +field. Currently, O_AUTOSKIP generates an automatic REQ_NEXT_FIELD +form driver request when the user types in the last character +position of a field. On a growable field with no maximum growth +specified, there is no last character position. If a maximum growth +is specified, the O_AUTOSKIP option will work as normal if the +field has grown to its maximum size.

    +
  2. +
  3. +

    The field justification will be ignored if the option O_STATIC +is off. Currently, set_field_just can be used to JUSTIFY_LEFT, +JUSTIFY_RIGHT, JUSTIFY_CENTER the contents of a one line field. A +growable one line field will, by definition, grow and scroll +horizontally and may contain more data than can be justified. The +return from field_just will be unchanged.

    +
  4. +
  5. +

    The overloaded form driver request REQ_NEW_LINE will operate the +same way regardless of the O_NL_OVERLOAD form option if the field +option O_STATIC is off and there is no maximum growth specified for +the field. Currently, if the form option O_NL_OVERLOAD is on, +REQ_NEW_LINE implicitly generates a REQ_NEXT_FIELD if called from +the last line of a field. If a field can grow without bound, there +is no last line, so REQ_NEW_LINE will never implicitly generate a +REQ_NEXT_FIELD. If a maximum growth limit is specified and the +O_NL_OVERLOAD form option is on, REQ_NEW_LINE will only implicitly +generate REQ_NEXT_FIELD if the field has grown to its maximum size +and the user is on the last line.

    +
  6. +
  7. +

    The library call dup_field will work as usual; it will duplicate +the field, including the current buffer size and contents of the +field being duplicated. Any specified maximum growth will also be +duplicated.

    +
  8. +
  9. +

    The library call link_field will work as usual; it will +duplicate all field attributes and share buffers with the field +being linked. If the O_STATIC field option is subsequently changed +by a field sharing buffers, how the system reacts to an attempt to +enter more data into the field than the buffer will currently hold +will depend on the setting of the option in the current field.

    +
  10. +
  11. +

    The library call field_info will work as usual; the variable +nrow will contain the value of the original call to new_field. The +user should use dynamic_field_info, described above, to query the +current size of the buffer.

    +
  12. +
+

Some of the above points make sense only after explaining form +driver. We will be looking into that in next few sections.

+
+
+
+
+

18.4. Form +Windows

+

The form windows concept is pretty much similar to menu windows. +Every form is associated with a main window and a sub window. The +form main window displays any title or border associated or +whatever the user wishes. Then the sub window contains all the +fields and displays them according to their position. This gives +the flexibility of manipulating fancy form displaying very +easily.

+

Since this is pretty much similar to menu windows, I am +providing an example with out much explanation. The functions are +similar and they work the same way.

+
+

Example 28. Form Windows Example

+ + + + +
+
+#include <form.h>
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{
+        FIELD *field[3];
+        FORM  *my_form;
+        WINDOW *my_form_win;
+        int ch, rows, cols;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize few color pairs */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+
+        /* Initialize the fields */
+        field[0] = new_field(1, 10, 6, 1, 0, 0);
+        field[1] = new_field(1, 10, 8, 1, 0, 0);
+        field[2] = NULL;
+
+        /* Set field options */
+        set_field_back(field[0], A_UNDERLINE);
+        field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+                                              /* Field is filled up             */
+        set_field_back(field[1], A_UNDERLINE); 
+        field_opts_off(field[1], O_AUTOSKIP);
+        
+        /* Create the form and post it */
+        my_form = new_form(field);
+        
+        /* Calculate the area required for the form */
+        scale_form(my_form, &rows, &cols);
+
+        /* Create the window to be associated with the form */
+        my_form_win = newwin(rows + 4, cols + 4, 4, 4);
+        keypad(my_form_win, TRUE);
+
+        /* Set main window and sub window */
+        set_form_win(my_form, my_form_win);
+        set_form_sub(my_form, derwin(my_form_win, rows, cols, 2, 2));
+
+        /* Print a border around the main window and print a title */
+        box(my_form_win, 0, 0);
+        print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
+        
+        post_form(my_form);
+        wrefresh(my_form_win);
+
+        mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = wgetch(my_form_win)) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+
+
+
+

18.5. +Field Validation

+

By default, a field will accept any data input by the user. It +is possible to attach validation to the field. Then any attempt by +the user to leave the field, while it contains data that doesn't +match the validation type will fail. Some validation types also +have a character-validity check for each time a character is +entered in the field.

+

Validation can be attached to a field with the following +function.

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   FIELDTYPE *ftype,      /* type to associate */
+                   ...);                  /* additional arguments*/
+
+Once set, the validation type for a field can be queried with + + + + +
+
+FIELDTYPE *field_type(FIELD *field);      /* field to query */
+
+

The form driver validates the data in a field only when data is +entered by the end-user. Validation does not occur when

+
    +
  • +

    the application program changes the field value by calling +set_field_buffer.

    +
  • +
  • +

    linked field values are changed indirectly -- by changing the +field to which they are linked

    +
  • +
+

The following are the pre-defined validation types. You can also +specify custom validation, though it's a bit tricky and +cumbersome.

+

TYPE_ALPHA

+

This field type accepts alphabetic data; no blanks, no digits, +no special characters (this is checked at character-entry time). It +is set up with:

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ALPHA,            /* type to associate */
+                   int width);            /* maximum width of field */
+
+

The width argument sets a minimum width of data. The user has to +enter at-least width number of characters before he can leave the +field. Typically you'll want to set this to the field width; if +it's greater than the field width, the validation check will always +fail. A minimum width of zero makes field completion optional.

+

TYPE_ALNUM

+

This field type accepts alphabetic data and digits; no blanks, +no special characters (this is checked at character-entry time). It +is set up with:

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ALNUM,            /* type to associate */
+                   int width);            /* maximum width of field */
+
+

The width argument sets a minimum width of data. As with +TYPE_ALPHA, typically you'll want to set this to the field width; +if it's greater than the field width, the validation check will +always fail. A minimum width of zero makes field completion +optional.

+

TYPE_ENUM

+

This type allows you to restrict a field's values to be among a +specified set of string values (for example, the two-letter postal +codes for U.S. states). It is set up with:

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ENUM,             /* type to associate */
+                   char **valuelist;      /* list of possible values */
+                   int checkcase;         /* case-sensitive? */
+                   int checkunique);      /* must specify uniquely? */
+
+

The valuelist parameter must point at a NULL-terminated list of +valid strings. The checkcase argument, if true, makes comparison +with the string case-sensitive.

+

When the user exits a TYPE_ENUM field, the validation procedure +tries to complete the data in the buffer to a valid entry. If a +complete choice string has been entered, it is of course valid. But +it is also possible to enter a prefix of a valid string and have it +completed for you.

+

By default, if you enter such a prefix and it matches more than +one value in the string list, the prefix will be completed to the +first matching value. But the checkunique argument, if true, +requires prefix matches to be unique in order to be valid.

+

The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be +particularly useful with these fields.

+

TYPE_INTEGER

+

This field type accepts an integer. It is set up as follows:

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_INTEGER,          /* type to associate */
+                   int padding,           /* # places to zero-pad to */
+                   int vmin, int vmax);   /* valid range */
+
+

Valid characters consist of an optional leading minus and +digits. The range check is performed on exit. If the range maximum +is less than or equal to the minimum, the range is ignored.

+

If the value passes its range check, it is padded with as many +leading zero digits as necessary to meet the padding argument.

+

A TYPE_INTEGER value buffer can conveniently be interpreted with +the C library function atoi(3).

+

TYPE_NUMERIC

+

This field type accepts a decimal number. It is set up as +follows:

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_NUMERIC,          /* type to associate */
+                   int padding,           /* # places of precision */
+                   int vmin, int vmax);   /* valid range */
+
+

Valid characters consist of an optional leading minus and +digits. possibly including a decimal point. The range check is +performed on exit. If the range maximum is less than or equal to +the minimum, the range is ignored.

+

If the value passes its range check, it is padded with as many +trailing zero digits as necessary to meet the padding argument.

+

A TYPE_NUMERIC value buffer can conveniently be interpreted with +the C library function atof(3).

+

TYPE_REGEXP

+

This field type accepts data matching a regular expression. It +is set up as follows:

+ + + + +
+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_REGEXP,           /* type to associate */
+                   char *regexp);         /* expression to match */
+
+

The syntax for regular expressions is that of regcomp(3). The +check for regular-expression match is performed on exit.

+
+
+
+

18.6. Form +Driver: The work horse of the forms system

+

As in the menu system, form_driver() plays a very important role +in forms system. All types of requests to forms system should be +funneled through form_driver().

+ + + + +
+
+int form_driver(FORM *form,     /* form on which to operate     */
+                int request)    /* form request code         */
+
+

As you have seen some of the examples above, you have to be in a +loop looking for user input and then decide whether it's a field +data or a form request. The form requests are then passed to +form_driver() to do the work.

+

The requests roughly can be divided into following categories. +Different requests and their usage is explained below:

+
+
+

18.6.1. Page +Navigation Requests

+

These requests cause page-level moves through the form, +triggering display of a new form screen. A form can be made of +multiple pages. If you have a big form with lot of fields and +logical sections, then you can divide the form into pages. The +function set_new_page() to set a new page at the field +specified.

+ + + + +
+
+int set_new_page(FIELD *field,/* Field at which page break to be set or unset */
+         bool new_page_flag); /* should be TRUE to put a break */
+
+

The following requests allow you to move to different pages

+
    +
  • +

    REQ_NEXT_PAGE Move to the next form page.

    +
  • +
  • +

    REQ_PREV_PAGE Move to the previous form page.

    +
  • +
  • +

    REQ_FIRST_PAGE Move to the first form page.

    +
  • +
  • +

    REQ_LAST_PAGE Move to the last form page.

    +
  • +
+

These requests treat the list as cyclic; that is, REQ_NEXT_PAGE +from the last page goes to the first, and REQ_PREV_PAGE from the +first page goes to the last.

+
+
+
+

18.6.2. Inter-Field Navigation Requests

+

These requests handle navigation between fields on the same +page.

+
    +
  • +

    REQ_NEXT_FIELD Move to next field.

    +
  • +
  • +

    REQ_PREV_FIELD Move to previous field.

    +
  • +
  • +

    REQ_FIRST_FIELD Move to the first field.

    +
  • +
  • +

    REQ_LAST_FIELD Move to the last field.

    +
  • +
  • +

    REQ_SNEXT_FIELD Move to sorted next field.

    +
  • +
  • +

    REQ_SPREV_FIELD Move to sorted previous field.

    +
  • +
  • +

    REQ_SFIRST_FIELD Move to the sorted first field.

    +
  • +
  • +

    REQ_SLAST_FIELD Move to the sorted last field.

    +
  • +
  • +

    REQ_LEFT_FIELD Move left to field.

    +
  • +
  • +

    REQ_RIGHT_FIELD Move right to field.

    +
  • +
  • +

    REQ_UP_FIELD Move up to field.

    +
  • +
  • +

    REQ_DOWN_FIELD Move down to field.

    +
  • +
+

These requests treat the list of fields on a page as cyclic; +that is, REQ_NEXT_FIELD from the last field goes to the first, and +REQ_PREV_FIELD from the first field goes to the last. The order of +the fields for these (and the REQ_FIRST_FIELD and REQ_LAST_FIELD +requests) is simply the order of the field pointers in the form +array (as set up by new_form() or set_form_fields()

+

It is also possible to traverse the fields as if they had been +sorted in screen-position order, so the sequence goes left-to-right +and top-to-bottom. To do this, use the second group of four +sorted-movement requests.

+

Finally, it is possible to move between fields using visual +directions up, down, right, and left. To accomplish this, use the +third group of four requests. Note, however, that the position of a +form for purposes of these requests is its upper-left corner.

+

For example, suppose you have a multi-line field B, and two +single-line fields A and C on the same line with B, with A to the +left of B and C to the right of B. A REQ_MOVE_RIGHT from A will go +to B only if A, B, and C all share the same first line; otherwise +it will skip over B to C.

+
+
+
+

18.6.3. Intra-Field Navigation Requests

+

These requests drive movement of the edit cursor within the +currently selected field.

+
    +
  • +

    REQ_NEXT_CHAR Move to next character.

    +
  • +
  • +

    REQ_PREV_CHAR Move to previous character.

    +
  • +
  • +

    REQ_NEXT_LINE Move to next line.

    +
  • +
  • +

    REQ_PREV_LINE Move to previous line.

    +
  • +
  • +

    REQ_NEXT_WORD Move to next word.

    +
  • +
  • +

    REQ_PREV_WORD Move to previous word.

    +
  • +
  • +

    REQ_BEG_FIELD Move to beginning of field.

    +
  • +
  • +

    REQ_END_FIELD Move to end of field.

    +
  • +
  • +

    REQ_BEG_LINE Move to beginning of line.

    +
  • +
  • +

    REQ_END_LINE Move to end of line.

    +
  • +
  • +

    REQ_LEFT_CHAR Move left in field.

    +
  • +
  • +

    REQ_RIGHT_CHAR Move right in field.

    +
  • +
  • +

    REQ_UP_CHAR Move up in field.

    +
  • +
  • +

    REQ_DOWN_CHAR Move down in field.

    +
  • +
+

Each word is separated from the previous and next characters by +whitespace. The commands to move to beginning and end of line or +field look for the first or last non-pad character in their +ranges.

+
+
+
+

18.6.4. +Scrolling Requests

+

Fields that are dynamic and have grown and fields explicitly +created with offscreen rows are scrollable. One-line fields scroll +horizontally; multi-line fields scroll vertically. Most scrolling +is triggered by editing and intra-field movement (the library +scrolls the field to keep the cursor visible). It is possible to +explicitly request scrolling with the following requests:

+
    +
  • +

    REQ_SCR_FLINE Scroll vertically forward a line.

    +
  • +
  • +

    REQ_SCR_BLINE Scroll vertically backward a line.

    +
  • +
  • +

    REQ_SCR_FPAGE Scroll vertically forward a page.

    +
  • +
  • +

    REQ_SCR_BPAGE Scroll vertically backward a page.

    +
  • +
  • +

    REQ_SCR_FHPAGE Scroll vertically forward half a +page.

    +
  • +
  • +

    REQ_SCR_BHPAGE Scroll vertically backward half a +page.

    +
  • +
  • +

    REQ_SCR_FCHAR Scroll horizontally forward a +character.

    +
  • +
  • +

    REQ_SCR_BCHAR Scroll horizontally backward a +character.

    +
  • +
  • +

    REQ_SCR_HFLINE Scroll horizontally one field width +forward.

    +
  • +
  • +

    REQ_SCR_HBLINE Scroll horizontally one field width +backward.

    +
  • +
  • +

    REQ_SCR_HFHALF Scroll horizontally one half field width +forward.

    +
  • +
  • +

    REQ_SCR_HBHALF Scroll horizontally one half field width +backward.

    +
  • +
+

For scrolling purposes, a page of a field is the height of its +visible part.

+
+
+
+

18.6.5. Editing +Requests

+

When you pass the forms driver an ASCII character, it is treated +as a request to add the character to the field's data buffer. +Whether this is an insertion or a replacement depends on the +field's edit mode (insertion is the default.

+

The following requests support editing the field and changing +the edit mode:

+
    +
  • +

    REQ_INS_MODE Set insertion mode.

    +
  • +
  • +

    REQ_OVL_MODE Set overlay mode.

    +
  • +
  • +

    REQ_NEW_LINE New line request (see below for +explanation).

    +
  • +
  • +

    REQ_INS_CHAR Insert space at character location.

    +
  • +
  • +

    REQ_INS_LINE Insert blank line at character +location.

    +
  • +
  • +

    REQ_DEL_CHAR Delete character at cursor.

    +
  • +
  • +

    REQ_DEL_PREV Delete previous word at cursor.

    +
  • +
  • +

    REQ_DEL_LINE Delete line at cursor.

    +
  • +
  • +

    REQ_DEL_WORD Delete word at cursor.

    +
  • +
  • +

    REQ_CLR_EOL Clear to end of line.

    +
  • +
  • +

    REQ_CLR_EOF Clear to end of field.

    +
  • +
  • +

    REQ_CLR_FIELD Clear entire field.

    +
  • +
+

The behavior of the REQ_NEW_LINE and REQ_DEL_PREV requests is +complicated and partly controlled by a pair of forms options. The +special cases are triggered when the cursor is at the beginning of +a field, or on the last line of the field.

+

First, we consider REQ_NEW_LINE:

+

The normal behavior of REQ_NEW_LINE in insert mode is to break +the current line at the position of the edit cursor, inserting the +portion of the current line after the cursor as a new line +following the current and moving the cursor to the beginning of +that new line (you may think of this as inserting a newline in the +field buffer).

+

The normal behavior of REQ_NEW_LINE in overlay mode is to clear +the current line from the position of the edit cursor to end of +line. The cursor is then moved to the beginning of the next +line.

+

However, REQ_NEW_LINE at the beginning of a field, or on the +last line of a field, instead does a REQ_NEXT_FIELD. O_NL_OVERLOAD +option is off, this special action is disabled.

+

Now, let us consider REQ_DEL_PREV:

+

The normal behavior of REQ_DEL_PREV is to delete the previous +character. If insert mode is on, and the cursor is at the start of +a line, and the text on that line will fit on the previous one, it +instead appends the contents of the current line to the previous +one and deletes the current line (you may think of this as deleting +a newline from the field buffer).

+

However, REQ_DEL_PREV at the beginning of a field is instead +treated as a REQ_PREV_FIELD.

+

If the O_BS_OVERLOAD option is off, this special action is +disabled and the forms driver just returns E_REQUEST_DENIED.

+
+
+
+

18.6.6. Order +Requests

+

If the type of your field is ordered, and has associated +functions for getting the next and previous values of the type from +a given value, there are requests that can fetch that value into +the field buffer:

+
    +
  • +

    REQ_NEXT_CHOICE Place the successor value of the +current value in the buffer.

    +
  • +
  • +

    REQ_PREV_CHOICE Place the predecessor value of the +current value in the buffer.

    +
  • +
+

Of the built-in field types, only TYPE_ENUM has built-in +successor and predecessor functions. When you define a field type +of your own (see Custom Validation Types), you can associate our +own ordering functions.

+
+
+
+

18.6.7. Application Commands

+

Form requests are represented as integers above the curses value +greater than KEY_MAX and less than or equal to the constant +MAX_COMMAND. A value within this range gets ignored by +form_driver(). So this can be used for any purpose by the +application. It can be treated as an application specific action +and take corresponding action.

+
+
+
+
+
+

19. Tools and Widget +Libraries

+

Now that you have seen the capabilities of ncurses and its +sister libraries, you are rolling your sleeves up and gearing for a +project that heavily manipulates screen. But wait.. It can be +pretty difficult to write and maintain complex GUI widgets in plain +ncurses or even with the additional libraries. There are some +ready-to-use tools and widget libraries that can be used instead of +writing your own widgets. You can use some of them, get ideas from +the code, or even extend them.

+
+
+

19.1. CDK (Curses +Development Kit)

+

In the author's words

+

CDK stands for 'Curses Development Kit' and it currently +contains 21 ready to use widgets which facilitate the speedy +development of full screen curses programs.

+

The kit provides some useful widgets, which can be used in your +programs directly. It's pretty well written and the documentation +is very good. The examples in the examples directory can be a good +place to start for beginners. The CDK can be downloaded from +http://invisible-island.net/cdk/ . Follow the +instructions in README file to install it.

+
+
+

19.1.1. +Widget List

+

The following is the list of widgets provided with cdk and their +description.

+ + + + +
+
+Widget Type           Quick Description
+===========================================================================
+Alphalist             Allows a user to select from a list of words, with
+                      the ability to narrow the search list by typing in a
+                      few characters of the desired word.
+Buttonbox             This creates a multiple button widget. 
+Calendar              Creates a little simple calendar widget.
+Dialog                Prompts the user with a message, and the user
+                      can pick an answer from the buttons provided.
+Entry                 Allows the user to enter various types of information.
+File Selector         A file selector built from Cdk base widgets. This
+                      example shows how to create more complicated widgets
+                      using the Cdk widget library.
+Graph                 Draws a graph.
+Histogram             Draws a histogram.
+Item List             Creates a pop up field which allows the user to select
+                      one of several choices in a small field. Very useful
+                      for things like days of the week or month names.
+Label                 Displays messages in a pop up box, or the label can be
+                      considered part of the screen.
+Marquee               Displays a message in a scrolling marquee.
+Matrix                Creates a complex matrix with lots of options.
+Menu                  Creates a pull-down menu interface.
+Multiple Line Entry   A multiple line entry field. Very useful
+                      for long fields. (like a description
+                      field)
+Radio List            Creates a radio button list.
+Scale                 Creates a numeric scale. Used for allowing a user to
+                      pick a numeric value and restrict them to a range of 
+                      values.
+Scrolling List        Creates a scrolling list/menu list.
+Scrolling Window      Creates a scrolling log file viewer. Can add 
+                      information into the window while its running. 
+                      A good widget for displaying the progress of
+                      something. (akin to a console window)
+Selection List        Creates a multiple option selection list.
+Slider                Akin to the scale widget, this widget provides a
+                      visual slide bar to represent the numeric value.
+Template              Creates a entry field with character sensitive 
+                      positions. Used for pre-formatted fields like
+                      dates and phone numbers.
+Viewer                This is a file/information viewer. Very useful
+                      when you need to display loads of information.
+===========================================================================
+
+

A few of the widgets are modified by Thomas Dickey in recent +versions.

+
+
+
+

19.1.2. Some +Attractive Features

+

Apart from making our life easier with readily usable widgets, +cdk solves one frustrating problem with printing multi colored +strings, justified strings elegantly. Special formatting tags can +be embedded in the strings which are passed to CDK functions. For +Example

+

If the string

+ + + + +
+
+"</B/1>This line should have a yellow foreground and a blue
+background.<!1>"
+
+

given as a parameter to newCDKLabel(), it prints the line with +yellow foreground and blue background. There are other tags +available for justifying string, embedding special drawing +characters etc.. Please refer to the man page cdk_display(3X) for +details. The man page explains the usage with nice examples.

+
+
+
+

19.1.3. Conclusion

+

All in all, CDK is a well-written package of widgets, which if +used properly can form a strong frame work for developing complex +GUI.

+
+
+
+
+

19.2. The +dialog

+

Long long ago, in September 1994, when few people knew linux, +Jeff Tranter wrote an article on dialog in Linux Journal. He starts the +article with these words..

+

Linux is based on the Unix operating system, but also +features a number of unique and useful kernel features and +application programs that often go beyond what is available under +Unix. One little-known gem is "dialog", a utility for creating +professional-looking dialog boxes from within shell scripts. This +article presents a tutorial introduction to the dialog utility, and +shows examples of how and where it can be used

+

As he explains, dialog is a real gem in making +professional-looking dialog boxes with ease. It creates a variety +of dialog boxes, menus, check lists etc.. It is usually installed +by default. If not, you can download it from Thomas +Dickey's site.

+

The above-mentioned article gives a very good overview of its +uses and capabilites. The man page has more details. It can be used +in variety of situations. One good example is building of linux +kernel in text mode. Linux kernel uses a modified version of dialog +tailored for its needs.

+

dialog was initially designed to be used with shell scripts. If +you want to use its functionality in a c program, then you can use +libdialog. The documentation regarding this is sparse. Definitive +reference is the dialog.h header file which comes with the library. +You may need to hack here and there to get the required output. The +source is easily customizable. I have used it on a number of +occasions by modifying the code.

+
+
+
+

19.3. Perl +Curses Modules CURSES::FORM and CURSES::WIDGETS

+

The perl module Curses, Curses::Form and Curses::Widgets give +access to curses from perl. If you have curses and basic perl is +installed, you can get these modules from CPAN All Modules page. Get the three zipped modules in +the Curses category. Once installed you can use these modules from +perl scripts like any other module. For more information on perl +modules see perlmod man page. The above modules come with good +documentation and they have some demo scripts to test the +functionality. Though the widgets provided are very rudimentary, +these modules provide good access to curses library from perl.

+

Some of my code examples are converted to perl by Anuradha +Ratnaweera and they are available in the perl directory.

+

For more information see man pages Curses(3) , Curses::Form(3) +and Curses::Widgets(3). These pages are installed only when the +above modules are acquired and installed.

+
+
+
+
+

20. Just For +Fun !!!

+

This section contains few programs written by me just for fun. +They don't signify a better programming practice or the best way of +using ncurses. They are provided here so as to allow beginners to +get ideas and add more programs to this section. If you have +written a couple of nice, simple programs in curses and want them +to included here, contact me.

+
+
+

20.1. The +Game of Life

+

Game of life is a wonder of math. In Paul Callahan's words

+ + + + +
+
+The Game of Life (or simply Life) is not a game in the conventional sense. There
+are no players, and no winning or losing. Once the "pieces" are placed in the
+starting position, the rules determine everything that happens later.
+Nevertheless, Life is full of surprises! In most cases, it is impossible to look
+at a starting position (or pattern) and see what will happen in the future. The
+only way to find out is to follow the rules of the game.
+
+

This program starts with a simple inverted U pattern and shows +how wonderful life works. There is a lot of room for improvement in +the program. You can let the user enter pattern of his choice or +even take input from a file. You can also change rules and play +with a lot of variations. Search on google for interesting information on game of +life.

+

File Path: JustForFun/life.c

+
+
+
+

20.2. Magic +Square

+

Magic Square, another wonder of math, is very simple to +understand but very difficult to make. In a magic square sum of the +numbers in each row, each column is equal. Even diagnol sum can be +equal. There are many variations which have special properties.

+

This program creates a simple magic square of odd order.

+

File Path: JustForFun/magic.c

+
+
+
+

20.3. Towers of +Hanoi

+

The famous towers of hanoi solver. The aim of the game is to +move the disks on the first peg to last peg, using middle peg as a +temporary stay. The catch is not to place a larger disk over a +small disk at any time.

+

File Path: JustForFun/hanoi.c

+
+
+
+

20.4. Queens +Puzzle

+

The objective of the famous N-Queen puzzle is to put N queens on +a N X N chess board without attacking each other.

+

This program solves it with a simple backtracking technique.

+

File Path: JustForFun/queens.c

+
+
+
+

20.5. +Shuffle

+

A fun game, if you have time to kill.

+

File Path: JustForFun/shuffle.c

+
+
+
+

20.6. Typing Tutor

+

A simple typing tutor, I created more out of need than for ease +of use. If you know how to put your fingers correctly on the +keyboard, but lack practice, this can be helpful.

+

File Path: JustForFun/tt.c

+
+
+
+
+

21. References

+ +
+
+ + diff --git a/ncurses/doc/html/ada/files.htm b/ncurses/doc/html/ada/files.htm new file mode 100644 index 0000000..a3bad64 --- /dev/null +++ b/ncurses/doc/html/ada/files.htm @@ -0,0 +1,6 @@ + + + +

Files

+[T] + diff --git a/ncurses/doc/html/ada/files/T.htm b/ncurses/doc/html/ada/files/T.htm new file mode 100644 index 0000000..d9d6950 --- /dev/null +++ b/ncurses/doc/html/ada/files/T.htm @@ -0,0 +1,78 @@ + +T + +

Files - T

+[index] + diff --git a/ncurses/doc/html/ada/funcs.htm b/ncurses/doc/html/ada/funcs.htm new file mode 100644 index 0000000..9a2da61 --- /dev/null +++ b/ncurses/doc/html/ada/funcs.htm @@ -0,0 +1,27 @@ + + + +

Functions/Procedures

+[A] +[B] +[C] +[D] +[E] +[F] +[G] +[H] +[I] +[K] +[L] +[M] +[N] +[O] +[P] +[Q] +[R] +[S] +[T] +[U] +[V] +[W] + diff --git a/ncurses/doc/html/ada/funcs/A.htm b/ncurses/doc/html/ada/funcs/A.htm new file mode 100644 index 0000000..9c7069d --- /dev/null +++ b/ncurses/doc/html/ada/funcs/A.htm @@ -0,0 +1,24 @@ + +A + +

Functions - A

+[index] + diff --git a/ncurses/doc/html/ada/funcs/B.htm b/ncurses/doc/html/ada/funcs/B.htm new file mode 100644 index 0000000..59c5886 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/B.htm @@ -0,0 +1,21 @@ + +B + +

Functions - B

+[index] + diff --git a/ncurses/doc/html/ada/funcs/C.htm b/ncurses/doc/html/ada/funcs/C.htm new file mode 100644 index 0000000..eba0274 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/C.htm @@ -0,0 +1,56 @@ + +C + +

Functions - C

+[index] + diff --git a/ncurses/doc/html/ada/funcs/D.htm b/ncurses/doc/html/ada/funcs/D.htm new file mode 100644 index 0000000..ea42647 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/D.htm @@ -0,0 +1,47 @@ + +D + +

Functions - D

+[index] + diff --git a/ncurses/doc/html/ada/funcs/E.htm b/ncurses/doc/html/ada/funcs/E.htm new file mode 100644 index 0000000..ad3f256 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/E.htm @@ -0,0 +1,18 @@ + +E + +

Functions - E

+[index] + diff --git a/ncurses/doc/html/ada/funcs/F.htm b/ncurses/doc/html/ada/funcs/F.htm new file mode 100644 index 0000000..9400d34 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/F.htm @@ -0,0 +1,55 @@ + +F + +

Functions - F

+[index] + diff --git a/ncurses/doc/html/ada/funcs/G.htm b/ncurses/doc/html/ada/funcs/G.htm new file mode 100644 index 0000000..486c3b0 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/G.htm @@ -0,0 +1,96 @@ + +G + +

Functions - G

+[index] + diff --git a/ncurses/doc/html/ada/funcs/H.htm b/ncurses/doc/html/ada/funcs/H.htm new file mode 100644 index 0000000..bf0256e --- /dev/null +++ b/ncurses/doc/html/ada/funcs/H.htm @@ -0,0 +1,22 @@ + +H + +

Functions - H

+[index] + diff --git a/ncurses/doc/html/ada/funcs/I.htm b/ncurses/doc/html/ada/funcs/I.htm new file mode 100644 index 0000000..7813c74 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/I.htm @@ -0,0 +1,51 @@ + +I + +

Functions - I

+[index] + diff --git a/ncurses/doc/html/ada/funcs/K.htm b/ncurses/doc/html/ada/funcs/K.htm new file mode 100644 index 0000000..aece950 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/K.htm @@ -0,0 +1,14 @@ + +K + +

Functions - K

+[index] + diff --git a/ncurses/doc/html/ada/funcs/L.htm b/ncurses/doc/html/ada/funcs/L.htm new file mode 100644 index 0000000..b7d63dd --- /dev/null +++ b/ncurses/doc/html/ada/funcs/L.htm @@ -0,0 +1,20 @@ + +L + +

Functions - L

+[index] + diff --git a/ncurses/doc/html/ada/funcs/M.htm b/ncurses/doc/html/ada/funcs/M.htm new file mode 100644 index 0000000..9d095f2 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/M.htm @@ -0,0 +1,51 @@ + +M + +

Functions - M

+[index] + diff --git a/ncurses/doc/html/ada/funcs/N.htm b/ncurses/doc/html/ada/funcs/N.htm new file mode 100644 index 0000000..df8df67 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/N.htm @@ -0,0 +1,35 @@ + +N + +

Functions - N

+[index] + diff --git a/ncurses/doc/html/ada/funcs/O.htm b/ncurses/doc/html/ada/funcs/O.htm new file mode 100644 index 0000000..e624243 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/O.htm @@ -0,0 +1,12 @@ + +O + +

Functions - O

+[index] + diff --git a/ncurses/doc/html/ada/funcs/P.htm b/ncurses/doc/html/ada/funcs/P.htm new file mode 100644 index 0000000..6f057c3 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/P.htm @@ -0,0 +1,59 @@ + +P + +

Functions - P

+[index] + diff --git a/ncurses/doc/html/ada/funcs/Q.htm b/ncurses/doc/html/ada/funcs/Q.htm new file mode 100644 index 0000000..d487468 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/Q.htm @@ -0,0 +1,8 @@ + +Q + +

Functions - Q

+[index] + diff --git a/ncurses/doc/html/ada/funcs/R.htm b/ncurses/doc/html/ada/funcs/R.htm new file mode 100644 index 0000000..cd10c6f --- /dev/null +++ b/ncurses/doc/html/ada/funcs/R.htm @@ -0,0 +1,39 @@ + +R + +

Functions - R

+[index] + diff --git a/ncurses/doc/html/ada/funcs/S.htm b/ncurses/doc/html/ada/funcs/S.htm new file mode 100644 index 0000000..9b08e4f --- /dev/null +++ b/ncurses/doc/html/ada/funcs/S.htm @@ -0,0 +1,191 @@ + +S + +

Functions - S

+[index] + diff --git a/ncurses/doc/html/ada/funcs/T.htm b/ncurses/doc/html/ada/funcs/T.htm new file mode 100644 index 0000000..bb8dea1 --- /dev/null +++ b/ncurses/doc/html/ada/funcs/T.htm @@ -0,0 +1,36 @@ + +T + +

Functions - T

+[index] + diff --git a/ncurses/doc/html/ada/funcs/U.htm b/ncurses/doc/html/ada/funcs/U.htm new file mode 100644 index 0000000..100f90e --- /dev/null +++ b/ncurses/doc/html/ada/funcs/U.htm @@ -0,0 +1,23 @@ + +U + +

Functions - U

+[index] + diff --git a/ncurses/doc/html/ada/funcs/V.htm b/ncurses/doc/html/ada/funcs/V.htm new file mode 100644 index 0000000..b926d7c --- /dev/null +++ b/ncurses/doc/html/ada/funcs/V.htm @@ -0,0 +1,11 @@ + +V + +

Functions - V

+[index] + diff --git a/ncurses/doc/html/ada/funcs/W.htm b/ncurses/doc/html/ada/funcs/W.htm new file mode 100644 index 0000000..d27242a --- /dev/null +++ b/ncurses/doc/html/ada/funcs/W.htm @@ -0,0 +1,53 @@ + +W + +

Functions - W

+[index] + diff --git a/ncurses/doc/html/ada/index.htm b/ncurses/doc/html/ada/index.htm new file mode 100644 index 0000000..4a13484 --- /dev/null +++ b/ncurses/doc/html/ada/index.htm @@ -0,0 +1,39 @@ + + +Source Browser + + +<H2 ALIGN=CENTER>Files</H2> +<A HREF="files/T.htm">[T]</A> +<HR> +<H2 ALIGN=CENTER>Functions/Procedures</H2> +<A HREF="funcs/A.htm">[A]</A> +<A HREF="funcs/B.htm">[B]</A> +<A HREF="funcs/C.htm">[C]</A> +<A HREF="funcs/D.htm">[D]</A> +<A HREF="funcs/E.htm">[E]</A> +<A HREF="funcs/F.htm">[F]</A> +<A HREF="funcs/G.htm">[G]</A> +<A HREF="funcs/H.htm">[H]</A> +<A HREF="funcs/I.htm">[I]</A> +<A HREF="funcs/K.htm">[K]</A> +<A HREF="funcs/L.htm">[L]</A> +<A HREF="funcs/M.htm">[M]</A> +<A HREF="funcs/N.htm">[N]</A> +<A HREF="funcs/O.htm">[O]</A> +<A HREF="funcs/P.htm">[P]</A> +<A HREF="funcs/Q.htm">[Q]</A> +<A HREF="funcs/R.htm">[R]</A> +<A HREF="funcs/S.htm">[S]</A> +<A HREF="funcs/T.htm">[T]</A> +<A HREF="funcs/U.htm">[U]</A> +<A HREF="funcs/V.htm">[V]</A> +<A HREF="funcs/W.htm">[W]</A> + + + + + + + + diff --git a/ncurses/doc/html/ada/main.htm b/ncurses/doc/html/ada/main.htm new file mode 100644 index 0000000..d850608 --- /dev/null +++ b/ncurses/doc/html/ada/main.htm @@ -0,0 +1,69 @@ + + + +

[No frame version is here]

Files

+[T] +

Functions/Procedures

+[A] +[B] +[C] +[D] +[E] +[F] +[G] +[H] +[I] +[K] +[L] +[M] +[N] +[O] +[P] +[Q] +[R] +[S] +[T] +[U] +[V] +[W] +
+You should start your browsing with one of these files: + + diff --git a/ncurses/doc/html/ada/table.html b/ncurses/doc/html/ada/table.html new file mode 100644 index 0000000..ff6d0bd --- /dev/null +++ b/ncurses/doc/html/ada/table.html @@ -0,0 +1,341 @@ + + + +Correspondence between ncurses C and Ada functions + + +

Correspondence between ncurses C and Ada functions

+

Sorted by C function name

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
C nameAda nameman page
assume_default_colors()Assume_Default_Colorsdefault_colors.3x
baudrate()Baudratecurs_termattrs.3x
beep()Beepcurs_beep.3x
bottom_panel()Bottompanel.3x
box()Boxcurs_border.3x
can_change_color()Can_Change_Colorcurs_color.3x
cbreak()Set_Cbreak_Modecurs_inopts.3x
clearok()Clear_On_Next_Updatecurs_outopts.3x
color_content()Color_Contentcurs_color.3x
copywin()Copycurs_overlay.3x
current_field()Currentform_page.3x
current_item()Currentmitem_current.3x
curscrCurrent_Windowcurs_initscr.3x
curses_version()Curses_Versioncurs_extend.3x
curs_set()Set_Cursor_Visibilitycurs_kernel.3x
data_ahead()Data_Aheadform_data.3x
data_behind()Data_Behindform_data.3x
define_key()Define_Keydefine_key.3x
def_prog_mode()Save_Curses_Modecurs_kernel.3x
delay_output()Delay_Outputcurs_util.3x
del_panel()Deletepanel.3x
delwin()Deletecurs_window.3x
derwin()Derived_Windowcurs_window.3x
doupdate()Update_Screencurs_refresh.3x
dup_field()Duplicateform_field_new.3x
dupwin()Duplicatecurs_window.3x
dynamic_field_info()Dynamic_Infoform_field_info.3x
echo()Set_Echo_Modecurs_inopts.3x
endwin()End_Windowscurs_initscr.3x
erasechar()Erase_Charactercurs_termattrs.3x
field_back()Backgroundform_field_attributes.3x
field_back()Backgroundform_field_attributes.3x
field_buffer()Get_Bufferform_field_buffer.3x
field_count()Field_Countform_field.3x
field_fore()Foregroundform_field_attributes.3x
field_fore()Foregroundform_field_attributes.3x
field_index()Get_Indexform_page.3x
field_info()Infoform_field_info.3x
field_init()Get_Field_Init_Hookform_hook.3x
field_just()Get_Justificationform_field_just.3x
field_opts_on()Switch_Optionsform_field_opts.3x
field_opts()Get_Optionsform_field_opts.3x
field_opts()Get_Optionsform_field_opts.3x
field_pad()Pad_Characterform_field_attributes.3x
field_status()Changedform_field_buffer.3x
field_term()Get_Field_Term_Hookform_hook.3x
field_type()Get_Typeform_field_validation.3x
field_userptrGet_User_Dataform_field_userptr.3x
field_userptrGet_User_Dataform_field_userptr.3x
flash()Flash_Screencurs_beep.3x
flushinp()Flush_Inputcurs_util.3x
form_driver()Driverform_driver.3x
form_fields()Fieldsform_field.3x
form_init()Get_Form_Init_Hookform_hook.3x
form_opts_on()Switch_Optionsform_opts.3x
form_opts()Get_Optionsform_opts.3x
form_opts()Get_Optionsform_opts.3x
form_page()Pageform_page.3x
form_sub()Get_Sub_Windowform_win.3x
form_term()Get_Form_Term_Hookform_hook.3x
form_userptrGet_User_Dataform_userptr.3x
form_userptrGet_User_Dataform_userptr.3x
form_win()Get_Windowform_win.3x
free_field()Deleteform_field_new.3x
free_form()Deleteform_new.3x
free_item()Deletemitem_new.3x
free_menu()Deletemenu_new.3x
getbegyx()Get_Window_Positioncurs_getyx.3x
getmaxyx()Get_Sizecurs_getyx.3x
getmouse()Get_Mousecurs_mouse.3x
getparyx()Get_Origin_Relative_To_Parentcurs_getyx.3x
getyx()Get_Cursor_Positioncurs_getyx.3x
halfdelay()Half_Delaycurs_inopts.3x
has_colors()Has_Colorscurs_color.3x
has_ic()Has_Insert_Charactercurs_termattrs.3x
has_il()Has_Insert_Linecurs_termattrs.3x
has_key()Has_Keycurs_getch.3x
hide_panel()Hidepanel.3x
idcok()Use_Insert_Delete_Charactercurs_outopts.3x
idlok()Use_Insert_Delete_Linecurs_outopts.3x
immedok()Immediate_Update_Modecurs_outopts.3x
init_color()Init_Colorcurs_color.3x
init_pair()Init_Paircurs_color.3x
initscr()Init_Screencurs_initscr.3x
initscr()Init_Windowscurs_initscr.3x
intrflush()Set_Flush_On_Interrupt_Modecurs_inopts.3x
isendwin()Is_End_Windowcurs_initscr.3x
is_linetouched()Is_Touchedcurs_touch.3x
is_wintouched()Is_Touchedcurs_touch.3x
item_count()Item_Countmenu_items.3x
item_description();Descriptionmitem_name.3x
item_index()Get_Indexmitem_current.3x
item_init()Get_Item_Init_Hookmenu_hook.3x
item_name()Namemitem_name.3x
item_opts_on()Switch_Optionsmitem_opts.3x
item_opts()Get_Optionsmitem_opts.3x
item_opts()Get_Optionsmitem_opts.3x
item_term()Get_Item_Term_Hookmenu_hook.3x
item_userptrGet_User_Datamitem_userptr.3x
item_userptrGet_User_Datamitem_userptr.3x
item_value()Valuemitem_value.3x
item_visible()Visiblemitem_visible.3x
keyname()Key_Namecurs_util.3x
keyname()Key_Namecurs_util.3x
keyok()Enable_Keykeyok.3x
keypad()Set_KeyPad_Modecurs_inopts.3x
killchar()Kill_Charactercurs_termattrs.3x
leaveok()Leave_Cursor_After_Updatecurs_outopts.3x
link_field()Linkform_field_new.3x
longname()Long_Namecurs_termattrs.3x
longname()Long_Namecurs_termattrs.3x
menu_back()Backgroundmenu_attributes.3x
menu_back()Backgroundmenu_attributes.3x
menu_driver()Drivermenu_driver.3x
menu_fore()Foregroundmenu_attributes.3x
menu_fore()Foregroundmenu_attributes.3x
menu_format()Formatmenu_format.3x
menu_grey()Greymenu_attributes.3x
menu_grey()Greymenu_attributes.3x
menu_init()Get_Menu_Init_Hookmenu_hook.3x
menu_items()Itemsmenu_items.3x
menu_mark()Markmenu_mark.3x
menu_opts_on()Switch_Optionsmenu_opts.3x
menu_opts()Get_Optionsmenu_opts.3x
menu_opts()Get_Optionsmenu_opts.3x
menu_pad()Pad_Charactermenu_attributes.3x
menu_pattern()Patternmenu_pattern.3x
menu_requestname.3xmenu_driver.3x
menu_spacing()Spacingmenu_spacing.3x
menu_sub()Get_Sub_Windowmenu_win.3x
menu_term()Get_Menu_Term_Hookmenu_hook.3x
menu_userptrGet_User_Datamenu_userptr.3x
menu_userptrGet_User_Datamenu_userptr.3x
menu_win()Get_Windowmenu_win.3x
meta()Set_Meta_Modecurs_inopts.3x
mouseinterval()Mouse_Intervalcurs_mouse.3x
mousemask()Start_Mousecurs_mouse.3x
move_field()Moveform_field.3x
move_panel()Movepanel.3x
mvderwin()Move_Derived_Windowcurs_window.3x
mvwaddchnstr()Addcurs_addchstr.3x
mvwaddch()Addcurs_addch.3x
mvwaddnstr()Addcurs_addstr.3x
mvwchgat()Change_Attributescurs_attr.3x
mvwdelch()Delete_Charactercurs_delch.3x
mvwgetnstr()Getcurs_getstr.3x
mvwinchnstr()Peekcurs_inchstr.3x
mvwinch()Peekcurs_inch.3x
mvwinnstr()Peekcurs_instr.3x
mvwinsch()Insertcurs_insch.3x
mvwinsnstr()Insertcurs_insstr.3x
mvwin()Move_Windowcurs_window.3x
napms()Nap_Milli_Secondscurs_kernel.3x
_nc_freeall()Curses_Free_Allcurs_trace.3x
new_field()Createform_field_new.3x
new_field()New_Fieldform_field_new.3x
new_form()Createform_new.3x
new_form()New_Formform_new.3x
new_item()Createmitem_new.3x
new_item()New_Itemmitem_new.3x
new_menu()Createmenu_new.3x
newpad()New_Padcurs_pad.3x
new_page()Is_New_Pageform_new_page.3x
new_panel()Createpanel.3x
new_panel()New_Panelpanel.3x
newwin()Createcurs_window.3x
nl()Set_NL_Modecurs_outopts.3x
nodelay()Set_NoDelay_Modecurs_inopts.3x
notimeout()Set_Escape_Time_Modecurs_inopts.3x
overlay()Overlaycurs_overlay.3x
overwrite()Overwritecurs_overlay.3x
pair_content()Pair_Contentcurs_color.3x
panel_above()Abovepanel.3x
panel_below()Belowpanel.3x
panel_hidden()Is_Hiddenpanel.3x
panel_userptrGet_User_Datapanel.3x
panel_userptrGet_User_Datapanel.3x
panel_window()Get_Windowpanel.3x
panel_window()Panel_Windowpanel.3x
pechochar()Add_Character_To_Pad_And_Echo_Itcurs_pad.3x
pnoutrefresh()Refresh_Without_Updatecurs_pad.3x
pos_form_cursor()Position_Cursorform_cursor.3x
pos_menu_cursor()Position_Cursormenu_cursor.3x
post_form()Postform_post.3x
post_menu()Postmenu_post.3x
prefresh()Refreshcurs_pad.3x
qiflush()Set_Queue_Interrupt_Modecurs_inopts.3x
raw()Set_Raw_Modecurs_inopts.3x
redrawwin()Redrawcurs_refresh.3x
replace_panel()Replacepanel.3x
reset_prog_mode()Reset_Curses_Modecurs_kernel.3x
resetty();Reset_Terminal_Statecurs_kernel.3x
ripoffline()Rip_Off_Linescurs_kernel.3x
savetty()Save_Terminal_Statecurs_kernel.3x
scale_form()Scaleform_win.3x
scale_menu()Scalemenu_win.3x
scr_dump()Screen_Dump_To_Filecurs_scr_dump.3x
scr_init()Screen_Init_From_Filecurs_scr_dump.3x
scrollok()Allow_Scrollingcurs_outopts.3x
scr_restore()Screen_Restore_From_Filecurs_scr_dump.3x
scr_set()Screen_Set_Filecurs_scr_dump.3x
set_current_field()Set_Currentform_page.3x
set_current_item()Set_Currentmitem_current.3x
set_field_back()Set_Backgroundform_field_attributes.3x
set_field_buffer()Set_Bufferform_field_buffer.3x
set_field_fore()Set_Foregroundform_field_attributes.3x
set_field_init()Set_Field_Init_Hookform_hook.3x
set_field_just()Set_Justificationform_field_just.3x
set_field_max()Set_Maximum_Sizeform_field_buffer.3x
set_field_opts()Set_Optionsform_field_opts.3x
set_field_pad()Set_Pad_Characterform_field_attributes.3x
set_field_status()Set_Statusform_field_buffer.3x
set_field_term()Set_Field_Term_Hookform_hook.3x
set_field_type()Set_Typeform_fieldtype.3x
set_field_userptrSet_User_Dataform_field_userptr.3x
set_form_fields()Redefineform_field.3x
set_form_fields()Set_Fieldsform_field.3x
set_form_init()Set_Form_Init_Hookform_hook.3x
set_form_opts()Set_Optionsform_opts.3x
set_form_page()Set_Pageform_page.3x
set_form_sub()Set_Sub_Windowform_win.3x
set_form_term()Set_Form_Term_Hookform_hook.3x
set_form_userptrSet_User_Dataform_userptr.3x
set_form_win()Set_Windowform_win.3x
set_item_init()Set_Item_Init_Hookmenu_hook.3x
set_item_opts()Set_Optionsmitem_opts.3x
set_item_term()Set_Item_Term_Hookmenu_hook.3x
set_item_userptrSet_User_Datamitem_userptr.3x
set_item_value()Set_Valuemitem_value.3x
set_menu_back()Set_Backgroundmenu_attributes.3x
set_menu_fore()Set_Foregroundmenu_attributes.3x
set_menu_format()Set_Formatmenu_format.3x
set_menu_grey()Set_Greymenu_attributes.3x
set_menu_init()Set_Menu_Init_Hookmenu_hook.3x
set_menu_items()Redefinemenu_items.3x
set_menu_mark()Set_Markmenu_mark.3x
set_menu_opts()Set_Optionsmenu_opts.3x
set_menu_pad()Set_Pad_Charactermenu_attributes.3x
set_menu_pattern()Set_Patternmenu_pattern.3x
set_menu_spacing()Set_Spacingmenu_spacing.3x
set_menu_sub()Set_Sub_Windowmenu_win.3x
set_menu_term()Set_Menu_Term_Hookmenu_hook.3x
set_menu_userptrSet_User_Datamenu_userptr.3x
set_menu_win()Set_Windowmenu_win.3x
set_new_page()Set_New_Pageform_new_page.3x
set_panel_userptrSet_User_Datapanel.3x
set_top_row()Set_Top_Rowmitem_current.3x
show_panel()Showpanel.3x
slk_attron()Switch_Soft_Label_Key_Attributescurs_slk.3x
slk_attrset()Set_Soft_Label_Key_Attributescurs_slk.3x
slk_attr()Get_Soft_Label_Key_Attributescurs_slk.3x
slk_attr()Get_Soft_Label_Key_Attributescurs_slk.3x
slk_clear()Clear_Soft_Label_Keyscurs_slk.3x
slk_color()Set_Soft_Label_Key_Colorcurs_slk.3x
slk_init()Init_Soft_Label_Keyscurs_slk.3x
slk_label()Get_Soft_Label_Keycurs_slk.3x
slk_label()Get_Soft_Label_Keycurs_slk.3x
slk_noutrefresh()Refresh_Soft_Label_Keys_Without_Updatecurs_slk.3x
slk_refresh()Refresh_Soft_Label_Keycurs_slk.3x
slk_restore()Restore_Soft_Label_Keyscurs_slk.3x
slk_set()Set_Soft_Label_Keycurs_slk.3x
slk_touch()Touch_Soft_Label_Keyscurs_slk.3x
standout()Standoutcurs_attr.3x
start_color()Start_Colorcurs_color.3x
stdscrStandard_Windowcurs_initscr.3x
subpad()Sub_Padcurs_pad.3x
subwin()Sub_Windowcurs_window.3x
syncok()Set_Synch_Modecurs_window.3x
termattrs()Supported_Attributescurs_termattrs.3x
termname()Terminal_Namecurs_termattrs.3x
termname()Terminal_Namecurs_termattrs.3x
top_panel()Toppanel.3x
top_row()Top_Rowmitem_current.3x
touchline()Touchcurs_touch.3x
touchwin()Touchcurs_touch.3x
_tracef()Trace_Putcurs_trace.3x
trace()Trace_oncurs_trace.3x
unctrl()Un_Controlcurs_util.3x
unctrl()Un_Controlcurs_util.3x
ungetch()Undo_Keystrokecurs_getch.3x
ungetmouse()Unget_Mousecurs_mouse.3x
untouchwin()Untouchcurs_touch.3x
update_panels()Update_Panelspanel.3x
use_default_colors()Use_Default_Colorsdefault_colors.3x
use_extended_names()Use_Extended_Namescurs_extend.3x
waddchnstr()Addcurs_addchstr.3x
waddch()Addcurs_addch.3x
waddnstr()Addcurs_addstr.3x
wattr_get()Get_Character_Attributescurs_attr.3x
wattr_get()Get_Character_Attributecurs_attr.3x
wattron()Switch_Character_Attributecurs_attr.3x
wattrset()Set_Character_Attributescurs_attr.3x
wbkgdget()Get_Backgroundcurs_bkgd.3x
wbkgdset()Set_Backgroundcurs_bkgd.3x
wbkgd()Change_Backgroundcurs_bkgd.3x
wborder()Bordercurs_border.3x
wchgat()Change_Attributescurs_attr.3x
wclear()Clearcurs_clear.3x
wclrtobot()Clear_To_End_Of_Screencurs_clear.3x
wclrtoeol()Clear_To_End_Of_Linecurs_clear.3x
wcolor_set()Set_Colorcurs_attr.3x
wdelch()Delete_Charactercurs_delch.3x
wdeleteln()Delete_Linecurs_deleteln.3x
wechochar()Add_With_Immediate_Echocurs_addch.3x
wenclose()Enclosed_In_Windowcurs_mouse.3x
werase()Erasecurs_clear.3x
wgetch()Get_Keystrokecurs_getch.3x
wgetnstr()Getcurs_getstr.3x
whline()Horizontal_Linecurs_border.3x
winchnstr()Peekcurs_inchstr.3x
winch()Peekcurs_inch.3x
winnstr()Peekcurs_instr.3x
winsch()Insertcurs_insch.3x
winsdelln()Insert_Delete_Linescurs_deleteln.3x
winsertln()Insert_Linecurs_deleteln.3x
winsnstr()Insertcurs_insstr.3x
wmove()Move_Cursorcurs_move.3x
wnoutrefresh()Refresh_Without_Updatecurs_refresh.3x
wredrawln()Redrawcurs_refresh.3x
wrefresh()Refreshcurs_refresh.3x
wresize()Resizewresize.3x
wscrl()Scrollcurs_scroll.3x
wsetscrreg()Set_Scroll_Regioncurs_outopts.3x
wsyncdown()Synchronize_Downwardscurs_window.3x
wsyncup()Synchronize_Upwardscurs_window.3x
wtimeout()Set_Timeout_Modecurs_inopts.3x
wtouchln()Change_Line_Statuscurs_touch.3x
wvline()Vertical_Linecurs_border.3x
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-aux__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-aux__adb.htm new file mode 100644 index 0000000..6b22ff8 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-aux__adb.htm @@ -0,0 +1,122 @@ + +terminal_interface-curses-aux.adb + +

File : terminal_interface-curses-aux.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Aux                       --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package body Terminal_Interface.Curses.Aux is
+   --
+   --  Some helpers
+   procedure Fill_String (Cp  : in  chars_ptr;
+                          Str : out String)
+   is
+      --  Fill the string with the characters referenced by the
+      --  chars_ptr.
+      --
+      Len : Natural;
+   begin
+      if Cp /= Null_Ptr then
+         Len := Natural (Strlen (Cp));
+         if Str'Length < Len then
+            raise Constraint_Error;
+         end if;
+         declare
+            S : String (1 .. Len);
+         begin
+            S := Value (Cp);
+            Str (Str'First .. (Str'First + Len - 1)) := S (S'Range);
+         end;
+      else
+         Len := 0;
+      end if;
+
+      if Len < Str'Length then
+         Str ((Str'First + Len) .. Str'Last) := (others => ' ');
+      end if;
+
+   end Fill_String;
+
+   function Fill_String (Cp : chars_ptr) return String
+   is
+      Len : Natural;
+   begin
+      if Cp /= Null_Ptr then
+         Len := Natural (Strlen (Cp));
+         if Len = 0 then
+            return "";
+         else
+            declare
+               S : String (1 .. Len);
+            begin
+               Fill_String (Cp, S);
+               return S;
+            end;
+         end if;
+      else
+         return "";
+      end if;
+   end Fill_String;
+
+   procedure Eti_Exception (Code : Eti_Error)
+   is
+   begin
+      case Code is
+         when E_Ok              => null;
+         when E_System_Error    => raise Eti_System_Error;
+         when E_Bad_Argument    => raise Eti_Bad_Argument;
+         when E_Posted          => raise Eti_Posted;
+         when E_Connected       => raise Eti_Connected;
+         when E_Bad_State       => raise Eti_Bad_State;
+         when E_No_Room         => raise Eti_No_Room;
+         when E_Not_Posted      => raise Eti_Not_Posted;
+         when E_Unknown_Command => raise Eti_Unknown_Command;
+         when E_No_Match        => raise Eti_No_Match;
+         when E_Not_Selectable  => raise Eti_Not_Selectable;
+         when E_Not_Connected   => raise Eti_Not_Connected;
+         when E_Request_Denied  => raise Eti_Request_Denied;
+         when E_Invalid_Field   => raise Eti_Invalid_Field;
+         when E_Current         => raise Eti_Current;
+      end case;
+   end Eti_Exception;
+
+end Terminal_Interface.Curses.Aux;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-aux__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-aux__ads.htm new file mode 100644 index 0000000..f2160cd --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-aux__ads.htm @@ -0,0 +1,130 @@ + +terminal_interface-curses-aux.ads + +

File : terminal_interface-curses-aux.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                       Terminal_Interface.Curses.Aux                      --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.16 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  curses binding.
+--  This module is generated. Please don't change it manually!
+--  Run the generator instead.
+--  |
+with System;
+with Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Unchecked_Conversion;
+
+package Terminal_Interface.Curses.Aux is
+   pragma Preelaborate (Terminal_Interface.Curses.Aux);
+
+   use type Interfaces.C.int;
+
+   subtype C_Int      is Interfaces.C.int;
+   subtype C_Short    is Interfaces.C.short;
+   subtype C_Long_Int is Interfaces.C.long;
+   subtype C_Size_T   is Interfaces.C.size_t;
+   subtype C_UInt     is Interfaces.C.unsigned;
+   subtype C_ULong    is Interfaces.C.unsigned_long;
+   subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr;
+   type    C_Void_Ptr is new System.Address;
+   type    C_Chtype   is new C_ULong;
+   type    C_AttrType is new C_ULong;
+
+   --  This is how those constants are defined in ncurses. I see them also
+   --  exactly like this in all ETI implementations I ever tested. So it
+   --  could be that this is quite general, but please check with your curses.
+   --  This is critical, because curses sometime mixes boolean returns with
+   --  returning an error status.
+   Curses_Ok    : constant C_Int := 0;
+   Curses_Err   : constant C_Int := -1;
+
+   Curses_True  : constant C_Int := 1;
+   Curses_False : constant C_Int := 0;
+
+   --  Eti_Error: type for error codes returned by the menu and form subsystem
+   subtype Eti_Error is C_Int range -14 .. 0;
+
+   E_Ok               : constant Eti_Error := 0;
+   E_System_Error     : constant Eti_Error := -1;
+   E_Bad_Argument     : constant Eti_Error := -2;
+   E_Posted           : constant Eti_Error := -3;
+   E_Connected        : constant Eti_Error := -4;
+   E_Bad_State        : constant Eti_Error := -5;
+   E_No_Room          : constant Eti_Error := -6;
+   E_Not_Posted       : constant Eti_Error := -7;
+   E_Unknown_Command  : constant Eti_Error := -8;
+   E_No_Match         : constant Eti_Error := -9;
+   E_Not_Selectable   : constant Eti_Error := -10;
+   E_Not_Connected    : constant Eti_Error := -11;
+   E_Request_Denied   : constant Eti_Error := -12;
+   E_Invalid_Field    : constant Eti_Error := -13;
+   E_Current          : constant Eti_Error := -14;
+
+   procedure Eti_Exception (Code : Eti_Error);
+   --  Dispatch the error code and raise the appropriate exception
+   --
+   --
+   --  Some helpers
+   function Chtype_To_AttrChar is new
+     Unchecked_Conversion (Source => C_Chtype,
+                           Target => Attributed_Character);
+   function AttrChar_To_Chtype is new
+     Unchecked_Conversion (Source => Attributed_Character,
+                           Target => C_Chtype);
+
+   function AttrChar_To_AttrType is new
+     Unchecked_Conversion (Source => Attributed_Character,
+                           Target => C_AttrType);
+
+   function AttrType_To_AttrChar is new
+     Unchecked_Conversion (Source => C_AttrType,
+                           Target => Attributed_Character);
+
+   procedure Fill_String (Cp  : in  chars_ptr;
+                          Str : out String);
+   --  Fill the Str parameter with the string denoted by the chars_ptr
+   --  C-Style string.
+
+   function Fill_String (Cp : chars_ptr) return String;
+   --  Same but as function.
+
+end Terminal_Interface.Curses.Aux;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm new file mode 100644 index 0000000..dfb50a9 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm @@ -0,0 +1,72 @@ + +terminal_interface-curses-forms-field_types-alpha.adb + +

File : terminal_interface-curses-forms-field_types-alpha.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--              Terminal_Interface.Curses.Forms.Field_Types.Alpha           --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.9 @
+--  @Date: 2008/07/26 18:50:25 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Alpha_Field)
+   is
+      C_Alpha_Field_Type : C_Field_Type;
+      pragma Import (C, C_Alpha_Field_Type, "TYPE_ALPHA");
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_Alpha_Field_Type;
+                             Arg1 : C_Int) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+   begin
+      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.Alpha;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm new file mode 100644 index 0000000..911a24c --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm @@ -0,0 +1,59 @@ + +terminal_interface-curses-forms-field_types-alpha.ads + +

File : terminal_interface-curses-forms-field_types-alpha.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--              Terminal_Interface.Curses.Forms.Field_Types.Alpha           --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface.Curses.Forms.Field_Types.Alpha is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Alpha);
+
+   type Alpha_Field is new Field_Type
+     with record
+        Minimum_Field_Width : Natural := 0;
+     end record;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Alpha_Field);
+   pragma Inline (Set_Field_Type);
+
+end Terminal_Interface.Curses.Forms.Field_Types.Alpha;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm new file mode 100644 index 0000000..6d9ff0d --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm @@ -0,0 +1,72 @@ + +terminal_interface-curses-forms-field_types-alphanumeric.adb + +

File : terminal_interface-curses-forms-field_types-alphanumeric.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--          Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric        --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.9 @
+--  @Date: 2008/07/26 18:50:15 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in AlphaNumeric_Field)
+   is
+      C_AlphaNumeric_Field_Type : C_Field_Type;
+      pragma Import (C, C_AlphaNumeric_Field_Type, "TYPE_ALNUM");
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_AlphaNumeric_Field_Type;
+                             Arg1 : C_Int) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+   begin
+      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm new file mode 100644 index 0000000..596eef2 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm @@ -0,0 +1,60 @@ + +terminal_interface-curses-forms-field_types-alphanumeric.ads + +

File : terminal_interface-curses-forms-field_types-alphanumeric.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--          Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric        --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric);
+
+   type AlphaNumeric_Field is new Field_Type
+     with record
+        Minimum_Field_Width : Natural := 0;
+     end record;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in AlphaNumeric_Field);
+   pragma Inline (Set_Field_Type);
+
+end Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm new file mode 100644 index 0000000..587c393 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm @@ -0,0 +1,87 @@ + +terminal_interface-curses-forms-field_types-enumeration-ada.adb + +

File : terminal_interface-curses-forms-field_types-enumeration-ada.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--         Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada      --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2004 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  @Date: 2004/08/21 21:37:00 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Characters.Handling; use Ada.Characters.Handling;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is
+
+   function Create (Set            : Type_Set := Mixed_Case;
+                    Case_Sensitive : Boolean  := False;
+                    Must_Be_Unique : Boolean  := False)
+                    return Enumeration_Field
+   is
+      I : Enumeration_Info (T'Pos (T'Last) - T'Pos (T'First) + 1);
+      J : Positive := 1;
+   begin
+      I.Case_Sensitive := Case_Sensitive;
+      I.Match_Must_Be_Unique := Must_Be_Unique;
+
+      for E in T'Range loop
+         I.Names (J) := new String'(T'Image (E));
+         --  The Image attribute defaults to upper case, so we have to handle
+         --  only the other ones...
+         if Set /= Upper_Case then
+            I.Names (J).all := To_Lower (I.Names (J).all);
+            if Set = Mixed_Case then
+               I.Names (J)(I.Names (J).all'First) :=
+                 To_Upper (I.Names (J)(I.Names (J).all'First));
+            end if;
+         end if;
+         J := J + 1;
+      end loop;
+
+      return Create (I, True);
+   end Create;
+
+   function Value (Fld : Field;
+                   Buf : Buffer_Number := Buffer_Number'First) return T
+   is
+   begin
+      return T'Value (Get_Buffer (Fld, Buf));
+   end Value;
+
+end Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm new file mode 100644 index 0000000..cd2b4d6 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm @@ -0,0 +1,65 @@ + +terminal_interface-curses-forms-field_types-enumeration-ada.ads + +

File : terminal_interface-curses-forms-field_types-enumeration-ada.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--         Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada      --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type T is (<>);
+
+package Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada);
+
+   function Create (Set            : Type_Set := Mixed_Case;
+                    Case_Sensitive : Boolean  := False;
+                    Must_Be_Unique : Boolean  := False)
+                    return Enumeration_Field;
+
+   function Value (Fld : Field;
+                   Buf : Buffer_Number := Buffer_Number'First) return T;
+   --  Translate the content of the fields buffer - indicated by the
+   --  buffer number - into an enumeration value. If the buffer is empty
+   --  or the content is invalid, a Constraint_Error is raises.
+
+end Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm new file mode 100644 index 0000000..948aa3a --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm @@ -0,0 +1,125 @@ + +terminal_interface-curses-forms-field_types-enumeration.adb + +

File : terminal_interface-curses-forms-field_types-enumeration.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--          Terminal_Interface.Curses.Forms.Field_Types.Enumeration         --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.7 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Unchecked_Deallocation;
+with Interfaces.C; use Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
+
+   function Create (Info               : Enumeration_Info;
+                    Auto_Release_Names : Boolean := False)
+                    return Enumeration_Field
+   is
+      procedure Release_String is
+        new Ada.Unchecked_Deallocation (String,
+                                        String_Access);
+      E : Enumeration_Field;
+      L : constant size_t := 1 + size_t (Info.C);
+      S : String_Access;
+   begin
+      E.Case_Sensitive       := Info.Case_Sensitive;
+      E.Match_Must_Be_Unique := Info.Match_Must_Be_Unique;
+      E.Arr := new chars_ptr_array (size_t (1) .. L);
+      for I in 1 .. Positive (L - 1) loop
+         if Info.Names (I) = null then
+            raise Form_Exception;
+         end if;
+         E.Arr (size_t (I)) := New_String (Info.Names (I).all);
+         if Auto_Release_Names then
+            S := Info.Names (I);
+            Release_String (S);
+         end if;
+      end loop;
+      E.Arr (L) := Null_Ptr;
+      return E;
+   end Create;
+
+   procedure Release (Enum : in out Enumeration_Field)
+   is
+      I : size_t := 0;
+      P : chars_ptr;
+   begin
+      loop
+         P := Enum.Arr (I);
+         exit when P = Null_Ptr;
+         Free (P);
+         Enum.Arr (I) := Null_Ptr;
+         I := I + 1;
+      end loop;
+      Enum.Arr := null;
+   end Release;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Enumeration_Field)
+   is
+      C_Enum_Type : C_Field_Type;
+      pragma Import (C, C_Enum_Type, "TYPE_ENUM");
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_Enum_Type;
+                             Arg1 : chars_ptr_array;
+                             Arg2 : C_Int;
+                             Arg3 : C_Int) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+   begin
+      if Typ.Arr = null then
+         raise Form_Exception;
+      end if;
+      Res := Set_Fld_Type (Arg1 => Typ.Arr.all,
+                           Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)),
+                           Arg3 => C_Int (Boolean'Pos
+                                          (Typ.Match_Must_Be_Unique)));
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ, C_Choice_Router);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm new file mode 100644 index 0000000..1322bfe --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm @@ -0,0 +1,104 @@ + +terminal_interface-curses-forms-field_types-enumeration.ads + +

File : terminal_interface-curses-forms-field_types-enumeration.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--           Terminal_Interface.Curses.Forms.Field_Types.Enumeration        --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C.Strings;
+
+package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.Enumeration);
+
+   type String_Access is access String;
+
+   --  Type_Set is used by the child package Ada
+   type Type_Set is (Lower_Case, Upper_Case, Mixed_Case);
+
+   type Enum_Array is array (Positive range <>)
+     of String_Access;
+
+   type Enumeration_Info (C : Positive) is
+      record
+         Names                : Enum_Array (1 .. C);
+         Case_Sensitive       : Boolean := False;
+         Match_Must_Be_Unique : Boolean := False;
+      end record;
+
+   type Enumeration_Field is new Field_Type with private;
+
+   function Create (Info : Enumeration_Info;
+                    Auto_Release_Names : Boolean := False)
+                    return Enumeration_Field;
+   --  Make an fieldtype from the info. Enumerations are special, because
+   --  they normally don't copy the enum values into a private store, so
+   --  we have to care for the lifetime of the info we provide.
+   --  The Auto_Release_Names flag may be used to automatically releases
+   --  the strings in the Names array of the Enumeration_Info.
+
+   function Make_Enumeration_Type (Info : Enumeration_Info;
+                                   Auto_Release_Names : Boolean := False)
+                                   return Enumeration_Field renames Create;
+
+   procedure Release (Enum : in out Enumeration_Field);
+   --  But we may want to release the field to release the memory allocated
+   --  by it internally. After that the Enumeration field is no longer usable.
+
+   --  The next type defintions are all ncurses extensions. They are typically
+   --  not available in other curses implementations.
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Enumeration_Field);
+   pragma Inline (Set_Field_Type);
+
+private
+   type CPA_Access is access Interfaces.C.Strings.chars_ptr_array;
+
+   type Enumeration_Field is new Field_Type with
+      record
+         Case_Sensitive       : Boolean := False;
+         Match_Must_Be_Unique : Boolean := False;
+         Arr                  : CPA_Access := null;
+      end record;
+
+end Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm new file mode 100644 index 0000000..6bae149 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm @@ -0,0 +1,76 @@ + +terminal_interface-curses-forms-field_types-intfield.adb + +

File : terminal_interface-curses-forms-field_types-intfield.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--            Terminal_Interface.Curses.Forms.Field_Types.IntField          --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.9 @
+--  @Date: 2008/07/26 18:50:06 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.IntField is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Integer_Field)
+   is
+      C_Integer_Field_Type : C_Field_Type;
+      pragma Import (C, C_Integer_Field_Type, "TYPE_INTEGER");
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_Integer_Field_Type;
+                             Arg1 : C_Int;
+                             Arg2 : C_Long_Int;
+                             Arg3 : C_Long_Int) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+   begin
+      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
+                           Arg2 => C_Long_Int (Typ.Lower_Limit),
+                           Arg3 => C_Long_Int (Typ.Upper_Limit));
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.IntField;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm new file mode 100644 index 0000000..7db8a14 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm @@ -0,0 +1,61 @@ + +terminal_interface-curses-forms-field_types-intfield.ads + +

File : terminal_interface-curses-forms-field_types-intfield.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--            Terminal_Interface.Curses.Forms.Field_Types.IntField          --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface.Curses.Forms.Field_Types.IntField is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.IntField);
+
+   type Integer_Field is new Field_Type with
+      record
+         Precision   : Natural;
+         Lower_Limit : Integer;
+         Upper_Limit : Integer;
+      end record;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Integer_Field);
+   pragma Inline (Set_Field_Type);
+
+end Terminal_Interface.Curses.Forms.Field_Types.IntField;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm new file mode 100644 index 0000000..e684676 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm @@ -0,0 +1,72 @@ + +terminal_interface-curses-forms-field_types-ipv4_address.adb + +

File : terminal_interface-curses-forms-field_types-ipv4_address.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--          Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address        --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.9 @
+--  @Date: 2008/07/26 18:49:47 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Internet_V4_Address_Field)
+   is
+      C_IPV4_Field_Type : C_Field_Type;
+      pragma Import (C, C_IPV4_Field_Type, "TYPE_IPV4");
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_IPV4_Field_Type)
+                             return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+   begin
+      Res := Set_Fld_Type;
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm new file mode 100644 index 0000000..57bae18 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm @@ -0,0 +1,57 @@ + +terminal_interface-curses-forms-field_types-ipv4_address.ads + +

File : terminal_interface-curses-forms-field_types-ipv4_address.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--          Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address        --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address);
+
+   type Internet_V4_Address_Field is new Field_Type with null record;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Internet_V4_Address_Field);
+   pragma Inline (Set_Field_Type);
+
+end Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm new file mode 100644 index 0000000..115638f --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm @@ -0,0 +1,79 @@ + +terminal_interface-curses-forms-field_types-numeric.adb + +

File : terminal_interface-curses-forms-field_types-numeric.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--            Terminal_Interface.Curses.Forms.Field_Types.Numeric           --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  @Date: 2008/07/26 18:49:57 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Numeric_Field)
+   is
+      type Double is new Interfaces.C.double;
+
+      C_Numeric_Field_Type : C_Field_Type;
+      pragma Import (C, C_Numeric_Field_Type, "TYPE_NUMERIC");
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_Numeric_Field_Type;
+                             Arg1 : C_Int;
+                             Arg2 : Double;
+                             Arg3 : Double) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+   begin
+      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
+                           Arg2 => Double (Typ.Lower_Limit),
+                           Arg3 => Double (Typ.Upper_Limit));
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.Numeric;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm new file mode 100644 index 0000000..f261073 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm @@ -0,0 +1,61 @@ + +terminal_interface-curses-forms-field_types-numeric.ads + +

File : terminal_interface-curses-forms-field_types-numeric.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--             Terminal_Interface.Curses.Forms.Field_Types.Numeric          --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface.Curses.Forms.Field_Types.Numeric is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Numeric);
+
+   type Numeric_Field is new Field_Type with
+      record
+         Precision   : Natural;
+         Lower_Limit : Float;
+         Upper_Limit : Float;
+      end record;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Numeric_Field);
+   pragma Inline (Set_Field_Type);
+
+end Terminal_Interface.Curses.Forms.Field_Types.Numeric;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm new file mode 100644 index 0000000..96269a7 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm @@ -0,0 +1,77 @@ + +terminal_interface-curses-forms-field_types-regexp.adb + +

File : terminal_interface-curses-forms-field_types-regexp.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--             Terminal_Interface.Curses.Forms.Field_Types.RegExp           --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.8 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C; use Interfaces.C;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Regular_Expression_Field)
+   is
+      type Char_Ptr is access all Interfaces.C.char;
+
+      C_Regexp_Field_Type : C_Field_Type;
+      pragma Import (C, C_Regexp_Field_Type, "TYPE_REGEXP");
+
+      function Set_Ftyp (F    : Field := Fld;
+                         Cft  : C_Field_Type := C_Regexp_Field_Type;
+                         Arg1 : Char_Ptr) return C_Int;
+      pragma Import (C, Set_Ftyp, "set_field_type");
+
+      Txt : char_array (0 .. Typ.Regular_Expression.all'Length);
+      Len : size_t;
+      Res : Eti_Error;
+   begin
+      To_C (Typ.Regular_Expression.all, Txt, Len);
+      Res := Set_Ftyp (Arg1 => Txt (Txt'First)'Access);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Wrap_Builtin (Fld, Typ);
+   end Set_Field_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.RegExp;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm new file mode 100644 index 0000000..e54cb8c --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm @@ -0,0 +1,61 @@ + +terminal_interface-curses-forms-field_types-regexp.ads + +

File : terminal_interface-curses-forms-field_types-regexp.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--              Terminal_Interface.Curses.Forms.Field_Types.RegExp          --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface.Curses.Forms.Field_Types.RegExp is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.RegExp);
+
+   type String_Access is access String;
+
+   type Regular_Expression_Field is new Field_Type with
+      record
+         Regular_Expression : String_Access;
+      end record;
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in Regular_Expression_Field);
+   pragma Inline (Set_Field_Type);
+
+end Terminal_Interface.Curses.Forms.Field_Types.RegExp;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm new file mode 100644 index 0000000..170de3c --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm @@ -0,0 +1,116 @@ + +terminal_interface-curses-forms-field_types-user-choice.adb + +

File : terminal_interface-curses-forms-field_types-user-choice.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--          Terminal_Interface.Curses.Forms.Field_Types.User.Choice         --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.15 @
+--  @Date: 2008/07/26 18:48:58 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Unchecked_Conversion;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
+
+   pragma Warnings (Off);
+   function To_Argument_Access is new Ada.Unchecked_Conversion
+     (System.Address, Argument_Access);
+   pragma Warnings (On);
+
+   function Generic_Next (Fld : Field;
+                          Usr : System.Address) return C_Int
+   is
+      Result : Boolean;
+      Udf    : constant User_Defined_Field_Type_With_Choice_Access :=
+        User_Defined_Field_Type_With_Choice_Access
+        (To_Argument_Access (Usr).Typ);
+   begin
+      Result := Next (Fld, Udf.all);
+      return C_Int (Boolean'Pos (Result));
+   end Generic_Next;
+
+   function Generic_Prev (Fld : Field;
+                          Usr : System.Address) return C_Int
+   is
+      Result : Boolean;
+      Udf    : constant User_Defined_Field_Type_With_Choice_Access :=
+        User_Defined_Field_Type_With_Choice_Access
+        (To_Argument_Access (Usr).Typ);
+   begin
+      Result := Previous (Fld, Udf.all);
+      return C_Int (Boolean'Pos (Result));
+   end Generic_Prev;
+
+   --  -----------------------------------------------------------------------
+   --
+   function C_Generic_Choice return C_Field_Type
+   is
+      Res : Eti_Error;
+      T   : C_Field_Type;
+   begin
+      if M_Generic_Choice = Null_Field_Type then
+         T := New_Fieldtype (Generic_Field_Check'Access,
+                             Generic_Char_Check'Access);
+         if T = Null_Field_Type then
+            raise Form_Exception;
+         else
+            Res := Set_Fieldtype_Arg (T,
+                                      Make_Arg'Access,
+                                      Copy_Arg'Access,
+                                      Free_Arg'Access);
+            if Res /= E_Ok then
+               Eti_Exception (Res);
+            end if;
+
+            Res := Set_Fieldtype_Choice (T,
+                                         Generic_Next'Access,
+                                         Generic_Prev'Access);
+            if Res /= E_Ok then
+               Eti_Exception (Res);
+            end if;
+         end if;
+         M_Generic_Choice := T;
+      end if;
+      pragma Assert (M_Generic_Choice /= Null_Field_Type);
+      return M_Generic_Choice;
+   end C_Generic_Choice;
+
+end Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm new file mode 100644 index 0000000..7f39ab4 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm @@ -0,0 +1,100 @@ + +terminal_interface-curses-forms-field_types-user-choice.ads + +

File : terminal_interface-curses-forms-field_types-user-choice.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--           Terminal_Interface.Curses.Forms.Field_Types.User.Choice        --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.12 @
+--  @Date: 2008/07/26 18:49:20 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+
+package Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.User.Choice);
+
+   subtype C_Int is Interfaces.C.int;
+
+   type User_Defined_Field_Type_With_Choice is abstract new
+     User_Defined_Field_Type with null record;
+   --  This is the root of the mechanism we use to create field types in
+   --  Ada95 that allow the prev/next mechanism. You should your own type
+   --  derive from this one and implement the Field_Check, Character_Check
+   --  Next and Previous functions for your own type.
+
+   type User_Defined_Field_Type_With_Choice_Access is access all
+     User_Defined_Field_Type_With_Choice'Class;
+
+   function Next
+     (Fld : Field;
+      Typ : User_Defined_Field_Type_With_Choice) return Boolean
+      is abstract;
+   --  If True is returned, the function successfully generated a next
+   --  value into the fields buffer.
+
+   function Previous
+     (Fld : Field;
+      Typ : User_Defined_Field_Type_With_Choice) return Boolean
+      is abstract;
+   --  If True is returned, the function successfully generated a previous
+   --  value into the fields buffer.
+
+   --  +----------------------------------------------------------------------
+   --  | Private Part.
+   --  |
+private
+   function C_Generic_Choice return C_Field_Type;
+
+   function Generic_Next (Fld : Field;
+                          Usr : System.Address) return C_Int;
+   pragma Convention (C, Generic_Next);
+   --  This is the generic next Choice_Function for the low-level fieldtype
+   --  representing all the User_Defined_Field_Type derivates. It routes
+   --  the call to the Next implementation for the type.
+
+   function Generic_Prev (Fld : Field;
+                          Usr : System.Address) return C_Int;
+   pragma Convention (C, Generic_Prev);
+   --  This is the generic prev Choice_Function for the low-level fieldtype
+   --  representing all the User_Defined_Field_Type derivates. It routes
+   --  the call to the Previous implementation for the type.
+
+end Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm new file mode 100644 index 0000000..994307c --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm @@ -0,0 +1,139 @@ + +terminal_interface-curses-forms-field_types-user.adb + +

File : terminal_interface-curses-forms-field_types-user.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--              Terminal_Interface.Curses.Forms.Field_Types.User            --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.15 @
+--  @Date: 2008/07/26 18:49:28 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Unchecked_Conversion;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Field_Types.User is
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in User_Defined_Field_Type)
+   is
+      function Allocate_Arg (T : User_Defined_Field_Type'Class)
+                             return Argument_Access;
+
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_Generic_Type;
+                             Arg1 : Argument_Access)
+                             return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+      Res : Eti_Error;
+
+      function Allocate_Arg (T : User_Defined_Field_Type'Class)
+                             return Argument_Access
+      is
+         Ptr : constant Field_Type_Access
+             := new User_Defined_Field_Type'Class'(T);
+      begin
+         return new Argument'(Usr => System.Null_Address,
+                              Typ => Ptr,
+                              Cft => Null_Field_Type);
+      end Allocate_Arg;
+
+   begin
+      Res := Set_Fld_Type (Arg1 => Allocate_Arg (Typ));
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Field_Type;
+
+   pragma Warnings (Off);
+   function To_Argument_Access is new Ada.Unchecked_Conversion
+     (System.Address, Argument_Access);
+   pragma Warnings (On);
+
+   function Generic_Field_Check (Fld : Field;
+                                 Usr : System.Address) return C_Int
+   is
+      Result : Boolean;
+      Udf    : constant User_Defined_Field_Type_Access :=
+        User_Defined_Field_Type_Access (To_Argument_Access (Usr).Typ);
+   begin
+      Result := Field_Check (Fld, Udf.all);
+      return C_Int (Boolean'Pos (Result));
+   end Generic_Field_Check;
+
+   function Generic_Char_Check (Ch  : C_Int;
+                                Usr : System.Address) return C_Int
+   is
+      Result : Boolean;
+      Udf    : constant User_Defined_Field_Type_Access :=
+        User_Defined_Field_Type_Access (To_Argument_Access (Usr).Typ);
+   begin
+      Result := Character_Check (Character'Val (Ch), Udf.all);
+      return C_Int (Boolean'Pos (Result));
+   end Generic_Char_Check;
+
+   --  -----------------------------------------------------------------------
+   --
+   function C_Generic_Type return C_Field_Type
+   is
+      Res : Eti_Error;
+      T   : C_Field_Type;
+   begin
+      if M_Generic_Type = Null_Field_Type then
+         T := New_Fieldtype (Generic_Field_Check'Access,
+                             Generic_Char_Check'Access);
+         if T = Null_Field_Type then
+            raise Form_Exception;
+         else
+            Res := Set_Fieldtype_Arg (T,
+                                      Make_Arg'Access,
+                                      Copy_Arg'Access,
+                                      Free_Arg'Access);
+            if Res /= E_Ok then
+               Eti_Exception (Res);
+            end if;
+         end if;
+         M_Generic_Type := T;
+      end if;
+      pragma Assert (M_Generic_Type /= Null_Field_Type);
+      return M_Generic_Type;
+   end C_Generic_Type;
+
+end Terminal_Interface.Curses.Forms.Field_Types.User;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm new file mode 100644 index 0000000..faa2fc9 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm @@ -0,0 +1,101 @@ + +terminal_interface-curses-forms-field_types-user.ads + +

File : terminal_interface-curses-forms-field_types-user.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Forms.Field_Types.User           --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2008 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.12 @
+--  @Date: 2008/07/26 18:49:38 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+
+package Terminal_Interface.Curses.Forms.Field_Types.User is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.User);
+   subtype C_Int is Interfaces.C.int;
+
+   type User_Defined_Field_Type is abstract new Field_Type with null record;
+   --  This is the root of the mechanism we use to create field types in
+   --  Ada95. You should your own type derive from this one and implement
+   --  the Field_Check and Character_Check functions for your own type.
+
+   type User_Defined_Field_Type_Access is access all
+     User_Defined_Field_Type'Class;
+
+   function Field_Check
+     (Fld : Field;
+      Typ : User_Defined_Field_Type) return Boolean
+      is abstract;
+   --  If True is returned, the field is considered valid, otherwise it is
+   --  invalid.
+
+   function Character_Check
+     (Ch  : Character;
+      Typ : User_Defined_Field_Type) return Boolean
+      is abstract;
+   --  If True is returned, the character is considered as valid for the
+   --  field, otherwise as invalid.
+
+   procedure Set_Field_Type (Fld : in Field;
+                             Typ : in User_Defined_Field_Type);
+   --  This should work for all types derived from User_Defined_Field_Type.
+   --  No need to reimplement it for your derived type.
+
+   --  +----------------------------------------------------------------------
+   --  | Private Part.
+   --  | Used by the Choice child package.
+private
+   function C_Generic_Type   return C_Field_Type;
+
+   function Generic_Field_Check (Fld : Field;
+                                 Usr : System.Address) return C_Int;
+   pragma Convention (C, Generic_Field_Check);
+   --  This is the generic Field_Check_Function for the low-level fieldtype
+   --  representing all the User_Defined_Field_Type derivates. It routes
+   --  the call to the Field_Check implementation for the type.
+
+   function Generic_Char_Check (Ch  : C_Int;
+                                Usr : System.Address) return C_Int;
+   pragma Convention (C, Generic_Char_Check);
+   --  This is the generic Char_Check_Function for the low-level fieldtype
+   --  representing all the User_Defined_Field_Type derivates. It routes
+   --  the call to the Character_Check implementation for the type.
+
+end Terminal_Interface.Curses.Forms.Field_Types.User;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm new file mode 100644 index 0000000..4af3ca4 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm @@ -0,0 +1,302 @@ + +terminal_interface-curses-forms-field_types.adb + +

File : terminal_interface-curses-forms-field_types.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                 Terminal_Interface.Curses.Forms.Field_Types              --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.20 @
+--  @Date: 2008/07/26 18:50:33 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Ada.Unchecked_Deallocation;
+with Ada.Unchecked_Conversion;
+--  |
+--  |=====================================================================
+--  | man page form_fieldtype.3x
+--  |=====================================================================
+--  |
+package body Terminal_Interface.Curses.Forms.Field_Types is
+
+   use type System.Address;
+
+   pragma Warnings (Off);
+   function To_Argument_Access is new Ada.Unchecked_Conversion
+     (System.Address, Argument_Access);
+   pragma Warnings (On);
+
+   function Get_Fieldtype (F : Field) return C_Field_Type;
+   pragma Import (C, Get_Fieldtype, "field_type");
+
+   function Get_Arg (F : Field) return System.Address;
+   pragma Import (C, Get_Arg, "field_arg");
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_validation.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Get_Type (Fld : in Field) return Field_Type_Access
+   is
+      Low_Level : constant C_Field_Type := Get_Fieldtype (Fld);
+      Arg : Argument_Access;
+   begin
+      if Low_Level = Null_Field_Type then
+         return null;
+      else
+         if Low_Level = M_Builtin_Router or else
+           Low_Level = M_Generic_Type or else
+           Low_Level = M_Choice_Router or else
+           Low_Level = M_Generic_Choice then
+            Arg := To_Argument_Access (Get_Arg (Fld));
+            if Arg = null then
+               raise Form_Exception;
+            else
+               return Arg.Typ;
+            end if;
+         else
+            raise Form_Exception;
+         end if;
+      end if;
+   end Get_Type;
+
+   function Make_Arg (Args : System.Address) return System.Address
+   is
+      --  Actually args is a double indirected pointer to the arguments
+      --  of a C variable argument list. In theory it is now quite
+      --  complicated to write portable routine that reads the arguments,
+      --  because one has to know the growth direction of the stack and
+      --  the sizes of the individual arguments.
+      --  Fortunately we are only interested in the first argument (#0),
+      --  we know its size and for the first arg we don't care about
+      --  into which stack direction we have to proceed. We simply
+      --  resolve the double indirection and thats it.
+      type V is access all System.Address;
+      function To_Access is new Ada.Unchecked_Conversion (System.Address,
+                                                          V);
+   begin
+      return To_Access (To_Access (Args).all).all;
+   end Make_Arg;
+
+   function Copy_Arg (Usr : System.Address) return System.Address
+   is
+   begin
+      return Usr;
+   end Copy_Arg;
+
+   procedure Free_Arg (Usr : in System.Address)
+   is
+      procedure Free_Type is new Ada.Unchecked_Deallocation
+        (Field_Type'Class, Field_Type_Access);
+      procedure Freeargs is new Ada.Unchecked_Deallocation
+        (Argument, Argument_Access);
+
+      To_Be_Free : Argument_Access := To_Argument_Access (Usr);
+      Low_Level  : C_Field_Type;
+   begin
+      if To_Be_Free /= null then
+         if To_Be_Free.Usr /= System.Null_Address then
+            Low_Level := To_Be_Free.Cft;
+            if Low_Level.Freearg /= null then
+               Low_Level.Freearg (To_Be_Free.Usr);
+            end if;
+         end if;
+         if To_Be_Free.Typ /= null then
+            Free_Type (To_Be_Free.Typ);
+         end if;
+         Freeargs (To_Be_Free);
+      end if;
+   end Free_Arg;
+
+   procedure Wrap_Builtin (Fld : Field;
+                           Typ : Field_Type'Class;
+                           Cft : C_Field_Type := C_Builtin_Router)
+   is
+      Usr_Arg   : constant System.Address := Get_Arg (Fld);
+      Low_Level : constant C_Field_Type := Get_Fieldtype (Fld);
+      Arg : Argument_Access;
+      Res : Eti_Error;
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cf   : C_Field_Type := Cft;
+                             Arg1 : Argument_Access) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
+
+   begin
+      pragma Assert (Low_Level /= Null_Field_Type);
+      if Cft /= C_Builtin_Router and then Cft /= C_Choice_Router then
+         raise Form_Exception;
+      else
+         Arg := new Argument'(Usr => System.Null_Address,
+                              Typ => new Field_Type'Class'(Typ),
+                              Cft => Get_Fieldtype (Fld));
+         if Usr_Arg /= System.Null_Address then
+            if Low_Level.Copyarg /= null then
+               Arg.Usr := Low_Level.Copyarg (Usr_Arg);
+            else
+               Arg.Usr := Usr_Arg;
+            end if;
+         end if;
+
+         Res := Set_Fld_Type (Arg1 => Arg);
+         if Res /= E_Ok then
+            Eti_Exception (Res);
+         end if;
+      end if;
+   end Wrap_Builtin;
+
+   function Field_Check_Router (Fld : Field;
+                                Usr : System.Address) return C_Int
+   is
+      Arg  : constant Argument_Access := To_Argument_Access (Usr);
+   begin
+      pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type
+                     and then Arg.Typ /= null);
+      if Arg.Cft.Fcheck /= null then
+         return Arg.Cft.Fcheck (Fld, Arg.Usr);
+      else
+         return 1;
+      end if;
+   end Field_Check_Router;
+
+   function Char_Check_Router (Ch  : C_Int;
+                               Usr : System.Address) return C_Int
+   is
+      Arg  : constant Argument_Access := To_Argument_Access (Usr);
+   begin
+      pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type
+                     and then Arg.Typ /= null);
+      if Arg.Cft.Ccheck /= null then
+         return Arg.Cft.Ccheck (Ch, Arg.Usr);
+      else
+         return 1;
+      end if;
+   end Char_Check_Router;
+
+   function Next_Router (Fld : Field;
+                         Usr : System.Address) return C_Int
+   is
+      Arg  : constant Argument_Access := To_Argument_Access (Usr);
+   begin
+      pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type
+                     and then Arg.Typ /= null);
+      if Arg.Cft.Next /= null then
+         return Arg.Cft.Next (Fld, Arg.Usr);
+      else
+         return 1;
+      end if;
+   end Next_Router;
+
+   function Prev_Router (Fld : Field;
+                         Usr : System.Address) return C_Int
+   is
+      Arg  : constant Argument_Access := To_Argument_Access (Usr);
+   begin
+      pragma Assert (Arg /= null and then Arg.Cft /= Null_Field_Type
+                     and then Arg.Typ /= null);
+      if Arg.Cft.Prev /= null then
+         return Arg.Cft.Prev (Fld, Arg.Usr);
+      else
+         return 1;
+      end if;
+   end Prev_Router;
+
+   --  -----------------------------------------------------------------------
+   --
+   function C_Builtin_Router return C_Field_Type
+   is
+      Res : Eti_Error;
+      T   : C_Field_Type;
+   begin
+      if M_Builtin_Router = Null_Field_Type then
+         T := New_Fieldtype (Field_Check_Router'Access,
+                             Char_Check_Router'Access);
+         if T = Null_Field_Type then
+            raise Form_Exception;
+         else
+            Res := Set_Fieldtype_Arg (T,
+                                      Make_Arg'Access,
+                                      Copy_Arg'Access,
+                                      Free_Arg'Access);
+            if Res /= E_Ok then
+               Eti_Exception (Res);
+            end if;
+         end if;
+         M_Builtin_Router := T;
+      end if;
+      pragma Assert (M_Builtin_Router /= Null_Field_Type);
+      return M_Builtin_Router;
+   end C_Builtin_Router;
+
+   --  -----------------------------------------------------------------------
+   --
+   function C_Choice_Router return C_Field_Type
+   is
+      Res : Eti_Error;
+      T   : C_Field_Type;
+   begin
+      if M_Choice_Router = Null_Field_Type then
+         T := New_Fieldtype (Field_Check_Router'Access,
+                             Char_Check_Router'Access);
+         if T = Null_Field_Type then
+            raise Form_Exception;
+         else
+            Res := Set_Fieldtype_Arg (T,
+                                      Make_Arg'Access,
+                                      Copy_Arg'Access,
+                                      Free_Arg'Access);
+            if Res /= E_Ok then
+               Eti_Exception (Res);
+            end if;
+
+            Res := Set_Fieldtype_Choice (T,
+                                         Next_Router'Access,
+                                         Prev_Router'Access);
+            if Res /= E_Ok then
+               Eti_Exception (Res);
+            end if;
+         end if;
+         M_Choice_Router := T;
+      end if;
+      pragma Assert (M_Choice_Router /= Null_Field_Type);
+      return M_Choice_Router;
+   end C_Choice_Router;
+
+end Terminal_Interface.Curses.Forms.Field_Types;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm new file mode 100644 index 0000000..03220c5 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm @@ -0,0 +1,245 @@ + +terminal_interface-curses-forms-field_types.ads + +

File : terminal_interface-curses-forms-field_types.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                 Terminal_Interface.Curses.Forms.Field_Types              --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.14 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+
+package Terminal_Interface.Curses.Forms.Field_Types is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
+   use type Interfaces.C.int;
+   subtype C_Int is Interfaces.C.int;
+
+   --  |=====================================================================
+   --  | Man page form_fieldtype.3x
+   --  |=====================================================================
+
+   type Field_Type is abstract tagged null record;
+   --  Abstract base type for all field types. A concrete field type
+   --  is an extension that adds some data elements describing formats or
+   --  boundary values for the type and validation routines.
+   --  For the builtin low-level fieldtypes, the validation routines are
+   --  already defined by the low-level C library.
+   --  The builtin types like Alpha or AlphaNumeric etc. are defined in
+   --  child packages of this package. You may use one of them as example
+   --  how to create you own child packages for low-level field types that
+   --  you may have already written in C.
+
+   type Field_Type_Access is access all Field_Type'Class;
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Set_Field_Type (Fld      : in Field;
+                             Fld_Type : in Field_Type) is abstract;
+   --  AKA: set_field_type()
+   --  But: we hide the vararg mechanism of the C interface. You always
+   --       have to pass a single Field_Type parameter.
+
+   --  ---------------------------------------------------------------------
+
+   --  |=====================================================================
+   --  | Man page form_field_validation.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_2"#2|
+   function Get_Type (Fld : in Field) return Field_Type_Access;
+   --  AKA: field_type()
+   --  AKA: field_arg()
+   --  In Ada95 we can combine these. If you try to retrieve the field type
+   --  that is not defined as extension of the abstract tagged type above,
+   --  you will raise a Form_Exception.
+   --  This is not inlined
+
+   --  +----------------------------------------------------------------------
+   --  | Private Part.
+   --  | Most of this is used by the implementations of the child packages.
+   --  |
+private
+   type Makearg_Function is access
+     function (Args : System.Address) return System.Address;
+   pragma Convention (C, Makearg_Function);
+
+   type Copyarg_Function is access
+     function (Usr : System.Address) return System.Address;
+   pragma Convention (C, Copyarg_Function);
+
+   type Freearg_Function is access
+     procedure (Usr : System.Address);
+   pragma Convention (C, Freearg_Function);
+
+   type Field_Check_Function is access
+     function (Fld : Field; Usr : System.Address) return C_Int;
+   pragma Convention (C, Field_Check_Function);
+
+   type Char_Check_Function is access
+     function (Ch : C_Int; Usr : System.Address) return C_Int;
+   pragma Convention (C, Char_Check_Function);
+
+   type Choice_Function is access
+     function (Fld : Field; Usr : System.Address) return C_Int;
+   pragma Convention (C, Choice_Function);
+
+   --  +----------------------------------------------------------------------
+   --  | This must be in sync with the FIELDTYPE structure in form.h
+   --  |
+   type Low_Level_Field_Type is
+      record
+         Status :              Interfaces.C.short;
+         Ref_Count :           Interfaces.C.long;
+         Left, Right :         System.Address;
+         Makearg :             Makearg_Function;
+         Copyarg :             Copyarg_Function;
+         Freearg :             Freearg_Function;
+         Fcheck :              Field_Check_Function;
+         Ccheck :              Char_Check_Function;
+         Next, Prev :          Choice_Function;
+      end record;
+   pragma Convention (C, Low_Level_Field_Type);
+   type C_Field_Type is access all Low_Level_Field_Type;
+
+   Null_Field_Type   : constant C_Field_Type := null;
+
+   --  +----------------------------------------------------------------------
+   --  | This four low-level fieldtypes are the ones associated with
+   --  | fieldtypes handled by this binding. Any other low-level fieldtype
+   --  | will result in a Form_Exception is function Get_Type.
+   --  |
+   M_Generic_Type   : C_Field_Type := null;
+   M_Generic_Choice : C_Field_Type := null;
+   M_Builtin_Router : C_Field_Type := null;
+   M_Choice_Router  : C_Field_Type := null;
+
+   --  Two wrapper functions to access those low-level fieldtypes defined
+   --  in this package.
+   function C_Builtin_Router return C_Field_Type;
+   function C_Choice_Router  return C_Field_Type;
+
+   procedure Wrap_Builtin (Fld : Field;
+                           Typ : Field_Type'Class;
+                           Cft : C_Field_Type := C_Builtin_Router);
+   --  This procedure has to be called by the Set_Field_Type implementation
+   --  for builtin low-level fieldtypes to replace it by an Ada95
+   --  conformant Field_Type object.
+   --  The parameter Cft must be C_Builtin_Router for regular low-level
+   --  fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for
+   --  low-level fieldtypes witch choice functions (like TYP_ENUM).
+   --  Any other value will raise a Form_Exception.
+
+   function Make_Arg (Args : System.Address) return System.Address;
+   pragma Convention (C, Make_Arg);
+   --  This is the Makearg_Function for the internal low-level types
+   --  introduced by this binding.
+
+   function Copy_Arg (Usr : System.Address) return System.Address;
+   pragma Convention (C, Copy_Arg);
+   --  This is the Copyarg_Function for the internal low-level types
+   --  introduced by this binding.
+
+   procedure Free_Arg (Usr : System.Address);
+   pragma Convention (C, Free_Arg);
+   --  This is the Freearg_Function for the internal low-level types
+   --  introduced by this binding.
+
+   function Field_Check_Router (Fld : Field;
+                                Usr : System.Address) return C_Int;
+   pragma Convention (C, Field_Check_Router);
+   --  This is the Field_Check_Function for the internal low-level types
+   --  introduced to wrap the low-level types by a Field_Type derived
+   --  type. It routes the call to the corresponding low-level validation
+   --  function.
+
+   function Char_Check_Router (Ch : C_Int;
+                               Usr : System.Address) return C_Int;
+   pragma Convention (C, Char_Check_Router);
+   --  This is the Char_Check_Function for the internal low-level types
+   --  introduced to wrap the low-level types by a Field_Type derived
+   --  type. It routes the call to the corresponding low-level validation
+   --  function.
+
+   function Next_Router (Fld : Field;
+                         Usr : System.Address) return C_Int;
+   pragma Convention (C, Next_Router);
+   --  This is the Choice_Function for the internal low-level types
+   --  introduced to wrap the low-level types by a Field_Type derived
+   --  type. It routes the call to the corresponding low-level next_choice
+   --  function.
+
+   function Prev_Router (Fld : Field;
+                         Usr : System.Address) return C_Int;
+   pragma Convention (C, Prev_Router);
+   --  This is the Choice_Function for the internal low-level types
+   --  introduced to wrap the low-level types by a Field_Type derived
+   --  type. It routes the call to the corresponding low-level prev_choice
+   --  function.
+
+   --  This is the Argument structure maintained by all low-level field types
+   --  introduced by this binding.
+   type Argument is record
+      Typ : Field_Type_Access;   --  the Field_Type creating this record
+      Usr : System.Address;      --  original arg for builtin low-level types
+      Cft : C_Field_Type;        --  the original low-level type
+   end record;
+   type Argument_Access is access all Argument;
+
+   --  +----------------------------------------------------------------------
+   --  |
+   --  | Some Imports of libform routines to deal with low-level fieldtypes.
+   --  |
+   function New_Fieldtype (Fcheck : Field_Check_Function;
+                           Ccheck : Char_Check_Function)
+     return C_Field_Type;
+   pragma Import (C, New_Fieldtype, "new_fieldtype");
+
+   function Set_Fieldtype_Arg (Cft : C_Field_Type;
+                               Mak : Makearg_Function := Make_Arg'Access;
+                               Cop : Copyarg_Function := Copy_Arg'Access;
+                               Fre : Freearg_Function := Free_Arg'Access)
+     return C_Int;
+   pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
+
+   function Set_Fieldtype_Choice (Cft : C_Field_Type;
+                                  Next, Prev : Choice_Function)
+     return C_Int;
+   pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
+
+end Terminal_Interface.Curses.Forms.Field_Types;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm new file mode 100644 index 0000000..6bf72eb --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm @@ -0,0 +1,91 @@ + +terminal_interface-curses-forms-field_user_data.adb + +

File : terminal_interface-curses-forms-field_user_data.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Forms.Field_User_Data            --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.12 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use  Terminal_Interface.Curses.Aux;
+
+--  |
+--  |=====================================================================
+--  | man page form_field_userptr.3x
+--  |=====================================================================
+--  |
+package body Terminal_Interface.Curses.Forms.Field_User_Data is
+   --  |
+   --  |
+   --  |
+   use type Interfaces.C.int;
+
+   procedure Set_User_Data (Fld  : in Field;
+                            Data : in User_Access)
+   is
+      function Set_Field_Userptr (Fld : Field;
+                                  Usr : User_Access) return C_Int;
+      pragma Import (C, Set_Field_Userptr, "set_field_userptr");
+
+      Res : constant Eti_Error := Set_Field_Userptr (Fld, Data);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_User_Data;
+   --  |
+   --  |
+   --  |
+   function Get_User_Data (Fld  : in  Field) return User_Access
+   is
+      function Field_Userptr (Fld : Field) return User_Access;
+      pragma Import (C, Field_Userptr, "field_userptr");
+   begin
+      return Field_Userptr (Fld);
+   end Get_User_Data;
+
+   procedure Get_User_Data (Fld  : in  Field;
+                            Data : out User_Access)
+   is
+   begin
+      Data := Get_User_Data (Fld);
+   end Get_User_Data;
+
+end Terminal_Interface.Curses.Forms.Field_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm new file mode 100644 index 0000000..16f8851 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm @@ -0,0 +1,75 @@ + +terminal_interface-curses-forms-field_user_data.ads + +

File : terminal_interface-curses-forms-field_user_data.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Forms.Field_User_Data            --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.15 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+generic
+   type User is limited private;
+   type User_Access is access User;
+package Terminal_Interface.Curses.Forms.Field_User_Data is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_User_Data);
+
+   --  |=====================================================================
+   --  | Man page form_field_userptr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Set_User_Data (Fld  : in Field;
+                            Data : in User_Access);
+   --  AKA: set_field_userptr
+   pragma Inline (Set_User_Data);
+
+   --  #1A NAME="AFU_2"#2|
+   procedure Get_User_Data (Fld  : in  Field;
+                            Data : out User_Access);
+   --  AKA: field_userptr
+
+   --  #1A NAME="AFU_3"#2|
+   function Get_User_Data (Fld  : in  Field) return User_Access;
+   --  AKA: field_userptr
+   --  Sama as function
+   pragma Inline (Get_User_Data);
+
+end Terminal_Interface.Curses.Forms.Field_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm new file mode 100644 index 0000000..51b7288 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm @@ -0,0 +1,92 @@ + +terminal_interface-curses-forms-form_user_data.adb + +

File : terminal_interface-curses-forms-form_user_data.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                Terminal_Interface.Curses.Forms.Form_User_Data            --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.12 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  |
+--  |=====================================================================
+--  | man page form__userptr.3x
+--  |=====================================================================
+--  |
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms.Form_User_Data is
+
+   use type Interfaces.C.int;
+
+   --  |
+   --  |
+   --  |
+   procedure Set_User_Data (Frm  : in Form;
+                            Data : in User_Access)
+   is
+      function Set_Form_Userptr (Frm  : Form;
+                                 Data : User_Access)  return C_Int;
+      pragma Import (C, Set_Form_Userptr, "set_form_userptr");
+
+      Res : constant Eti_Error := Set_Form_Userptr (Frm, Data);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_User_Data;
+   --  |
+   --  |
+   --  |
+   function Get_User_Data (Frm  : in  Form) return User_Access
+   is
+      function Form_Userptr (Frm : Form) return User_Access;
+      pragma Import (C, Form_Userptr, "form_userptr");
+   begin
+      return Form_Userptr (Frm);
+   end Get_User_Data;
+
+   procedure Get_User_Data (Frm  : in  Form;
+                            Data : out User_Access)
+   is
+   begin
+      Data := Get_User_Data (Frm);
+   end Get_User_Data;
+
+end Terminal_Interface.Curses.Forms.Form_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm new file mode 100644 index 0000000..89b3220 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm @@ -0,0 +1,75 @@ + +terminal_interface-curses-forms-form_user_data.ads + +

File : terminal_interface-curses-forms-form_user_data.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                Terminal_Interface.Curses.Forms.Form_User_Data            --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.14 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+generic
+   type User is limited private;
+   type User_Access is access User;
+package Terminal_Interface.Curses.Forms.Form_User_Data is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Form_User_Data);
+
+   --  |=====================================================================
+   --  | Man page form_userptr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Set_User_Data (Frm  : in Form;
+                            Data : in User_Access);
+   --  AKA: set_form_userptr
+   pragma Inline (Set_User_Data);
+
+   --  #1A NAME="AFU_2"#2|
+   procedure Get_User_Data (Frm  : in  Form;
+                            Data : out User_Access);
+   --  AKA: form_userptr
+
+   --  #1A NAME="AFU_3"#2|
+   function Get_User_Data (Frm  : in  Form) return User_Access;
+   --  AKA: form_userptr
+   --  Same as function
+   pragma Inline (Get_User_Data);
+
+end Terminal_Interface.Curses.Forms.Form_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms__adb.htm new file mode 100644 index 0000000..39f6467 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms__adb.htm @@ -0,0 +1,1167 @@ + +terminal_interface-curses-forms.adb + +

File : terminal_interface-curses-forms.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Forms                     --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.26 @
+--  @Date: 2008/07/26 18:50:44 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Unchecked_Deallocation;
+with Ada.Unchecked_Conversion;
+
+with Interfaces.C; use Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Interfaces.C.Pointers;
+
+with Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Forms is
+
+   use Terminal_Interface.Curses.Aux;
+
+   type C_Field_Array is array (Natural range <>) of aliased Field;
+   package F_Array is new
+     Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field);
+
+------------------------------------------------------------------------------
+   --  |
+   --  |
+   --  |
+   --  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
+
+   function FOS_2_CInt is new
+     Ada.Unchecked_Conversion (Field_Option_Set,
+                               C_Int);
+
+   function CInt_2_FOS is new
+     Ada.Unchecked_Conversion (C_Int,
+                               Field_Option_Set);
+
+   function FrmOS_2_CInt is new
+     Ada.Unchecked_Conversion (Form_Option_Set,
+                               C_Int);
+
+   function CInt_2_FrmOS is new
+     Ada.Unchecked_Conversion (C_Int,
+                               Form_Option_Set);
+
+   procedure Request_Name (Key  : in Form_Request_Code;
+                                Name : out String)
+   is
+      function Form_Request_Name (Key : C_Int) return chars_ptr;
+      pragma Import (C, Form_Request_Name, "form_request_name");
+   begin
+      Fill_String (Form_Request_Name (C_Int (Key)), Name);
+   end Request_Name;
+
+   function Request_Name (Key : Form_Request_Code) return String
+   is
+      function Form_Request_Name (Key : C_Int) return chars_ptr;
+      pragma Import (C, Form_Request_Name, "form_request_name");
+   begin
+      return Fill_String (Form_Request_Name (C_Int (Key)));
+   end Request_Name;
+------------------------------------------------------------------------------
+   --  |
+   --  |
+   --  |
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_new.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Create (Height       : Line_Count;
+                    Width        : Column_Count;
+                    Top          : Line_Position;
+                    Left         : Column_Position;
+                    Off_Screen   : Natural := 0;
+                    More_Buffers : Buffer_Number := Buffer_Number'First)
+                    return Field
+   is
+      function Newfield (H, W, T, L, O, M : C_Int) return Field;
+      pragma Import (C, Newfield, "new_field");
+      Fld : constant Field := Newfield (C_Int (Height), C_Int (Width),
+                                        C_Int (Top), C_Int (Left),
+                                        C_Int (Off_Screen),
+                                        C_Int (More_Buffers));
+   begin
+      if Fld = Null_Field then
+         raise Form_Exception;
+      end if;
+      return Fld;
+   end Create;
+--  |
+--  |
+--  |
+   procedure Delete (Fld : in out Field)
+   is
+      function Free_Field (Fld : Field) return C_Int;
+      pragma Import (C, Free_Field, "free_field");
+
+      Res : Eti_Error;
+   begin
+      Res := Free_Field (Fld);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Fld := Null_Field;
+   end Delete;
+   --  |
+   --  |
+   --  |
+   function Duplicate (Fld  : Field;
+                       Top  : Line_Position;
+                       Left : Column_Position) return Field
+   is
+      function Dup_Field (Fld  : Field;
+                          Top  : C_Int;
+                          Left : C_Int) return Field;
+      pragma Import (C, Dup_Field, "dup_field");
+
+      F : constant Field := Dup_Field (Fld,
+                                       C_Int (Top),
+                                       C_Int (Left));
+   begin
+      if F = Null_Field then
+         raise Form_Exception;
+      end if;
+      return F;
+   end Duplicate;
+   --  |
+   --  |
+   --  |
+   function Link (Fld  : Field;
+                  Top  : Line_Position;
+                  Left : Column_Position) return Field
+   is
+      function Lnk_Field (Fld  : Field;
+                          Top  : C_Int;
+                          Left : C_Int) return Field;
+      pragma Import (C, Lnk_Field, "link_field");
+
+      F : constant Field := Lnk_Field (Fld,
+                                       C_Int (Top),
+                                       C_Int (Left));
+   begin
+      if F = Null_Field then
+         raise Form_Exception;
+      end if;
+      return F;
+   end Link;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_just.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Justification (Fld  : in Field;
+                                Just : in Field_Justification := None)
+   is
+      function Set_Field_Just (Fld  : Field;
+                               Just : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Just, "set_field_just");
+
+      Res : constant Eti_Error :=
+        Set_Field_Just (Fld,
+                        C_Int (Field_Justification'Pos (Just)));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Justification;
+   --  |
+   --  |
+   --  |
+   function Get_Justification (Fld : Field) return Field_Justification
+   is
+      function Field_Just (Fld : Field) return C_Int;
+      pragma Import (C, Field_Just, "field_just");
+   begin
+      return Field_Justification'Val (Field_Just (Fld));
+   end Get_Justification;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_buffer.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Buffer
+     (Fld    : in Field;
+      Buffer : in Buffer_Number := Buffer_Number'First;
+      Str    : in String)
+   is
+      type Char_Ptr is access all Interfaces.C.char;
+      function Set_Fld_Buffer (Fld    : Field;
+                                 Bufnum : C_Int;
+                                 S      : Char_Ptr)
+        return C_Int;
+      pragma Import (C, Set_Fld_Buffer, "set_field_buffer");
+
+      Txt : char_array (0 .. Str'Length);
+      Len : size_t;
+      Res : Eti_Error;
+   begin
+      To_C (Str, Txt, Len);
+      Res := Set_Fld_Buffer (Fld, C_Int (Buffer), Txt (Txt'First)'Access);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Buffer;
+   --  |
+   --  |
+   --  |
+   procedure Get_Buffer
+     (Fld    : in Field;
+      Buffer : in Buffer_Number := Buffer_Number'First;
+      Str    : out String)
+   is
+      function Field_Buffer (Fld : Field;
+                             B   : C_Int) return chars_ptr;
+      pragma Import (C, Field_Buffer, "field_buffer");
+   begin
+      Fill_String (Field_Buffer (Fld, C_Int (Buffer)), Str);
+   end Get_Buffer;
+
+   function Get_Buffer
+     (Fld    : in Field;
+      Buffer : in Buffer_Number := Buffer_Number'First) return String
+   is
+      function Field_Buffer (Fld : Field;
+                             B   : C_Int) return chars_ptr;
+      pragma Import (C, Field_Buffer, "field_buffer");
+   begin
+      return Fill_String (Field_Buffer (Fld, C_Int (Buffer)));
+   end Get_Buffer;
+   --  |
+   --  |
+   --  |
+   procedure Set_Status (Fld    : in Field;
+                         Status : in Boolean := True)
+   is
+      function Set_Fld_Status (Fld : Field;
+                               St  : C_Int) return C_Int;
+      pragma Import (C, Set_Fld_Status, "set_field_status");
+
+      Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status));
+   begin
+      if Res /= E_Ok then
+         raise Form_Exception;
+      end if;
+   end Set_Status;
+   --  |
+   --  |
+   --  |
+   function Changed (Fld : Field) return Boolean
+   is
+      function Field_Status (Fld : Field) return C_Int;
+      pragma Import (C, Field_Status, "field_status");
+
+      Res : constant C_Int := Field_Status (Fld);
+   begin
+      if Res = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Changed;
+   --  |
+   --  |
+   --  |
+   procedure Set_Maximum_Size (Fld : in Field;
+                               Max : in Natural := 0)
+   is
+      function Set_Field_Max (Fld : Field;
+                              M   : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Max, "set_max_field");
+
+      Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Maximum_Size;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_opts.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Options (Fld     : in Field;
+                          Options : in Field_Option_Set)
+   is
+      function Set_Field_Opts (Fld : Field;
+                               Opt : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Opts, "set_field_opts");
+
+      Opt : constant C_Int := FOS_2_CInt (Options);
+      Res : Eti_Error;
+   begin
+      Res := Set_Field_Opts (Fld, Opt);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Options;
+   --  |
+   --  |
+   --  |
+   procedure Switch_Options (Fld     : in Field;
+                             Options : in Field_Option_Set;
+                             On      : Boolean := True)
+   is
+      function Field_Opts_On (Fld : Field;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Field_Opts_On, "field_opts_on");
+      function Field_Opts_Off (Fld : Field;
+                               Opt : C_Int) return C_Int;
+      pragma Import (C, Field_Opts_Off, "field_opts_off");
+
+      Err : Eti_Error;
+      Opt : constant C_Int := FOS_2_CInt (Options);
+   begin
+      if On then
+         Err := Field_Opts_On (Fld, Opt);
+      else
+         Err := Field_Opts_Off (Fld, Opt);
+      end if;
+      if Err /= E_Ok then
+         Eti_Exception (Err);
+      end if;
+   end Switch_Options;
+   --  |
+   --  |
+   --  |
+   procedure Get_Options (Fld     : in  Field;
+                          Options : out Field_Option_Set)
+   is
+      function Field_Opts (Fld : Field) return C_Int;
+      pragma Import (C, Field_Opts, "field_opts");
+
+      Res : constant C_Int := Field_Opts (Fld);
+   begin
+      Options := CInt_2_FOS (Res);
+   end Get_Options;
+   --  |
+   --  |
+   --  |
+   function Get_Options (Fld : Field := Null_Field)
+                         return Field_Option_Set
+   is
+      Fos : Field_Option_Set;
+   begin
+      Get_Options (Fld, Fos);
+      return Fos;
+   end Get_Options;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_attributes.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Foreground
+     (Fld   : in Field;
+      Fore  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Set_Field_Fore (Fld  : Field;
+                               Attr : C_Chtype) return C_Int;
+      pragma Import (C, Set_Field_Fore, "set_field_fore");
+
+      Ch : constant Attributed_Character := (Ch    => Character'First,
+                                             Color => Color,
+                                             Attr  => Fore);
+      Res : constant Eti_Error :=
+        Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Foreground;
+   --  |
+   --  |
+   --  |
+   procedure Foreground (Fld  : in  Field;
+                         Fore : out Character_Attribute_Set)
+   is
+      function Field_Fore (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Fore, "field_fore");
+   begin
+      Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+   end Foreground;
+
+   procedure Foreground (Fld   : in  Field;
+                         Fore  : out Character_Attribute_Set;
+                         Color : out Color_Pair)
+   is
+      function Field_Fore (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Fore, "field_fore");
+   begin
+      Fore  := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+      Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
+   end Foreground;
+   --  |
+   --  |
+   --  |
+   procedure Set_Background
+     (Fld   : in Field;
+      Back  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Set_Field_Back (Fld  : Field;
+                               Attr : C_Chtype) return C_Int;
+      pragma Import (C, Set_Field_Back, "set_field_back");
+
+      Ch : constant Attributed_Character := (Ch    => Character'First,
+                                             Color => Color,
+                                             Attr  => Back);
+      Res : constant Eti_Error :=
+        Set_Field_Back (Fld, AttrChar_To_Chtype (Ch));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Background;
+   --  |
+   --  |
+   --  |
+   procedure Background (Fld  : in  Field;
+                         Back : out Character_Attribute_Set)
+   is
+      function Field_Back (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Back, "field_back");
+   begin
+      Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+   end Background;
+
+   procedure Background (Fld   : in  Field;
+                         Back  : out Character_Attribute_Set;
+                         Color : out Color_Pair)
+   is
+      function Field_Back (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Back, "field_back");
+   begin
+      Back  := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+      Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
+   end Background;
+   --  |
+   --  |
+   --  |
+   procedure Set_Pad_Character (Fld : in Field;
+                                Pad : in Character := Space)
+   is
+      function Set_Field_Pad (Fld : Field;
+                              Ch  : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Pad, "set_field_pad");
+
+      Res : constant Eti_Error := Set_Field_Pad (Fld,
+                                                 C_Int (Character'Pos (Pad)));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Pad_Character;
+   --  |
+   --  |
+   --  |
+   procedure Pad_Character (Fld : in  Field;
+                            Pad : out Character)
+   is
+      function Field_Pad (Fld : Field) return C_Int;
+      pragma Import (C, Field_Pad, "field_pad");
+   begin
+      Pad := Character'Val (Field_Pad (Fld));
+   end Pad_Character;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_info.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Info (Fld                : in  Field;
+                   Lines              : out Line_Count;
+                   Columns            : out Column_Count;
+                   First_Row          : out Line_Position;
+                   First_Column       : out Column_Position;
+                   Off_Screen         : out Natural;
+                   Additional_Buffers : out Buffer_Number)
+   is
+      type C_Int_Access is access all C_Int;
+      function Fld_Info (Fld : Field;
+                         L, C, Fr, Fc, Os, Ab : C_Int_Access)
+                         return C_Int;
+      pragma Import (C, Fld_Info, "field_info");
+
+      L, C, Fr, Fc, Os, Ab : aliased C_Int;
+      Res : constant Eti_Error := Fld_Info (Fld,
+                                            L'Access, C'Access,
+                                            Fr'Access, Fc'Access,
+                                            Os'Access, Ab'Access);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      else
+         Lines              := Line_Count (L);
+         Columns            := Column_Count (C);
+         First_Row          := Line_Position (Fr);
+         First_Column       := Column_Position (Fc);
+         Off_Screen         := Natural (Os);
+         Additional_Buffers := Buffer_Number (Ab);
+      end if;
+   end Info;
+--  |
+--  |
+--  |
+   procedure Dynamic_Info (Fld     : in Field;
+                           Lines   : out Line_Count;
+                           Columns : out Column_Count;
+                           Max     : out Natural)
+   is
+      type C_Int_Access is access all C_Int;
+      function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int;
+      pragma Import (C, Dyn_Info, "dynamic_field_info");
+
+      L, C, M : aliased C_Int;
+      Res : constant Eti_Error := Dyn_Info (Fld,
+                                            L'Access, C'Access,
+                                            M'Access);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      else
+         Lines   := Line_Count (L);
+         Columns := Column_Count (C);
+         Max     := Natural (M);
+      end if;
+   end Dynamic_Info;
+   --  |
+   --  |=====================================================================
+   --  | man page form_win.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Window (Frm : in Form;
+                         Win : in Window)
+   is
+      function Set_Form_Win (Frm : Form;
+                             Win : Window) return C_Int;
+      pragma Import (C, Set_Form_Win, "set_form_win");
+
+      Res : constant Eti_Error := Set_Form_Win (Frm, Win);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Window;
+   --  |
+   --  |
+   --  |
+   function Get_Window (Frm : Form) return Window
+   is
+      function Form_Win (Frm : Form) return Window;
+      pragma Import (C, Form_Win, "form_win");
+
+      W : constant Window := Form_Win (Frm);
+   begin
+      return W;
+   end Get_Window;
+   --  |
+   --  |
+   --  |
+   procedure Set_Sub_Window (Frm : in Form;
+                             Win : in Window)
+   is
+      function Set_Form_Sub (Frm : Form;
+                             Win : Window) return C_Int;
+      pragma Import (C, Set_Form_Sub, "set_form_sub");
+
+      Res : constant Eti_Error := Set_Form_Sub (Frm, Win);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Sub_Window;
+   --  |
+   --  |
+   --  |
+   function Get_Sub_Window (Frm : Form) return Window
+   is
+      function Form_Sub (Frm : Form) return Window;
+      pragma Import (C, Form_Sub, "form_sub");
+
+      W : constant Window := Form_Sub (Frm);
+   begin
+      return W;
+   end Get_Sub_Window;
+   --  |
+   --  |
+   --  |
+   procedure Scale (Frm     : in Form;
+                    Lines   : out Line_Count;
+                    Columns : out Column_Count)
+   is
+      type C_Int_Access is access all C_Int;
+      function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int;
+      pragma Import (C, M_Scale, "scale_form");
+
+      X, Y : aliased C_Int;
+      Res  : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Lines := Line_Count (Y);
+      Columns := Column_Count (X);
+   end Scale;
+   --  |
+   --  |=====================================================================
+   --  | man page menu_hook.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Field_Init_Hook (Frm  : in Form;
+                                  Proc : in Form_Hook_Function)
+   is
+      function Set_Field_Init (Frm  : Form;
+                               Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Field_Init, "set_field_init");
+
+      Res : constant Eti_Error := Set_Field_Init (Frm, Proc);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Field_Init_Hook;
+   --  |
+   --  |
+   --  |
+   procedure Set_Field_Term_Hook (Frm  : in Form;
+                                  Proc : in Form_Hook_Function)
+   is
+      function Set_Field_Term (Frm  : Form;
+                               Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Field_Term, "set_field_term");
+
+      Res : constant Eti_Error := Set_Field_Term (Frm, Proc);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Field_Term_Hook;
+   --  |
+   --  |
+   --  |
+   procedure Set_Form_Init_Hook (Frm  : in Form;
+                                 Proc : in Form_Hook_Function)
+   is
+      function Set_Form_Init (Frm  : Form;
+                              Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Form_Init, "set_form_init");
+
+      Res : constant Eti_Error := Set_Form_Init (Frm, Proc);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Form_Init_Hook;
+   --  |
+   --  |
+   --  |
+   procedure Set_Form_Term_Hook (Frm  : in Form;
+                                 Proc : in Form_Hook_Function)
+   is
+      function Set_Form_Term (Frm  : Form;
+                              Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Form_Term, "set_form_term");
+
+      Res : constant Eti_Error := Set_Form_Term (Frm, Proc);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Form_Term_Hook;
+   --  |
+   --  |=====================================================================
+   --  | man page form_fields.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Redefine (Frm  : in Form;
+                       Flds : in Field_Array_Access)
+   is
+      function Set_Frm_Fields (Frm   : Form;
+                               Items : System.Address) return C_Int;
+      pragma Import (C, Set_Frm_Fields, "set_form_fields");
+
+      Res : Eti_Error;
+   begin
+      pragma Assert (Flds (Flds'Last) = Null_Field);
+      if Flds (Flds'Last) /= Null_Field then
+         raise Form_Exception;
+      else
+         Res := Set_Frm_Fields (Frm, Flds (Flds'First)'Address);
+         if  Res /= E_Ok then
+            Eti_Exception (Res);
+         end if;
+      end if;
+   end Redefine;
+   --  |
+   --  |
+   --  |
+   function Fields (Frm   : Form;
+                    Index : Positive) return Field
+   is
+      use F_Array;
+
+      function C_Fields (Frm : Form) return Pointer;
+      pragma Import (C, C_Fields, "form_fields");
+
+      P : Pointer := C_Fields (Frm);
+   begin
+      if P = null or else Index > Field_Count (Frm) then
+         raise Form_Exception;
+      else
+         P := P + ptrdiff_t (C_Int (Index) - 1);
+         return P.all;
+      end if;
+   end Fields;
+   --  |
+   --  |
+   --  |
+   function Field_Count (Frm : Form) return Natural
+   is
+      function Count (Frm : Form) return C_Int;
+      pragma Import (C, Count, "field_count");
+   begin
+      return Natural (Count (Frm));
+   end Field_Count;
+   --  |
+   --  |
+   --  |
+   procedure Move (Fld    : in Field;
+                   Line   : in Line_Position;
+                   Column : in Column_Position)
+   is
+      function Move (Fld : Field; L, C : C_Int) return C_Int;
+      pragma Import (C, Move, "move_field");
+
+      Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Move;
+   --  |
+   --  |=====================================================================
+   --  | man page form_new.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Create (Fields : Field_Array_Access) return Form
+   is
+      function NewForm (Fields : System.Address) return Form;
+      pragma Import (C, NewForm, "new_form");
+
+      M   : Form;
+   begin
+      pragma Assert (Fields (Fields'Last) = Null_Field);
+      if Fields (Fields'Last) /= Null_Field then
+         raise Form_Exception;
+      else
+         M := NewForm (Fields (Fields'First)'Address);
+         if M = Null_Form then
+            raise Form_Exception;
+         end if;
+         return M;
+      end if;
+   end Create;
+   --  |
+   --  |
+   --  |
+   procedure Delete (Frm : in out Form)
+   is
+      function Free (Frm : Form) return C_Int;
+      pragma Import (C, Free, "free_form");
+
+      Res : constant Eti_Error := Free (Frm);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Frm := Null_Form;
+   end Delete;
+   --  |
+   --  |=====================================================================
+   --  | man page form_opts.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Options (Frm     : in Form;
+                          Options : in Form_Option_Set)
+   is
+      function Set_Form_Opts (Frm : Form;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Set_Form_Opts, "set_form_opts");
+
+      Opt : constant C_Int := FrmOS_2_CInt (Options);
+      Res : Eti_Error;
+   begin
+      Res := Set_Form_Opts (Frm, Opt);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Options;
+   --  |
+   --  |
+   --  |
+   procedure Switch_Options (Frm     : in Form;
+                             Options : in Form_Option_Set;
+                             On      : Boolean := True)
+   is
+      function Form_Opts_On (Frm : Form;
+                             Opt : C_Int) return C_Int;
+      pragma Import (C, Form_Opts_On, "form_opts_on");
+      function Form_Opts_Off (Frm : Form;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Form_Opts_Off, "form_opts_off");
+
+      Err : Eti_Error;
+      Opt : constant C_Int := FrmOS_2_CInt (Options);
+   begin
+      if On then
+         Err := Form_Opts_On (Frm, Opt);
+      else
+         Err := Form_Opts_Off (Frm, Opt);
+      end if;
+      if Err /= E_Ok then
+         Eti_Exception (Err);
+      end if;
+   end Switch_Options;
+   --  |
+   --  |
+   --  |
+   procedure Get_Options (Frm     : in  Form;
+                          Options : out Form_Option_Set)
+   is
+      function Form_Opts (Frm : Form) return C_Int;
+      pragma Import (C, Form_Opts, "form_opts");
+
+      Res : constant C_Int := Form_Opts (Frm);
+   begin
+      Options := CInt_2_FrmOS (Res);
+   end Get_Options;
+   --  |
+   --  |
+   --  |
+   function Get_Options (Frm : Form := Null_Form) return Form_Option_Set
+   is
+      Fos : Form_Option_Set;
+   begin
+      Get_Options (Frm, Fos);
+      return Fos;
+   end Get_Options;
+   --  |
+   --  |=====================================================================
+   --  | man page form_post.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Post (Frm  : in Form;
+                   Post : in Boolean := True)
+   is
+      function M_Post (Frm : Form) return C_Int;
+      pragma Import (C, M_Post, "post_form");
+      function M_Unpost (Frm : Form) return C_Int;
+      pragma Import (C, M_Unpost, "unpost_form");
+
+      Res : Eti_Error;
+   begin
+      if Post then
+         Res := M_Post (Frm);
+      else
+         Res := M_Unpost (Frm);
+      end if;
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Post;
+   --  |
+   --  |=====================================================================
+   --  | man page form_cursor.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Position_Cursor (Frm : Form)
+   is
+      function Pos_Form_Cursor (Frm : Form) return C_Int;
+      pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
+
+      Res : constant Eti_Error := Pos_Form_Cursor (Frm);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Position_Cursor;
+   --  |
+   --  |=====================================================================
+   --  | man page form_data.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Data_Ahead (Frm : Form) return Boolean
+   is
+      function Ahead (Frm : Form) return C_Int;
+      pragma Import (C, Ahead, "data_ahead");
+
+      Res : constant C_Int := Ahead (Frm);
+   begin
+      if Res = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Data_Ahead;
+   --  |
+   --  |
+   --  |
+   function Data_Behind (Frm : Form) return Boolean
+   is
+      function Behind (Frm : Form) return C_Int;
+      pragma Import (C, Behind, "data_behind");
+
+      Res : constant C_Int := Behind (Frm);
+   begin
+      if Res = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Data_Behind;
+   --  |
+   --  |=====================================================================
+   --  | man page form_driver.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Driver (Frm : Form;
+                    Key : Key_Code) return Driver_Result
+   is
+      function Frm_Driver (Frm : Form; Key : C_Int) return C_Int;
+      pragma Import (C, Frm_Driver, "form_driver");
+
+      R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key));
+   begin
+      if R /= E_Ok then
+         if R = E_Unknown_Command then
+            return Unknown_Request;
+         elsif R = E_Invalid_Field then
+            return Invalid_Field;
+         elsif R = E_Request_Denied then
+            return Request_Denied;
+         else
+            Eti_Exception (R);
+            return Form_Ok;
+         end if;
+      else
+         return Form_Ok;
+      end if;
+   end Driver;
+   --  |
+   --  |=====================================================================
+   --  | man page form_page.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Current (Frm : in Form;
+                          Fld : in Field)
+   is
+      function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int;
+      pragma Import (C, Set_Current_Fld, "set_current_field");
+
+      Res : constant Eti_Error := Set_Current_Fld (Frm, Fld);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Current;
+   --  |
+   --  |
+   --  |
+   function Current (Frm : in Form) return Field
+   is
+      function Current_Fld (Frm : Form) return Field;
+      pragma Import (C, Current_Fld, "current_field");
+
+      Fld : constant Field := Current_Fld (Frm);
+   begin
+      if Fld = Null_Field then
+         raise Form_Exception;
+      end if;
+      return Fld;
+   end Current;
+   --  |
+   --  |
+   --  |
+   procedure Set_Page (Frm  : in Form;
+                       Page : in Page_Number := Page_Number'First)
+   is
+      function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int;
+      pragma Import (C, Set_Frm_Page, "set_form_page");
+
+      Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Page;
+   --  |
+   --  |
+   --  |
+   function Page (Frm : Form) return Page_Number
+   is
+      function Get_Page (Frm : Form) return C_Int;
+      pragma Import (C, Get_Page, "form_page");
+
+      P : constant C_Int := Get_Page (Frm);
+   begin
+      if P < 0 then
+         raise Form_Exception;
+      else
+         return Page_Number (P);
+      end if;
+   end Page;
+
+   function Get_Index (Fld : Field) return Positive
+   is
+      function Get_Fieldindex (Fld : Field) return C_Int;
+      pragma Import (C, Get_Fieldindex, "field_index");
+
+      Res : constant C_Int := Get_Fieldindex (Fld);
+   begin
+      if Res = Curses_Err then
+         raise Form_Exception;
+      end if;
+      return Positive (Natural (Res) + Positive'First);
+   end Get_Index;
+
+   --  |
+   --  |=====================================================================
+   --  | man page form_new_page.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_New_Page (Fld      : in Field;
+                           New_Page : in Boolean := True)
+   is
+      function Set_Page (Fld : Field; Flg : C_Int) return C_Int;
+      pragma Import (C, Set_Page, "set_new_page");
+
+      Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_New_Page;
+   --  |
+   --  |
+   --  |
+   function Is_New_Page (Fld : Field) return Boolean
+   is
+      function Is_New (Fld : Field) return C_Int;
+      pragma Import (C, Is_New, "new_page");
+
+      Res : constant C_Int := Is_New (Fld);
+   begin
+      if Res = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Is_New_Page;
+
+   procedure Free (FA          : in out Field_Array_Access;
+                   Free_Fields : in Boolean := False)
+   is
+      procedure Release is new Ada.Unchecked_Deallocation
+        (Field_Array, Field_Array_Access);
+   begin
+      if FA /= null and then Free_Fields then
+         for I in FA'First .. (FA'Last - 1) loop
+            if FA (I) /= Null_Field then
+               Delete (FA (I));
+            end if;
+         end loop;
+      end if;
+      Release (FA);
+   end Free;
+
+   --  |=====================================================================
+
+   function Default_Field_Options return Field_Option_Set
+   is
+   begin
+      return Get_Options (Null_Field);
+   end Default_Field_Options;
+
+   function Default_Form_Options return Form_Option_Set
+   is
+   begin
+      return Get_Options (Null_Form);
+   end Default_Form_Options;
+
+end Terminal_Interface.Curses.Forms;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-forms__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-forms__ads.htm new file mode 100644 index 0000000..2a9a5b2 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-forms__ads.htm @@ -0,0 +1,786 @@ + +terminal_interface-curses-forms.ads + +

File : terminal_interface-curses-forms.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Form                      --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.29 @
+--  @Date: 2006/06/25 14:30:21 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  form binding.
+--  This module is generated. Please don't change it manually!
+--  Run the generator instead.
+--  |
+with System;
+with Ada.Characters.Latin_1;
+
+package Terminal_Interface.Curses.Forms is
+   pragma Preelaborate (Terminal_Interface.Curses.Forms);
+   pragma Linker_Options ("-lformw");
+   pragma Linker_Options ("-lncursesw");
+
+   Space : Character renames Ada.Characters.Latin_1.Space;
+
+   type Field        is private;
+   type Form         is private;
+
+   Null_Field        : constant Field;
+   Null_Form         : constant Form;
+
+   type Field_Justification is (None,
+                                Left,
+                                Center,
+                                Right);
+
+   pragma Warnings (Off);
+   type Field_Option_Set is
+      record
+         Visible     : Boolean;
+         Active      : Boolean;
+         Public      : Boolean;
+         Edit        : Boolean;
+         Wrap        : Boolean;
+         Blank       : Boolean;
+         Auto_Skip   : Boolean;
+         Null_Ok     : Boolean;
+         Pass_Ok     : Boolean;
+         Static      : Boolean;
+      end record;
+   pragma Convention (C, Field_Option_Set);
+
+   for Field_Option_Set use
+      record
+         Visible     at 0 range  0 ..  0;
+         Active      at 0 range  1 ..  1;
+         Public      at 0 range  2 ..  2;
+         Edit        at 0 range  3 ..  3;
+         Wrap        at 0 range  4 ..  4;
+         Blank       at 0 range  5 ..  5;
+         Auto_Skip   at 0 range  6 ..  6;
+         Null_Ok     at 0 range  7 ..  7;
+         Pass_Ok     at 0 range  8 ..  8;
+         Static      at 0 range  9 ..  9;
+      end record;
+   for Field_Option_Set'Size use 32;
+   --  Please note: this rep. clause is generated and may be
+   --               different on your system.Dnl
+
+   pragma Warnings (On);
+
+   function Default_Field_Options return Field_Option_Set;
+   --  The initial defaults for the field options.
+   pragma Inline (Default_Field_Options);
+
+   pragma Warnings (Off);
+   type Form_Option_Set is
+      record
+         NL_Overload : Boolean;
+         BS_Overload : Boolean;
+      end record;
+   pragma Convention (C, Form_Option_Set);
+
+   for Form_Option_Set use
+      record
+         NL_Overload at 0 range  0 ..  0;
+         BS_Overload at 0 range  1 ..  1;
+      end record;
+   for Form_Option_Set'Size use 32;
+   --  Please note: this rep. clause is generated and may be
+   --               different on your system.Dnl
+
+   pragma Warnings (On);
+
+   function Default_Form_Options return Form_Option_Set;
+   --  The initial defaults for the form options.
+   pragma Inline (Default_Form_Options);
+
+   type Buffer_Number is new Natural;
+
+   type Field_Array is array (Positive range <>) of aliased Field;
+   pragma Convention (C, Field_Array);
+
+   type Field_Array_Access is access Field_Array;
+
+   procedure Free (FA          : in out Field_Array_Access;
+                   Free_Fields : in Boolean := False);
+   --  Release the memory for an allocated field array
+   --  If Free_Fields is True, call Delete() for all the fields in
+   --  the array.
+
+   subtype Form_Request_Code is Key_Code range (Key_Max + 1) .. (Key_Max + 57);
+
+   --  The prefix F_ stands for "Form Request"
+   F_Next_Page                : constant Form_Request_Code := Key_Max + 1;
+   F_Previous_Page            : constant Form_Request_Code := Key_Max + 2;
+   F_First_Page               : constant Form_Request_Code := Key_Max + 3;
+   F_Last_Page                : constant Form_Request_Code := Key_Max + 4;
+
+   F_Next_Field               : constant Form_Request_Code := Key_Max + 5;
+   F_Previous_Field           : constant Form_Request_Code := Key_Max + 6;
+   F_First_Field              : constant Form_Request_Code := Key_Max + 7;
+   F_Last_Field               : constant Form_Request_Code := Key_Max + 8;
+   F_Sorted_Next_Field        : constant Form_Request_Code := Key_Max + 9;
+   F_Sorted_Previous_Field    : constant Form_Request_Code := Key_Max + 10;
+   F_Sorted_First_Field       : constant Form_Request_Code := Key_Max + 11;
+   F_Sorted_Last_Field        : constant Form_Request_Code := Key_Max + 12;
+   F_Left_Field               : constant Form_Request_Code := Key_Max + 13;
+   F_Right_Field              : constant Form_Request_Code := Key_Max + 14;
+   F_Up_Field                 : constant Form_Request_Code := Key_Max + 15;
+   F_Down_Field               : constant Form_Request_Code := Key_Max + 16;
+
+   F_Next_Char                : constant Form_Request_Code := Key_Max + 17;
+   F_Previous_Char            : constant Form_Request_Code := Key_Max + 18;
+   F_Next_Line                : constant Form_Request_Code := Key_Max + 19;
+   F_Previous_Line            : constant Form_Request_Code := Key_Max + 20;
+   F_Next_Word                : constant Form_Request_Code := Key_Max + 21;
+   F_Previous_Word            : constant Form_Request_Code := Key_Max + 22;
+   F_Begin_Field              : constant Form_Request_Code := Key_Max + 23;
+   F_End_Field                : constant Form_Request_Code := Key_Max + 24;
+   F_Begin_Line               : constant Form_Request_Code := Key_Max + 25;
+   F_End_Line                 : constant Form_Request_Code := Key_Max + 26;
+   F_Left_Char                : constant Form_Request_Code := Key_Max + 27;
+   F_Right_Char               : constant Form_Request_Code := Key_Max + 28;
+   F_Up_Char                  : constant Form_Request_Code := Key_Max + 29;
+   F_Down_Char                : constant Form_Request_Code := Key_Max + 30;
+
+   F_New_Line                 : constant Form_Request_Code := Key_Max + 31;
+   F_Insert_Char              : constant Form_Request_Code := Key_Max + 32;
+   F_Insert_Line              : constant Form_Request_Code := Key_Max + 33;
+   F_Delete_Char              : constant Form_Request_Code := Key_Max + 34;
+   F_Delete_Previous          : constant Form_Request_Code := Key_Max + 35;
+   F_Delete_Line              : constant Form_Request_Code := Key_Max + 36;
+   F_Delete_Word              : constant Form_Request_Code := Key_Max + 37;
+   F_Clear_EOL                : constant Form_Request_Code := Key_Max + 38;
+   F_Clear_EOF                : constant Form_Request_Code := Key_Max + 39;
+   F_Clear_Field              : constant Form_Request_Code := Key_Max + 40;
+   F_Overlay_Mode             : constant Form_Request_Code := Key_Max + 41;
+   F_Insert_Mode              : constant Form_Request_Code := Key_Max + 42;
+
+   --  Vertical Scrolling
+   F_ScrollForward_Line       : constant Form_Request_Code := Key_Max + 43;
+   F_ScrollBackward_Line      : constant Form_Request_Code := Key_Max + 44;
+   F_ScrollForward_Page       : constant Form_Request_Code := Key_Max + 45;
+   F_ScrollBackward_Page      : constant Form_Request_Code := Key_Max + 46;
+   F_ScrollForward_HalfPage   : constant Form_Request_Code := Key_Max + 47;
+   F_ScrollBackward_HalfPage  : constant Form_Request_Code := Key_Max + 48;
+
+   --  Horizontal Scrolling
+   F_HScrollForward_Char      : constant Form_Request_Code := Key_Max + 49;
+   F_HScrollBackward_Char     : constant Form_Request_Code := Key_Max + 50;
+   F_HScrollForward_Line      : constant Form_Request_Code := Key_Max + 51;
+   F_HScrollBackward_Line     : constant Form_Request_Code := Key_Max + 52;
+   F_HScrollForward_HalfLine  : constant Form_Request_Code := Key_Max + 53;
+   F_HScrollBackward_HalfLine : constant Form_Request_Code := Key_Max + 54;
+
+   F_Validate_Field           : constant Form_Request_Code := Key_Max + 55;
+   F_Next_Choice              : constant Form_Request_Code := Key_Max + 56;
+   F_Previous_Choice          : constant Form_Request_Code := Key_Max + 57;
+
+   --  For those who like the old 'C' style request names
+   REQ_NEXT_PAGE    : Form_Request_Code renames F_Next_Page;
+   REQ_PREV_PAGE    : Form_Request_Code renames F_Previous_Page;
+   REQ_FIRST_PAGE   : Form_Request_Code renames F_First_Page;
+   REQ_LAST_PAGE    : Form_Request_Code renames F_Last_Page;
+
+   REQ_NEXT_FIELD   : Form_Request_Code renames F_Next_Field;
+   REQ_PREV_FIELD   : Form_Request_Code renames F_Previous_Field;
+   REQ_FIRST_FIELD  : Form_Request_Code renames F_First_Field;
+   REQ_LAST_FIELD   : Form_Request_Code renames F_Last_Field;
+   REQ_SNEXT_FIELD  : Form_Request_Code renames F_Sorted_Next_Field;
+   REQ_SPREV_FIELD  : Form_Request_Code renames F_Sorted_Previous_Field;
+   REQ_SFIRST_FIELD : Form_Request_Code renames F_Sorted_First_Field;
+   REQ_SLAST_FIELD  : Form_Request_Code renames F_Sorted_Last_Field;
+   REQ_LEFT_FIELD   : Form_Request_Code renames F_Left_Field;
+   REQ_RIGHT_FIELD  : Form_Request_Code renames F_Right_Field;
+   REQ_UP_FIELD     : Form_Request_Code renames F_Up_Field;
+   REQ_DOWN_FIELD   : Form_Request_Code renames F_Down_Field;
+
+   REQ_NEXT_CHAR    : Form_Request_Code renames F_Next_Char;
+   REQ_PREV_CHAR    : Form_Request_Code renames F_Previous_Char;
+   REQ_NEXT_LINE    : Form_Request_Code renames F_Next_Line;
+   REQ_PREV_LINE    : Form_Request_Code renames F_Previous_Line;
+   REQ_NEXT_WORD    : Form_Request_Code renames F_Next_Word;
+   REQ_PREV_WORD    : Form_Request_Code renames F_Previous_Word;
+   REQ_BEG_FIELD    : Form_Request_Code renames F_Begin_Field;
+   REQ_END_FIELD    : Form_Request_Code renames F_End_Field;
+   REQ_BEG_LINE     : Form_Request_Code renames F_Begin_Line;
+   REQ_END_LINE     : Form_Request_Code renames F_End_Line;
+   REQ_LEFT_CHAR    : Form_Request_Code renames F_Left_Char;
+   REQ_RIGHT_CHAR   : Form_Request_Code renames F_Right_Char;
+   REQ_UP_CHAR      : Form_Request_Code renames F_Up_Char;
+   REQ_DOWN_CHAR    : Form_Request_Code renames F_Down_Char;
+
+   REQ_NEW_LINE     : Form_Request_Code renames F_New_Line;
+   REQ_INS_CHAR     : Form_Request_Code renames F_Insert_Char;
+   REQ_INS_LINE     : Form_Request_Code renames F_Insert_Line;
+   REQ_DEL_CHAR     : Form_Request_Code renames F_Delete_Char;
+   REQ_DEL_PREV     : Form_Request_Code renames F_Delete_Previous;
+   REQ_DEL_LINE     : Form_Request_Code renames F_Delete_Line;
+   REQ_DEL_WORD     : Form_Request_Code renames F_Delete_Word;
+   REQ_CLR_EOL      : Form_Request_Code renames F_Clear_EOL;
+   REQ_CLR_EOF      : Form_Request_Code renames F_Clear_EOF;
+   REQ_CLR_FIELD    : Form_Request_Code renames F_Clear_Field;
+   REQ_OVL_MODE     : Form_Request_Code renames F_Overlay_Mode;
+   REQ_INS_MODE     : Form_Request_Code renames F_Insert_Mode;
+
+   REQ_SCR_FLINE    : Form_Request_Code renames F_ScrollForward_Line;
+   REQ_SCR_BLINE    : Form_Request_Code renames F_ScrollBackward_Line;
+   REQ_SCR_FPAGE    : Form_Request_Code renames F_ScrollForward_Page;
+   REQ_SCR_BPAGE    : Form_Request_Code renames F_ScrollBackward_Page;
+   REQ_SCR_FHPAGE   : Form_Request_Code renames F_ScrollForward_HalfPage;
+   REQ_SCR_BHPAGE   : Form_Request_Code renames F_ScrollBackward_HalfPage;
+
+   REQ_SCR_FCHAR    : Form_Request_Code renames F_HScrollForward_Char;
+   REQ_SCR_BCHAR    : Form_Request_Code renames F_HScrollBackward_Char;
+   REQ_SCR_HFLINE   : Form_Request_Code renames F_HScrollForward_Line;
+   REQ_SCR_HBLINE   : Form_Request_Code renames F_HScrollBackward_Line;
+   REQ_SCR_HFHALF   : Form_Request_Code renames F_HScrollForward_HalfLine;
+   REQ_SCR_HBHALF   : Form_Request_Code renames F_HScrollBackward_HalfLine;
+
+   REQ_VALIDATION   : Form_Request_Code renames F_Validate_Field;
+   REQ_NEXT_CHOICE  : Form_Request_Code renames F_Next_Choice;
+   REQ_PREV_CHOICE  : Form_Request_Code renames F_Previous_Choice;
+
+   procedure Request_Name (Key  : in Form_Request_Code;
+                           Name : out String);
+
+   function  Request_Name (Key : Form_Request_Code) return String;
+   --  Same as function
+   pragma Inline (Request_Name);
+
+   ------------------
+   --  Exceptions  --
+   ------------------
+   Form_Exception : exception;
+
+   --  |=====================================================================
+   --  | Man page form_field_new.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   function Create (Height       : Line_Count;
+                    Width        : Column_Count;
+                    Top          : Line_Position;
+                    Left         : Column_Position;
+                    Off_Screen   : Natural := 0;
+                    More_Buffers : Buffer_Number := Buffer_Number'First)
+                    return Field;
+   --  AKA: new_field()
+   --  An overloaded Create is defined later. Pragma Inline appears there.
+
+   --  #1A NAME="AFU_2"#2|
+   function New_Field (Height       : Line_Count;
+                       Width        : Column_Count;
+                       Top          : Line_Position;
+                       Left         : Column_Position;
+                       Off_Screen   : Natural := 0;
+                       More_Buffers : Buffer_Number := Buffer_Number'First)
+                       return Field renames Create;
+   --  AKA: new_field()
+   pragma Inline (New_Field);
+
+   --  #1A NAME="AFU_3"#2|
+   procedure Delete (Fld : in out Field);
+   --  AKA: free_field()
+   --  Reset Fld to Null_Field
+   --  An overloaded Delete is defined later. Pragma Inline appears there.
+
+   --  #1A NAME="AFU_4"#2|
+   function Duplicate (Fld  : Field;
+                       Top  : Line_Position;
+                       Left : Column_Position) return Field;
+   --  AKA: dup_field()
+   pragma Inline (Duplicate);
+
+   --  #1A NAME="AFU_5"#2|
+   function Link (Fld  : Field;
+                  Top  : Line_Position;
+                  Left : Column_Position) return Field;
+   --  AKA: link_field()
+   pragma Inline (Link);
+
+   --  |=====================================================================
+   --  | Man page form_field_just.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_6"#2|
+   procedure Set_Justification (Fld  : in Field;
+                                Just : in Field_Justification := None);
+   --  AKA: set_field_just()
+   pragma Inline (Set_Justification);
+
+   --  #1A NAME="AFU_7"#2|
+   function Get_Justification (Fld : Field) return Field_Justification;
+   --  AKA: field_just()
+   pragma Inline (Get_Justification);
+
+   --  |=====================================================================
+   --  | Man page form_field_buffer.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_8"#2|
+   procedure Set_Buffer
+     (Fld    : in Field;
+      Buffer : in Buffer_Number := Buffer_Number'First;
+      Str    : in String);
+   --  AKA: set_field_buffer()
+   --  Not inlined
+
+   --  #1A NAME="AFU_9"#2|
+   procedure Get_Buffer
+     (Fld    : in Field;
+      Buffer : in Buffer_Number := Buffer_Number'First;
+      Str    : out String);
+   --  AKA: field_buffer()
+
+   function Get_Buffer
+     (Fld    : in Field;
+      Buffer : in Buffer_Number := Buffer_Number'First) return String;
+   --  AKA: field_buffer()
+   --  Same but as function
+   pragma Inline (Get_Buffer);
+
+   --  #1A NAME="AFU_10"#2|
+   procedure Set_Status (Fld    : in Field;
+                         Status : in Boolean := True);
+   --  AKA: set_field_status()
+   pragma Inline (Set_Status);
+
+   --  #1A NAME="AFU_11"#2|
+   function Changed (Fld : Field) return Boolean;
+   --  AKA: field_status()
+   pragma Inline (Changed);
+
+   --  #1A NAME="AFU_12"#2|
+   procedure Set_Maximum_Size (Fld : in Field;
+                               Max : in Natural := 0);
+   --  AKA: set_field_max()
+   pragma Inline (Set_Maximum_Size);
+
+   --  |=====================================================================
+   --  | Man page form_field_opts.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_13"#2|
+   procedure Set_Options (Fld     : in Field;
+                          Options : in Field_Option_Set);
+   --  AKA: set_field_opts()
+   --  An overloaded version is defined later. Pragma Inline appears there
+
+   --  #1A NAME="AFU_14"#2|
+   procedure Switch_Options (Fld     : in Field;
+                             Options : in Field_Option_Set;
+                             On      : Boolean := True);
+   --  AKA: field_opts_on()
+   --  AKA: field_opts_off()
+   --  An overloaded version is defined later. Pragma Inline appears there
+
+   --  #1A NAME="AFU_15"#2|
+   procedure Get_Options (Fld     : in  Field;
+                          Options : out Field_Option_Set);
+   --  AKA: field_opts()
+
+   --  #1A NAME="AFU_16"#2|
+   function Get_Options (Fld : Field := Null_Field)
+                         return Field_Option_Set;
+   --  AKA: field_opts()
+   --  An overloaded version is defined later. Pragma Inline appears there
+
+   --  |=====================================================================
+   --  | Man page form_field_attributes.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_17"#2|
+   procedure Set_Foreground
+     (Fld   : in Field;
+      Fore  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: set_field_fore()
+   pragma Inline (Set_Foreground);
+
+   --  #1A NAME="AFU_18"#2|
+   procedure Foreground (Fld  : in  Field;
+                         Fore : out Character_Attribute_Set);
+   --  AKA: field_fore()
+
+   --  #1A NAME="AFU_19"#2|
+   procedure Foreground (Fld   : in  Field;
+                         Fore  : out Character_Attribute_Set;
+                         Color : out Color_Pair);
+   --  AKA: field_fore()
+   pragma Inline (Foreground);
+
+   --  #1A NAME="AFU_20"#2|
+   procedure Set_Background
+     (Fld   : in Field;
+      Back  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: set_field_back()
+   pragma Inline (Set_Background);
+
+   --  #1A NAME="AFU_21"#2|
+   procedure Background (Fld  : in  Field;
+                         Back : out Character_Attribute_Set);
+   --  AKA: field_back()
+
+   --  #1A NAME="AFU_22"#2|
+   procedure Background (Fld   : in  Field;
+                         Back  : out Character_Attribute_Set;
+                         Color : out Color_Pair);
+   --  AKA: field_back()
+   pragma Inline (Background);
+
+   --  #1A NAME="AFU_23"#2|
+   procedure Set_Pad_Character (Fld : in Field;
+                                Pad : in Character := Space);
+   --  AKA: set_field_pad()
+   pragma Inline (Set_Pad_Character);
+
+   --  #1A NAME="AFU_24"#2|
+   procedure Pad_Character (Fld : in  Field;
+                            Pad : out Character);
+   --  AKA: field_pad()
+   pragma Inline (Pad_Character);
+
+   --  |=====================================================================
+   --  | Man page form_field_info.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_25"#2|
+   procedure Info (Fld                : in  Field;
+                   Lines              : out Line_Count;
+                   Columns            : out Column_Count;
+                   First_Row          : out Line_Position;
+                   First_Column       : out Column_Position;
+                   Off_Screen         : out Natural;
+                   Additional_Buffers : out Buffer_Number);
+   --  AKA: field_info()
+   pragma Inline (Info);
+
+   --  #1A NAME="AFU_26"#2|
+   procedure Dynamic_Info (Fld     : in Field;
+                           Lines   : out Line_Count;
+                           Columns : out Column_Count;
+                           Max     : out Natural);
+   --  AKA: dynamic_field_info()
+   pragma Inline (Dynamic_Info);
+
+   --  |=====================================================================
+   --  | Man page form_win.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_27"#2|
+   procedure Set_Window (Frm : in Form;
+                         Win : in Window);
+   --  AKA: set_form_win()
+   pragma Inline (Set_Window);
+
+   --  #1A NAME="AFU_28"#2|
+   function Get_Window (Frm : Form) return Window;
+   --  AKA: form_win()
+   pragma Inline (Get_Window);
+
+   --  #1A NAME="AFU_29"#2|
+   procedure Set_Sub_Window (Frm : in Form;
+                             Win : in Window);
+   --  AKA: set_form_sub()
+   pragma Inline (Set_Sub_Window);
+
+   --  #1A NAME="AFU_30"#2|
+   function Get_Sub_Window (Frm : Form) return Window;
+   --  AKA: form_sub()
+   pragma Inline (Get_Sub_Window);
+
+   --  #1A NAME="AFU_31"#2|
+   procedure Scale (Frm     : in Form;
+                    Lines   : out Line_Count;
+                    Columns : out Column_Count);
+   --  AKA: scale_form()
+   pragma Inline (Scale);
+
+   --  |=====================================================================
+   --  | Man page form_hook.3x
+   --  |=====================================================================
+
+   type Form_Hook_Function is access procedure (Frm : in Form);
+   pragma Convention (C, Form_Hook_Function);
+
+   --  #1A NAME="AFU_32"#2|
+   procedure Set_Field_Init_Hook (Frm  : in Form;
+                                  Proc : in Form_Hook_Function);
+   --  AKA: set_field_init()
+   pragma Inline (Set_Field_Init_Hook);
+
+   --  #1A NAME="AFU_33"#2|
+   procedure Set_Field_Term_Hook (Frm  : in Form;
+                                  Proc : in Form_Hook_Function);
+   --  AKA: set_field_term()
+   pragma Inline (Set_Field_Term_Hook);
+
+   --  #1A NAME="AFU_34"#2|
+   procedure Set_Form_Init_Hook (Frm  : in Form;
+                                 Proc : in Form_Hook_Function);
+   --  AKA: set_form_init()
+   pragma Inline (Set_Form_Init_Hook);
+
+   --  #1A NAME="AFU_35"#2|
+   procedure Set_Form_Term_Hook (Frm  : in Form;
+                                 Proc : in Form_Hook_Function);
+   --  AKA: set_form_term()
+   pragma Inline (Set_Form_Term_Hook);
+
+   --  #1A NAME="AFU_36"#2|
+   function Get_Field_Init_Hook (Frm : Form) return Form_Hook_Function;
+   --  AKA: field_init()
+   pragma Import (C, Get_Field_Init_Hook, "field_init");
+
+   --  #1A NAME="AFU_37"#2|
+   function Get_Field_Term_Hook (Frm : Form) return Form_Hook_Function;
+   --  AKA: field_term()
+   pragma Import (C, Get_Field_Term_Hook, "field_term");
+
+   --  #1A NAME="AFU_38"#2|
+   function Get_Form_Init_Hook (Frm : Form) return Form_Hook_Function;
+   --  AKA: form_init()
+   pragma Import (C, Get_Form_Init_Hook, "form_init");
+
+   --  #1A NAME="AFU_39"#2|
+   function Get_Form_Term_Hook (Frm : Form) return Form_Hook_Function;
+   --  AKA: form_term()
+   pragma Import (C, Get_Form_Term_Hook, "form_term");
+
+   --  |=====================================================================
+   --  | Man page form_field.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_40"#2|
+   procedure Redefine (Frm  : in Form;
+                       Flds : in Field_Array_Access);
+   --  AKA: set_form_fields()
+   pragma Inline (Redefine);
+
+   --  #1A NAME="AFU_41"#2|
+   procedure Set_Fields (Frm  : in Form;
+                         Flds : in Field_Array_Access) renames Redefine;
+   --  AKA: set_form_fields()
+   --  pragma Inline (Set_Fields);
+
+   --  #1A NAME="AFU_42"#2|
+   function Fields (Frm   : Form;
+                    Index : Positive) return Field;
+   --  AKA: form_fields()
+   pragma Inline (Fields);
+
+   --  #1A NAME="AFU_43"#2|
+   function Field_Count (Frm : Form) return Natural;
+   --  AKA: field_count()
+   pragma Inline (Field_Count);
+
+   --  #1A NAME="AFU_44"#2|
+   procedure Move (Fld    : in Field;
+                   Line   : in Line_Position;
+                   Column : in Column_Position);
+   --  AKA: move_field()
+   pragma Inline (Move);
+
+   --  |=====================================================================
+   --  | Man page form_new.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_45"#2|
+   function Create (Fields : Field_Array_Access) return Form;
+   --  AKA: new_form()
+   pragma Inline (Create);
+
+   --  #1A NAME="AFU_46"#2|
+   function New_Form (Fields : Field_Array_Access) return Form
+     renames Create;
+   --  AKA: new_form()
+   --  pragma Inline (New_Form);
+
+   --  #1A NAME="AFU_47"#2|
+   procedure Delete (Frm : in out Form);
+   --  AKA: free_form()
+   --  Reset Frm to Null_Form
+   pragma Inline (Delete);
+
+   --  |=====================================================================
+   --  | Man page form_opts.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_48"#2|
+   procedure Set_Options (Frm     : in Form;
+                          Options : in Form_Option_Set);
+   --  AKA: set_form_opts()
+   pragma Inline (Set_Options);
+
+   --  #1A NAME="AFU_49"#2|
+   procedure Switch_Options (Frm     : in Form;
+                             Options : in Form_Option_Set;
+                             On      : Boolean := True);
+   --  AKA: form_opts_on()
+   --  AKA: form_opts_off()
+   pragma Inline (Switch_Options);
+
+   --  #1A NAME="AFU_50"#2|
+   procedure Get_Options (Frm     : in  Form;
+                          Options : out Form_Option_Set);
+   --  AKA: form_opts()
+
+   --  #1A NAME="AFU_51"#2|
+   function Get_Options (Frm : Form := Null_Form) return Form_Option_Set;
+   --  AKA: form_opts()
+   pragma Inline (Get_Options);
+
+   --  |=====================================================================
+   --  | Man page form_post.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_52"#2|
+   procedure Post (Frm  : in Form;
+                   Post : in Boolean := True);
+   --  AKA: post_form()
+   --  AKA: unpost_form()
+   pragma Inline (Post);
+
+   --  |=====================================================================
+   --  | Man page form_cursor.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_53"#2|
+   procedure Position_Cursor (Frm : Form);
+   --  AKA: pos_form_cursor()
+   pragma Inline (Position_Cursor);
+
+   --  |=====================================================================
+   --  | Man page form_data.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_54"#2|
+   function Data_Ahead (Frm : Form) return Boolean;
+   --  AKA: data_ahead()
+   pragma Inline (Data_Ahead);
+
+   --  #1A NAME="AFU_55"#2|
+   function Data_Behind (Frm : Form) return Boolean;
+   --  AKA: data_behind()
+   pragma Inline (Data_Behind);
+
+   --  |=====================================================================
+   --  | Man page form_driver.3x
+   --  |=====================================================================
+
+   type Driver_Result is (Form_Ok,
+                          Request_Denied,
+                          Unknown_Request,
+                          Invalid_Field);
+
+   --  #1A NAME="AFU_56"#2|
+   function Driver (Frm : Form;
+                    Key : Key_Code) return Driver_Result;
+   --  AKA: form_driver()
+   --  Driver not inlined
+
+   --  |=====================================================================
+   --  | Man page form_page.3x
+   --  |=====================================================================
+
+   type Page_Number is new Natural;
+
+   --  #1A NAME="AFU_57"#2|
+   procedure Set_Current (Frm : in Form;
+                          Fld : in Field);
+   --  AKA: set_current_field()
+   pragma Inline (Set_Current);
+
+   --  #1A NAME="AFU_58"#2|
+   function Current (Frm : in Form) return Field;
+   --  AKA: current_field()
+   pragma Inline (Current);
+
+   --  #1A NAME="AFU_59"#2|
+   procedure Set_Page (Frm  : in Form;
+                       Page : in Page_Number := Page_Number'First);
+   --  AKA: set_form_page()
+   pragma Inline (Set_Page);
+
+   --  #1A NAME="AFU_60"#2|
+   function Page (Frm : Form) return Page_Number;
+   --  AKA: form_page()
+   pragma Inline (Page);
+
+   --  #1A NAME="AFU_61"#2|
+   function Get_Index (Fld : Field) return Positive;
+   --  AKA: field_index()
+   --  Please note that in this binding we start the numbering of fields
+   --  with 1. So this is number is one more than you get from the low
+   --  level call.
+   pragma Inline (Get_Index);
+
+   --  |=====================================================================
+   --  | Man page form_new_page.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_62"#2|
+   procedure Set_New_Page (Fld      : in Field;
+                           New_Page : in Boolean := True);
+   --  AKA: set_new_page()
+   pragma Inline (Set_New_Page);
+
+   --  #1A NAME="AFU_63"#2|
+   function Is_New_Page (Fld : Field) return Boolean;
+   --  AKA: new_page()
+   pragma Inline (Is_New_Page);
+
+   --  |=====================================================================
+   --  | Man page form_requestname.3x
+   --  |=====================================================================
+   --  Not Implemented: form_request_name, form_request_by_name
+
+------------------------------------------------------------------------------
+private
+   type Field is new System.Storage_Elements.Integer_Address;
+   type Form  is new System.Storage_Elements.Integer_Address;
+
+   Null_Field : constant Field := 0;
+   Null_Form  : constant Form  := 0;
+
+end Terminal_Interface.Curses.Forms;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm new file mode 100644 index 0000000..b4d3b02 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm @@ -0,0 +1,83 @@ + +terminal_interface-curses-menus-item_user_data.adb + +

File : terminal_interface-curses-menus-item_user_data.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Menus.Item_User_Data             --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Menus.Item_User_Data is
+
+   use type Interfaces.C.int;
+
+   procedure Set_User_Data (Itm  : in Item;
+                            Data : in User_Access)
+   is
+      function Set_Item_Userptr (Itm  : Item;
+                                 Addr : User_Access)  return C_Int;
+      pragma Import (C, Set_Item_Userptr, "set_item_userptr");
+
+      Res : constant Eti_Error := Set_Item_Userptr (Itm, Data);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_User_Data;
+
+   function Get_User_Data (Itm  : in  Item) return User_Access
+   is
+      function Item_Userptr (Itm : Item) return User_Access;
+      pragma Import (C, Item_Userptr, "item_userptr");
+   begin
+      return Item_Userptr (Itm);
+   end Get_User_Data;
+
+   procedure Get_User_Data (Itm  : in  Item;
+                            Data : out User_Access)
+   is
+   begin
+      Data := Get_User_Data (Itm);
+   end Get_User_Data;
+
+end Terminal_Interface.Curses.Menus.Item_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm new file mode 100644 index 0000000..f5a067f --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm @@ -0,0 +1,80 @@ + +terminal_interface-curses-menus-item_user_data.ads + +

File : terminal_interface-curses-menus-item_user_data.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Menus.Item_User_Data             --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.16 @
+--  @Date: 2006/06/25 14:30:22 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+generic
+   type User is limited private;
+   type User_Access is access User;
+package Terminal_Interface.Curses.Menus.Item_User_Data is
+   pragma Preelaborate (Terminal_Interface.Curses.Menus.Item_User_Data);
+
+   --  The binding uses the same user pointer for menu items
+   --  as the low level C implementation. So you can safely
+   --  read or write the user pointer also with the C routines
+   --
+   --  |=====================================================================
+   --  | Man page mitem_userptr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Set_User_Data (Itm  : in Item;
+                            Data : in User_Access);
+   --  AKA: set_item_userptr
+   pragma Inline (Set_User_Data);
+
+   --  #1A NAME="AFU_2"#2|
+   procedure Get_User_Data (Itm  : in  Item;
+                            Data : out User_Access);
+   --  AKA: item_userptr
+
+   --  #1A NAME="AFU_3"#2|
+   function Get_User_Data (Itm  : in  Item) return User_Access;
+   --  AKA: item_userptr
+   --  Same as function
+   pragma Inline (Get_User_Data);
+
+end Terminal_Interface.Curses.Menus.Item_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm new file mode 100644 index 0000000..67d6e94 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm @@ -0,0 +1,82 @@ + +terminal_interface-curses-menus-menu_user_data.adb + +

File : terminal_interface-curses-menus-menu_user_data.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Menus.Menu_User_Data             --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.12 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.Menus.Menu_User_Data is
+
+   use type Interfaces.C.int;
+
+   procedure Set_User_Data (Men  : in Menu;
+                            Data : in User_Access)
+   is
+      function Set_Menu_Userptr (Men  : Menu;
+                                 Data : User_Access)  return C_Int;
+      pragma Import (C, Set_Menu_Userptr, "set_menu_userptr");
+
+      Res : constant Eti_Error := Set_Menu_Userptr (Men, Data);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_User_Data;
+
+   function Get_User_Data (Men  : in  Menu) return User_Access
+   is
+      function Menu_Userptr (Men : Menu) return User_Access;
+      pragma Import (C, Menu_Userptr, "menu_userptr");
+   begin
+      return Menu_Userptr (Men);
+   end Get_User_Data;
+
+   procedure Get_User_Data (Men  : in  Menu;
+                            Data : out User_Access)
+   is
+   begin
+      Data := Get_User_Data (Men);
+   end Get_User_Data;
+
+end Terminal_Interface.Curses.Menus.Menu_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm new file mode 100644 index 0000000..2113355 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm @@ -0,0 +1,75 @@ + +terminal_interface-curses-menus-menu_user_data.ads + +

File : terminal_interface-curses-menus-menu_user_data.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Menus.Menu_User_Data             --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.14 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+generic
+   type User is limited private;
+   type User_Access is access User;
+package Terminal_Interface.Curses.Menus.Menu_User_Data is
+   pragma Preelaborate (Terminal_Interface.Curses.Menus.Menu_User_Data);
+
+   --  |=====================================================================
+   --  | Man page menu_userptr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Set_User_Data (Men  : in Menu;
+                            Data : in User_Access);
+   --  AKA: set_menu_userptr
+   pragma Inline (Set_User_Data);
+
+   --  #1A NAME="AFU_2"#2|
+   procedure Get_User_Data (Men  : in  Menu;
+                            Data : out User_Access);
+   --  AKA: menu_userptr
+
+   --  #1A NAME="AFU_3"#2|
+   function Get_User_Data (Men  : in  Menu) return User_Access;
+   --  AKA: menu_userptr
+   --  Same as function
+   pragma Inline (Get_User_Data);
+
+end Terminal_Interface.Curses.Menus.Menu_User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-menus__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-menus__adb.htm new file mode 100644 index 0000000..216210a --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-menus__adb.htm @@ -0,0 +1,1028 @@ + +terminal_interface-curses-menus.adb + +

File : terminal_interface-curses-menus.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Menus                     --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.26 @
+--  @Date: 2008/07/26 18:50:58 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Unchecked_Deallocation;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+with Interfaces.C; use Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Interfaces.C.Pointers;
+
+with Ada.Unchecked_Conversion;
+
+package body Terminal_Interface.Curses.Menus is
+
+   type C_Item_Array is array (Natural range <>) of aliased Item;
+   package I_Array is new
+     Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item);
+
+   use type System.Bit_Order;
+   subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
+
+   function MOS_2_CInt is new
+     Ada.Unchecked_Conversion (Menu_Option_Set,
+                               C_Int);
+
+   function CInt_2_MOS is new
+     Ada.Unchecked_Conversion (C_Int,
+                               Menu_Option_Set);
+
+   function IOS_2_CInt is new
+     Ada.Unchecked_Conversion (Item_Option_Set,
+                               C_Int);
+
+   function CInt_2_IOS is new
+     Ada.Unchecked_Conversion (C_Int,
+                               Item_Option_Set);
+
+------------------------------------------------------------------------------
+   procedure Request_Name (Key  : in Menu_Request_Code;
+                           Name : out String)
+   is
+      function Request_Name (Key : C_Int) return chars_ptr;
+      pragma Import (C, Request_Name, "menu_request_name");
+   begin
+      Fill_String (Request_Name (C_Int (Key)), Name);
+   end Request_Name;
+
+   function Request_Name (Key : Menu_Request_Code) return String
+   is
+      function Request_Name (Key : C_Int) return chars_ptr;
+      pragma Import (C, Request_Name, "menu_request_name");
+   begin
+      return Fill_String (Request_Name (C_Int (Key)));
+   end Request_Name;
+
+   function Create (Name        : String;
+                    Description : String := "") return Item
+   is
+      type Char_Ptr is access all Interfaces.C.char;
+      function Newitem (Name, Desc : Char_Ptr) return Item;
+      pragma Import (C, Newitem, "new_item");
+
+      type Name_String is new char_array (0 .. Name'Length);
+      type Name_String_Ptr is access Name_String;
+      pragma Controlled (Name_String_Ptr);
+
+      type Desc_String is new char_array (0 .. Description'Length);
+      type Desc_String_Ptr is access Desc_String;
+      pragma Controlled (Desc_String_Ptr);
+
+      Name_Str : constant Name_String_Ptr := new Name_String;
+      Desc_Str : constant Desc_String_Ptr := new Desc_String;
+      Name_Len, Desc_Len : size_t;
+      Result : Item;
+   begin
+      To_C (Name, Name_Str.all, Name_Len);
+      To_C (Description, Desc_Str.all, Desc_Len);
+      Result := Newitem (Name_Str.all (Name_Str.all'First)'Access,
+                         Desc_Str.all (Desc_Str.all'First)'Access);
+      if Result = Null_Item then
+         raise Eti_System_Error;
+      end if;
+      return Result;
+   end Create;
+
+   procedure Delete (Itm : in out Item)
+   is
+      function Descname (Itm  : Item) return chars_ptr;
+      pragma Import (C, Descname, "item_description");
+      function Itemname (Itm  : Item) return chars_ptr;
+      pragma Import (C, Itemname, "item_name");
+
+      function Freeitem (Itm : Item) return C_Int;
+      pragma Import (C, Freeitem, "free_item");
+
+      Res : Eti_Error;
+      Ptr : chars_ptr;
+   begin
+      Ptr := Descname (Itm);
+      if Ptr /= Null_Ptr then
+         Interfaces.C.Strings.Free (Ptr);
+      end if;
+      Ptr := Itemname (Itm);
+      if Ptr /= Null_Ptr then
+         Interfaces.C.Strings.Free (Ptr);
+      end if;
+      Res := Freeitem (Itm);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Itm := Null_Item;
+   end Delete;
+-------------------------------------------------------------------------------
+   procedure Set_Value (Itm   : in Item;
+                        Value : in Boolean := True)
+   is
+      function Set_Item_Val (Itm : Item;
+                             Val : C_Int) return C_Int;
+      pragma Import (C, Set_Item_Val, "set_item_value");
+
+      Res : constant Eti_Error := Set_Item_Val (Itm, Boolean'Pos (Value));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Value;
+
+   function Value (Itm : Item) return Boolean
+   is
+      function Item_Val (Itm : Item) return C_Int;
+      pragma Import (C, Item_Val, "item_value");
+   begin
+      if Item_Val (Itm) = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Value;
+
+-------------------------------------------------------------------------------
+   function Visible (Itm : Item) return Boolean
+   is
+      function Item_Vis (Itm : Item) return C_Int;
+      pragma Import (C, Item_Vis, "item_visible");
+   begin
+      if Item_Vis (Itm) = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Visible;
+-------------------------------------------------------------------------------
+   procedure Set_Options (Itm     : in Item;
+                          Options : in Item_Option_Set)
+   is
+      function Set_Item_Opts (Itm : Item;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Set_Item_Opts, "set_item_opts");
+
+      Opt : constant C_Int := IOS_2_CInt (Options);
+      Res : Eti_Error;
+   begin
+      Res := Set_Item_Opts (Itm, Opt);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Options;
+
+   procedure Switch_Options (Itm     : in Item;
+                             Options : in Item_Option_Set;
+                             On      : Boolean := True)
+   is
+      function Item_Opts_On (Itm : Item;
+                             Opt : C_Int) return C_Int;
+      pragma Import (C, Item_Opts_On, "item_opts_on");
+      function Item_Opts_Off (Itm : Item;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Item_Opts_Off, "item_opts_off");
+
+      Opt : constant C_Int := IOS_2_CInt (Options);
+      Err : Eti_Error;
+   begin
+      if On then
+         Err := Item_Opts_On (Itm, Opt);
+      else
+         Err := Item_Opts_Off (Itm, Opt);
+      end if;
+      if Err /= E_Ok then
+         Eti_Exception (Err);
+      end if;
+   end Switch_Options;
+
+   procedure Get_Options (Itm     : in  Item;
+                          Options : out Item_Option_Set)
+   is
+      function Item_Opts (Itm : Item) return C_Int;
+      pragma Import (C, Item_Opts, "item_opts");
+
+      Res : constant C_Int := Item_Opts (Itm);
+   begin
+      Options := CInt_2_IOS (Res);
+   end Get_Options;
+
+   function Get_Options (Itm : Item := Null_Item) return Item_Option_Set
+   is
+      Ios : Item_Option_Set;
+   begin
+      Get_Options (Itm, Ios);
+      return Ios;
+   end Get_Options;
+-------------------------------------------------------------------------------
+   procedure Name (Itm  : in Item;
+                   Name : out String)
+   is
+      function Itemname (Itm : Item) return chars_ptr;
+      pragma Import (C, Itemname, "item_name");
+   begin
+      Fill_String (Itemname (Itm), Name);
+   end Name;
+
+   function Name (Itm : in Item) return String
+   is
+      function Itemname (Itm : Item) return chars_ptr;
+      pragma Import (C, Itemname, "item_name");
+   begin
+      return Fill_String (Itemname (Itm));
+   end Name;
+
+   procedure Description (Itm         : in Item;
+                          Description : out String)
+   is
+      function Descname (Itm  : Item) return chars_ptr;
+      pragma Import (C, Descname, "item_description");
+   begin
+      Fill_String (Descname (Itm), Description);
+   end Description;
+
+   function Description (Itm : in Item) return String
+   is
+      function Descname (Itm  : Item) return chars_ptr;
+      pragma Import (C, Descname, "item_description");
+   begin
+      return Fill_String (Descname (Itm));
+   end Description;
+-------------------------------------------------------------------------------
+   procedure Set_Current (Men : in Menu;
+                          Itm : in Item)
+   is
+      function Set_Curr_Item (Men : Menu;
+                              Itm : Item) return C_Int;
+      pragma Import (C, Set_Curr_Item, "set_current_item");
+
+      Res : constant Eti_Error := Set_Curr_Item (Men, Itm);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Current;
+
+   function Current (Men : Menu) return Item
+   is
+      function Curr_Item (Men : Menu) return Item;
+      pragma Import (C, Curr_Item, "current_item");
+
+      Res : constant Item := Curr_Item (Men);
+   begin
+      if Res = Null_Item then
+         raise Menu_Exception;
+      end if;
+      return Res;
+   end Current;
+
+   procedure Set_Top_Row (Men  : in Menu;
+                          Line : in Line_Position)
+   is
+      function Set_Toprow (Men  : Menu;
+                           Line : C_Int) return C_Int;
+      pragma Import (C, Set_Toprow, "set_top_row");
+
+      Res : constant Eti_Error := Set_Toprow (Men, C_Int (Line));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Top_Row;
+
+   function Top_Row (Men : Menu) return Line_Position
+   is
+      function Toprow (Men : Menu) return C_Int;
+      pragma Import (C, Toprow, "top_row");
+
+      Res : constant C_Int := Toprow (Men);
+   begin
+      if Res = Curses_Err then
+         raise Menu_Exception;
+      end if;
+      return Line_Position (Res);
+   end Top_Row;
+
+   function Get_Index (Itm : Item) return Positive
+   is
+      function Get_Itemindex (Itm : Item) return C_Int;
+      pragma Import (C, Get_Itemindex, "item_index");
+
+      Res : constant C_Int := Get_Itemindex (Itm);
+   begin
+      if Res = Curses_Err then
+         raise Menu_Exception;
+      end if;
+      return Positive (Natural (Res) + Positive'First);
+   end Get_Index;
+-------------------------------------------------------------------------------
+   procedure Post (Men  : in Menu;
+                   Post : in Boolean := True)
+   is
+      function M_Post (Men : Menu) return C_Int;
+      pragma Import (C, M_Post, "post_menu");
+      function M_Unpost (Men : Menu) return C_Int;
+      pragma Import (C, M_Unpost, "unpost_menu");
+
+      Res : Eti_Error;
+   begin
+      if Post then
+         Res := M_Post (Men);
+      else
+         Res := M_Unpost (Men);
+      end if;
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Post;
+-------------------------------------------------------------------------------
+   procedure Set_Options (Men     : in Menu;
+                          Options : in Menu_Option_Set)
+   is
+      function Set_Menu_Opts (Men : Menu;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Set_Menu_Opts, "set_menu_opts");
+
+      Opt : constant C_Int := MOS_2_CInt (Options);
+      Res : Eti_Error;
+   begin
+      Res := Set_Menu_Opts (Men, Opt);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Options;
+
+   procedure Switch_Options (Men     : in Menu;
+                             Options : in Menu_Option_Set;
+                             On      : in Boolean := True)
+   is
+      function Menu_Opts_On (Men : Menu;
+                             Opt : C_Int) return C_Int;
+      pragma Import (C, Menu_Opts_On, "menu_opts_on");
+      function Menu_Opts_Off (Men : Menu;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Menu_Opts_Off, "menu_opts_off");
+
+      Opt : constant C_Int := MOS_2_CInt (Options);
+      Err : Eti_Error;
+   begin
+      if On then
+         Err := Menu_Opts_On  (Men, Opt);
+      else
+         Err := Menu_Opts_Off (Men, Opt);
+      end if;
+      if Err /= E_Ok then
+         Eti_Exception (Err);
+      end if;
+   end Switch_Options;
+
+   procedure Get_Options (Men     : in  Menu;
+                               Options : out Menu_Option_Set)
+   is
+      function Menu_Opts (Men : Menu) return C_Int;
+      pragma Import (C, Menu_Opts, "menu_opts");
+
+      Res : constant C_Int := Menu_Opts (Men);
+   begin
+      Options := CInt_2_MOS (Res);
+   end Get_Options;
+
+   function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set
+   is
+      Mos : Menu_Option_Set;
+   begin
+      Get_Options (Men, Mos);
+      return Mos;
+   end Get_Options;
+-------------------------------------------------------------------------------
+   procedure Set_Window (Men : in Menu;
+                         Win : in Window)
+   is
+      function Set_Menu_Win (Men : Menu;
+                             Win : Window) return C_Int;
+      pragma Import (C, Set_Menu_Win, "set_menu_win");
+
+      Res : constant Eti_Error := Set_Menu_Win (Men, Win);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Window;
+
+   function Get_Window (Men : Menu) return Window
+   is
+      function Menu_Win (Men : Menu) return Window;
+      pragma Import (C, Menu_Win, "menu_win");
+
+      W : constant Window := Menu_Win (Men);
+   begin
+      return W;
+   end Get_Window;
+
+   procedure Set_Sub_Window (Men : in Menu;
+                             Win : in Window)
+   is
+      function Set_Menu_Sub (Men : Menu;
+                             Win : Window) return C_Int;
+      pragma Import (C, Set_Menu_Sub, "set_menu_sub");
+
+      Res : constant Eti_Error := Set_Menu_Sub (Men, Win);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Sub_Window;
+
+   function Get_Sub_Window (Men : Menu) return Window
+   is
+      function Menu_Sub (Men : Menu) return Window;
+      pragma Import (C, Menu_Sub, "menu_sub");
+
+      W : constant Window := Menu_Sub (Men);
+   begin
+      return W;
+   end Get_Sub_Window;
+
+   procedure Scale (Men     : in Menu;
+                    Lines   : out Line_Count;
+                    Columns : out Column_Count)
+   is
+      type C_Int_Access is access all C_Int;
+      function M_Scale (Men    : Menu;
+                        Yp, Xp : C_Int_Access) return C_Int;
+      pragma Import (C, M_Scale, "scale_menu");
+
+      X, Y : aliased C_Int;
+      Res  : constant Eti_Error := M_Scale (Men, Y'Access, X'Access);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Lines := Line_Count (Y);
+      Columns := Column_Count (X);
+   end Scale;
+-------------------------------------------------------------------------------
+   procedure Position_Cursor (Men : Menu)
+   is
+      function Pos_Menu_Cursor (Men : Menu) return C_Int;
+      pragma Import (C, Pos_Menu_Cursor, "pos_menu_cursor");
+
+      Res : constant Eti_Error := Pos_Menu_Cursor (Men);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Position_Cursor;
+
+-------------------------------------------------------------------------------
+   procedure Set_Mark (Men  : in Menu;
+                       Mark : in String)
+   is
+      type Char_Ptr is access all Interfaces.C.char;
+      function Set_Mark (Men  : Menu;
+                         Mark : Char_Ptr) return C_Int;
+      pragma Import (C, Set_Mark, "set_menu_mark");
+
+      Txt : char_array (0 .. Mark'Length);
+      Len : size_t;
+      Res : Eti_Error;
+   begin
+      To_C (Mark, Txt, Len);
+      Res := Set_Mark (Men, Txt (Txt'First)'Access);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Mark;
+
+   procedure Mark (Men  : in  Menu;
+                   Mark : out String)
+   is
+      function Get_Menu_Mark (Men : Menu) return chars_ptr;
+      pragma Import (C, Get_Menu_Mark, "menu_mark");
+   begin
+      Fill_String (Get_Menu_Mark (Men), Mark);
+   end Mark;
+
+   function Mark (Men : Menu) return String
+   is
+      function Get_Menu_Mark (Men : Menu) return chars_ptr;
+      pragma Import (C, Get_Menu_Mark, "menu_mark");
+   begin
+      return Fill_String (Get_Menu_Mark (Men));
+   end Mark;
+
+-------------------------------------------------------------------------------
+   procedure Set_Foreground
+     (Men   : in Menu;
+      Fore  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Set_Menu_Fore (Men  : Menu;
+                              Attr : C_Chtype) return C_Int;
+      pragma Import (C, Set_Menu_Fore, "set_menu_fore");
+
+      Ch : constant Attributed_Character := (Ch    => Character'First,
+                                             Color => Color,
+                                             Attr  => Fore);
+      Res : constant Eti_Error := Set_Menu_Fore (Men, AttrChar_To_Chtype (Ch));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Foreground;
+
+   procedure Foreground (Men  : in  Menu;
+                         Fore : out Character_Attribute_Set)
+   is
+      function Menu_Fore (Men : Menu) return C_Chtype;
+      pragma Import (C, Menu_Fore, "menu_fore");
+   begin
+      Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
+   end Foreground;
+
+   procedure Foreground (Men   : in  Menu;
+                         Fore  : out Character_Attribute_Set;
+                         Color : out Color_Pair)
+   is
+      function Menu_Fore (Men : Menu) return C_Chtype;
+      pragma Import (C, Menu_Fore, "menu_fore");
+   begin
+      Fore  := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
+      Color := Chtype_To_AttrChar (Menu_Fore (Men)).Color;
+   end Foreground;
+
+   procedure Set_Background
+     (Men   : in Menu;
+      Back  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Set_Menu_Back (Men  : Menu;
+                              Attr : C_Chtype) return C_Int;
+      pragma Import (C, Set_Menu_Back, "set_menu_back");
+
+      Ch : constant Attributed_Character := (Ch    => Character'First,
+                                             Color => Color,
+                                             Attr  => Back);
+      Res : constant Eti_Error := Set_Menu_Back (Men, AttrChar_To_Chtype (Ch));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Background;
+
+   procedure Background (Men  : in  Menu;
+                         Back : out Character_Attribute_Set)
+   is
+      function Menu_Back (Men : Menu) return C_Chtype;
+      pragma Import (C, Menu_Back, "menu_back");
+   begin
+      Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
+   end Background;
+
+   procedure Background (Men   : in  Menu;
+                         Back  : out Character_Attribute_Set;
+                         Color : out Color_Pair)
+   is
+      function Menu_Back (Men : Menu) return C_Chtype;
+      pragma Import (C, Menu_Back, "menu_back");
+   begin
+      Back  := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
+      Color := Chtype_To_AttrChar (Menu_Back (Men)).Color;
+   end Background;
+
+   procedure Set_Grey (Men   : in Menu;
+                       Grey  : in Character_Attribute_Set := Normal_Video;
+                       Color : in Color_Pair := Color_Pair'First)
+   is
+      function Set_Menu_Grey (Men  : Menu;
+                              Attr : C_Chtype) return C_Int;
+      pragma Import (C, Set_Menu_Grey, "set_menu_grey");
+
+      Ch : constant Attributed_Character := (Ch    => Character'First,
+                                             Color => Color,
+                                             Attr  => Grey);
+
+      Res : constant Eti_Error := Set_Menu_Grey (Men, AttrChar_To_Chtype (Ch));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Grey;
+
+   procedure Grey (Men  : in  Menu;
+                   Grey : out Character_Attribute_Set)
+   is
+      function Menu_Grey (Men : Menu) return C_Chtype;
+      pragma Import (C, Menu_Grey, "menu_grey");
+   begin
+      Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
+   end Grey;
+
+   procedure Grey (Men  : in  Menu;
+                   Grey : out Character_Attribute_Set;
+                   Color : out Color_Pair)
+   is
+      function Menu_Grey (Men : Menu) return C_Chtype;
+      pragma Import (C, Menu_Grey, "menu_grey");
+   begin
+      Grey  := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
+      Color := Chtype_To_AttrChar (Menu_Grey (Men)).Color;
+   end Grey;
+
+   procedure Set_Pad_Character (Men : in Menu;
+                                Pad : in Character := Space)
+   is
+      function Set_Menu_Pad (Men : Menu;
+                             Ch  : C_Int) return C_Int;
+      pragma Import (C, Set_Menu_Pad, "set_menu_pad");
+
+      Res : constant Eti_Error := Set_Menu_Pad (Men,
+                                                C_Int (Character'Pos (Pad)));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Pad_Character;
+
+   procedure Pad_Character (Men : in  Menu;
+                            Pad : out Character)
+   is
+      function Menu_Pad (Men : Menu) return C_Int;
+      pragma Import (C, Menu_Pad, "menu_pad");
+   begin
+      Pad := Character'Val (Menu_Pad (Men));
+   end Pad_Character;
+-------------------------------------------------------------------------------
+   procedure Set_Spacing (Men   : in Menu;
+                          Descr : in Column_Position := 0;
+                          Row   : in Line_Position   := 0;
+                          Col   : in Column_Position := 0)
+   is
+      function Set_Spacing (Men     : Menu;
+                            D, R, C : C_Int) return C_Int;
+      pragma Import (C, Set_Spacing, "set_menu_spacing");
+
+      Res : constant Eti_Error := Set_Spacing (Men,
+                                               C_Int (Descr),
+                                               C_Int (Row),
+                                               C_Int (Col));
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Spacing;
+
+   procedure Spacing (Men   : in Menu;
+                      Descr : out Column_Position;
+                      Row   : out Line_Position;
+                      Col   : out Column_Position)
+   is
+      type C_Int_Access is access all C_Int;
+      function Get_Spacing (Men     : Menu;
+                            D, R, C : C_Int_Access) return C_Int;
+      pragma Import (C, Get_Spacing, "menu_spacing");
+
+      D, R, C : aliased C_Int;
+      Res : constant Eti_Error := Get_Spacing (Men,
+                                               D'Access,
+                                               R'Access,
+                                               C'Access);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      else
+         Descr := Column_Position (D);
+         Row   := Line_Position (R);
+         Col   := Column_Position (C);
+      end if;
+   end Spacing;
+-------------------------------------------------------------------------------
+   function Set_Pattern (Men  : Menu;
+                         Text : String) return Boolean
+   is
+      type Char_Ptr is access all Interfaces.C.char;
+      function Set_Pattern (Men     : Menu;
+                            Pattern : Char_Ptr) return C_Int;
+      pragma Import (C, Set_Pattern, "set_menu_pattern");
+
+      S   : char_array (0 .. Text'Length);
+      L   : size_t;
+      Res : Eti_Error;
+   begin
+      To_C (Text, S, L);
+      Res := Set_Pattern (Men, S (S'First)'Access);
+      case Res is
+         when E_No_Match => return False;
+         when E_Ok       => return True;
+         when others =>
+            Eti_Exception (Res);
+            return False;
+      end case;
+   end Set_Pattern;
+
+   procedure Pattern (Men  : in  Menu;
+                      Text : out String)
+   is
+      function Get_Pattern (Men : Menu) return chars_ptr;
+      pragma Import (C, Get_Pattern, "menu_pattern");
+   begin
+      Fill_String (Get_Pattern (Men), Text);
+   end Pattern;
+-------------------------------------------------------------------------------
+   procedure Set_Format (Men     : in Menu;
+                         Lines   : in Line_Count;
+                         Columns : in Column_Count)
+   is
+      function Set_Menu_Fmt (Men : Menu;
+                             Lin : C_Int;
+                             Col : C_Int) return C_Int;
+      pragma Import (C, Set_Menu_Fmt, "set_menu_format");
+
+      Res : constant Eti_Error := Set_Menu_Fmt (Men,
+                                                C_Int (Lines),
+                                                C_Int (Columns));
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Format;
+
+   procedure Format (Men     : in  Menu;
+                     Lines   : out Line_Count;
+                     Columns : out Column_Count)
+   is
+      type C_Int_Access is access all C_Int;
+      function Menu_Fmt (Men  : Menu;
+                         Y, X : C_Int_Access) return C_Int;
+      pragma Import (C, Menu_Fmt, "menu_format");
+
+      L, C : aliased C_Int;
+      Res  : constant Eti_Error := Menu_Fmt (Men, L'Access, C'Access);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      else
+         Lines   := Line_Count (L);
+         Columns := Column_Count (C);
+      end if;
+   end Format;
+-------------------------------------------------------------------------------
+   procedure Set_Item_Init_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function)
+   is
+      function Set_Item_Init (Men  : Menu;
+                              Proc : Menu_Hook_Function) return C_Int;
+      pragma Import (C, Set_Item_Init, "set_item_init");
+
+      Res : constant Eti_Error := Set_Item_Init (Men, Proc);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Item_Init_Hook;
+
+   procedure Set_Item_Term_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function)
+   is
+      function Set_Item_Term (Men  : Menu;
+                              Proc : Menu_Hook_Function) return C_Int;
+      pragma Import (C, Set_Item_Term, "set_item_term");
+
+      Res : constant Eti_Error := Set_Item_Term (Men, Proc);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Item_Term_Hook;
+
+   procedure Set_Menu_Init_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function)
+   is
+      function Set_Menu_Init (Men  : Menu;
+                              Proc : Menu_Hook_Function) return C_Int;
+      pragma Import (C, Set_Menu_Init, "set_menu_init");
+
+      Res : constant Eti_Error := Set_Menu_Init (Men, Proc);
+   begin
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Menu_Init_Hook;
+
+   procedure Set_Menu_Term_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function)
+   is
+      function Set_Menu_Term (Men  : Menu;
+                              Proc : Menu_Hook_Function) return C_Int;
+      pragma Import (C, Set_Menu_Term, "set_menu_term");
+
+      Res : constant Eti_Error := Set_Menu_Term (Men, Proc);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+   end Set_Menu_Term_Hook;
+
+   function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function
+   is
+      function Item_Init (Men : Menu) return Menu_Hook_Function;
+      pragma Import (C, Item_Init, "item_init");
+   begin
+      return Item_Init (Men);
+   end Get_Item_Init_Hook;
+
+   function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function
+   is
+      function Item_Term (Men : Menu) return Menu_Hook_Function;
+      pragma Import (C, Item_Term, "item_term");
+   begin
+      return Item_Term (Men);
+   end Get_Item_Term_Hook;
+
+   function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function
+   is
+      function Menu_Init (Men : Menu) return Menu_Hook_Function;
+      pragma Import (C, Menu_Init, "menu_init");
+   begin
+      return Menu_Init (Men);
+   end Get_Menu_Init_Hook;
+
+   function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function
+   is
+      function Menu_Term (Men : Menu) return Menu_Hook_Function;
+      pragma Import (C, Menu_Term, "menu_term");
+   begin
+      return Menu_Term (Men);
+   end Get_Menu_Term_Hook;
+-------------------------------------------------------------------------------
+   procedure Redefine (Men   : in Menu;
+                       Items : in Item_Array_Access)
+   is
+      function Set_Items (Men   : Menu;
+                          Items : System.Address) return C_Int;
+      pragma Import (C, Set_Items, "set_menu_items");
+
+      Res : Eti_Error;
+   begin
+      pragma Assert (Items (Items'Last) = Null_Item);
+      if Items (Items'Last) /= Null_Item then
+         raise Menu_Exception;
+      else
+         Res := Set_Items (Men, Items.all'Address);
+         if  Res /= E_Ok then
+            Eti_Exception (Res);
+         end if;
+      end if;
+   end Redefine;
+
+   function Item_Count (Men : Menu) return Natural
+   is
+      function Count (Men : Menu) return C_Int;
+      pragma Import (C, Count, "item_count");
+   begin
+      return Natural (Count (Men));
+   end Item_Count;
+
+   function Items (Men   : Menu;
+                   Index : Positive) return Item
+   is
+      use I_Array;
+
+      function C_Mitems (Men : Menu) return Pointer;
+      pragma Import (C, C_Mitems, "menu_items");
+
+      P : Pointer := C_Mitems (Men);
+   begin
+      if P = null or else Index > Item_Count (Men) then
+         raise Menu_Exception;
+      else
+         P := P + ptrdiff_t (C_Int (Index) - 1);
+         return P.all;
+      end if;
+   end Items;
+
+-------------------------------------------------------------------------------
+   function Create (Items : Item_Array_Access) return Menu
+   is
+      function Newmenu (Items : System.Address) return Menu;
+      pragma Import (C, Newmenu, "new_menu");
+
+      M   : Menu;
+   begin
+      pragma Assert (Items (Items'Last) = Null_Item);
+      if Items (Items'Last) /= Null_Item then
+         raise Menu_Exception;
+      else
+         M := Newmenu (Items.all'Address);
+         if M = Null_Menu then
+            raise Menu_Exception;
+         end if;
+         return M;
+      end if;
+   end Create;
+
+   procedure Delete (Men : in out Menu)
+   is
+      function Free (Men : Menu) return C_Int;
+      pragma Import (C, Free, "free_menu");
+
+      Res : constant Eti_Error := Free (Men);
+   begin
+      if Res /= E_Ok then
+         Eti_Exception (Res);
+      end if;
+      Men := Null_Menu;
+   end Delete;
+
+------------------------------------------------------------------------------
+   function Driver (Men : Menu;
+                    Key : Key_Code) return Driver_Result
+   is
+      function Driver (Men : Menu;
+                       Key : C_Int) return C_Int;
+      pragma Import (C, Driver, "menu_driver");
+
+      R : constant Eti_Error := Driver (Men, C_Int (Key));
+   begin
+      if R /= E_Ok then
+         case R is
+            when E_Unknown_Command  => return Unknown_Request;
+            when E_No_Match         => return No_Match;
+            when E_Request_Denied |
+                 E_Not_Selectable   => return Request_Denied;
+            when others =>
+               Eti_Exception (R);
+         end case;
+      end if;
+      return Menu_Ok;
+   end Driver;
+
+   procedure Free (IA         : in out Item_Array_Access;
+                   Free_Items : in Boolean := False)
+   is
+      procedure Release is new Ada.Unchecked_Deallocation
+        (Item_Array, Item_Array_Access);
+   begin
+      if IA /= null and then Free_Items then
+         for I in IA'First .. (IA'Last - 1) loop
+            if IA (I) /= Null_Item then
+               Delete (IA (I));
+            end if;
+         end loop;
+      end if;
+      Release (IA);
+   end Free;
+
+-------------------------------------------------------------------------------
+   function Default_Menu_Options return Menu_Option_Set
+   is
+   begin
+      return Get_Options (Null_Menu);
+   end Default_Menu_Options;
+
+   function Default_Item_Options return Item_Option_Set
+   is
+   begin
+      return Get_Options (Null_Item);
+   end Default_Item_Options;
+-------------------------------------------------------------------------------
+
+end Terminal_Interface.Curses.Menus;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-menus__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-menus__ads.htm new file mode 100644 index 0000000..62780fb --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-menus__ads.htm @@ -0,0 +1,681 @@ + +terminal_interface-curses-menus.ads + +

File : terminal_interface-curses-menus.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Menu                      --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.27 @
+--  @Date: 2007/05/05 20:20:52 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  menu binding.
+--  This module is generated. Please don't change it manually!
+--  Run the generator instead.
+--  |
+with System;
+with Ada.Characters.Latin_1;
+
+package Terminal_Interface.Curses.Menus is
+   pragma Preelaborate (Terminal_Interface.Curses.Menus);
+   pragma Linker_Options ("-lmenuw");
+   pragma Linker_Options ("-lncursesw");
+
+   Space : Character renames Ada.Characters.Latin_1.Space;
+
+   type Item is private;
+   type Menu is private;
+
+   ---------------------------
+   --  Interface constants  --
+   ---------------------------
+   Null_Item : constant Item;
+   Null_Menu : constant Menu;
+
+   subtype Menu_Request_Code is Key_Code
+     range (Key_Max + 1) .. (Key_Max + 17);
+
+   --  The prefix M_ stands for "Menu Request"
+   M_Left_Item       : constant Menu_Request_Code := Key_Max + 1;
+   M_Right_Item      : constant Menu_Request_Code := Key_Max + 2;
+   M_Up_Item         : constant Menu_Request_Code := Key_Max + 3;
+   M_Down_Item       : constant Menu_Request_Code := Key_Max + 4;
+   M_ScrollUp_Line   : constant Menu_Request_Code := Key_Max + 5;
+   M_ScrollDown_Line : constant Menu_Request_Code := Key_Max + 6;
+   M_ScrollDown_Page : constant Menu_Request_Code := Key_Max + 7;
+   M_ScrollUp_Page   : constant Menu_Request_Code := Key_Max + 8;
+   M_First_Item      : constant Menu_Request_Code := Key_Max + 9;
+   M_Last_Item       : constant Menu_Request_Code := Key_Max + 10;
+   M_Next_Item       : constant Menu_Request_Code := Key_Max + 11;
+   M_Previous_Item   : constant Menu_Request_Code := Key_Max + 12;
+   M_Toggle_Item     : constant Menu_Request_Code := Key_Max + 13;
+   M_Clear_Pattern   : constant Menu_Request_Code := Key_Max + 14;
+   M_Back_Pattern    : constant Menu_Request_Code := Key_Max + 15;
+   M_Next_Match      : constant Menu_Request_Code := Key_Max + 16;
+   M_Previous_Match  : constant Menu_Request_Code := Key_Max + 17;
+
+   --  For those who like the old 'C' names for the request codes
+   REQ_LEFT_ITEM     : Menu_Request_Code renames M_Left_Item;
+   REQ_RIGHT_ITEM    : Menu_Request_Code renames M_Right_Item;
+   REQ_UP_ITEM       : Menu_Request_Code renames M_Up_Item;
+   REQ_DOWN_ITEM     : Menu_Request_Code renames M_Down_Item;
+   REQ_SCR_ULINE     : Menu_Request_Code renames M_ScrollUp_Line;
+   REQ_SCR_DLINE     : Menu_Request_Code renames M_ScrollDown_Line;
+   REQ_SCR_DPAGE     : Menu_Request_Code renames M_ScrollDown_Page;
+   REQ_SCR_UPAGE     : Menu_Request_Code renames M_ScrollUp_Page;
+   REQ_FIRST_ITEM    : Menu_Request_Code renames M_First_Item;
+   REQ_LAST_ITEM     : Menu_Request_Code renames M_Last_Item;
+   REQ_NEXT_ITEM     : Menu_Request_Code renames M_Next_Item;
+   REQ_PREV_ITEM     : Menu_Request_Code renames M_Previous_Item;
+   REQ_TOGGLE_ITEM   : Menu_Request_Code renames M_Toggle_Item;
+   REQ_CLEAR_PATTERN : Menu_Request_Code renames M_Clear_Pattern;
+   REQ_BACK_PATTERN  : Menu_Request_Code renames M_Back_Pattern;
+   REQ_NEXT_MATCH    : Menu_Request_Code renames M_Next_Match;
+   REQ_PREV_MATCH    : Menu_Request_Code renames M_Previous_Match;
+
+   procedure Request_Name (Key  : in Menu_Request_Code;
+                           Name : out String);
+
+   function  Request_Name (Key : Menu_Request_Code) return String;
+   --  Same as function
+
+   ------------------
+   --  Exceptions  --
+   ------------------
+
+   Menu_Exception : exception;
+   --
+   --  Menu options
+   --
+   pragma Warnings (Off);
+   type Menu_Option_Set is
+      record
+         One_Valued        : Boolean;
+         Show_Descriptions : Boolean;
+         Row_Major_Order   : Boolean;
+         Ignore_Case       : Boolean;
+         Show_Matches      : Boolean;
+         Non_Cyclic        : Boolean;
+      end record;
+   pragma Convention (C, Menu_Option_Set);
+
+   for Menu_Option_Set use
+      record
+         One_Valued        at 0 range  0 ..  0;
+         Show_Descriptions at 0 range  1 ..  1;
+         Row_Major_Order   at 0 range  2 ..  2;
+         Ignore_Case       at 0 range  3 ..  3;
+         Show_Matches      at 0 range  4 ..  4;
+         Non_Cyclic        at 0 range  5 ..  5;
+      end record;
+   for Menu_Option_Set'Size use 32;
+   --  Please note: this rep. clause is generated and may be
+   --               different on your system.
+   pragma Warnings (On);
+
+   function Default_Menu_Options return Menu_Option_Set;
+   --  Initial default options for a menu.
+   pragma Inline (Default_Menu_Options);
+   --
+   --  Item options
+   --
+   pragma Warnings (Off);
+   type Item_Option_Set is
+      record
+         Selectable  : Boolean;
+      end record;
+   pragma Convention (C, Item_Option_Set);
+
+   for Item_Option_Set use
+      record
+         Selectable  at 0 range  0 ..  0;
+      end record;
+   for Item_Option_Set'Size use 32;
+   --  Please note: this rep. clause is generated and may be
+   --               different on your system.
+   pragma Warnings (On);
+
+   function Default_Item_Options return Item_Option_Set;
+   --  Initial default options for an item.
+   pragma Inline (Default_Item_Options);
+
+   --
+   --  Item Array
+   --
+   type Item_Array is array (Positive range <>) of aliased Item;
+   pragma Convention (C, Item_Array);
+
+   type Item_Array_Access is access Item_Array;
+
+   procedure Free (IA         : in out Item_Array_Access;
+                   Free_Items : Boolean := False);
+   --  Release the memory for an allocated item array
+   --  If Free_Items is True, call Delete() for all the items in
+   --  the array.
+
+   --  |=====================================================================
+   --  | Man page mitem_new.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   function Create (Name        : String;
+                    Description : String := "") return Item;
+   --  AKA: new_item()
+   --  Not inlined.
+
+   --  #1A NAME="AFU_2"#2|
+   function New_Item (Name        : String;
+                      Description : String := "") return Item
+     renames Create;
+   --  AKA: new_item()
+
+   --  #1A NAME="AFU_3"#2|
+   procedure Delete (Itm : in out Item);
+   --  AKA: free_item()
+   --  Resets Itm to Null_Item
+
+   --  |=====================================================================
+   --  | Man page mitem_value.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_4"#2|
+   procedure Set_Value (Itm   : in Item;
+                        Value : in Boolean := True);
+   --  AKA: set_item_value()
+   pragma Inline (Set_Value);
+
+   --  #1A NAME="AFU_5"#2|
+   function Value (Itm : Item) return Boolean;
+   --  AKA: item_value()
+   pragma Inline (Value);
+
+   --  |=====================================================================
+   --  | Man page mitem_visible.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_6"#2|
+   function Visible (Itm : Item) return Boolean;
+   --  AKA: item_visible()
+   pragma Inline (Visible);
+
+   --  |=====================================================================
+   --  | Man page mitem_opts.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_7"#2|
+   procedure Set_Options (Itm     : in Item;
+                          Options : in Item_Option_Set);
+   --  AKA: set_item_opts()
+   --  An overloaded Set_Options is defined later. Pragma Inline appears there
+
+   --  #1A NAME="AFU_8"#2|
+   procedure Switch_Options (Itm     : in Item;
+                             Options : in Item_Option_Set;
+                             On      : Boolean := True);
+   --  AKA: item_opts_on()
+   --  AKA: item_opts_off()
+   --  An overloaded Switch_Options is defined later.
+   --  Pragma Inline appears there
+
+   --  #1A NAME="AFU_9"#2|
+   procedure Get_Options (Itm     : in  Item;
+                          Options : out Item_Option_Set);
+   --  AKA: item_opts()
+
+   --  #1A NAME="AFU_10"#2|
+   function Get_Options (Itm : Item := Null_Item) return Item_Option_Set;
+   --  AKA: item_opts()
+   --  An overloaded Get_Options is defined later. Pragma Inline appears there
+
+   --  |=====================================================================
+   --  | Man page mitem_name.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_11"#2|
+   procedure Name (Itm  : in Item;
+                   Name : out String);
+   --  AKA: item_name()
+   function  Name (Itm : Item) return String;
+   --  AKA: item_name()
+   --  Implemented as function
+   pragma Inline (Name);
+
+   --  #1A NAME="AFU_12"#2|
+   procedure Description (Itm         : in Item;
+                          Description : out String);
+   --  AKA: item_description();
+
+   function  Description (Itm : Item) return String;
+   --  AKA: item_description();
+   --  Implemented as function
+   pragma Inline (Description);
+
+   --  |=====================================================================
+   --  | Man page mitem_current.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_13"#2|
+   procedure Set_Current (Men : in Menu;
+                          Itm : in Item);
+   --  AKA: set_current_item()
+   pragma Inline (Set_Current);
+
+   --  #1A NAME="AFU_14"#2|
+   function Current (Men : Menu) return Item;
+   --  AKA: current_item()
+   pragma Inline (Current);
+
+   --  #1A NAME="AFU_15"#2|
+   procedure Set_Top_Row (Men  : in Menu;
+                          Line : in Line_Position);
+   --  AKA: set_top_row()
+   pragma Inline (Set_Top_Row);
+
+   --  #1A NAME="AFU_16"#2|
+   function Top_Row (Men : Menu) return Line_Position;
+   --  AKA: top_row()
+   pragma Inline (Top_Row);
+
+   --  #1A NAME="AFU_17"#2|
+   function Get_Index (Itm : Item) return Positive;
+   --  AKA: item_index()
+   --  Please note that in this binding we start the numbering of items
+   --  with 1. So this is number is one more than you get from the low
+   --  level call.
+   pragma Inline (Get_Index);
+
+   --  |=====================================================================
+   --  | Man page menu_post.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_18"#2|
+   procedure Post (Men  : in Menu;
+                   Post : in Boolean := True);
+   --  AKA: post_menu()
+   --  AKA: unpost_menu()
+   pragma Inline (Post);
+
+   --  |=====================================================================
+   --  | Man page menu_opts.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_19"#2|
+   procedure Set_Options (Men     : in Menu;
+                          Options : in Menu_Option_Set);
+   --  AKA: set_menu_opts()
+   pragma Inline (Set_Options);
+
+   --  #1A NAME="AFU_20"#2|
+   procedure Switch_Options (Men     : in Menu;
+                             Options : in Menu_Option_Set;
+                             On      : Boolean := True);
+   --  AKA: menu_opts_on()
+   --  AKA: menu_opts_off()
+   pragma Inline (Switch_Options);
+
+   --  #1A NAME="AFU_21"#2|
+   procedure Get_Options (Men     : in  Menu;
+                          Options : out Menu_Option_Set);
+   --  AKA: menu_opts()
+
+   --  #1A NAME="AFU_22"#2|
+   function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set;
+   --  AKA: menu_opts()
+   pragma Inline (Get_Options);
+
+   --  |=====================================================================
+   --  | Man page menu_win.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_23"#2|
+   procedure Set_Window (Men : in Menu;
+                         Win : in Window);
+   --  AKA: set_menu_win()
+   pragma Inline (Set_Window);
+
+   --  #1A NAME="AFU_24"#2|
+   function Get_Window (Men : Menu) return Window;
+   --  AKA: menu_win()
+   pragma Inline (Get_Window);
+
+   --  #1A NAME="AFU_25"#2|
+   procedure Set_Sub_Window (Men : in Menu;
+                             Win : in Window);
+   --  AKA: set_menu_sub()
+   pragma Inline (Set_Sub_Window);
+
+   --  #1A NAME="AFU_26"#2|
+   function Get_Sub_Window (Men : Menu) return Window;
+   --  AKA: menu_sub()
+   pragma Inline (Get_Sub_Window);
+
+   --  #1A NAME="AFU_27"#2|
+   procedure Scale (Men     : in Menu;
+                    Lines   : out Line_Count;
+                    Columns : out Column_Count);
+   --  AKA: scale_menu()
+   pragma Inline (Scale);
+
+   --  |=====================================================================
+   --  | Man page menu_cursor.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_28"#2|
+   procedure Position_Cursor (Men : Menu);
+   --  AKA: pos_menu_cursor()
+   pragma Inline (Position_Cursor);
+
+   --  |=====================================================================
+   --  | Man page menu_mark.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_29"#2|
+   procedure Set_Mark (Men  : in Menu;
+                       Mark : in String);
+   --  AKA: set_menu_mark()
+   pragma Inline (Set_Mark);
+
+   --  #1A NAME="AFU_30"#2|
+   procedure Mark (Men  : in  Menu;
+                   Mark : out String);
+   --  AKA: menu_mark()
+
+   function  Mark (Men : Menu) return String;
+   --  AKA: menu_mark()
+   --  Implemented as function
+   pragma Inline (Mark);
+
+   --  |=====================================================================
+   --  | Man page menu_attributes.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_31"#2|
+   procedure Set_Foreground
+     (Men   : in Menu;
+      Fore  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: set_menu_fore()
+   pragma Inline (Set_Foreground);
+
+   --  #1A NAME="AFU_32"#2|
+   procedure Foreground (Men   : in  Menu;
+                         Fore  : out Character_Attribute_Set);
+   --  AKA: menu_fore()
+
+   --  #1A NAME="AFU_33"#2|
+   procedure Foreground (Men   : in  Menu;
+                         Fore  : out Character_Attribute_Set;
+                         Color : out Color_Pair);
+   --  AKA: menu_fore()
+   pragma Inline (Foreground);
+
+   --  #1A NAME="AFU_34"#2|
+   procedure Set_Background
+     (Men   : in Menu;
+      Back  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: set_menu_back()
+   pragma Inline (Set_Background);
+
+   --  #1A NAME="AFU_35"#2|
+   procedure Background (Men  : in  Menu;
+                         Back : out Character_Attribute_Set);
+   --  AKA: menu_back()
+   --  #1A NAME="AFU_36"#2|
+
+   procedure Background (Men   : in  Menu;
+                         Back  : out Character_Attribute_Set;
+                         Color : out Color_Pair);
+   --  AKA: menu_back()
+   pragma Inline (Background);
+
+   --  #1A NAME="AFU_37"#2|
+   procedure Set_Grey
+     (Men   : in Menu;
+      Grey  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: set_menu_grey()
+   pragma Inline (Set_Grey);
+
+   --  #1A NAME="AFU_38"#2|
+   procedure Grey (Men  : in  Menu;
+                   Grey : out Character_Attribute_Set);
+   --  AKA: menu_grey()
+
+   --  #1A NAME="AFU_39"#2|
+   procedure Grey
+     (Men   : in  Menu;
+      Grey  : out Character_Attribute_Set;
+      Color : out Color_Pair);
+   --  AKA: menu_grey()
+   pragma Inline (Grey);
+
+   --  #1A NAME="AFU_40"#2|
+   procedure Set_Pad_Character (Men : in Menu;
+                                Pad : in Character := Space);
+   --  AKA: set_menu_pad()
+   pragma Inline (Set_Pad_Character);
+
+   --  #1A NAME="AFU_41"#2|
+   procedure Pad_Character (Men : in  Menu;
+                            Pad : out Character);
+   --  AKA: menu_pad()
+   pragma Inline (Pad_Character);
+
+   --  |=====================================================================
+   --  | Man page menu_spacing.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_42"#2|
+   procedure Set_Spacing (Men   : in Menu;
+                          Descr : in Column_Position := 0;
+                          Row   : in Line_Position   := 0;
+                          Col   : in Column_Position := 0);
+   --  AKA: set_menu_spacing()
+   pragma Inline (Set_Spacing);
+
+   --  #1A NAME="AFU_43"#2|
+   procedure Spacing (Men   : in Menu;
+                      Descr : out Column_Position;
+                      Row   : out Line_Position;
+                      Col   : out Column_Position);
+   --  AKA: menu_spacing()
+   pragma Inline (Spacing);
+
+   --  |=====================================================================
+   --  | Man page menu_pattern.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_44"#2|
+   function Set_Pattern (Men  : Menu;
+                         Text : String) return Boolean;
+   --  AKA: set_menu_pattern()
+   --  Return TRUE if the pattern matches, FALSE otherwise
+   pragma Inline (Set_Pattern);
+
+   --  #1A NAME="AFU_45"#2|
+   procedure Pattern (Men  : in  Menu;
+                      Text : out String);
+   --  AKA: menu_pattern()
+   pragma Inline (Pattern);
+
+   --  |=====================================================================
+   --  | Man page menu_format.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_46"#2|
+   procedure Set_Format (Men     : in Menu;
+                         Lines   : in Line_Count;
+                         Columns : in Column_Count);
+   --  Not implemented: 0 argument for Lines or Columns;
+   --  instead use Format to get the current sizes
+   --      The  default  format  is  16  rows,  1  column.    Calling
+   --      set_menu_format  with a null menu pointer will change this
+   --      default.  A zero row or column argument to set_menu_format
+   --      is  interpreted  as  a  request  not to change the current
+   --      value.
+   --  AKA: set_menu_format()
+   pragma Inline (Set_Format);
+
+   --  #1A NAME="AFU_47"#2|
+   procedure Format (Men     : in  Menu;
+                     Lines   : out Line_Count;
+                     Columns : out Column_Count);
+   --  AKA: menu_format()
+   pragma Inline (Format);
+
+   --  |=====================================================================
+   --  | Man page menu_hook.3x
+   --  |=====================================================================
+
+   type Menu_Hook_Function is access procedure (Men : in Menu);
+   pragma Convention (C, Menu_Hook_Function);
+
+   --  #1A NAME="AFU_48"#2|
+   procedure Set_Item_Init_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function);
+   --  AKA: set_item_init()
+   pragma Inline (Set_Item_Init_Hook);
+
+   --  #1A NAME="AFU_49"#2|
+   procedure Set_Item_Term_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function);
+   --  AKA: set_item_term()
+   pragma Inline (Set_Item_Term_Hook);
+
+   --  #1A NAME="AFU_50"#2|
+   procedure Set_Menu_Init_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function);
+   --  AKA: set_menu_init()
+   pragma Inline (Set_Menu_Init_Hook);
+
+   --  #1A NAME="AFU_51"#2|
+   procedure Set_Menu_Term_Hook (Men  : in Menu;
+                                 Proc : in Menu_Hook_Function);
+   --  AKA: set_menu_term()
+   pragma Inline (Set_Menu_Term_Hook);
+
+   --  #1A NAME="AFU_52"#2|
+   function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function;
+   --  AKA: item_init()
+   pragma Inline (Get_Item_Init_Hook);
+
+   --  #1A NAME="AFU_53"#2|
+   function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function;
+   --  AKA: item_term()
+   pragma Inline (Get_Item_Term_Hook);
+
+   --  #1A NAME="AFU_54"#2|
+   function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function;
+   --  AKA: menu_init()
+   pragma Inline (Get_Menu_Init_Hook);
+
+   --  #1A NAME="AFU_55"#2|
+   function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function;
+   --  AKA: menu_term()
+   pragma Inline (Get_Menu_Term_Hook);
+
+   --  |=====================================================================
+   --  | Man page menu_items.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_56"#2|
+   procedure Redefine (Men   : in Menu;
+                       Items : in Item_Array_Access);
+   --  AKA: set_menu_items()
+   pragma Inline (Redefine);
+
+   procedure Set_Items (Men   : in Menu;
+                        Items : in Item_Array_Access) renames Redefine;
+   --  pragma Inline (Set_Items);
+
+   --  #1A NAME="AFU_57"#2|
+   function Items (Men   : Menu;
+                   Index : Positive) return Item;
+   --  AKA: menu_items()
+   pragma Inline (Items);
+
+   --  #1A NAME="AFU_58"#2|
+   function Item_Count (Men : Menu) return Natural;
+   --  AKA: item_count()
+   pragma Inline (Item_Count);
+
+   --  |=====================================================================
+   --  | Man page menu_new.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_59"#2|
+   function Create (Items : Item_Array_Access) return Menu;
+   --  AKA: new_menu()
+   --  Not inlined
+
+   function New_Menu (Items : Item_Array_Access) return Menu renames Create;
+
+   --  #1A NAME="AFU_60"#2|
+   procedure Delete (Men : in out Menu);
+   --  AKA: free_menu()
+   --  Reset Men to Null_Menu
+   --  Not inlined
+
+   --  |=====================================================================
+   --  | Man page menu_driver.3x
+   --  |=====================================================================
+
+   type Driver_Result is (Menu_Ok,
+                          Request_Denied,
+                          Unknown_Request,
+                          No_Match);
+
+   --  #1A NAME="AFU_61"#2|
+   function Driver (Men : Menu;
+                    Key : Key_Code) return Driver_Result;
+   --  AKA: menu_driver()
+   --  Driver is not inlined
+
+   --  #1A NAME="AFU_62"#2|
+   --  Not Implemented: menu_request_name, menu_request_by_name
+-------------------------------------------------------------------------------
+private
+   type Item   is new System.Storage_Elements.Integer_Address;
+   type Menu   is new System.Storage_Elements.Integer_Address;
+
+   Null_Item : constant Item := 0;
+   Null_Menu : constant Menu := 0;
+
+end Terminal_Interface.Curses.Menus;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-mouse__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-mouse__adb.htm new file mode 100644 index 0000000..4e3a178 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-mouse__adb.htm @@ -0,0 +1,223 @@ + +terminal_interface-curses-mouse.adb + +

File : terminal_interface-curses-mouse.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                     Terminal_Interface.Curses.Mouse                      --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2004,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.22 @
+--  @Date: 2008/07/26 18:51:11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Interfaces.C; use Interfaces.C;
+use Interfaces;
+
+package body Terminal_Interface.Curses.Mouse is
+
+   use type System.Bit_Order;
+
+   function Has_Mouse return Boolean
+   is
+      function Mouse_Avail return C_Int;
+      pragma Import (C, Mouse_Avail, "_nc_has_mouse");
+   begin
+      if Has_Key (Key_Mouse) or else Mouse_Avail /= 0 then
+         return True;
+      else
+         return False;
+      end if;
+   end Has_Mouse;
+
+   function Get_Mouse return Mouse_Event
+   is
+      type Event_Access is access all Mouse_Event;
+
+      function Getmouse (Ev : Event_Access) return C_Int;
+      pragma Import (C, Getmouse, "getmouse");
+
+      Event : aliased Mouse_Event;
+   begin
+      if Getmouse (Event'Access) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+      return Event;
+   end Get_Mouse;
+
+   procedure Register_Reportable_Event (Button : in Mouse_Button;
+                                        State  : in Button_State;
+                                        Mask   : in out Event_Mask)
+   is
+      Button_Nr : constant Natural := Mouse_Button'Pos (Button);
+      State_Nr  : constant Natural := Button_State'Pos (State);
+   begin
+      if Button in Modifier_Keys and then State /= Pressed then
+         raise Curses_Exception;
+      else
+         if Button in Real_Buttons then
+            Mask := Mask or ((2 ** (6 * Button_Nr)) ** State_Nr);
+         else
+            Mask := Mask or (BUTTON_CTRL ** (Button_Nr - 4));
+         end if;
+      end if;
+   end Register_Reportable_Event;
+
+   procedure Register_Reportable_Events (Button : in Mouse_Button;
+                                         State  : in Button_States;
+                                         Mask   : in out Event_Mask)
+   is
+   begin
+      for S in Button_States'Range loop
+         if State (S) then
+            Register_Reportable_Event (Button, S, Mask);
+         end if;
+      end loop;
+   end Register_Reportable_Events;
+
+   function Start_Mouse (Mask : Event_Mask := All_Events)
+                         return Event_Mask
+   is
+      function MMask (M : Event_Mask;
+                      O : access Event_Mask) return Event_Mask;
+      pragma Import (C, MMask, "mousemask");
+      R   : Event_Mask;
+      Old : aliased Event_Mask;
+   begin
+      R := MMask (Mask, Old'Access);
+      if R = No_Events then
+         Beep;
+      end if;
+      return Old;
+   end Start_Mouse;
+
+   procedure End_Mouse (Mask : in Event_Mask := No_Events)
+   is
+   begin
+      if Mask /= No_Events then
+         Beep;
+      end if;
+   end End_Mouse;
+
+   procedure Dispatch_Event (Mask   : in  Event_Mask;
+                             Button : out Mouse_Button;
+                             State  : out Button_State);
+
+   procedure Dispatch_Event (Mask   : in  Event_Mask;
+                             Button : out Mouse_Button;
+                             State  : out Button_State) is
+      L : Event_Mask;
+   begin
+      Button := Alt;  --  preset to non real button;
+      if (Mask and BUTTON1_EVENTS) /= 0 then
+         Button := Left;
+      elsif (Mask and BUTTON2_EVENTS) /= 0 then
+         Button := Middle;
+      elsif (Mask and BUTTON3_EVENTS) /= 0 then
+         Button := Right;
+      elsif (Mask and BUTTON4_EVENTS) /= 0 then
+         Button := Button4;
+      end if;
+      if Button in Real_Buttons then
+         L := 2 ** (6 * Mouse_Button'Pos (Button));
+         for I in Button_State'Range loop
+            if (Mask and L) /= 0 then
+               State := I;
+               exit;
+            end if;
+            L := 2 * L;
+         end loop;
+      else
+         State := Pressed;
+         if (Mask and BUTTON_CTRL) /= 0 then
+            Button := Control;
+         elsif (Mask and BUTTON_SHIFT) /= 0 then
+            Button := Shift;
+         elsif (Mask and BUTTON_ALT) /= 0 then
+            Button := Alt;
+         end if;
+      end if;
+   end Dispatch_Event;
+
+   procedure Get_Event (Event  : in  Mouse_Event;
+                        Y      : out Line_Position;
+                        X      : out Column_Position;
+                        Button : out Mouse_Button;
+                        State  : out Button_State)
+   is
+      Mask  : constant Event_Mask := Event.Bstate;
+   begin
+      X := Column_Position (Event.X);
+      Y := Line_Position   (Event.Y);
+      Dispatch_Event (Mask, Button, State);
+   end Get_Event;
+
+   procedure Unget_Mouse (Event : in Mouse_Event)
+   is
+      function Ungetmouse (Ev : Mouse_Event) return C_Int;
+      pragma Import (C, Ungetmouse, "ungetmouse");
+   begin
+      if Ungetmouse (Event) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Unget_Mouse;
+
+   function Enclosed_In_Window (Win    : Window := Standard_Window;
+                                Event  : Mouse_Event) return Boolean
+   is
+      function Wenclose (Win : Window; Y : C_Int; X : C_Int)
+                         return Curses_Bool;
+      pragma Import (C, Wenclose, "wenclose");
+   begin
+      if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X))
+        = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Enclosed_In_Window;
+
+   function Mouse_Interval (Msec : Natural := 200) return Natural
+   is
+      function Mouseinterval (Msec : C_Int) return C_Int;
+      pragma Import (C, Mouseinterval, "mouseinterval");
+   begin
+      return Natural (Mouseinterval (C_Int (Msec)));
+   end Mouse_Interval;
+
+end Terminal_Interface.Curses.Mouse;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-mouse__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-mouse__ads.htm new file mode 100644 index 0000000..608bd46 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-mouse__ads.htm @@ -0,0 +1,235 @@ + +terminal_interface-curses-mouse.ads + +

File : terminal_interface-curses-mouse.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Mouse                     --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.27 @
+--  @Date: 2006/06/25 14:30:22 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  mouse binding.
+--  This module is generated. Please don't change it manually!
+--  Run the generator instead.
+--  |
+with System;
+
+package Terminal_Interface.Curses.Mouse is
+   pragma Preelaborate (Terminal_Interface.Curses.Mouse);
+
+   --  |=====================================================================
+   --  | Man page curs_mouse.3x
+   --  |=====================================================================
+   --  Please note, that in ncurses-1.9.9e documentation mouse support
+   --  is still marked as experimental. So also this binding will change
+   --  if the ncurses methods change.
+   --
+   --  mouse_trafo, wmouse_trafo are implemented as Transform_Coordinates
+   --  in the parent package.
+   --
+   --  Not implemented:
+   --  REPORT_MOUSE_POSITION (i.e. as a parameter to Register_Reportable_Event
+   --  or Start_Mouse)
+   type Event_Mask is private;
+   No_Events  : constant Event_Mask;
+   All_Events : constant Event_Mask;
+
+   type Mouse_Button is (Left,     -- aka: Button 1
+                         Middle,   -- aka: Button 2
+                         Right,    -- aka: Button 3
+                         Button4,  -- aka: Button 4
+                         Control,  -- Control Key
+                         Shift,    -- Shift Key
+                         Alt);     -- ALT Key
+
+   subtype Real_Buttons  is Mouse_Button range Left .. Button4;
+   subtype Modifier_Keys is Mouse_Button range Control .. Alt;
+
+   type Button_State is (Released,
+                         Pressed,
+                         Clicked,
+                         Double_Clicked,
+                         Triple_Clicked);
+
+   type Button_States is array (Button_State) of Boolean;
+   pragma Pack (Button_States);
+
+   All_Clicks : constant Button_States := (Clicked .. Triple_Clicked => True,
+                                           others => False);
+   All_States : constant Button_States := (others => True);
+
+   type Mouse_Event is private;
+
+   --  |=====================================================================
+   --  | Man page curs_mouse.3x
+   --  |=====================================================================
+
+   function Has_Mouse return Boolean;
+   --  Return true if a mouse device is supported, false otherwise.
+
+   procedure Register_Reportable_Event
+     (Button : in Mouse_Button;
+      State  : in Button_State;
+      Mask   : in out Event_Mask);
+   --  Stores the event described by the button and the state in the mask.
+   --  Before you call this the first time, you should init the mask
+   --  with the Empty_Mask constant
+   pragma Inline (Register_Reportable_Event);
+
+   procedure Register_Reportable_Events
+     (Button : in Mouse_Button;
+      State  : in Button_States;
+      Mask   : in out Event_Mask);
+   --  Register all events described by the Button and the State bitmap.
+   --  Before you call this the first time, you should init the mask
+   --  with the Empty_Mask constant
+
+   --  #1A NAME="AFU_1"#2|
+   --  There is one difference to mousmask(): we return the value of the
+   --  old mask, that means the event mask value before this call.
+   --  Not Implemented: The library version
+   --  returns a Mouse_Mask that tells which events are reported.
+   function Start_Mouse (Mask : Event_Mask := All_Events)
+                         return Event_Mask;
+   --  AKA: mousemask()
+   pragma Inline (Start_Mouse);
+
+   procedure End_Mouse (Mask : in Event_Mask := No_Events);
+   --  Terminates the mouse, restores the specified event mask
+   pragma Inline (End_Mouse);
+
+   --  #1A NAME="AFU_2"#2|
+   function Get_Mouse return Mouse_Event;
+   --  AKA: getmouse()
+   pragma Inline (Get_Mouse);
+
+   procedure Get_Event (Event  : in  Mouse_Event;
+                        Y      : out Line_Position;
+                        X      : out Column_Position;
+                        Button : out Mouse_Button;
+                        State  : out Button_State);
+   --  !!! Warning: X and Y are screen coordinates. Due to ripped of lines they
+   --  may not be identical to window coordinates.
+   --  Not Implemented: Get_Event only reports one event, the C library
+   --  version supports multiple events, e.g. {click-1, click-3}
+   pragma Inline (Get_Event);
+
+   --  #1A NAME="AFU_3"#2|
+   procedure Unget_Mouse (Event : in Mouse_Event);
+   --  AKA: ungetmouse()
+   pragma Inline (Unget_Mouse);
+
+   --  #1A NAME="AFU_4"#2|
+   function Enclosed_In_Window (Win    : Window := Standard_Window;
+                                Event  : Mouse_Event) return Boolean;
+   --  AKA: wenclose()
+   --  But : use event instead of screen coordinates.
+   pragma Inline (Enclosed_In_Window);
+
+   --  #1A NAME="AFU_5"#2|
+   function Mouse_Interval (Msec : Natural := 200) return Natural;
+   --  AKA: mouseinterval()
+   pragma Inline (Mouse_Interval);
+
+private
+   type Event_Mask is new Interfaces.C.unsigned_long;
+
+   type Mouse_Event is
+      record
+         Id      : Integer range Integer (Interfaces.C.short'First) ..
+                                 Integer (Interfaces.C.short'Last);
+         X, Y, Z : Integer range Integer (Interfaces.C.int'First) ..
+                                 Integer (Interfaces.C.int'Last);
+         Bstate  : Event_Mask;
+      end record;
+   pragma Convention (C, Mouse_Event);
+
+   for Mouse_Event use
+      record
+         Id      at 0 range   0 ..  15;
+         X       at 0 range  32 ..  63;
+         Y       at 0 range  64 ..  95;
+         Z       at 0 range  96 .. 127;
+         Bstate  at 0 range 128 .. 159;
+      end record;
+      --  Please note: this rep. clause is generated and may be
+      --               different on your system.
+
+   Generation_Bit_Order : constant System.Bit_Order := System.Low_Order_First;
+   --  This constant may be different on your system.
+
+   BUTTON1_RELEASED          : constant Event_Mask := 8#00000000001#;
+   BUTTON1_PRESSED           : constant Event_Mask := 8#00000000002#;
+   BUTTON1_CLICKED           : constant Event_Mask := 8#00000000004#;
+   BUTTON1_DOUBLE_CLICKED    : constant Event_Mask := 8#00000000010#;
+   BUTTON1_TRIPLE_CLICKED    : constant Event_Mask := 8#00000000020#;
+   BUTTON1_RESERVED_EVENT    : constant Event_Mask := 8#00000000040#;
+   BUTTON2_RELEASED          : constant Event_Mask := 8#00000000100#;
+   BUTTON2_PRESSED           : constant Event_Mask := 8#00000000200#;
+   BUTTON2_CLICKED           : constant Event_Mask := 8#00000000400#;
+   BUTTON2_DOUBLE_CLICKED    : constant Event_Mask := 8#00000001000#;
+   BUTTON2_TRIPLE_CLICKED    : constant Event_Mask := 8#00000002000#;
+   BUTTON2_RESERVED_EVENT    : constant Event_Mask := 8#00000004000#;
+   BUTTON3_RELEASED          : constant Event_Mask := 8#00000010000#;
+   BUTTON3_PRESSED           : constant Event_Mask := 8#00000020000#;
+   BUTTON3_CLICKED           : constant Event_Mask := 8#00000040000#;
+   BUTTON3_DOUBLE_CLICKED    : constant Event_Mask := 8#00000100000#;
+   BUTTON3_TRIPLE_CLICKED    : constant Event_Mask := 8#00000200000#;
+   BUTTON3_RESERVED_EVENT    : constant Event_Mask := 8#00000400000#;
+   BUTTON4_RELEASED          : constant Event_Mask := 8#00001000000#;
+   BUTTON4_PRESSED           : constant Event_Mask := 8#00002000000#;
+   BUTTON4_CLICKED           : constant Event_Mask := 8#00004000000#;
+   BUTTON4_DOUBLE_CLICKED    : constant Event_Mask := 8#00010000000#;
+   BUTTON4_TRIPLE_CLICKED    : constant Event_Mask := 8#00020000000#;
+   BUTTON4_RESERVED_EVENT    : constant Event_Mask := 8#00040000000#;
+   BUTTON_CTRL               : constant Event_Mask := 8#00100000000#;
+   BUTTON_SHIFT              : constant Event_Mask := 8#00200000000#;
+   BUTTON_ALT                : constant Event_Mask := 8#00400000000#;
+   REPORT_MOUSE_POSITION     : constant Event_Mask := 8#01000000000#;
+   ALL_MOUSE_EVENTS          : constant Event_Mask := 8#00777777777#;
+   BUTTON1_EVENTS            : constant Event_Mask := 8#00000000077#;
+   BUTTON2_EVENTS            : constant Event_Mask := 8#00000007700#;
+   BUTTON3_EVENTS            : constant Event_Mask := 8#00000770000#;
+   BUTTON4_EVENTS            : constant Event_Mask := 8#00077000000#;
+
+   No_Events  : constant Event_Mask := 0;
+   All_Events : constant Event_Mask := ALL_MOUSE_EVENTS;
+
+end Terminal_Interface.Curses.Mouse;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm new file mode 100644 index 0000000..106a924 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm @@ -0,0 +1,84 @@ + +terminal_interface-curses-panels-user_data.adb + +

File : terminal_interface-curses-panels-user_data.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                 Terminal_Interface.Curses.Panels.User_Data               --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+with Terminal_Interface.Curses.Aux;
+use  Terminal_Interface.Curses.Aux;
+with Terminal_Interface.Curses.Panels;
+use  Terminal_Interface.Curses.Panels;
+
+package body Terminal_Interface.Curses.Panels.User_Data is
+
+   use type Interfaces.C.int;
+
+   procedure Set_User_Data (Pan  : in Panel;
+                            Data : in User_Access)
+   is
+      function Set_Panel_Userptr (Pan  : Panel;
+                                  Addr : User_Access) return C_Int;
+      pragma Import (C, Set_Panel_Userptr, "set_panel_userptr");
+   begin
+      if Set_Panel_Userptr (Pan, Data) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Set_User_Data;
+
+   function Get_User_Data (Pan  : in  Panel) return User_Access
+   is
+      function Panel_Userptr (Pan : Panel) return User_Access;
+      pragma Import (C, Panel_Userptr, "panel_userptr");
+   begin
+      return Panel_Userptr (Pan);
+   end Get_User_Data;
+
+   procedure Get_User_Data (Pan  : in  Panel;
+                            Data : out User_Access)
+   is
+   begin
+      Data := Get_User_Data (Pan);
+   end Get_User_Data;
+
+end Terminal_Interface.Curses.Panels.User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm new file mode 100644 index 0000000..c6b8fd4 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm @@ -0,0 +1,75 @@ + +terminal_interface-curses-panels-user_data.ads + +

File : terminal_interface-curses-panels-user_data.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                 Terminal_Interface.Curses.Panels.User_Data               --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.14 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+generic
+   type User is limited private;
+   type User_Access is access all User;
+package Terminal_Interface.Curses.Panels.User_Data is
+   pragma Preelaborate (Terminal_Interface.Curses.Panels.User_Data);
+
+   --  |=====================================================================
+   --  | Man page panel.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Set_User_Data (Pan  : in Panel;
+                            Data : in User_Access);
+   --  AKA: set_panel_userptr
+   pragma Inline (Set_User_Data);
+
+   --  #1A NAME="AFU_2"#2|
+   procedure Get_User_Data (Pan  : in  Panel;
+                            Data : out User_Access);
+   --  AKA: panel_userptr
+
+   --  #1A NAME="AFU_3"#2|
+   function Get_User_Data (Pan  : in  Panel) return User_Access;
+   --  AKA: panel_userptr
+   --  Same as function
+   pragma Inline (Get_User_Data);
+
+end Terminal_Interface.Curses.Panels.User_Data;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-panels__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-panels__adb.htm new file mode 100644 index 0000000..ff5a1bb --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-panels__adb.htm @@ -0,0 +1,171 @@ + +terminal_interface-curses-panels.adb + +

File : terminal_interface-curses-panels.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Panels                    --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2004 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.13 @
+--  @Date: 2004/08/21 21:37:00 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Interfaces.C;
+
+package body Terminal_Interface.Curses.Panels is
+
+   use type Interfaces.C.int;
+
+   function Create (Win : Window) return Panel
+   is
+      function Newpanel (Win : Window) return Panel;
+      pragma Import (C, Newpanel, "new_panel");
+
+      Pan : Panel;
+   begin
+      Pan := Newpanel (Win);
+      if Pan = Null_Panel then
+         raise Panel_Exception;
+      end if;
+      return Pan;
+   end Create;
+
+   procedure Bottom (Pan : in Panel)
+   is
+      function Bottompanel (Pan : Panel) return C_Int;
+      pragma Import (C, Bottompanel, "bottom_panel");
+   begin
+      if Bottompanel (Pan) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Bottom;
+
+   procedure Top (Pan : in Panel)
+   is
+      function Toppanel (Pan : Panel) return C_Int;
+      pragma Import (C, Toppanel, "top_panel");
+   begin
+      if Toppanel (Pan) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Top;
+
+   procedure Show (Pan : in Panel)
+   is
+      function Showpanel (Pan : Panel) return C_Int;
+      pragma Import (C, Showpanel, "show_panel");
+   begin
+      if Showpanel (Pan) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Show;
+
+   procedure Hide (Pan : in Panel)
+   is
+      function Hidepanel (Pan : Panel) return C_Int;
+      pragma Import (C, Hidepanel, "hide_panel");
+   begin
+      if Hidepanel (Pan) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Hide;
+
+   function Get_Window (Pan : Panel) return Window
+   is
+      function Panel_Win (Pan : Panel) return Window;
+      pragma Import (C, Panel_Win, "panel_window");
+
+      Win : constant Window := Panel_Win (Pan);
+   begin
+      if Win = Null_Window then
+         raise Panel_Exception;
+      end if;
+      return Win;
+   end Get_Window;
+
+   procedure Replace (Pan : in Panel;
+                      Win : in Window)
+   is
+      function Replace_Pan (Pan : Panel;
+                            Win : Window) return C_Int;
+      pragma Import (C, Replace_Pan, "replace_panel");
+   begin
+      if Replace_Pan (Pan, Win) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Replace;
+
+   procedure Move (Pan    : in Panel;
+                   Line   : in Line_Position;
+                   Column : in Column_Position)
+   is
+      function Move (Pan    : Panel;
+                     Line   : C_Int;
+                     Column : C_Int) return C_Int;
+      pragma Import (C, Move, "move_panel");
+   begin
+      if Move (Pan, C_Int (Line), C_Int (Column)) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+   end Move;
+
+   function Is_Hidden (Pan : Panel) return Boolean
+   is
+      function Panel_Hidden (Pan : Panel) return C_Int;
+      pragma Import (C, Panel_Hidden, "panel_hidden");
+   begin
+      if Panel_Hidden (Pan) = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Is_Hidden;
+
+   procedure Delete (Pan : in out Panel)
+   is
+      function Del_Panel (Pan : Panel) return C_Int;
+      pragma Import (C, Del_Panel, "del_panel");
+   begin
+      if Del_Panel (Pan) = Curses_Err then
+         raise Panel_Exception;
+      end if;
+      Pan := Null_Panel;
+   end Delete;
+
+end Terminal_Interface.Curses.Panels;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-panels__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-panels__ads.htm new file mode 100644 index 0000000..9ee9370 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-panels__ads.htm @@ -0,0 +1,153 @@ + +terminal_interface-curses-panels.ads + +

File : terminal_interface-curses-panels.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Panels                    --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.19 @
+--  @Date: 2006/06/25 14:30:22 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with System;
+
+package Terminal_Interface.Curses.Panels is
+   pragma Preelaborate (Terminal_Interface.Curses.Panels);
+   pragma Linker_Options ("-lpanelw");
+   pragma Linker_Options ("-lncursesw");
+
+   type Panel is private;
+
+   ---------------------------
+   --  Interface constants  --
+   ---------------------------
+   Null_Panel : constant Panel;
+
+   -------------------
+   --  Exceptions   --
+   -------------------
+
+   Panel_Exception : exception;
+
+   --  |=====================================================================
+   --  | Man page panel.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   function Create (Win : Window) return Panel;
+   --  AKA: new_panel()
+   pragma Inline (Create);
+
+   --  #1A NAME="AFU_2"#2|
+   function New_Panel (Win : Window) return Panel renames Create;
+   --  AKA: new_panel()
+   --  pragma Inline (New_Panel);
+
+   --  #1A NAME="AFU_3"#2|
+   procedure Bottom (Pan : in Panel);
+   --  AKA: bottom_panel()
+   pragma Inline (Bottom);
+
+   --  #1A NAME="AFU_4"#2|
+   procedure Top (Pan : in Panel);
+   --  AKA: top_panel()
+   pragma Inline (Top);
+
+   --  #1A NAME="AFU_5"#2|
+   procedure Show (Pan : in Panel);
+   --  AKA: show_panel()
+   pragma Inline (Show);
+
+   --  #1A NAME="AFU_6"#2|
+   procedure Update_Panels;
+   --  AKA: update_panels()
+   pragma Import (C, Update_Panels, "update_panels");
+
+   --  #1A NAME="AFU_7"#2|
+   procedure Hide (Pan : in Panel);
+   --  AKA: hide_panel()
+   pragma Inline (Hide);
+
+   --  #1A NAME="AFU_8"#2|
+   function Get_Window (Pan : Panel) return Window;
+   --  AKA: panel_window()
+   pragma Inline (Get_Window);
+
+   --  #1A NAME="AFU_9"#2|
+   function Panel_Window (Pan : Panel) return Window renames Get_Window;
+   --  pragma Inline (Panel_Window);
+
+   --  #1A NAME="AFU_10"#2|
+   procedure Replace (Pan : in Panel;
+                      Win : in Window);
+   --  AKA: replace_panel()
+   pragma Inline (Replace);
+
+   --  #1A NAME="AFU_11"#2|
+   procedure Move (Pan    : in Panel;
+                   Line   : in Line_Position;
+                   Column : in Column_Position);
+   --  AKA: move_panel()
+   pragma Inline (Move);
+
+   --  #1A NAME="AFU_12"#2|
+   function Is_Hidden (Pan : Panel) return Boolean;
+   --  AKA: panel_hidden()
+   pragma Inline (Is_Hidden);
+
+   --  #1A NAME="AFU_13"#2|
+   function Above (Pan : Panel) return Panel;
+   --  AKA: panel_above()
+   pragma Import (C, Above, "panel_above");
+
+   --  #1A NAME="AFU_14"#2|
+   function Below (Pan : Panel) return Panel;
+   --  AKA: panel_below()
+   pragma Import (C, Below, "panel_below");
+
+   --  #1A NAME="AFU_15"#2|
+   procedure Delete (Pan : in out Panel);
+   --  AKA: del_panel()
+   pragma Inline (Delete);
+
+private
+      type Panel is new System.Storage_Elements.Integer_Address;
+      Null_Panel : constant Panel := 0;
+
+end Terminal_Interface.Curses.Panels;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-putwin__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-putwin__adb.htm new file mode 100644 index 0000000..8f1f987 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-putwin__adb.htm @@ -0,0 +1,83 @@ + +terminal_interface-curses-putwin.adb + +

File : terminal_interface-curses-putwin.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                    Terminal_Interface.Curses.PutWin                      --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.3 @
+--  Binding Version 01.00
+
+with Ada.Streams.Stream_IO.C_Streams;
+with Interfaces.C_Streams;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+
+package body Terminal_Interface.Curses.PutWin is
+
+   package ICS renames Interfaces.C_Streams;
+   package ACS renames Ada.Streams.Stream_IO.C_Streams;
+   use type C_Int;
+
+   procedure Put_Window (Win  : Window;
+                         File : Ada.Streams.Stream_IO.File_Type) is
+      function putwin (Win : Window; f : ICS.FILEs) return C_Int;
+      pragma Import (C, putwin, "putwin");
+
+      R : constant C_Int := putwin (Win, ACS.C_Stream (File));
+   begin
+      if R /= Curses_Ok then
+         raise Curses_Exception;
+      end if;
+   end Put_Window;
+
+   function Get_Window (File : Ada.Streams.Stream_IO.File_Type)
+                        return Window is
+      function getwin (f : ICS.FILEs) return Window;
+      pragma Import (C, getwin, "getwin");
+
+      W : constant Window := getwin (ACS.C_Stream (File));
+   begin
+      if W = Null_Window then
+         raise Curses_Exception;
+      else
+         return W;
+      end if;
+   end Get_Window;
+
+end Terminal_Interface.Curses.PutWin;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-putwin__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-putwin__ads.htm new file mode 100644 index 0000000..0bf60e6 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-putwin__ads.htm @@ -0,0 +1,56 @@ + +terminal_interface-curses-putwin.ads + +

File : terminal_interface-curses-putwin.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                    Terminal_Interface.Curses.PutWin                      --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.3 @
+--  Binding Version 01.00
+
+with Ada.Streams.Stream_IO;
+
+package Terminal_Interface.Curses.PutWin is
+
+   procedure Put_Window (Win  : Window;
+                         File : Ada.Streams.Stream_IO.File_Type);
+
+   function Get_Window (File  : Ada.Streams.Stream_IO.File_Type) return Window;
+
+end Terminal_Interface.Curses.PutWin;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-termcap__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-termcap__adb.htm new file mode 100644 index 0000000..27b2302 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-termcap__adb.htm @@ -0,0 +1,169 @@ + +terminal_interface-curses-termcap.adb + +

File : terminal_interface-curses-termcap.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                    Terminal_Interface.Curses.Termcap                     --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000-2004,2006 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  @Date: 2006/06/25 14:30:22 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Interfaces.C; use Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+
+package body Terminal_Interface.Curses.Termcap is
+
+   function Get_Entry (Name : String) return Boolean
+   is
+      function tgetent (name : char_array; val : char_array)
+                        return C_Int;
+      pragma Import (C, tgetent, "tgetent");
+      NameTxt : char_array (0 .. Name'Length);
+      Length  : size_t;
+      ignored : constant char_array (0 .. 0) := (0 => nul);
+      result  : C_Int;
+   begin
+      To_C (Name, NameTxt, Length);
+      result := tgetent (char_array (ignored), NameTxt);
+      if result = -1 then
+         raise Curses_Exception;
+      else
+         return Boolean'Val (result);
+      end if;
+   end Get_Entry;
+
+------------------------------------------------------------------------------
+   function Get_Flag (Name : String) return Boolean
+   is
+      function tgetflag (id : char_array) return C_Int;
+      pragma Import (C, tgetflag, "tgetflag");
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+   begin
+      To_C (Name, Txt, Length);
+      if tgetflag (Txt) = 0 then
+         return False;
+      else
+         return True;
+      end if;
+   end Get_Flag;
+
+------------------------------------------------------------------------------
+   procedure Get_Number (Name   : in  String;
+                         Value  : out Integer;
+                         Result : out Boolean)
+   is
+      function tgetnum (id : char_array) return C_Int;
+      pragma Import (C, tgetnum, "tgetnum");
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+   begin
+      To_C (Name, Txt, Length);
+      Value := Integer (tgetnum (Txt));
+      if Value = -1 then
+         Result := False;
+      else
+         Result :=  True;
+      end if;
+   end Get_Number;
+
+------------------------------------------------------------------------------
+   procedure Get_String (Name   : String;
+                         Value  : out String;
+                         Result : out Boolean)
+   is
+      function tgetstr (id  : char_array;
+                        buf : char_array) return chars_ptr;
+      pragma Import (C, tgetstr, "tgetstr");
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+      Txt2   : chars_ptr;
+      type t is new char_array (0 .. 1024); --  does it need to be 1024?
+      Return_Buffer : constant t := (others => nul);
+   begin
+      To_C (Name, Txt, Length);
+      Txt2 := tgetstr (Txt, char_array (Return_Buffer));
+      if Txt2 = Null_Ptr then
+         Result := False;
+      else
+         Value := Fill_String (Txt2);
+         Result := True;
+      end if;
+   end Get_String;
+
+   function Get_String (Name : String) return Boolean
+   is
+      function tgetstr (Id  : char_array;
+                        buf : char_array) return chars_ptr;
+      pragma Import (C, tgetstr, "tgetstr");
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+      Txt2   : chars_ptr;
+      type t is new char_array (0 .. 1024); --  does it need to be 1024?
+      Phony_Txt : constant t := (others => nul);
+   begin
+      To_C (Name, Txt, Length);
+      Txt2 := tgetstr (Txt, char_array (Phony_Txt));
+      if Txt2 = Null_Ptr then
+         return False;
+      else
+         return True;
+      end if;
+   end Get_String;
+
+------------------------------------------------------------------------------
+   function TGoto (Cap : String;
+                   Col : Column_Position;
+                   Row : Line_Position) return Termcap_String is
+      function tgoto (cap : char_array;
+                      col : C_Int;
+                      row : C_Int) return chars_ptr;
+      pragma Import (C, tgoto);
+      Txt    : char_array (0 .. Cap'Length);
+      Length : size_t;
+   begin
+      To_C (Cap, Txt, Length);
+      return Termcap_String (Fill_String
+                             (tgoto (Txt, C_Int (Col), C_Int (Row))));
+   end TGoto;
+
+end Terminal_Interface.Curses.Termcap;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-termcap__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-termcap__ads.htm new file mode 100644 index 0000000..51621b6 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-termcap__ads.htm @@ -0,0 +1,86 @@ + +terminal_interface-curses-termcap.ads + +

File : terminal_interface-curses-termcap.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                     Terminal_Interface.Curses.Termcap                    --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.3 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+package Terminal_Interface.Curses.Termcap is
+   pragma Preelaborate (Terminal_Interface.Curses.Termcap);
+
+   --  |=====================================================================
+   --  | Man page curs_termcap.3x
+   --  |=====================================================================
+   --  Not implemented:  tputs (see curs_terminfo)
+
+   type Termcap_String is new String;
+
+   --  |
+   function TGoto (Cap : String;
+                   Col : Column_Position;
+                   Row : Line_Position) return Termcap_String;
+   --  AKA: tgoto()
+
+   --  |
+   function Get_Entry (Name : String) return Boolean;
+   --  AKA: tgetent()
+
+   --  |
+   function Get_Flag (Name : String) return Boolean;
+   --  AKA: tgetflag()
+
+   --  |
+   procedure Get_Number (Name   : String;
+                         Value  : out Integer;
+                         Result : out Boolean);
+   --  AKA: tgetnum()
+
+   --  |
+   procedure Get_String (Name   : String;
+                         Value  : out String;
+                         Result : out Boolean);
+   function Get_String (Name : String) return Boolean;
+   --  Returns True if the string is found.
+   --  AKA: tgetstr()
+
+end Terminal_Interface.Curses.Termcap;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-terminfo__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-terminfo__adb.htm new file mode 100644 index 0000000..df16788 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-terminfo__adb.htm @@ -0,0 +1,167 @@ + +terminal_interface-curses-terminfo.adb + +

File : terminal_interface-curses-terminfo.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                    Terminal_Interface.Curses.Terminfo                    --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2000,2006 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.5 @
+--  @Date: 2006/06/25 14:30:22 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Interfaces.C; use Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Ada.Unchecked_Conversion;
+
+package body Terminal_Interface.Curses.Terminfo is
+
+   function Is_MinusOne_Pointer (P : in chars_ptr) return Boolean;
+
+   function Is_MinusOne_Pointer (P : in chars_ptr) return Boolean is
+      type Weird_Address is new System.Storage_Elements.Integer_Address;
+      Invalid_Pointer : constant Weird_Address := -1;
+      function To_Weird is new Ada.Unchecked_Conversion
+        (Source => chars_ptr, Target => Weird_Address);
+   begin
+      if To_Weird (P) = Invalid_Pointer then
+         return True;
+      else
+         return False;
+      end if;
+   end Is_MinusOne_Pointer;
+   pragma Inline (Is_MinusOne_Pointer);
+
+------------------------------------------------------------------------------
+   function Get_Flag (Name : String) return Boolean
+   is
+      function tigetflag (id : char_array) return Curses_Bool;
+      pragma Import (C, tigetflag);
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+   begin
+      To_C (Name, Txt, Length);
+      if tigetflag (Txt) = Curses_Bool (Curses_True) then
+         return True;
+      else
+         return False;
+      end if;
+   end Get_Flag;
+
+------------------------------------------------------------------------------
+   procedure Get_String (Name   : String;
+                         Value  : out Terminfo_String;
+                         Result : out Boolean)
+   is
+      function tigetstr (id : char_array) return chars_ptr;
+      pragma Import (C, tigetstr, "tigetstr");
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+      Txt2 : chars_ptr;
+   begin
+      To_C (Name, Txt, Length);
+      Txt2 := tigetstr (Txt);
+      if Txt2 = Null_Ptr then
+         Result := False;
+      elsif Is_MinusOne_Pointer (Txt2) then
+         raise Curses_Exception;
+      else
+         Value  := Terminfo_String (Fill_String (Txt2));
+         Result := True;
+      end if;
+   end Get_String;
+
+------------------------------------------------------------------------------
+   function Has_String (Name : String) return Boolean
+   is
+      function tigetstr (id : char_array) return chars_ptr;
+      pragma Import (C, tigetstr, "tigetstr");
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+      Txt2 : chars_ptr;
+   begin
+      To_C (Name, Txt, Length);
+      Txt2 := tigetstr (Txt);
+      if Txt2 = Null_Ptr then
+         return False;
+      elsif Is_MinusOne_Pointer (Txt2) then
+         raise Curses_Exception;
+      else
+         return True;
+      end if;
+   end Has_String;
+
+------------------------------------------------------------------------------
+   function Get_Number (Name : String) return Integer is
+      function tigetstr (s : char_array) return C_Int;
+      pragma Import (C, tigetstr);
+      Txt    : char_array (0 .. Name'Length);
+      Length : size_t;
+   begin
+      To_C (Name, Txt, Length);
+      return Integer (tigetstr (Txt));
+   end Get_Number;
+
+------------------------------------------------------------------------------
+   procedure Put_String (Str    : Terminfo_String;
+                         affcnt : Natural := 1;
+                         putc   : putctype := null) is
+      function tputs (str    : char_array;
+                      affcnt : C_Int;
+                      putc   : putctype) return C_Int;
+      function putp (str : char_array) return C_Int;
+      pragma Import (C, tputs);
+      pragma Import (C, putp);
+      Txt    : char_array (0 .. Str'Length);
+      Length : size_t;
+      Err : C_Int;
+   begin
+      To_C (String (Str), Txt, Length);
+      if putc = null then
+         Err := putp (Txt);
+      else
+         Err := tputs (Txt, C_Int (affcnt), putc);
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Put_String;
+
+end Terminal_Interface.Curses.Terminfo;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-terminfo__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-terminfo__ads.htm new file mode 100644 index 0000000..72edda4 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-terminfo__ads.htm @@ -0,0 +1,87 @@ + +terminal_interface-curses-terminfo.ads + +

File : terminal_interface-curses-terminfo.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                     Terminal_Interface.Curses.Terminfo                   --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.3 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+with Interfaces.C;
+
+package Terminal_Interface.Curses.Terminfo is
+   pragma Preelaborate (Terminal_Interface.Curses.Terminfo);
+
+   --  |=====================================================================
+   --  | Man page curs_terminfo.3x
+   --  |=====================================================================
+   --  Not implemented:  setupterm, setterm, set_curterm, del_curterm,
+   --                    restartterm, tparm, putp, vidputs,  vidattr,
+   --                    mvcur
+
+   type Terminfo_String is new String;
+
+   --  |
+   procedure Get_String (Name   : String;
+                         Value  : out Terminfo_String;
+                         Result : out Boolean);
+   function Has_String (Name : String) return Boolean;
+   --  AKA: tigetstr()
+
+   --  |
+   function Get_Flag (Name : String) return Boolean;
+   --  AKA: tigetflag()
+
+   --  |
+   function Get_Number (Name : String) return Integer;
+   --  AKA: tigetnum()
+
+   type putctype is access function (c : Interfaces.C.int)
+                                    return Interfaces.C.int;
+   pragma Convention (C, putctype);
+
+   --  |
+   procedure Put_String (Str    : Terminfo_String;
+                         affcnt : Natural := 1;
+                         putc   : putctype := null);
+   --  AKA: tputs()
+
+end Terminal_Interface.Curses.Terminfo;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm new file mode 100644 index 0000000..8c91d1a --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm @@ -0,0 +1,134 @@ + +terminal_interface-curses-text_io-aux.adb + +

File : terminal_interface-curses-text_io-aux.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                   Terminal_Interface.Curses.Text_IO.Aux                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.12 @
+--  @Date: 2006/06/25 14:24:40 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package body Terminal_Interface.Curses.Text_IO.Aux is
+
+   procedure Put_Buf
+     (Win    : in Window;
+      Buf    : in String;
+      Width  : in Field;
+      Signal : in Boolean := True;
+      Ljust  : in Boolean := False)
+   is
+      L   : Field;
+      Len : Field;
+      W   : Field := Width;
+      LC  : Line_Count;
+      CC  : Column_Count;
+      Y   : Line_Position;
+      X   : Column_Position;
+
+      procedure Output (From, To : Field);
+
+      procedure Output (From, To : Field)
+      is
+      begin
+         if Len > 0 then
+            if W = 0 then
+               W := Len;
+            end if;
+            if Len > W then
+               --  LRM A10.6 (7) says this
+               W := Len;
+            end if;
+
+            pragma Assert (Len <= W);
+            Get_Size (Win, LC, CC);
+            if Column_Count (Len) > CC then
+               if Signal then
+                  raise Layout_Error;
+               else
+                  return;
+               end if;
+            else
+               if Len < W and then not Ljust then
+                  declare
+                     Filler : constant String (1 .. (W - Len))
+                       := (others => ' ');
+                  begin
+                     Put (Win, Filler);
+                  end;
+               end if;
+               Get_Cursor_Position (Win, Y, X);
+               if (X + Column_Position (Len)) > CC then
+                  New_Line (Win);
+               end if;
+               Put (Win, Buf (From .. To));
+               if Len < W and then Ljust then
+                  declare
+                     Filler : constant String (1 .. (W - Len))
+                       := (others => ' ');
+                  begin
+                     Put (Win, Filler);
+                  end;
+               end if;
+            end if;
+         end if;
+      end Output;
+
+   begin
+      pragma Assert (Win /= Null_Window);
+      if Ljust then
+         L := 1;
+         for I in 1 .. Buf'Length loop
+            exit when Buf (L) = ' ';
+            L := L + 1;
+         end loop;
+         Len := L - 1;
+         Output (1, Len);
+      else  -- input buffer is not left justified
+         L := Buf'Length;
+         for I in 1 .. Buf'Length loop
+            exit when Buf (L) = ' ';
+            L := L - 1;
+         end loop;
+         Len := Buf'Length - L;
+         Output (L + 1, Buf'Length);
+      end if;
+   end Put_Buf;
+
+end Terminal_Interface.Curses.Text_IO.Aux;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm new file mode 100644 index 0000000..7cbe639 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm @@ -0,0 +1,61 @@ + +terminal_interface-curses-text_io-aux.ads + +

File : terminal_interface-curses-text_io-aux.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                   Terminal_Interface.Curses.Text_IO.Aux                  --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.13 @
+--  @Date: 2006/06/25 14:24:40 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+private package Terminal_Interface.Curses.Text_IO.Aux is
+   --  pragma Preelaborate (Aux);
+
+   --  This routine is called from the Text_IO output routines for numeric
+   --  and enumeration types.
+   --
+   procedure Put_Buf
+     (Win    : in Window;               -- The output window
+      Buf    : in String;               -- The buffer containing the text
+      Width  : in Field;                -- The width of the output field
+      Signal : in Boolean := True;      -- If true, we raise Layout_Error
+      Ljust  : in Boolean := False);    -- The Buf is left justified
+
+end Terminal_Interface.Curses.Text_IO.Aux;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm new file mode 100644 index 0000000..c22d3da --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm @@ -0,0 +1,79 @@ + +terminal_interface-curses-text_io-complex_io.adb + +

File : terminal_interface-curses-text_io-complex_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Complex_IO               --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Terminal_Interface.Curses.Text_IO.Float_IO;
+
+package body Terminal_Interface.Curses.Text_IO.Complex_IO is
+
+   package FIO is new
+     Terminal_Interface.Curses.Text_IO.Float_IO (Complex_Types.Real'Base);
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Complex;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp)
+   is
+   begin
+      Put (Win, '(');
+      FIO.Put (Win, Item.Re, Fore, Aft, Exp);
+      Put (Win, ',');
+      FIO.Put (Win, Item.Im, Fore, Aft, Exp);
+      Put (Win, ')');
+   end Put;
+
+   procedure Put
+     (Item : in Complex;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp)
+   is
+   begin
+      Put (Get_Window, Item, Fore, Aft, Exp);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Complex_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm new file mode 100644 index 0000000..460f5d0 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm @@ -0,0 +1,76 @@ + +terminal_interface-curses-text_io-complex_io.ads + +

File : terminal_interface-curses-text_io-complex_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Complex_IO               --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Numerics.Generic_Complex_Types;
+
+generic
+   with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>);
+
+package Terminal_Interface.Curses.Text_IO.Complex_IO is
+
+   use Complex_Types;
+
+   Default_Fore : Field := 2;
+   Default_Aft  : Field := Real'Digits - 1;
+   Default_Exp  : Field := 3;
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Complex;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+   procedure Put
+     (Item : in Complex;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Complex_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm new file mode 100644 index 0000000..82cda53 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm @@ -0,0 +1,81 @@ + +terminal_interface-curses-text_io-decimal_io.adb + +

File : terminal_interface-curses-text_io-decimal_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Decimal_IO               --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Terminal_Interface.Curses.Text_IO.Aux;
+
+package body Terminal_Interface.Curses.Text_IO.Decimal_IO is
+
+   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
+   package DIO is new Ada.Text_IO.Decimal_IO (Num);
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp)
+   is
+      Buf : String (1 .. Field'Last);
+      Len : Field := Fore + 1 + Aft;
+   begin
+      if Exp > 0 then
+         Len := Len + 1 + Exp;
+      end if;
+      DIO.Put (Buf, Item, Aft, Exp);
+      Aux.Put_Buf (Win, Buf, Len, False);
+   end Put;
+
+   procedure Put
+     (Item  : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp) is
+   begin
+      Put (Get_Window, Item, Fore, Aft, Exp);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Decimal_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm new file mode 100644 index 0000000..e4c1c20 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm @@ -0,0 +1,72 @@ + +terminal_interface-curses-text_io-decimal_io.ads + +

File : terminal_interface-curses-text_io-decimal_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Decimal_IO               --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type Num is delta <> digits <>;
+
+package Terminal_Interface.Curses.Text_IO.Decimal_IO is
+
+   Default_Fore : Field := Num'Fore;
+   Default_Aft  : Field := Num'Aft;
+   Default_Exp  : Field := 0;
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+   procedure Put
+     (Item  : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Decimal_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm new file mode 100644 index 0000000..ba7bd1e --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm @@ -0,0 +1,86 @@ + +terminal_interface-curses-text_io-enumeration_io.adb + +

File : terminal_interface-curses-text_io-enumeration_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--             Terminal_Interface.Curses.Text_IO.Enumeration_IO             --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Ada.Characters.Handling; use Ada.Characters.Handling;
+with Terminal_Interface.Curses.Text_IO.Aux;
+
+package body Terminal_Interface.Curses.Text_IO.Enumeration_IO is
+
+   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
+   package EIO is new Ada.Text_IO.Enumeration_IO (Enum);
+
+   procedure Put
+     (Win   : in Window;
+      Item  : in Enum;
+      Width : in Field := Default_Width;
+      Set   : in Type_Set := Default_Setting)
+   is
+      Buf  : String (1 .. Field'Last);
+      Tset : Ada.Text_IO.Type_Set;
+   begin
+      if Set /= Mixed_Case then
+         Tset := Ada.Text_IO.Type_Set'Val (Type_Set'Pos (Set));
+      else
+         Tset := Ada.Text_IO.Lower_Case;
+      end if;
+      EIO.Put (Buf, Item, Tset);
+      if Set = Mixed_Case then
+         Buf (Buf'First) := To_Upper (Buf (Buf'First));
+      end if;
+      Aux.Put_Buf (Win, Buf, Width, True, True);
+   end Put;
+
+   procedure Put
+     (Item  : in Enum;
+      Width : in Field := Default_Width;
+      Set   : in Type_Set := Default_Setting)
+   is
+   begin
+      Put (Get_Window, Item, Width, Set);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Enumeration_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm new file mode 100644 index 0000000..074547f --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm @@ -0,0 +1,69 @@ + +terminal_interface-curses-text_io-enumeration_io.ads + +

File : terminal_interface-curses-text_io-enumeration_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--             Terminal_Interface.Curses.Text_IO.Enumeration_IO             --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type Enum is (<>);
+
+package Terminal_Interface.Curses.Text_IO.Enumeration_IO is
+
+   Default_Width : Field := 0;
+   Default_Setting : Type_Set := Mixed_Case;
+
+   procedure Put
+     (Win   : in Window;
+      Item  : in Enum;
+      Width : in Field := Default_Width;
+      Set   : in Type_Set := Default_Setting);
+
+   procedure Put
+     (Item  : in Enum;
+      Width : in Field := Default_Width;
+      Set   : in Type_Set := Default_Setting);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Enumeration_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm new file mode 100644 index 0000000..0b70b13 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm @@ -0,0 +1,81 @@ + +terminal_interface-curses-text_io-fixed_io.adb + +

File : terminal_interface-curses-text_io-fixed_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                Terminal_Interface.Curses.Text_IO.Fixed_IO                --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Terminal_Interface.Curses.Text_IO.Aux;
+
+package body Terminal_Interface.Curses.Text_IO.Fixed_IO is
+
+   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
+   package FIXIO is new Ada.Text_IO.Fixed_IO (Num);
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp)
+   is
+      Buf : String (1 .. Field'Last);
+      Len : Field := Fore + 1 + Aft;
+   begin
+      if Exp > 0 then
+         Len := Len + 1 + Exp;
+      end if;
+      FIXIO.Put (Buf, Item, Aft, Exp);
+      Aux.Put_Buf (Win, Buf, Len, False);
+   end Put;
+
+   procedure Put
+     (Item  : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp) is
+   begin
+      Put (Get_Window, Item, Fore, Aft, Exp);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Fixed_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm new file mode 100644 index 0000000..bd6c946 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm @@ -0,0 +1,72 @@ + +terminal_interface-curses-text_io-fixed_io.ads + +

File : terminal_interface-curses-text_io-fixed_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                Terminal_Interface.Curses.Text_IO.Fixed_IO                --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type Num is delta <>;
+
+package Terminal_Interface.Curses.Text_IO.Fixed_IO is
+
+   Default_Fore : Field := Num'Fore;
+   Default_Aft  : Field := Num'Aft;
+   Default_Exp  : Field := 0;
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+   procedure Put
+     (Item  : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Fixed_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm new file mode 100644 index 0000000..29bf3e8 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm @@ -0,0 +1,82 @@ + +terminal_interface-curses-text_io-float_io.adb + +

File : terminal_interface-curses-text_io-float_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                Terminal_Interface.Curses.Text_IO.Float_IO                --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Terminal_Interface.Curses.Text_IO.Aux;
+
+package body Terminal_Interface.Curses.Text_IO.Float_IO is
+
+   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
+   package FIO is new Ada.Text_IO.Float_IO (Num);
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp)
+   is
+      Buf : String (1 .. Field'Last);
+      Len : Field := Fore + 1 + Aft;
+   begin
+      if Exp > 0 then
+         Len := Len + 1 + Exp;
+      end if;
+      FIO.Put (Buf, Item, Aft, Exp);
+      Aux.Put_Buf (Win, Buf, Len, False);
+   end Put;
+
+   procedure Put
+     (Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp)
+   is
+   begin
+      Put (Get_Window, Item, Fore, Aft, Exp);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Float_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm new file mode 100644 index 0000000..0f8291a --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm @@ -0,0 +1,72 @@ + +terminal_interface-curses-text_io-float_io.ads + +

File : terminal_interface-curses-text_io-float_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                Terminal_Interface.Curses.Text_IO.Float_IO                --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type Num is digits <>;
+
+package Terminal_Interface.Curses.Text_IO.Float_IO is
+
+   Default_Fore : Field := 2;
+   Default_Aft  : Field := Num'Digits - 1;
+   Default_Exp  : Field := 3;
+
+   procedure Put
+     (Win  : in Window;
+      Item : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+   procedure Put
+     (Item  : in Num;
+      Fore : in Field := Default_Fore;
+      Aft  : in Field := Default_Aft;
+      Exp  : in Field := Default_Exp);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Float_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm new file mode 100644 index 0000000..7b35021 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm @@ -0,0 +1,76 @@ + +terminal_interface-curses-text_io-integer_io.adb + +

File : terminal_interface-curses-text_io-integer_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Integer_IO               --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Terminal_Interface.Curses.Text_IO.Aux;
+
+package body Terminal_Interface.Curses.Text_IO.Integer_IO is
+
+   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
+   package IIO is new Ada.Text_IO.Integer_IO (Num);
+
+   procedure Put
+     (Win   : in Window;
+      Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base)
+   is
+      Buf : String (1 .. Field'Last);
+   begin
+      IIO.Put (Buf, Item, Base);
+      Aux.Put_Buf (Win, Buf, Width);
+   end Put;
+
+   procedure Put
+     (Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base)
+   is
+   begin
+      Put (Get_Window, Item, Width, Base);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Integer_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm new file mode 100644 index 0000000..7e9ff1f --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm @@ -0,0 +1,69 @@ + +terminal_interface-curses-text_io-integer_io.ads + +

File : terminal_interface-curses-text_io-integer_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Integer_IO               --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type Num is range <>;
+
+package Terminal_Interface.Curses.Text_IO.Integer_IO is
+
+   Default_Width : Field := Num'Width;
+   Default_Base  : Number_Base := 10;
+
+   procedure Put
+     (Win   : in Window;
+      Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base);
+
+   procedure Put
+     (Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Integer_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm new file mode 100644 index 0000000..f0c1612 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm @@ -0,0 +1,76 @@ + +terminal_interface-curses-text_io-modular_io.adb + +

File : terminal_interface-curses-text_io-modular_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Modular_IO               --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.10 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Terminal_Interface.Curses.Text_IO.Aux;
+
+package body Terminal_Interface.Curses.Text_IO.Modular_IO is
+
+   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
+   package MIO is new Ada.Text_IO.Modular_IO (Num);
+
+   procedure Put
+     (Win   : in Window;
+      Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base)
+   is
+      Buf : String (1 .. Field'Last);
+   begin
+      MIO.Put (Buf, Item, Base);
+      Aux.Put_Buf (Win, Buf, Width);
+   end Put;
+
+   procedure Put
+     (Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base)
+   is
+   begin
+      Put (Get_Window, Item, Width, Base);
+   end Put;
+
+end Terminal_Interface.Curses.Text_IO.Modular_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm new file mode 100644 index 0000000..83e7d61 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm @@ -0,0 +1,69 @@ + +terminal_interface-curses-text_io-modular_io.ads + +

File : terminal_interface-curses-text_io-modular_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--               Terminal_Interface.Curses.Text_IO.Modular_IO               --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.11 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+generic
+   type Num is mod <>;
+
+package Terminal_Interface.Curses.Text_IO.Modular_IO is
+
+   Default_Width : Field := Num'Width;
+   Default_Base  : Number_Base := 10;
+
+   procedure Put
+     (Win   : in Window;
+      Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base);
+
+   procedure Put
+     (Item  : in Num;
+      Width : in Field := Default_Width;
+      Base  : in Number_Base := Default_Base);
+
+private
+   pragma Inline (Put);
+
+end Terminal_Interface.Curses.Text_IO.Modular_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io__adb.htm new file mode 100644 index 0000000..a7ae771 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io__adb.htm @@ -0,0 +1,343 @@ + +terminal_interface-curses-text_io.adb + +

File : terminal_interface-curses-text_io.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                     Terminal_Interface.Curses.Text_IO                    --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.18 @
+--  @Date: 2006/06/25 14:24:40 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package body Terminal_Interface.Curses.Text_IO is
+
+   Default_Window : Window := Null_Window;
+
+   procedure Set_Window (Win : in Window)
+   is
+   begin
+      Default_Window := Win;
+   end Set_Window;
+
+   function Get_Window return Window
+   is
+   begin
+      if Default_Window = Null_Window then
+         return Standard_Window;
+      else
+         return Default_Window;
+      end if;
+   end Get_Window;
+   pragma Inline (Get_Window);
+
+   procedure Flush (Win : in Window)
+   is
+   begin
+      Refresh (Win);
+   end Flush;
+
+   procedure Flush
+   is
+   begin
+      Flush (Get_Window);
+   end Flush;
+
+   --------------------------------------------
+   -- Specification of line and page lengths --
+   --------------------------------------------
+
+   --  There are no set routines in this package. I assume, that you allocate
+   --  the window with an appropriate size.
+   --  A scroll-window is interpreted as an page with unbounded page length,
+   --  i.e. it returns the conventional 0 as page length.
+
+   function Line_Length (Win : in Window) return Count
+   is
+      N_Lines : Line_Count;
+      N_Cols  : Column_Count;
+   begin
+      Get_Size (Win, N_Lines, N_Cols);
+      --  if Natural (N_Cols) > Natural (Count'Last) then
+      --     raise Layout_Error;
+      --  end if;
+      return Count (N_Cols);
+   end Line_Length;
+
+   function Line_Length return Count
+   is
+   begin
+      return Line_Length (Get_Window);
+   end Line_Length;
+
+   function Page_Length (Win : in Window) return Count
+   is
+      N_Lines : Line_Count;
+      N_Cols  : Column_Count;
+   begin
+      if Scrolling_Allowed (Win) then
+         return 0;
+      else
+         Get_Size (Win, N_Lines, N_Cols);
+         --  if Natural (N_Lines) > Natural (Count'Last) then
+         --     raise Layout_Error;
+         --  end if;
+         return Count (N_Lines);
+      end if;
+   end Page_Length;
+
+   function Page_Length return Count
+   is
+   begin
+      return Page_Length (Get_Window);
+   end Page_Length;
+
+   ------------------------------------
+   -- Column, Line, and Page Control --
+   ------------------------------------
+   procedure New_Line (Win : in Window; Spacing : in Positive_Count := 1)
+   is
+      P_Size : constant Count := Page_Length (Win);
+   begin
+      if not Spacing'Valid then
+         raise Constraint_Error;
+      end if;
+
+      for I in 1 .. Spacing loop
+         if P_Size > 0 and then Line (Win) >= P_Size then
+            New_Page (Win);
+         else
+            Add (Win, ASCII.LF);
+         end if;
+      end loop;
+   end New_Line;
+
+   procedure New_Line (Spacing : in Positive_Count := 1)
+   is
+   begin
+      New_Line (Get_Window, Spacing);
+   end New_Line;
+
+   procedure New_Page (Win : in Window)
+   is
+   begin
+      Clear (Win);
+   end New_Page;
+
+   procedure New_Page
+   is
+   begin
+      New_Page (Get_Window);
+   end New_Page;
+
+   procedure Set_Col (Win : in Window;  To : in Positive_Count)
+   is
+      Y  : Line_Position;
+      X1 : Column_Position;
+      X2 : Column_Position;
+      N  : Natural;
+   begin
+      if not To'Valid then
+         raise Constraint_Error;
+      end if;
+
+      Get_Cursor_Position (Win, Y, X1);
+      N  := Natural (To); N := N - 1;
+      X2 := Column_Position (N);
+      if X1 > X2 then
+         New_Line (Win, 1);
+         X1 := 0;
+      end if;
+      if X1 < X2 then
+         declare
+            Filler : constant String (Integer (X1) .. (Integer (X2) - 1))
+              := (others => ' ');
+         begin
+            Put (Win, Filler);
+         end;
+      end if;
+   end Set_Col;
+
+   procedure Set_Col (To : in Positive_Count)
+   is
+   begin
+      Set_Col (Get_Window, To);
+   end Set_Col;
+
+   procedure Set_Line (Win : in Window; To : in Positive_Count)
+   is
+      Y1 : Line_Position;
+      Y2 : Line_Position;
+      X  : Column_Position;
+      N  : Natural;
+   begin
+      if not To'Valid then
+         raise Constraint_Error;
+      end if;
+
+      Get_Cursor_Position (Win, Y1, X);
+      N  := Natural (To); N := N - 1;
+      Y2 := Line_Position (N);
+      if Y2 < Y1 then
+         New_Page (Win);
+         Y1 := 0;
+      end if;
+      if Y1 < Y2 then
+         New_Line (Win, Positive_Count (Y2 - Y1));
+      end if;
+   end Set_Line;
+
+   procedure Set_Line (To : in Positive_Count)
+   is
+   begin
+      Set_Line (Get_Window, To);
+   end Set_Line;
+
+   function Col (Win : in Window) return Positive_Count
+   is
+      Y : Line_Position;
+      X : Column_Position;
+      N : Natural;
+   begin
+      Get_Cursor_Position (Win, Y, X);
+      N := Natural (X); N := N + 1;
+      --  if N > Natural (Count'Last) then
+      --     raise Layout_Error;
+      --  end if;
+      return Positive_Count (N);
+   end Col;
+
+   function Col return Positive_Count
+   is
+   begin
+      return Col (Get_Window);
+   end Col;
+
+   function Line (Win : in Window) return Positive_Count
+   is
+      Y : Line_Position;
+      X : Column_Position;
+      N : Natural;
+   begin
+      Get_Cursor_Position (Win, Y, X);
+      N := Natural (Y); N := N + 1;
+      --  if N > Natural (Count'Last) then
+      --     raise Layout_Error;
+      --  end if;
+      return Positive_Count (N);
+   end Line;
+
+   function Line return Positive_Count
+   is
+   begin
+      return Line (Get_Window);
+   end Line;
+
+   -----------------------
+   -- Characters Output --
+   -----------------------
+
+   procedure Put (Win  : in Window; Item : in Character)
+   is
+      P_Size : constant Count := Page_Length (Win);
+      Y : Line_Position;
+      X : Column_Position;
+      L : Line_Count;
+      C : Column_Count;
+   begin
+      if P_Size > 0 then
+         Get_Cursor_Position (Win, Y, X);
+         Get_Size (Win, L, C);
+         if (Y + 1) = L and then (X + 1) = C then
+            New_Page (Win);
+         end if;
+      end if;
+      Add (Win, Item);
+   end Put;
+
+   procedure Put (Item : in Character)
+   is
+   begin
+      Put (Get_Window, Item);
+   end Put;
+
+   --------------------
+   -- Strings-Output --
+   --------------------
+
+   procedure Put (Win  : in Window; Item : in String)
+   is
+      P_Size : constant Count := Page_Length (Win);
+      Y : Line_Position;
+      X : Column_Position;
+      L : Line_Count;
+      C : Column_Count;
+   begin
+      if P_Size > 0 then
+         Get_Cursor_Position (Win, Y, X);
+         Get_Size (Win, L, C);
+         if (Y + 1) = L and then (X + 1 + Item'Length) >= C then
+            New_Page (Win);
+         end if;
+      end if;
+      Add (Win, Item);
+   end Put;
+
+   procedure Put (Item : in String)
+   is
+   begin
+      Put (Get_Window, Item);
+   end Put;
+
+   procedure Put_Line
+     (Win  : in Window;
+      Item : in String)
+   is
+   begin
+      Put (Win, Item);
+      New_Line (Win, 1);
+   end Put_Line;
+
+   procedure Put_Line
+     (Item : in String)
+   is
+   begin
+      Put_Line (Get_Window, Item);
+   end Put_Line;
+
+end Terminal_Interface.Curses.Text_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-text_io__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-text_io__ads.htm new file mode 100644 index 0000000..50e9229 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-text_io__ads.htm @@ -0,0 +1,142 @@ + +terminal_interface-curses-text_io.ads + +

File : terminal_interface-curses-text_io.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                     Terminal_Interface.Curses.Text_IO                    --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.13 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with Ada.Text_IO;
+with Ada.IO_Exceptions;
+
+package Terminal_Interface.Curses.Text_IO is
+
+   use type Ada.Text_IO.Count;
+   subtype Count is Ada.Text_IO.Count;
+   subtype Positive_Count is Count range 1 .. Count'Last;
+
+   subtype Field is Ada.Text_IO.Field;
+   subtype Number_Base is Integer range 2 .. 16;
+
+   type Type_Set is (Lower_Case, Upper_Case, Mixed_Case);
+
+   --  For most of the routines you will see a version without a Window
+   --  type parameter. They will operate on a default window, which can
+   --  be set by the user. It is initially equal to Standard_Window.
+
+   procedure Set_Window (Win : in Window);
+   --  Set Win as the default window
+
+   function Get_Window return Window;
+   --  Get the current default window
+
+   procedure Flush (Win : in Window);
+   procedure Flush;
+
+   --------------------------------------------
+   -- Specification of line and page lengths --
+   --------------------------------------------
+
+   --  There are no set routines in this package. I assume, that you allocate
+   --  the window with an appropriate size.
+   --  A scroll-window is interpreted as an page with unbounded page length,
+   --  i.e. it returns the conventional 0 as page length.
+
+   function Line_Length (Win : in Window) return Count;
+   function Line_Length return Count;
+
+   function Page_Length (Win : in Window) return Count;
+   function Page_Length return Count;
+
+   ------------------------------------
+   -- Column, Line, and Page Control --
+   ------------------------------------
+   procedure New_Line (Win : in Window; Spacing : in Positive_Count := 1);
+   procedure New_Line (Spacing : in Positive_Count := 1);
+
+   procedure New_Page (Win : in Window);
+   procedure New_Page;
+
+   procedure Set_Col (Win : in Window;  To : in Positive_Count);
+   procedure Set_Col (To : in Positive_Count);
+
+   procedure Set_Line (Win : in Window; To : in Positive_Count);
+   procedure Set_Line (To : in Positive_Count);
+
+   function Col (Win : in Window) return Positive_Count;
+   function Col return Positive_Count;
+
+   function Line (Win : in Window) return Positive_Count;
+   function Line return Positive_Count;
+
+   -----------------------
+   -- Characters-Output --
+   -----------------------
+
+   procedure Put (Win  : in Window; Item : in Character);
+   procedure Put (Item : in Character);
+
+   --------------------
+   -- Strings-Output --
+   --------------------
+
+   procedure Put (Win  : in Window; Item : in String);
+   procedure Put (Item : in String);
+
+   procedure Put_Line
+     (Win  : in Window;
+      Item : in String);
+
+   procedure Put_Line
+     (Item : in String);
+
+   --  Exceptions
+
+   Status_Error : exception renames Ada.IO_Exceptions.Status_Error;
+   Mode_Error   : exception renames Ada.IO_Exceptions.Mode_Error;
+   Name_Error   : exception renames Ada.IO_Exceptions.Name_Error;
+   Use_Error    : exception renames Ada.IO_Exceptions.Use_Error;
+   Device_Error : exception renames Ada.IO_Exceptions.Device_Error;
+   End_Error    : exception renames Ada.IO_Exceptions.End_Error;
+   Data_Error   : exception renames Ada.IO_Exceptions.Data_Error;
+   Layout_Error : exception renames Ada.IO_Exceptions.Layout_Error;
+
+end Terminal_Interface.Curses.Text_IO;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-trace__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses-trace__adb.htm new file mode 100644 index 0000000..a209b3f --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-trace__adb.htm @@ -0,0 +1,62 @@ + +terminal_interface-curses-trace.adb + +

File : terminal_interface-curses-trace.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Trace                     --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000,2004 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.5 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+package body Terminal_Interface.Curses.Trace is
+
+   procedure Trace_On (x : Trace_Attribute_Set) is
+   pragma Unreferenced (x);
+   begin
+      null;
+   end Trace_On;
+
+   procedure Trace_Put (str : String) is
+   pragma Unreferenced (str);
+   begin
+      null;
+   end Trace_Put;
+
+end Terminal_Interface.Curses.Trace;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses-trace__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses-trace__ads.htm new file mode 100644 index 0000000..8ab28f0 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses-trace__ads.htm @@ -0,0 +1,118 @@ + +terminal_interface-curses-trace.ads + +

File : terminal_interface-curses-trace.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Trace                     --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 Free Software Foundation, Inc.                        --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control:
+--  @Revision: 1.1 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+package Terminal_Interface.Curses.Trace is
+   pragma Preelaborate (Terminal_Interface.Curses.Trace);
+
+   pragma Warnings (Off);
+   type Trace_Attribute_Set is
+      record
+         Times            : Boolean;
+         Tputs            : Boolean;
+         Update           : Boolean;
+         Cursor_Move      : Boolean;
+         Character_Output : Boolean;
+         Calls            : Boolean;
+         Virtual_Puts     : Boolean;
+         Input_Events     : Boolean;
+         TTY_State        : Boolean;
+         Internal_Calls   : Boolean;
+         Character_Calls  : Boolean;
+         Termcap_TermInfo : Boolean;
+      end record;
+   pragma Convention (C, Trace_Attribute_Set);
+
+   for Trace_Attribute_Set use
+      record
+         Times            at 0 range  0 ..  0;
+         Tputs            at 0 range  1 ..  1;
+         Update           at 0 range  2 ..  2;
+         Cursor_Move      at 0 range  3 ..  3;
+         Character_Output at 0 range  4 ..  4;
+         Calls            at 0 range  5 ..  5;
+         Virtual_Puts     at 0 range  6 ..  6;
+         Input_Events     at 0 range  7 ..  7;
+         TTY_State        at 0 range  8 ..  8;
+         Internal_Calls   at 0 range  9 ..  9;
+         Character_Calls  at 0 range 10 .. 10;
+         Termcap_TermInfo at 0 range 11 .. 11;
+      end record;
+   for Trace_Attribute_Set'Size use 32;
+   --  Please note: this rep. clause is generated and may be
+   --               different on your system.
+
+   pragma Warnings (On);
+
+   Trace_Disable  : constant Trace_Attribute_Set := (others => False);
+
+   Trace_Ordinary : constant Trace_Attribute_Set :=
+     (Times            => True,
+      Tputs            => True,
+      Update           => True,
+      Cursor_Move      => True,
+      Character_Output => True,
+      others           => False);
+   Trace_Maximum : constant Trace_Attribute_Set := (others => True);
+
+------------------------------------------------------------------------------
+
+   --  |=====================================================================
+   --  | Man page curs_trace.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_1"#2|
+   procedure Trace_On (x : Trace_Attribute_Set);
+   --  The debugging library has trace.
+
+   --  #1A NAME="AFU_2"#2|
+   procedure Trace_Put (str : String);
+   --  AKA: _tracef()
+
+   Current_Trace_Setting : Trace_Attribute_Set;
+   pragma Import (C, Current_Trace_Setting, "_nc_tracing");
+
+end Terminal_Interface.Curses.Trace;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses__adb.htm b/ncurses/doc/html/ada/terminal_interface-curses__adb.htm new file mode 100644 index 0000000..1c01375 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses__adb.htm @@ -0,0 +1,2562 @@ + +terminal_interface-curses.adb + +

File : terminal_interface-curses.adb


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                        Terminal_Interface.Curses                         --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author: Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.5 @
+--  @Date: 2008/07/26 18:46:32 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with System;
+
+with Terminal_Interface.Curses.Aux;
+with Interfaces.C;                  use Interfaces.C;
+with Interfaces.C.Strings;          use Interfaces.C.Strings;
+with Ada.Characters.Handling;       use Ada.Characters.Handling;
+with Ada.Strings.Fixed;
+
+package body Terminal_Interface.Curses is
+
+   use Aux;
+   use type System.Bit_Order;
+
+   package ASF renames Ada.Strings.Fixed;
+
+   type chtype_array is array (size_t range <>)
+      of aliased Attributed_Character;
+   pragma Convention (C, chtype_array);
+
+------------------------------------------------------------------------------
+   function Key_Name (Key : in Real_Key_Code) return String
+   is
+      function Keyname (K : C_Int) return chars_ptr;
+      pragma Import (C, Keyname, "keyname");
+
+      Ch : Character;
+   begin
+      if Key <= Character'Pos (Character'Last) then
+         Ch := Character'Val (Key);
+         if Is_Control (Ch) then
+            return Un_Control (Attributed_Character'(Ch    => Ch,
+                                                     Color => Color_Pair'First,
+                                                     Attr  => Normal_Video));
+         elsif Is_Graphic (Ch) then
+            declare
+               S : String (1 .. 1);
+            begin
+               S (1) := Ch;
+               return S;
+            end;
+         else
+            return "";
+         end if;
+      else
+         return Fill_String (Keyname (C_Int (Key)));
+      end if;
+   end Key_Name;
+
+   procedure Key_Name (Key  : in  Real_Key_Code;
+                       Name : out String)
+   is
+   begin
+      ASF.Move (Key_Name (Key), Name);
+   end Key_Name;
+
+------------------------------------------------------------------------------
+   procedure Init_Screen
+   is
+      function Initscr return Window;
+      pragma Import (C, Initscr, "initscr");
+
+      W : Window;
+   begin
+      W := Initscr;
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+   end Init_Screen;
+
+   procedure End_Windows
+   is
+      function Endwin return C_Int;
+      pragma Import (C, Endwin, "endwin");
+   begin
+      if Endwin = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end End_Windows;
+
+   function Is_End_Window return Boolean
+   is
+      function Isendwin return Curses_Bool;
+      pragma Import (C, Isendwin, "isendwin");
+   begin
+      if Isendwin = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Is_End_Window;
+------------------------------------------------------------------------------
+   procedure Move_Cursor (Win    : in Window := Standard_Window;
+                          Line   : in Line_Position;
+                          Column : in Column_Position)
+   is
+      function Wmove (Win    : Window;
+                      Line   : C_Int;
+                      Column : C_Int
+                     ) return C_Int;
+      pragma Import (C, Wmove, "wmove");
+   begin
+      if Wmove (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Move_Cursor;
+------------------------------------------------------------------------------
+   procedure Add (Win : in Window := Standard_Window;
+                  Ch  : in Attributed_Character)
+   is
+      function Waddch (W  : Window;
+                       Ch : C_Chtype) return C_Int;
+      pragma Import (C, Waddch, "waddch");
+   begin
+      if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Add;
+
+   procedure Add (Win : in Window := Standard_Window;
+                  Ch  : in Character)
+   is
+   begin
+      Add (Win,
+           Attributed_Character'(Ch    => Ch,
+                                 Color => Color_Pair'First,
+                                 Attr  => Normal_Video));
+   end Add;
+
+   procedure Add
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Ch     : in Attributed_Character)
+   is
+      function mvwaddch (W  : Window;
+                         Y  : C_Int;
+                         X  : C_Int;
+                         Ch : C_Chtype) return C_Int;
+      pragma Import (C, mvwaddch, "mvwaddch");
+   begin
+      if mvwaddch (Win, C_Int (Line),
+                   C_Int (Column),
+                   AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Add;
+
+   procedure Add
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Ch     : in Character)
+   is
+   begin
+      Add (Win,
+           Line,
+           Column,
+           Attributed_Character'(Ch    => Ch,
+                                 Color => Color_Pair'First,
+                                 Attr  => Normal_Video));
+   end Add;
+
+   procedure Add_With_Immediate_Echo
+     (Win : in Window := Standard_Window;
+      Ch  : in Attributed_Character)
+   is
+      function Wechochar (W  : Window;
+                          Ch : C_Chtype) return C_Int;
+      pragma Import (C, Wechochar, "wechochar");
+   begin
+      if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Add_With_Immediate_Echo;
+
+   procedure Add_With_Immediate_Echo
+     (Win : in Window := Standard_Window;
+      Ch  : in Character)
+   is
+   begin
+      Add_With_Immediate_Echo
+        (Win,
+         Attributed_Character'(Ch    => Ch,
+                               Color => Color_Pair'First,
+                               Attr  => Normal_Video));
+   end Add_With_Immediate_Echo;
+------------------------------------------------------------------------------
+   function Create (Number_Of_Lines       : Line_Count;
+                    Number_Of_Columns     : Column_Count;
+                    First_Line_Position   : Line_Position;
+                    First_Column_Position : Column_Position) return Window
+   is
+      function Newwin (Number_Of_Lines       : C_Int;
+                       Number_Of_Columns     : C_Int;
+                       First_Line_Position   : C_Int;
+                       First_Column_Position : C_Int) return Window;
+      pragma Import (C, Newwin, "newwin");
+
+      W : Window;
+   begin
+      W := Newwin (C_Int (Number_Of_Lines),
+                   C_Int (Number_Of_Columns),
+                   C_Int (First_Line_Position),
+                   C_Int (First_Column_Position));
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+      return W;
+   end Create;
+
+   procedure Delete (Win : in out Window)
+   is
+      function Wdelwin (W : Window) return C_Int;
+      pragma Import (C, Wdelwin, "delwin");
+   begin
+      if Wdelwin (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+      Win := Null_Window;
+   end Delete;
+
+   function Sub_Window
+     (Win                   : Window := Standard_Window;
+      Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window
+   is
+      function Subwin
+        (Win                   : Window;
+         Number_Of_Lines       : C_Int;
+         Number_Of_Columns     : C_Int;
+         First_Line_Position   : C_Int;
+         First_Column_Position : C_Int) return Window;
+      pragma Import (C, Subwin, "subwin");
+
+      W : Window;
+   begin
+      W := Subwin (Win,
+                   C_Int (Number_Of_Lines),
+                   C_Int (Number_Of_Columns),
+                   C_Int (First_Line_Position),
+                   C_Int (First_Column_Position));
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+      return W;
+   end Sub_Window;
+
+   function Derived_Window
+     (Win                   : Window := Standard_Window;
+      Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window
+   is
+      function Derwin
+        (Win                   : Window;
+         Number_Of_Lines       : C_Int;
+         Number_Of_Columns     : C_Int;
+         First_Line_Position   : C_Int;
+         First_Column_Position : C_Int) return Window;
+      pragma Import (C, Derwin, "derwin");
+
+      W : Window;
+   begin
+      W := Derwin (Win,
+                   C_Int (Number_Of_Lines),
+                   C_Int (Number_Of_Columns),
+                   C_Int (First_Line_Position),
+                   C_Int (First_Column_Position));
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+      return W;
+   end Derived_Window;
+
+   function Duplicate (Win : Window) return Window
+   is
+      function Dupwin (Win : Window) return Window;
+      pragma Import (C, Dupwin, "dupwin");
+
+      W : constant Window := Dupwin (Win);
+   begin
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+      return W;
+   end Duplicate;
+
+   procedure Move_Window (Win    : in Window;
+                          Line   : in Line_Position;
+                          Column : in Column_Position)
+   is
+      function Mvwin (Win    : Window;
+                      Line   : C_Int;
+                      Column : C_Int) return C_Int;
+      pragma Import (C, Mvwin, "mvwin");
+   begin
+      if Mvwin (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Move_Window;
+
+   procedure Move_Derived_Window (Win    : in Window;
+                                  Line   : in Line_Position;
+                                  Column : in Column_Position)
+   is
+      function Mvderwin (Win    : Window;
+                         Line   : C_Int;
+                         Column : C_Int) return C_Int;
+      pragma Import (C, Mvderwin, "mvderwin");
+   begin
+      if Mvderwin (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Move_Derived_Window;
+
+   procedure Set_Synch_Mode (Win  : in Window  := Standard_Window;
+                             Mode : in Boolean := False)
+   is
+      function Syncok (Win  : Window;
+                       Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Syncok, "syncok");
+   begin
+      if Syncok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Synch_Mode;
+------------------------------------------------------------------------------
+   procedure Add (Win : in Window := Standard_Window;
+                  Str : in String;
+                  Len : in Integer := -1)
+   is
+      function Waddnstr (Win : Window;
+                         Str : char_array;
+                         Len : C_Int := -1) return C_Int;
+      pragma Import (C, Waddnstr, "waddnstr");
+
+      Txt    : char_array (0 .. Str'Length);
+      Length : size_t;
+   begin
+      To_C (Str, Txt, Length);
+      if Waddnstr (Win, Txt, C_Int (Len)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Add;
+
+   procedure Add
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Str    : in String;
+      Len    : in Integer := -1)
+   is
+   begin
+      Move_Cursor (Win, Line, Column);
+      Add (Win, Str, Len);
+   end Add;
+------------------------------------------------------------------------------
+   procedure Add
+     (Win : in Window := Standard_Window;
+      Str : in Attributed_String;
+      Len : in Integer := -1)
+   is
+      function Waddchnstr (Win : Window;
+                           Str : chtype_array;
+                           Len : C_Int := -1) return C_Int;
+      pragma Import (C, Waddchnstr, "waddchnstr");
+
+      Txt : chtype_array (0 .. Str'Length);
+   begin
+      for Length in 1 .. size_t (Str'Length) loop
+         Txt (Length - 1) := Str (Natural (Length));
+      end loop;
+      Txt (Str'Length) := Default_Character;
+      if Waddchnstr (Win,
+                     Txt,
+                     C_Int (Len)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Add;
+
+   procedure Add
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Str    : in Attributed_String;
+      Len    : in Integer := -1)
+   is
+   begin
+      Move_Cursor (Win, Line, Column);
+      Add (Win, Str, Len);
+   end Add;
+------------------------------------------------------------------------------
+   procedure Border
+     (Win                       : in Window := Standard_Window;
+      Left_Side_Symbol          : in Attributed_Character := Default_Character;
+      Right_Side_Symbol         : in Attributed_Character := Default_Character;
+      Top_Side_Symbol           : in Attributed_Character := Default_Character;
+      Bottom_Side_Symbol        : in Attributed_Character := Default_Character;
+      Upper_Left_Corner_Symbol  : in Attributed_Character := Default_Character;
+      Upper_Right_Corner_Symbol : in Attributed_Character := Default_Character;
+      Lower_Left_Corner_Symbol  : in Attributed_Character := Default_Character;
+      Lower_Right_Corner_Symbol : in Attributed_Character := Default_Character)
+   is
+      function Wborder (W   : Window;
+                        LS  : C_Chtype;
+                        RS  : C_Chtype;
+                        TS  : C_Chtype;
+                        BS  : C_Chtype;
+                        ULC : C_Chtype;
+                        URC : C_Chtype;
+                        LLC : C_Chtype;
+                        LRC : C_Chtype) return C_Int;
+      pragma Import (C, Wborder, "wborder");
+   begin
+      if Wborder (Win,
+                  AttrChar_To_Chtype (Left_Side_Symbol),
+                  AttrChar_To_Chtype (Right_Side_Symbol),
+                  AttrChar_To_Chtype (Top_Side_Symbol),
+                  AttrChar_To_Chtype (Bottom_Side_Symbol),
+                  AttrChar_To_Chtype (Upper_Left_Corner_Symbol),
+                  AttrChar_To_Chtype (Upper_Right_Corner_Symbol),
+                  AttrChar_To_Chtype (Lower_Left_Corner_Symbol),
+                  AttrChar_To_Chtype (Lower_Right_Corner_Symbol)
+                  ) = Curses_Err
+      then
+         raise Curses_Exception;
+      end if;
+   end Border;
+
+   procedure Box
+     (Win               : in Window := Standard_Window;
+      Vertical_Symbol   : in Attributed_Character := Default_Character;
+      Horizontal_Symbol : in Attributed_Character := Default_Character)
+   is
+   begin
+      Border (Win,
+              Vertical_Symbol, Vertical_Symbol,
+              Horizontal_Symbol, Horizontal_Symbol);
+   end Box;
+
+   procedure Horizontal_Line
+     (Win         : in Window := Standard_Window;
+      Line_Size   : in Natural;
+      Line_Symbol : in Attributed_Character := Default_Character)
+   is
+      function Whline (W   : Window;
+                       Ch  : C_Chtype;
+                       Len : C_Int) return C_Int;
+      pragma Import (C, Whline, "whline");
+   begin
+      if Whline (Win,
+                 AttrChar_To_Chtype (Line_Symbol),
+                 C_Int (Line_Size)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Horizontal_Line;
+
+   procedure Vertical_Line
+     (Win         : in Window := Standard_Window;
+      Line_Size   : in Natural;
+      Line_Symbol : in Attributed_Character := Default_Character)
+   is
+      function Wvline (W   : Window;
+                       Ch  : C_Chtype;
+                       Len : C_Int) return C_Int;
+      pragma Import (C, Wvline, "wvline");
+   begin
+      if Wvline (Win,
+                 AttrChar_To_Chtype (Line_Symbol),
+                 C_Int (Line_Size)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Vertical_Line;
+
+------------------------------------------------------------------------------
+   function Get_Keystroke (Win : Window := Standard_Window)
+     return Real_Key_Code
+   is
+      function Wgetch (W : Window) return C_Int;
+      pragma Import (C, Wgetch, "wgetch");
+
+      C : constant C_Int := Wgetch (Win);
+   begin
+      if C = Curses_Err then
+         return Key_None;
+      else
+         return Real_Key_Code (C);
+      end if;
+   end Get_Keystroke;
+
+   procedure Undo_Keystroke (Key : in Real_Key_Code)
+   is
+      function Ungetch (Ch : C_Int) return C_Int;
+      pragma Import (C, Ungetch, "ungetch");
+   begin
+      if Ungetch (C_Int (Key)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Undo_Keystroke;
+
+   function Has_Key (Key : Special_Key_Code) return Boolean
+   is
+      function Haskey (Key : C_Int) return C_Int;
+      pragma Import (C, Haskey, "has_key");
+   begin
+      if Haskey (C_Int (Key)) = Curses_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Has_Key;
+
+   function Is_Function_Key (Key : Special_Key_Code) return Boolean
+   is
+      L : constant Special_Key_Code  := Special_Key_Code (Natural (Key_F0) +
+        Natural (Function_Key_Number'Last));
+   begin
+      if (Key >= Key_F0) and then (Key <= L) then
+         return True;
+      else
+         return False;
+      end if;
+   end Is_Function_Key;
+
+   function Function_Key (Key : Real_Key_Code)
+                          return Function_Key_Number
+   is
+   begin
+      if Is_Function_Key (Key) then
+         return Function_Key_Number (Key - Key_F0);
+      else
+         raise Constraint_Error;
+      end if;
+   end Function_Key;
+
+   function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code
+   is
+   begin
+      return Real_Key_Code (Natural (Key_F0) + Natural (Key));
+   end Function_Key_Code;
+------------------------------------------------------------------------------
+   procedure Standout (Win : Window  := Standard_Window;
+                       On  : Boolean := True)
+   is
+      function wstandout (Win : Window) return C_Int;
+      pragma Import (C, wstandout, "wstandout");
+      function wstandend (Win : Window) return C_Int;
+      pragma Import (C, wstandend, "wstandend");
+
+      Err : C_Int;
+   begin
+      if On then
+         Err := wstandout (Win);
+      else
+         Err := wstandend (Win);
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Standout;
+
+   procedure Switch_Character_Attribute
+     (Win  : in Window := Standard_Window;
+      Attr : in Character_Attribute_Set := Normal_Video;
+      On   : in Boolean := True)
+   is
+      function Wattron (Win    : Window;
+                        C_Attr : C_AttrType) return C_Int;
+      pragma Import (C, Wattron, "wattr_on");
+      function Wattroff (Win    : Window;
+                         C_Attr : C_AttrType) return C_Int;
+      pragma Import (C, Wattroff, "wattr_off");
+      --  In Ada we use the On Boolean to control whether or not we want to
+      --  switch on or off the attributes in the set.
+      Err : C_Int;
+      AC  : constant Attributed_Character := (Ch    => Character'First,
+                                              Color => Color_Pair'First,
+                                              Attr  => Attr);
+   begin
+      if On then
+         Err := Wattron  (Win, AttrChar_To_AttrType (AC));
+      else
+         Err := Wattroff (Win, AttrChar_To_AttrType (AC));
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Switch_Character_Attribute;
+
+   procedure Set_Character_Attributes
+     (Win   : in Window := Standard_Window;
+      Attr  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Wattrset (Win    : Window;
+                         C_Attr : C_AttrType) return C_Int;
+      pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set
+   begin
+      if Wattrset (Win,
+                   AttrChar_To_AttrType (Attributed_Character'
+                                         (Ch    => Character'First,
+                                          Color => Color,
+                                          Attr  => Attr))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Character_Attributes;
+
+   function Get_Character_Attribute (Win : Window := Standard_Window)
+                                     return Character_Attribute_Set
+   is
+      function Wattrget (Win : Window;
+                         Atr : access C_AttrType;
+                         Col : access C_Short;
+                         Opt : System.Address) return C_Int;
+      pragma Import (C, Wattrget, "wattr_get");
+
+      Attr : aliased C_AttrType;
+      Col  : aliased C_Short;
+      Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
+                                         System.Null_Address);
+      Ch   : Attributed_Character;
+   begin
+      if Res = Curses_Ok then
+         Ch := AttrType_To_AttrChar (Attr);
+         return Ch.Attr;
+      else
+         raise Curses_Exception;
+      end if;
+   end Get_Character_Attribute;
+
+   function Get_Character_Attribute (Win : Window := Standard_Window)
+                                     return Color_Pair
+   is
+      function Wattrget (Win : Window;
+                         Atr : access C_AttrType;
+                         Col : access C_Short;
+                         Opt : System.Address) return C_Int;
+      pragma Import (C, Wattrget, "wattr_get");
+
+      Attr : aliased C_AttrType;
+      Col  : aliased C_Short;
+      Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
+                                         System.Null_Address);
+      Ch   : Attributed_Character;
+   begin
+      if Res = Curses_Ok then
+         Ch := AttrType_To_AttrChar (Attr);
+         return Ch.Color;
+      else
+         raise Curses_Exception;
+      end if;
+   end Get_Character_Attribute;
+
+   procedure Set_Color (Win  : in Window := Standard_Window;
+                        Pair : in Color_Pair)
+   is
+      function Wset_Color (Win   : Window;
+                           Color : C_Short;
+                           Opts  : C_Void_Ptr) return C_Int;
+      pragma Import (C, Wset_Color, "wcolor_set");
+   begin
+      if Wset_Color (Win,
+                     C_Short (Pair),
+                     C_Void_Ptr (System.Null_Address)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Color;
+
+   procedure Change_Attributes
+     (Win   : in Window := Standard_Window;
+      Count : in Integer := -1;
+      Attr  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Wchgat (Win   : Window;
+                       Cnt   : C_Int;
+                       Attr  : C_AttrType;
+                       Color : C_Short;
+                       Opts  : System.Address := System.Null_Address)
+                       return C_Int;
+      pragma Import (C, Wchgat, "wchgat");
+
+      Ch : constant Attributed_Character :=
+        (Ch => Character'First, Color => Color_Pair'First, Attr => Attr);
+   begin
+      if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch),
+                 C_Short (Color)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Change_Attributes;
+
+   procedure Change_Attributes
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position := Line_Position'First;
+      Column : in Column_Position := Column_Position'First;
+      Count  : in Integer := -1;
+      Attr   : in Character_Attribute_Set := Normal_Video;
+      Color  : in Color_Pair := Color_Pair'First)
+   is
+   begin
+      Move_Cursor (Win, Line, Column);
+      Change_Attributes (Win, Count, Attr, Color);
+   end Change_Attributes;
+------------------------------------------------------------------------------
+   procedure Beep
+   is
+      function Beeper return C_Int;
+      pragma Import (C, Beeper, "beep");
+   begin
+      if Beeper = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Beep;
+
+   procedure Flash_Screen
+   is
+      function Flash return C_Int;
+      pragma Import (C, Flash, "flash");
+   begin
+      if Flash = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Flash_Screen;
+------------------------------------------------------------------------------
+   procedure Set_Cbreak_Mode (SwitchOn : in Boolean := True)
+   is
+      function Cbreak return C_Int;
+      pragma Import (C, Cbreak, "cbreak");
+      function NoCbreak return C_Int;
+      pragma Import (C, NoCbreak, "nocbreak");
+
+      Err : C_Int;
+   begin
+      if SwitchOn then
+         Err := Cbreak;
+      else
+         Err := NoCbreak;
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Cbreak_Mode;
+
+   procedure Set_Raw_Mode (SwitchOn : in Boolean := True)
+   is
+      function Raw return C_Int;
+      pragma Import (C, Raw, "raw");
+      function NoRaw return C_Int;
+      pragma Import (C, NoRaw, "noraw");
+
+      Err : C_Int;
+   begin
+      if SwitchOn then
+         Err := Raw;
+      else
+         Err := NoRaw;
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Raw_Mode;
+
+   procedure Set_Echo_Mode (SwitchOn : in Boolean := True)
+   is
+      function Echo return C_Int;
+      pragma Import (C, Echo, "echo");
+      function NoEcho return C_Int;
+      pragma Import (C, NoEcho, "noecho");
+
+      Err : C_Int;
+   begin
+      if SwitchOn then
+         Err := Echo;
+      else
+         Err := NoEcho;
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Echo_Mode;
+
+   procedure Set_Meta_Mode (Win      : in Window := Standard_Window;
+                            SwitchOn : in Boolean := True)
+   is
+      function Meta (W : Window; Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Meta, "meta");
+   begin
+      if Meta (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Meta_Mode;
+
+   procedure Set_KeyPad_Mode (Win      : in Window := Standard_Window;
+                              SwitchOn : in Boolean := True)
+   is
+      function Keypad (W : Window; Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Keypad, "keypad");
+   begin
+      if Keypad (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_KeyPad_Mode;
+
+   function Get_KeyPad_Mode (Win : in Window := Standard_Window)
+                             return Boolean
+   is
+      function Is_Keypad (W : Window) return Curses_Bool;
+      pragma Import (C, Is_Keypad, "is_keypad");
+   begin
+      return (Is_Keypad (Win) /= Curses_Bool_False);
+   end Get_KeyPad_Mode;
+
+   procedure Half_Delay (Amount : in Half_Delay_Amount)
+   is
+      function Halfdelay (Amount : C_Int) return C_Int;
+      pragma Import (C, Halfdelay, "halfdelay");
+   begin
+      if Halfdelay (C_Int (Amount)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Half_Delay;
+
+   procedure Set_Flush_On_Interrupt_Mode
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := True)
+   is
+      function Intrflush (Win : Window; Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Intrflush, "intrflush");
+   begin
+      if Intrflush (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Flush_On_Interrupt_Mode;
+
+   procedure Set_Queue_Interrupt_Mode
+     (Win   : in Window := Standard_Window;
+      Flush : in Boolean := True)
+   is
+      procedure Qiflush;
+      pragma Import (C, Qiflush, "qiflush");
+      procedure No_Qiflush;
+      pragma Import (C, No_Qiflush, "noqiflush");
+   begin
+      if Win = Null_Window then
+         raise Curses_Exception;
+      end if;
+      if Flush then
+         Qiflush;
+      else
+         No_Qiflush;
+      end if;
+   end Set_Queue_Interrupt_Mode;
+
+   procedure Set_NoDelay_Mode
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := False)
+   is
+      function Nodelay (Win : Window; Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Nodelay, "nodelay");
+   begin
+      if Nodelay (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_NoDelay_Mode;
+
+   procedure Set_Timeout_Mode (Win    : in Window := Standard_Window;
+                               Mode   : in Timeout_Mode;
+                               Amount : in Natural)
+   is
+      procedure Wtimeout (Win : Window; Amount : C_Int);
+      pragma Import (C, Wtimeout, "wtimeout");
+
+      Time : C_Int;
+   begin
+      case Mode is
+         when Blocking     => Time := -1;
+         when Non_Blocking => Time := 0;
+         when Delayed      =>
+            if Amount = 0 then
+               raise Constraint_Error;
+            end if;
+            Time := C_Int (Amount);
+      end case;
+      Wtimeout (Win, Time);
+   end Set_Timeout_Mode;
+
+   procedure Set_Escape_Timer_Mode
+     (Win       : in Window := Standard_Window;
+      Timer_Off : in Boolean := False)
+   is
+      function Notimeout (Win : Window; Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Notimeout, "notimeout");
+   begin
+      if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off)))
+        = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Escape_Timer_Mode;
+
+------------------------------------------------------------------------------
+   procedure Set_NL_Mode (SwitchOn : in Boolean := True)
+   is
+      function NL return C_Int;
+      pragma Import (C, NL, "nl");
+      function NoNL return C_Int;
+      pragma Import (C, NoNL, "nonl");
+
+      Err : C_Int;
+   begin
+      if SwitchOn then
+         Err := NL;
+      else
+         Err := NoNL;
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_NL_Mode;
+
+   procedure Clear_On_Next_Update
+     (Win      : in Window := Standard_Window;
+      Do_Clear : in Boolean := True)
+   is
+      function Clear_Ok (W : Window; Flag : Curses_Bool) return C_Int;
+      pragma Import (C, Clear_Ok, "clearok");
+   begin
+      if Clear_Ok (Win, Curses_Bool (Boolean'Pos (Do_Clear))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Clear_On_Next_Update;
+
+   procedure Use_Insert_Delete_Line
+     (Win    : in Window := Standard_Window;
+      Do_Idl : in Boolean := True)
+   is
+      function IDL_Ok (W : Window; Flag : Curses_Bool) return C_Int;
+      pragma Import (C, IDL_Ok, "idlok");
+   begin
+      if IDL_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idl))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Use_Insert_Delete_Line;
+
+   procedure Use_Insert_Delete_Character
+     (Win    : in Window := Standard_Window;
+      Do_Idc : in Boolean := True)
+   is
+      procedure IDC_Ok (W : Window; Flag : Curses_Bool);
+      pragma Import (C, IDC_Ok, "idcok");
+   begin
+      IDC_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idc)));
+   end Use_Insert_Delete_Character;
+
+   procedure Leave_Cursor_After_Update
+     (Win      : in Window := Standard_Window;
+      Do_Leave : in Boolean := True)
+   is
+      function Leave_Ok (W : Window; Flag : Curses_Bool) return C_Int;
+      pragma Import (C, Leave_Ok, "leaveok");
+   begin
+      if Leave_Ok (Win, Curses_Bool (Boolean'Pos (Do_Leave))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Leave_Cursor_After_Update;
+
+   procedure Immediate_Update_Mode
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := False)
+   is
+      procedure Immedok (Win : Window; Mode : Curses_Bool);
+      pragma Import (C, Immedok, "immedok");
+   begin
+      Immedok (Win, Curses_Bool (Boolean'Pos (Mode)));
+   end Immediate_Update_Mode;
+
+   procedure Allow_Scrolling
+     (Win  : in Window  := Standard_Window;
+      Mode : in Boolean := False)
+   is
+      function Scrollok (Win : Window; Mode : Curses_Bool) return C_Int;
+      pragma Import (C, Scrollok, "scrollok");
+   begin
+      if Scrollok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Allow_Scrolling;
+
+   function Scrolling_Allowed (Win : Window := Standard_Window)
+                               return Boolean
+   is
+      function Is_Scroll_Ok (W : Window) return Curses_Bool;
+      pragma Import (C, Is_Scroll_Ok, "is_scrollok");
+   begin
+      return (Is_Scroll_Ok (Win) /= Curses_Bool_False);
+   end Scrolling_Allowed;
+
+   procedure Set_Scroll_Region
+     (Win         : in Window := Standard_Window;
+      Top_Line    : in Line_Position;
+      Bottom_Line : in Line_Position)
+   is
+      function Wsetscrreg (Win : Window;
+                           Lin : C_Int;
+                           Col : C_Int) return C_Int;
+      pragma Import (C, Wsetscrreg, "wsetscrreg");
+   begin
+      if Wsetscrreg (Win, C_Int (Top_Line), C_Int (Bottom_Line))
+        = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Scroll_Region;
+------------------------------------------------------------------------------
+   procedure Update_Screen
+   is
+      function Do_Update return C_Int;
+      pragma Import (C, Do_Update, "doupdate");
+   begin
+      if Do_Update = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Update_Screen;
+
+   procedure Refresh (Win : in Window := Standard_Window)
+   is
+      function Wrefresh (W : Window) return C_Int;
+      pragma Import (C, Wrefresh, "wrefresh");
+   begin
+      if Wrefresh (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Refresh;
+
+   procedure Refresh_Without_Update
+     (Win : in Window := Standard_Window)
+   is
+      function Wnoutrefresh (W : Window) return C_Int;
+      pragma Import (C, Wnoutrefresh, "wnoutrefresh");
+   begin
+      if Wnoutrefresh (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Refresh_Without_Update;
+
+   procedure Redraw (Win : in Window := Standard_Window)
+   is
+      function Redrawwin (Win : Window) return C_Int;
+      pragma Import (C, Redrawwin, "redrawwin");
+   begin
+      if Redrawwin (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Redraw;
+
+   procedure Redraw
+     (Win        : in Window := Standard_Window;
+      Begin_Line : in Line_Position;
+      Line_Count : in Positive)
+   is
+      function Wredrawln (Win : Window; First : C_Int; Cnt : C_Int)
+                          return C_Int;
+      pragma Import (C, Wredrawln, "wredrawln");
+   begin
+      if Wredrawln (Win,
+                    C_Int (Begin_Line),
+                    C_Int (Line_Count)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Redraw;
+
+------------------------------------------------------------------------------
+   procedure Erase (Win : in Window := Standard_Window)
+   is
+      function Werase (W : Window) return C_Int;
+      pragma Import (C, Werase, "werase");
+   begin
+      if Werase (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Erase;
+
+   procedure Clear (Win : in Window := Standard_Window)
+   is
+      function Wclear (W : Window) return C_Int;
+      pragma Import (C, Wclear, "wclear");
+   begin
+      if Wclear (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Clear;
+
+   procedure Clear_To_End_Of_Screen (Win : in Window := Standard_Window)
+   is
+      function Wclearbot (W : Window) return C_Int;
+      pragma Import (C, Wclearbot, "wclrtobot");
+   begin
+      if Wclearbot (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Clear_To_End_Of_Screen;
+
+   procedure Clear_To_End_Of_Line (Win : in Window := Standard_Window)
+   is
+      function Wcleareol (W : Window) return C_Int;
+      pragma Import (C, Wcleareol, "wclrtoeol");
+   begin
+      if Wcleareol (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Clear_To_End_Of_Line;
+------------------------------------------------------------------------------
+   procedure Set_Background
+     (Win : in Window := Standard_Window;
+      Ch  : in Attributed_Character)
+   is
+      procedure WBackground (W : in Window; Ch : in C_Chtype);
+      pragma Import (C, WBackground, "wbkgdset");
+   begin
+      WBackground (Win, AttrChar_To_Chtype (Ch));
+   end Set_Background;
+
+   procedure Change_Background
+     (Win : in Window := Standard_Window;
+      Ch  : in Attributed_Character)
+   is
+      function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int;
+      pragma Import (C, WChangeBkgd, "wbkgd");
+   begin
+      if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Change_Background;
+
+   function Get_Background (Win : Window := Standard_Window)
+     return Attributed_Character
+   is
+      function Wgetbkgd (Win : Window) return C_Chtype;
+      pragma Import (C, Wgetbkgd, "getbkgd");
+   begin
+      return Chtype_To_AttrChar (Wgetbkgd (Win));
+   end Get_Background;
+------------------------------------------------------------------------------
+   procedure Change_Lines_Status (Win   : in Window := Standard_Window;
+                                  Start : in Line_Position;
+                                  Count : in Positive;
+                                  State : in Boolean)
+   is
+      function Wtouchln (Win : Window;
+                         Sta : C_Int;
+                         Cnt : C_Int;
+                         Chg : C_Int) return C_Int;
+      pragma Import (C, Wtouchln, "wtouchln");
+   begin
+      if Wtouchln (Win, C_Int (Start), C_Int (Count),
+                   C_Int (Boolean'Pos (State))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Change_Lines_Status;
+
+   procedure Touch (Win : in Window := Standard_Window)
+   is
+      Y : Line_Position;
+      X : Column_Position;
+   begin
+      Get_Size (Win, Y, X);
+      Change_Lines_Status (Win, 0, Positive (Y), True);
+   end Touch;
+
+   procedure Untouch (Win : in Window := Standard_Window)
+   is
+      Y : Line_Position;
+      X : Column_Position;
+   begin
+      Get_Size (Win, Y, X);
+      Change_Lines_Status (Win, 0, Positive (Y), False);
+   end Untouch;
+
+   procedure Touch (Win   : in Window := Standard_Window;
+                    Start : in Line_Position;
+                    Count : in Positive)
+   is
+   begin
+      Change_Lines_Status (Win, Start, Count, True);
+   end Touch;
+
+   function Is_Touched
+     (Win  : Window := Standard_Window;
+      Line : Line_Position) return Boolean
+   is
+      function WLineTouched (W : Window; L : C_Int) return Curses_Bool;
+      pragma Import (C, WLineTouched, "is_linetouched");
+   begin
+      if WLineTouched (Win, C_Int (Line)) = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Is_Touched;
+
+   function Is_Touched
+     (Win : Window := Standard_Window) return Boolean
+   is
+      function WWinTouched (W : Window) return Curses_Bool;
+      pragma Import (C, WWinTouched, "is_wintouched");
+   begin
+      if WWinTouched (Win) = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Is_Touched;
+------------------------------------------------------------------------------
+   procedure Copy
+     (Source_Window            : in Window;
+      Destination_Window       : in Window;
+      Source_Top_Row           : in Line_Position;
+      Source_Left_Column       : in Column_Position;
+      Destination_Top_Row      : in Line_Position;
+      Destination_Left_Column  : in Column_Position;
+      Destination_Bottom_Row   : in Line_Position;
+      Destination_Right_Column : in Column_Position;
+      Non_Destructive_Mode     : in Boolean := True)
+   is
+      function Copywin (Src : Window;
+                        Dst : Window;
+                        Str : C_Int;
+                        Slc : C_Int;
+                        Dtr : C_Int;
+                        Dlc : C_Int;
+                        Dbr : C_Int;
+                        Drc : C_Int;
+                        Ndm : C_Int) return C_Int;
+      pragma Import (C, Copywin, "copywin");
+   begin
+      if Copywin (Source_Window,
+                  Destination_Window,
+                  C_Int (Source_Top_Row),
+                  C_Int (Source_Left_Column),
+                  C_Int (Destination_Top_Row),
+                  C_Int (Destination_Left_Column),
+                  C_Int (Destination_Bottom_Row),
+                  C_Int (Destination_Right_Column),
+                  Boolean'Pos (Non_Destructive_Mode)
+                ) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Copy;
+
+   procedure Overwrite
+     (Source_Window      : in Window;
+      Destination_Window : in Window)
+   is
+      function Overwrite (Src : Window; Dst : Window) return C_Int;
+      pragma Import (C, Overwrite, "overwrite");
+   begin
+      if Overwrite (Source_Window, Destination_Window) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Overwrite;
+
+   procedure Overlay
+     (Source_Window      : in Window;
+      Destination_Window : in Window)
+   is
+      function Overlay (Src : Window; Dst : Window) return C_Int;
+      pragma Import (C, Overlay, "overlay");
+   begin
+      if Overlay (Source_Window, Destination_Window) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Overlay;
+
+------------------------------------------------------------------------------
+   procedure Insert_Delete_Lines
+     (Win   : in Window := Standard_Window;
+      Lines : in Integer       := 1) -- default is to insert one line above
+   is
+      function Winsdelln (W : Window; N : C_Int) return C_Int;
+      pragma Import (C, Winsdelln, "winsdelln");
+   begin
+      if Winsdelln (Win, C_Int (Lines)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Insert_Delete_Lines;
+
+   procedure Delete_Line (Win : in Window := Standard_Window)
+   is
+   begin
+      Insert_Delete_Lines (Win, -1);
+   end Delete_Line;
+
+   procedure Insert_Line (Win : in Window := Standard_Window)
+   is
+   begin
+      Insert_Delete_Lines (Win, 1);
+   end Insert_Line;
+------------------------------------------------------------------------------
+
+   procedure Get_Size
+     (Win               : in Window := Standard_Window;
+      Number_Of_Lines   : out Line_Count;
+      Number_Of_Columns : out Column_Count)
+   is
+      function GetMaxY (W : Window) return C_Int;
+      pragma Import (C, GetMaxY, "getmaxy");
+
+      function GetMaxX (W : Window) return C_Int;
+      pragma Import (C, GetMaxX, "getmaxx");
+
+      Y : constant C_Int := GetMaxY (Win)
+                          + C_Int (Offset_XY);
+      X : constant C_Int := GetMaxX (Win)
+                          + C_Int (Offset_XY);
+   begin
+      Number_Of_Lines   := Line_Count (Y);
+      Number_Of_Columns := Column_Count (X);
+   end Get_Size;
+
+   procedure Get_Window_Position
+     (Win             : in Window := Standard_Window;
+      Top_Left_Line   : out Line_Position;
+      Top_Left_Column : out Column_Position)
+   is
+      function GetBegY (W : Window) return C_Int;
+      pragma Import (C, GetBegY, "getbegy");
+
+      function GetBegX (W : Window) return C_Int;
+      pragma Import (C, GetBegX, "getbegx");
+
+      Y : constant C_Short := C_Short (GetBegY (Win));
+      X : constant C_Short := C_Short (GetBegX (Win));
+   begin
+      Top_Left_Line   := Line_Position (Y);
+      Top_Left_Column := Column_Position (X);
+   end Get_Window_Position;
+
+   procedure Get_Cursor_Position
+     (Win    : in  Window := Standard_Window;
+      Line   : out Line_Position;
+      Column : out Column_Position)
+   is
+      function GetCurY (W : Window) return C_Int;
+      pragma Import (C, GetCurY, "getcury");
+
+      function GetCurX (W : Window) return C_Int;
+      pragma Import (C, GetCurX, "getcurx");
+
+      Y : constant C_Short := C_Short (GetCurY (Win));
+      X : constant C_Short := C_Short (GetCurX (Win));
+   begin
+      Line   := Line_Position (Y);
+      Column := Column_Position (X);
+   end Get_Cursor_Position;
+
+   procedure Get_Origin_Relative_To_Parent
+     (Win                : in  Window;
+      Top_Left_Line      : out Line_Position;
+      Top_Left_Column    : out Column_Position;
+      Is_Not_A_Subwindow : out Boolean)
+   is
+      function GetParY (W : Window) return C_Int;
+      pragma Import (C, GetParY, "getpary");
+
+      function GetParX (W : Window) return C_Int;
+      pragma Import (C, GetParX, "getparx");
+
+      Y : constant C_Int := GetParY (Win);
+      X : constant C_Int := GetParX (Win);
+   begin
+      if Y = -1 then
+         Top_Left_Line   := Line_Position'Last;
+         Top_Left_Column := Column_Position'Last;
+         Is_Not_A_Subwindow := True;
+      else
+         Top_Left_Line   := Line_Position (Y);
+         Top_Left_Column := Column_Position (X);
+         Is_Not_A_Subwindow := False;
+      end if;
+   end Get_Origin_Relative_To_Parent;
+------------------------------------------------------------------------------
+   function New_Pad (Lines   : Line_Count;
+                     Columns : Column_Count) return Window
+   is
+      function Newpad (Lines : C_Int; Columns : C_Int) return Window;
+      pragma Import (C, Newpad, "newpad");
+
+      W : Window;
+   begin
+      W := Newpad (C_Int (Lines), C_Int (Columns));
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+      return W;
+   end New_Pad;
+
+   function Sub_Pad
+     (Pad                   : Window;
+      Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window
+   is
+      function Subpad
+        (Pad                   : Window;
+         Number_Of_Lines       : C_Int;
+         Number_Of_Columns     : C_Int;
+         First_Line_Position   : C_Int;
+         First_Column_Position : C_Int) return Window;
+      pragma Import (C, Subpad, "subpad");
+
+      W : Window;
+   begin
+      W := Subpad (Pad,
+                   C_Int (Number_Of_Lines),
+                   C_Int (Number_Of_Columns),
+                   C_Int (First_Line_Position),
+                   C_Int (First_Column_Position));
+      if W = Null_Window then
+         raise Curses_Exception;
+      end if;
+      return W;
+   end Sub_Pad;
+
+   procedure Refresh
+     (Pad                      : in Window;
+      Source_Top_Row           : in Line_Position;
+      Source_Left_Column       : in Column_Position;
+      Destination_Top_Row      : in Line_Position;
+      Destination_Left_Column  : in Column_Position;
+      Destination_Bottom_Row   : in Line_Position;
+      Destination_Right_Column : in Column_Position)
+   is
+      function Prefresh
+        (Pad                      : Window;
+         Source_Top_Row           : C_Int;
+         Source_Left_Column       : C_Int;
+         Destination_Top_Row      : C_Int;
+         Destination_Left_Column  : C_Int;
+         Destination_Bottom_Row   : C_Int;
+         Destination_Right_Column : C_Int) return C_Int;
+      pragma Import (C, Prefresh, "prefresh");
+   begin
+      if Prefresh (Pad,
+                   C_Int (Source_Top_Row),
+                   C_Int (Source_Left_Column),
+                   C_Int (Destination_Top_Row),
+                   C_Int (Destination_Left_Column),
+                   C_Int (Destination_Bottom_Row),
+                   C_Int (Destination_Right_Column)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Refresh;
+
+   procedure Refresh_Without_Update
+     (Pad                      : in Window;
+      Source_Top_Row           : in Line_Position;
+      Source_Left_Column       : in Column_Position;
+      Destination_Top_Row      : in Line_Position;
+      Destination_Left_Column  : in Column_Position;
+      Destination_Bottom_Row   : in Line_Position;
+      Destination_Right_Column : in Column_Position)
+   is
+      function Pnoutrefresh
+        (Pad                      : Window;
+         Source_Top_Row           : C_Int;
+         Source_Left_Column       : C_Int;
+         Destination_Top_Row      : C_Int;
+         Destination_Left_Column  : C_Int;
+         Destination_Bottom_Row   : C_Int;
+         Destination_Right_Column : C_Int) return C_Int;
+      pragma Import (C, Pnoutrefresh, "pnoutrefresh");
+   begin
+      if Pnoutrefresh (Pad,
+                       C_Int (Source_Top_Row),
+                       C_Int (Source_Left_Column),
+                       C_Int (Destination_Top_Row),
+                       C_Int (Destination_Left_Column),
+                       C_Int (Destination_Bottom_Row),
+                       C_Int (Destination_Right_Column)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Refresh_Without_Update;
+
+   procedure Add_Character_To_Pad_And_Echo_It
+     (Pad : in Window;
+      Ch  : in Attributed_Character)
+   is
+      function Pechochar (Pad : Window; Ch : C_Chtype)
+                          return C_Int;
+      pragma Import (C, Pechochar, "pechochar");
+   begin
+      if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Add_Character_To_Pad_And_Echo_It;
+
+   procedure Add_Character_To_Pad_And_Echo_It
+     (Pad : in Window;
+      Ch  : in Character)
+   is
+   begin
+      Add_Character_To_Pad_And_Echo_It
+        (Pad,
+         Attributed_Character'(Ch    => Ch,
+                               Color => Color_Pair'First,
+                               Attr  => Normal_Video));
+   end Add_Character_To_Pad_And_Echo_It;
+------------------------------------------------------------------------------
+   procedure Scroll (Win    : in Window := Standard_Window;
+                     Amount : in Integer := 1)
+   is
+      function Wscrl (Win : Window; N : C_Int) return C_Int;
+      pragma Import (C, Wscrl, "wscrl");
+
+   begin
+      if Wscrl (Win, C_Int (Amount)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Scroll;
+
+------------------------------------------------------------------------------
+   procedure Delete_Character (Win : in Window := Standard_Window)
+   is
+      function Wdelch (Win : Window) return C_Int;
+      pragma Import (C, Wdelch, "wdelch");
+   begin
+      if Wdelch (Win) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Delete_Character;
+
+   procedure Delete_Character
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position)
+   is
+      function Mvwdelch (Win : Window;
+                         Lin : C_Int;
+                         Col : C_Int) return C_Int;
+      pragma Import (C, Mvwdelch, "mvwdelch");
+   begin
+      if Mvwdelch (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Delete_Character;
+------------------------------------------------------------------------------
+   function Peek (Win : Window := Standard_Window)
+     return Attributed_Character
+   is
+      function Winch (Win : Window) return C_Chtype;
+      pragma Import (C, Winch, "winch");
+   begin
+      return Chtype_To_AttrChar (Winch (Win));
+   end Peek;
+
+   function Peek
+     (Win    : Window := Standard_Window;
+      Line   : Line_Position;
+      Column : Column_Position) return Attributed_Character
+   is
+      function Mvwinch (Win : Window;
+                        Lin : C_Int;
+                        Col : C_Int) return C_Chtype;
+      pragma Import (C, Mvwinch, "mvwinch");
+   begin
+      return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column)));
+   end Peek;
+------------------------------------------------------------------------------
+   procedure Insert (Win : in Window := Standard_Window;
+                     Ch  : in Attributed_Character)
+   is
+      function Winsch (Win : Window; Ch : C_Chtype) return C_Int;
+      pragma Import (C, Winsch, "winsch");
+   begin
+      if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Insert;
+
+   procedure Insert
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Ch     : in Attributed_Character)
+   is
+      function Mvwinsch (Win : Window;
+                         Lin : C_Int;
+                         Col : C_Int;
+                         Ch  : C_Chtype) return C_Int;
+      pragma Import (C, Mvwinsch, "mvwinsch");
+   begin
+      if Mvwinsch (Win,
+                   C_Int (Line),
+                   C_Int (Column),
+                   AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Insert;
+------------------------------------------------------------------------------
+   procedure Insert (Win : in Window := Standard_Window;
+                     Str : in String;
+                     Len : in Integer := -1)
+   is
+      function Winsnstr (Win : Window;
+                         Str : char_array;
+                         Len : Integer := -1) return C_Int;
+      pragma Import (C, Winsnstr, "winsnstr");
+
+      Txt    : char_array (0 .. Str'Length);
+      Length : size_t;
+   begin
+      To_C (Str, Txt, Length);
+      if Winsnstr (Win, Txt, Len) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Insert;
+
+   procedure Insert
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Str    : in String;
+      Len    : in Integer := -1)
+   is
+      function Mvwinsnstr (Win    : Window;
+                           Line   : C_Int;
+                           Column : C_Int;
+                           Str    : char_array;
+                           Len    : C_Int) return C_Int;
+      pragma Import (C, Mvwinsnstr, "mvwinsnstr");
+
+      Txt    : char_array (0 .. Str'Length);
+      Length : size_t;
+   begin
+      To_C (Str, Txt, Length);
+      if Mvwinsnstr (Win, C_Int (Line), C_Int (Column), Txt, C_Int (Len))
+        = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Insert;
+------------------------------------------------------------------------------
+   procedure Peek (Win : in  Window := Standard_Window;
+                   Str : out String;
+                   Len : in  Integer := -1)
+   is
+      function Winnstr (Win : Window;
+                        Str : char_array;
+                        Len : C_Int) return C_Int;
+      pragma Import (C, Winnstr, "winnstr");
+
+      N   : Integer := Len;
+      Txt : char_array (0 .. Str'Length);
+      Cnt : Natural;
+   begin
+      if N < 0 then
+         N := Str'Length;
+      end if;
+      if N > Str'Length then
+         raise Constraint_Error;
+      end if;
+      Txt (0) := Interfaces.C.char'First;
+      if Winnstr (Win, Txt, C_Int (N)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+      To_Ada (Txt, Str, Cnt, True);
+      if Cnt < Str'Length then
+         Str ((Str'First + Cnt) .. Str'Last) := (others => ' ');
+      end if;
+   end Peek;
+
+   procedure Peek
+     (Win    : in  Window := Standard_Window;
+      Line   : in  Line_Position;
+      Column : in  Column_Position;
+      Str    : out String;
+      Len    : in  Integer := -1)
+   is
+   begin
+      Move_Cursor (Win, Line, Column);
+      Peek (Win, Str, Len);
+   end Peek;
+------------------------------------------------------------------------------
+   procedure Peek
+     (Win : in  Window := Standard_Window;
+      Str : out Attributed_String;
+      Len : in  Integer := -1)
+   is
+      function Winchnstr (Win : Window;
+                          Str : chtype_array;             -- out
+                          Len : C_Int) return C_Int;
+      pragma Import (C, Winchnstr, "winchnstr");
+
+      N   : Integer := Len;
+      Txt : constant chtype_array (0 .. Str'Length)
+          := (0 => Default_Character);
+      Cnt : Natural := 0;
+   begin
+      if N < 0 then
+         N := Str'Length;
+      end if;
+      if N > Str'Length then
+         raise Constraint_Error;
+      end if;
+      if Winchnstr (Win, Txt, C_Int (N)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+      for To in Str'Range loop
+         exit when Txt (size_t (Cnt)) = Default_Character;
+         Str (To) := Txt (size_t (Cnt));
+         Cnt := Cnt + 1;
+      end loop;
+      if Cnt < Str'Length then
+         Str ((Str'First + Cnt) .. Str'Last) :=
+           (others => (Ch => ' ',
+                       Color => Color_Pair'First,
+                       Attr => Normal_Video));
+      end if;
+   end Peek;
+
+   procedure Peek
+     (Win    : in  Window := Standard_Window;
+      Line   : in  Line_Position;
+      Column : in  Column_Position;
+      Str    : out Attributed_String;
+      Len    : in Integer := -1)
+   is
+   begin
+      Move_Cursor (Win, Line, Column);
+      Peek (Win, Str, Len);
+   end Peek;
+------------------------------------------------------------------------------
+   procedure Get (Win : in  Window := Standard_Window;
+                  Str : out String;
+                  Len : in  Integer := -1)
+   is
+      function Wgetnstr (Win : Window;
+                         Str : char_array;
+                         Len : C_Int) return C_Int;
+      pragma Import (C, Wgetnstr, "wgetnstr");
+
+      N   : Integer := Len;
+      Txt : char_array (0 .. Str'Length);
+      Cnt : Natural;
+   begin
+      if N < 0 then
+         N := Str'Length;
+      end if;
+      if N > Str'Length then
+         raise Constraint_Error;
+      end if;
+      Txt (0) := Interfaces.C.char'First;
+      if Wgetnstr (Win, Txt, C_Int (N)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+      To_Ada (Txt, Str, Cnt, True);
+      if Cnt < Str'Length then
+         Str ((Str'First + Cnt) .. Str'Last) := (others => ' ');
+      end if;
+   end Get;
+
+   procedure Get
+     (Win    : in  Window := Standard_Window;
+      Line   : in  Line_Position;
+      Column : in  Column_Position;
+      Str    : out String;
+      Len    : in  Integer := -1)
+   is
+   begin
+      Move_Cursor (Win, Line, Column);
+      Get (Win, Str, Len);
+   end Get;
+------------------------------------------------------------------------------
+   procedure Init_Soft_Label_Keys
+     (Format : in Soft_Label_Key_Format := Three_Two_Three)
+   is
+      function Slk_Init (Fmt : C_Int) return C_Int;
+      pragma Import (C, Slk_Init, "slk_init");
+   begin
+      if Slk_Init (Soft_Label_Key_Format'Pos (Format)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Init_Soft_Label_Keys;
+
+   procedure Set_Soft_Label_Key (Label : in Label_Number;
+                                 Text  : in String;
+                                 Fmt   : in Label_Justification := Left)
+   is
+      function Slk_Set (Label : C_Int;
+                        Txt   : char_array;
+                        Fmt   : C_Int) return C_Int;
+      pragma Import (C, Slk_Set, "slk_set");
+
+      Txt : char_array (0 .. Text'Length);
+      Len : size_t;
+   begin
+      To_C (Text, Txt, Len);
+      if Slk_Set (C_Int (Label), Txt,
+                  C_Int (Label_Justification'Pos (Fmt))) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Soft_Label_Key;
+
+   procedure Refresh_Soft_Label_Keys
+   is
+      function Slk_Refresh return C_Int;
+      pragma Import (C, Slk_Refresh, "slk_refresh");
+   begin
+      if Slk_Refresh = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Refresh_Soft_Label_Keys;
+
+   procedure Refresh_Soft_Label_Keys_Without_Update
+   is
+      function Slk_Noutrefresh return C_Int;
+      pragma Import (C, Slk_Noutrefresh, "slk_noutrefresh");
+   begin
+      if Slk_Noutrefresh = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Refresh_Soft_Label_Keys_Without_Update;
+
+   procedure Get_Soft_Label_Key (Label : in Label_Number;
+                                 Text  : out String)
+   is
+      function Slk_Label (Label : C_Int) return chars_ptr;
+      pragma Import (C, Slk_Label, "slk_label");
+   begin
+      Fill_String (Slk_Label (C_Int (Label)), Text);
+   end Get_Soft_Label_Key;
+
+   function Get_Soft_Label_Key (Label : in Label_Number) return String
+   is
+      function Slk_Label (Label : C_Int) return chars_ptr;
+      pragma Import (C, Slk_Label, "slk_label");
+   begin
+      return Fill_String (Slk_Label (C_Int (Label)));
+   end Get_Soft_Label_Key;
+
+   procedure Clear_Soft_Label_Keys
+   is
+      function Slk_Clear return C_Int;
+      pragma Import (C, Slk_Clear, "slk_clear");
+   begin
+      if Slk_Clear = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Clear_Soft_Label_Keys;
+
+   procedure Restore_Soft_Label_Keys
+   is
+      function Slk_Restore return C_Int;
+      pragma Import (C, Slk_Restore, "slk_restore");
+   begin
+      if Slk_Restore = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Restore_Soft_Label_Keys;
+
+   procedure Touch_Soft_Label_Keys
+   is
+      function Slk_Touch return C_Int;
+      pragma Import (C, Slk_Touch, "slk_touch");
+   begin
+      if Slk_Touch = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Touch_Soft_Label_Keys;
+
+   procedure Switch_Soft_Label_Key_Attributes
+     (Attr : in Character_Attribute_Set;
+      On   : in Boolean := True)
+   is
+      function Slk_Attron (Ch : C_Chtype) return C_Int;
+      pragma Import (C, Slk_Attron, "slk_attron");
+      function Slk_Attroff (Ch : C_Chtype) return C_Int;
+      pragma Import (C, Slk_Attroff, "slk_attroff");
+
+      Err : C_Int;
+      Ch  : constant Attributed_Character := (Ch    => Character'First,
+                                              Attr  => Attr,
+                                              Color => Color_Pair'First);
+   begin
+      if On then
+         Err := Slk_Attron  (AttrChar_To_Chtype (Ch));
+      else
+         Err := Slk_Attroff (AttrChar_To_Chtype (Ch));
+      end if;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Switch_Soft_Label_Key_Attributes;
+
+   procedure Set_Soft_Label_Key_Attributes
+     (Attr  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First)
+   is
+      function Slk_Attrset (Ch : C_Chtype) return C_Int;
+      pragma Import (C, Slk_Attrset, "slk_attrset");
+
+      Ch : constant Attributed_Character := (Ch    => Character'First,
+                                             Attr  => Attr,
+                                             Color => Color);
+   begin
+      if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Soft_Label_Key_Attributes;
+
+   function Get_Soft_Label_Key_Attributes return Character_Attribute_Set
+   is
+      function Slk_Attr return C_Chtype;
+      pragma Import (C, Slk_Attr, "slk_attr");
+
+      Attr : constant C_Chtype := Slk_Attr;
+   begin
+      return Chtype_To_AttrChar (Attr).Attr;
+   end Get_Soft_Label_Key_Attributes;
+
+   function Get_Soft_Label_Key_Attributes return Color_Pair
+   is
+      function Slk_Attr return C_Chtype;
+      pragma Import (C, Slk_Attr, "slk_attr");
+
+      Attr : constant C_Chtype := Slk_Attr;
+   begin
+      return Chtype_To_AttrChar (Attr).Color;
+   end Get_Soft_Label_Key_Attributes;
+
+   procedure Set_Soft_Label_Key_Color (Pair : in Color_Pair)
+   is
+      function Slk_Color (Color : in C_Short) return C_Int;
+      pragma Import (C, Slk_Color, "slk_color");
+   begin
+      if Slk_Color (C_Short (Pair)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Soft_Label_Key_Color;
+
+------------------------------------------------------------------------------
+   procedure Enable_Key (Key    : in Special_Key_Code;
+                         Enable : in Boolean := True)
+   is
+      function Keyok (Keycode : C_Int;
+                      On_Off  : Curses_Bool) return C_Int;
+      pragma Import (C, Keyok, "keyok");
+   begin
+      if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable)))
+        = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Enable_Key;
+------------------------------------------------------------------------------
+   procedure Define_Key (Definition : in String;
+                         Key        : in Special_Key_Code)
+   is
+      function Defkey (Def : char_array;
+                       Key : C_Int) return C_Int;
+      pragma Import (C, Defkey, "define_key");
+
+      Txt    : char_array (0 .. Definition'Length);
+      Length : size_t;
+   begin
+      To_C (Definition, Txt, Length);
+      if Defkey (Txt, C_Int (Key)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Define_Key;
+------------------------------------------------------------------------------
+   procedure Un_Control (Ch  : in Attributed_Character;
+                         Str : out String)
+   is
+      function Unctrl (Ch : C_Chtype) return chars_ptr;
+      pragma Import (C, Unctrl, "unctrl");
+   begin
+      Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str);
+   end Un_Control;
+
+   function Un_Control (Ch : in Attributed_Character) return String
+   is
+      function Unctrl (Ch : C_Chtype) return chars_ptr;
+      pragma Import (C, Unctrl, "unctrl");
+   begin
+      return Fill_String (Unctrl (AttrChar_To_Chtype (Ch)));
+   end Un_Control;
+
+   procedure Delay_Output (Msecs : in Natural)
+   is
+      function Delayoutput (Msecs : C_Int) return C_Int;
+      pragma Import (C, Delayoutput, "delay_output");
+   begin
+      if Delayoutput (C_Int (Msecs)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Delay_Output;
+
+   procedure Flush_Input
+   is
+      function Flushinp return C_Int;
+      pragma Import (C, Flushinp, "flushinp");
+   begin
+      if Flushinp = Curses_Err then  -- docu says that never happens, but...
+         raise Curses_Exception;
+      end if;
+   end Flush_Input;
+------------------------------------------------------------------------------
+   function Baudrate return Natural
+   is
+      function Baud return C_Int;
+      pragma Import (C, Baud, "baudrate");
+   begin
+      return Natural (Baud);
+   end Baudrate;
+
+   function Erase_Character return Character
+   is
+      function Erasechar return C_Int;
+      pragma Import (C, Erasechar, "erasechar");
+   begin
+      return Character'Val (Erasechar);
+   end Erase_Character;
+
+   function Kill_Character return Character
+   is
+      function Killchar return C_Int;
+      pragma Import (C, Killchar, "killchar");
+   begin
+      return Character'Val (Killchar);
+   end Kill_Character;
+
+   function Has_Insert_Character return Boolean
+   is
+      function Has_Ic return Curses_Bool;
+      pragma Import (C, Has_Ic, "has_ic");
+   begin
+      if Has_Ic = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Has_Insert_Character;
+
+   function Has_Insert_Line return Boolean
+   is
+      function Has_Il return Curses_Bool;
+      pragma Import (C, Has_Il, "has_il");
+   begin
+      if Has_Il = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Has_Insert_Line;
+
+   function Supported_Attributes return Character_Attribute_Set
+   is
+      function Termattrs return C_Chtype;
+      pragma Import (C, Termattrs, "termattrs");
+
+      Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs);
+   begin
+      return Ch.Attr;
+   end Supported_Attributes;
+
+   procedure Long_Name (Name : out String)
+   is
+      function Longname return chars_ptr;
+      pragma Import (C, Longname, "longname");
+   begin
+      Fill_String (Longname, Name);
+   end Long_Name;
+
+   function Long_Name return String
+   is
+      function Longname return chars_ptr;
+      pragma Import (C, Longname, "longname");
+   begin
+      return Fill_String (Longname);
+   end Long_Name;
+
+   procedure Terminal_Name (Name : out String)
+   is
+      function Termname return chars_ptr;
+      pragma Import (C, Termname, "termname");
+   begin
+      Fill_String (Termname, Name);
+   end Terminal_Name;
+
+   function Terminal_Name return String
+   is
+      function Termname return chars_ptr;
+      pragma Import (C, Termname, "termname");
+   begin
+      return Fill_String (Termname);
+   end Terminal_Name;
+------------------------------------------------------------------------------
+   procedure Init_Pair (Pair : in Redefinable_Color_Pair;
+                        Fore : in Color_Number;
+                        Back : in Color_Number)
+   is
+      function Initpair (Pair : C_Short;
+                         Fore : C_Short;
+                         Back : C_Short) return C_Int;
+      pragma Import (C, Initpair, "init_pair");
+   begin
+      if Integer (Pair) >= Number_Of_Color_Pairs then
+         raise Constraint_Error;
+      end if;
+      if Integer (Fore) >= Number_Of_Colors or else
+         Integer (Back) >= Number_Of_Colors then
+         raise Constraint_Error;
+      end if;
+      if Initpair (C_Short (Pair), C_Short (Fore), C_Short (Back))
+        = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Init_Pair;
+
+   procedure Pair_Content (Pair : in Color_Pair;
+                           Fore : out Color_Number;
+                           Back : out Color_Number)
+   is
+      type C_Short_Access is access all C_Short;
+      function Paircontent (Pair : C_Short;
+                            Fp   : C_Short_Access;
+                            Bp   : C_Short_Access) return C_Int;
+      pragma Import (C, Paircontent, "pair_content");
+
+      F, B : aliased C_Short;
+   begin
+      if Paircontent (C_Short (Pair), F'Access, B'Access) = Curses_Err then
+         raise Curses_Exception;
+      else
+         Fore := Color_Number (F);
+         Back := Color_Number (B);
+      end if;
+   end Pair_Content;
+
+   function Has_Colors return Boolean
+   is
+      function Hascolors return Curses_Bool;
+      pragma Import (C, Hascolors, "has_colors");
+   begin
+      if Hascolors = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Has_Colors;
+
+   procedure Init_Color (Color : in Color_Number;
+                         Red   : in RGB_Value;
+                         Green : in RGB_Value;
+                         Blue  : in RGB_Value)
+   is
+      function Initcolor (Col   : C_Short;
+                          Red   : C_Short;
+                          Green : C_Short;
+                          Blue  : C_Short) return C_Int;
+      pragma Import (C, Initcolor, "init_color");
+   begin
+      if Initcolor (C_Short (Color), C_Short (Red), C_Short (Green),
+                    C_Short (Blue)) = Curses_Err then
+            raise Curses_Exception;
+      end if;
+   end Init_Color;
+
+   function Can_Change_Color return Boolean
+   is
+      function Canchangecolor return Curses_Bool;
+      pragma Import (C, Canchangecolor, "can_change_color");
+   begin
+      if Canchangecolor = Curses_Bool_False then
+         return False;
+      else
+         return True;
+      end if;
+   end Can_Change_Color;
+
+   procedure Color_Content (Color : in  Color_Number;
+                            Red   : out RGB_Value;
+                            Green : out RGB_Value;
+                            Blue  : out RGB_Value)
+   is
+      type C_Short_Access is access all C_Short;
+
+      function Colorcontent (Color : C_Short; R, G, B : C_Short_Access)
+                             return C_Int;
+      pragma Import (C, Colorcontent, "color_content");
+
+      R, G, B : aliased C_Short;
+   begin
+      if Colorcontent (C_Short (Color), R'Access, G'Access, B'Access) =
+        Curses_Err then
+         raise Curses_Exception;
+      else
+         Red   := RGB_Value (R);
+         Green := RGB_Value (G);
+         Blue  := RGB_Value (B);
+      end if;
+   end Color_Content;
+
+------------------------------------------------------------------------------
+   procedure Save_Curses_Mode (Mode : in Curses_Mode)
+   is
+      function Def_Prog_Mode return C_Int;
+      pragma Import (C, Def_Prog_Mode, "def_prog_mode");
+      function Def_Shell_Mode return C_Int;
+      pragma Import (C, Def_Shell_Mode, "def_shell_mode");
+
+      Err : C_Int;
+   begin
+      case Mode is
+         when Curses => Err := Def_Prog_Mode;
+         when Shell  => Err := Def_Shell_Mode;
+      end case;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Save_Curses_Mode;
+
+   procedure Reset_Curses_Mode (Mode : in Curses_Mode)
+   is
+      function Reset_Prog_Mode return C_Int;
+      pragma Import (C, Reset_Prog_Mode, "reset_prog_mode");
+      function Reset_Shell_Mode return C_Int;
+      pragma Import (C, Reset_Shell_Mode, "reset_shell_mode");
+
+      Err : C_Int;
+   begin
+      case Mode is
+         when Curses => Err := Reset_Prog_Mode;
+         when Shell  => Err := Reset_Shell_Mode;
+      end case;
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Reset_Curses_Mode;
+
+   procedure Save_Terminal_State
+   is
+      function Savetty return C_Int;
+      pragma Import (C, Savetty, "savetty");
+   begin
+      if Savetty = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Save_Terminal_State;
+
+   procedure Reset_Terminal_State
+   is
+      function Resetty return C_Int;
+      pragma Import (C, Resetty, "resetty");
+   begin
+      if Resetty = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Reset_Terminal_State;
+
+   procedure Rip_Off_Lines (Lines : in Integer;
+                            Proc  : in Stdscr_Init_Proc)
+   is
+      function Ripoffline (Lines : C_Int;
+                           Proc  : Stdscr_Init_Proc) return C_Int;
+      pragma Import (C, Ripoffline, "_nc_ripoffline");
+   begin
+      if Ripoffline (C_Int (Lines), Proc) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Rip_Off_Lines;
+
+   procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility)
+   is
+      function Curs_Set (Curs : C_Int) return C_Int;
+      pragma Import (C, Curs_Set, "curs_set");
+
+      Res : C_Int;
+   begin
+      Res := Curs_Set (Cursor_Visibility'Pos (Visibility));
+      if Res /= Curses_Err then
+         Visibility := Cursor_Visibility'Val (Res);
+      end if;
+   end Set_Cursor_Visibility;
+
+   procedure Nap_Milli_Seconds (Ms : in Natural)
+   is
+      function Napms (Ms : C_Int) return C_Int;
+      pragma Import (C, Napms, "napms");
+   begin
+      if Napms (C_Int (Ms)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Nap_Milli_Seconds;
+------------------------------------------------------------------------------
+
+   function Standard_Window return Window
+   is
+      Result : Window;
+      pragma Import (C, Result, "stdscr");
+   begin
+      return Result;
+   end Standard_Window;
+
+   function Current_Window return Window
+   is
+      Result : Window;
+      pragma Import (C, Result, "curscr");
+   begin
+      return Result;
+   end Current_Window;
+
+   function Lines return Line_Count
+   is
+      Result : C_Int;
+      pragma Import (C, Result, "LINES");
+   begin
+      return Line_Count (Result);
+   end Lines;
+
+   function Columns return Column_Count
+   is
+      Result : C_Int;
+      pragma Import (C, Result, "COLS");
+   begin
+      return Column_Count (Result);
+   end Columns;
+
+   function Tab_Size return Natural
+   is
+      Result : C_Int;
+      pragma Import (C, Result, "TABSIZE");
+   begin
+      return Natural (Result);
+   end Tab_Size;
+
+   function Number_Of_Colors return Natural
+   is
+      Result : C_Int;
+      pragma Import (C, Result, "COLORS");
+   begin
+      return Natural (Result);
+   end Number_Of_Colors;
+
+   function Number_Of_Color_Pairs return Natural
+   is
+      Result : C_Int;
+      pragma Import (C, Result, "COLOR_PAIRS");
+   begin
+      return Natural (Result);
+   end Number_Of_Color_Pairs;
+
+------------------------------------------------------------------------------
+   procedure Transform_Coordinates
+     (W      : in Window := Standard_Window;
+      Line   : in out Line_Position;
+      Column : in out Column_Position;
+      Dir    : in Transform_Direction := From_Screen)
+   is
+      type Int_Access is access all C_Int;
+      function Transform (W    : Window;
+                          Y, X : Int_Access;
+                          Dir  : Curses_Bool) return C_Int;
+      pragma Import (C, Transform, "wmouse_trafo");
+
+      X : aliased C_Int := C_Int (Column);
+      Y : aliased C_Int := C_Int (Line);
+      D : Curses_Bool := Curses_Bool_False;
+      R : C_Int;
+   begin
+      if Dir = To_Screen then
+         D := 1;
+      end if;
+      R := Transform (W, Y'Access, X'Access, D);
+      if R = Curses_False then
+         raise Curses_Exception;
+      else
+         Line   := Line_Position (Y);
+         Column := Column_Position (X);
+      end if;
+   end Transform_Coordinates;
+------------------------------------------------------------------------------
+   procedure Use_Default_Colors is
+      function C_Use_Default_Colors return C_Int;
+      pragma Import (C, C_Use_Default_Colors, "use_default_colors");
+      Err : constant C_Int := C_Use_Default_Colors;
+   begin
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Use_Default_Colors;
+
+   procedure Assume_Default_Colors (Fore : Color_Number := Default_Color;
+                                    Back : Color_Number := Default_Color)
+   is
+      function C_Assume_Default_Colors (Fore : C_Int;
+                                        Back : C_Int) return C_Int;
+      pragma Import (C, C_Assume_Default_Colors, "assume_default_colors");
+
+      Err : constant C_Int := C_Assume_Default_Colors (C_Int (Fore),
+                                                       C_Int (Back));
+   begin
+      if Err = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Assume_Default_Colors;
+------------------------------------------------------------------------------
+   function Curses_Version return String
+   is
+      function curses_versionC return chars_ptr;
+      pragma Import (C, curses_versionC, "curses_version");
+      Result : constant chars_ptr := curses_versionC;
+   begin
+      return Fill_String (Result);
+   end Curses_Version;
+------------------------------------------------------------------------------
+   procedure Curses_Free_All is
+      procedure curses_freeall;
+      pragma Import (C, curses_freeall, "_nc_freeall");
+   begin
+      --  Use this only for testing: you cannot use curses after calling it,
+      --  so it has to be the "last" thing done before exiting the program.
+      --  This will not really free ALL of memory used by curses.  That is
+      --  because it cannot free the memory used for stdout's setbuf.  The
+      --  _nc_free_and_exit() procedure can do that, but it can be invoked
+      --  safely only from C - and again, that only as the "last" thing done
+      --  before exiting the program.
+      curses_freeall;
+   end Curses_Free_All;
+------------------------------------------------------------------------------
+   function Use_Extended_Names (Enable : Boolean) return Boolean
+   is
+      function use_extended_namesC (e : Curses_Bool) return C_Int;
+      pragma Import (C, use_extended_namesC, "use_extended_names");
+
+      Res : constant C_Int :=
+         use_extended_namesC (Curses_Bool (Boolean'Pos (Enable)));
+   begin
+      if Res = C_Int (Curses_Bool_False) then
+         return False;
+      else
+         return True;
+      end if;
+   end Use_Extended_Names;
+------------------------------------------------------------------------------
+   procedure Screen_Dump_To_File (Filename : in String)
+   is
+      function scr_dump (f : char_array) return C_Int;
+      pragma Import (C, scr_dump, "scr_dump");
+      Txt    : char_array (0 .. Filename'Length);
+      Length : size_t;
+   begin
+      To_C (Filename, Txt, Length);
+      if Curses_Err = scr_dump (Txt) then
+         raise Curses_Exception;
+      end if;
+   end Screen_Dump_To_File;
+
+   procedure Screen_Restore_From_File (Filename : in String)
+   is
+      function scr_restore (f : char_array) return C_Int;
+      pragma Import (C, scr_restore, "scr_restore");
+      Txt    : char_array (0 .. Filename'Length);
+      Length : size_t;
+   begin
+      To_C (Filename, Txt, Length);
+      if Curses_Err = scr_restore (Txt)  then
+         raise Curses_Exception;
+      end if;
+   end Screen_Restore_From_File;
+
+   procedure Screen_Init_From_File (Filename : in String)
+   is
+      function scr_init (f : char_array) return C_Int;
+      pragma Import (C, scr_init, "scr_init");
+      Txt    : char_array (0 .. Filename'Length);
+      Length : size_t;
+   begin
+      To_C (Filename, Txt, Length);
+      if Curses_Err = scr_init (Txt) then
+         raise Curses_Exception;
+      end if;
+   end Screen_Init_From_File;
+
+   procedure Screen_Set_File (Filename : in String)
+   is
+      function scr_set (f : char_array) return C_Int;
+      pragma Import (C, scr_set, "scr_set");
+      Txt    : char_array (0 .. Filename'Length);
+      Length : size_t;
+   begin
+      To_C (Filename, Txt, Length);
+      if Curses_Err = scr_set (Txt) then
+         raise Curses_Exception;
+      end if;
+   end Screen_Set_File;
+------------------------------------------------------------------------------
+   procedure Resize (Win               : Window := Standard_Window;
+                     Number_Of_Lines   : Line_Count;
+                     Number_Of_Columns : Column_Count) is
+      function wresize (win     : Window;
+                        lines   : C_Int;
+                        columns : C_Int) return C_Int;
+      pragma Import (C, wresize);
+   begin
+      if wresize (Win,
+                  C_Int (Number_Of_Lines),
+                  C_Int (Number_Of_Columns)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Resize;
+------------------------------------------------------------------------------
+
+end Terminal_Interface.Curses;
+
diff --git a/ncurses/doc/html/ada/terminal_interface-curses__ads.htm b/ncurses/doc/html/ada/terminal_interface-curses__ads.htm new file mode 100644 index 0000000..4cc1194 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface-curses__ads.htm @@ -0,0 +1,1935 @@ + +terminal_interface-curses.ads + +

File : terminal_interface-curses.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                         Terminal_Interface.Curses                        --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.41 @
+--  @Date: 2007/05/05 20:33:52 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  curses binding.
+--  This module is generated. Please don't change it manually!
+--  Run the generator instead.
+--  |
+with System.Storage_Elements;
+with Interfaces.C;   --  We need this for some assertions.
+
+package Terminal_Interface.Curses is
+   pragma Preelaborate (Terminal_Interface.Curses);
+   pragma Linker_Options ("-lncursesw");
+
+   NC_Major_Version : constant := 5; --  Major version of the library
+   NC_Minor_Version : constant := 6; --  Minor version of the library
+   NC_Version : constant String := "5.6";  --  Version of library
+
+   type Window is private;
+   Null_Window : constant Window;
+
+   type Line_Position   is new Natural; --  line coordinate
+   type Column_Position is new Natural; --  column coordinate
+
+   subtype Line_Count   is Line_Position   range 1 .. Line_Position'Last;
+   --  Type to count lines. We do not allow null windows, so must be positive
+   subtype Column_Count is Column_Position range 1 .. Column_Position'Last;
+   --  Type to count columns. We do not allow null windows, so must be positive
+
+   type Key_Code is new Integer;
+   --  That is anything including real characters, special keys and logical
+   --  request codes.
+
+   --  FIXME: The "-1" should be Curses_Err
+   subtype Real_Key_Code is Key_Code range -1 .. 8#777#;
+   --  This are the codes that potentially represent a real keystroke.
+   --  Not all codes may be possible on a specific terminal. To check the
+   --  availability of a special key, the Has_Key function is provided.
+
+   subtype Special_Key_Code is Real_Key_Code
+     range 8#400# .. Real_Key_Code'Last;
+   --  Type for a function- or special key number
+
+   subtype Normal_Key_Code is Real_Key_Code range
+     Character'Pos (Character'First) .. Character'Pos (Character'Last);
+   --  This are the codes for regular (incl. non-graphical) characters.
+
+   --  Constants for function- and special keys
+   --
+   Key_None                       : constant Special_Key_Code := 8#400#;
+   Key_Code_Yes                   : constant Special_Key_Code := 8#400#;
+   Key_Min                        : constant Special_Key_Code := 8#401#;
+   Key_Break                      : constant Special_Key_Code := 8#401#;
+   Key_Cursor_Down                : constant Special_Key_Code := 8#402#;
+   Key_Cursor_Up                  : constant Special_Key_Code := 8#403#;
+   Key_Cursor_Left                : constant Special_Key_Code := 8#404#;
+   Key_Cursor_Right               : constant Special_Key_Code := 8#405#;
+   Key_Home                       : constant Special_Key_Code := 8#406#;
+   Key_Backspace                  : constant Special_Key_Code := 8#407#;
+   Key_F0                         : constant Special_Key_Code := 8#410#;
+   Key_F1                         : constant Special_Key_Code := 8#411#;
+   Key_F2                         : constant Special_Key_Code := 8#412#;
+   Key_F3                         : constant Special_Key_Code := 8#413#;
+   Key_F4                         : constant Special_Key_Code := 8#414#;
+   Key_F5                         : constant Special_Key_Code := 8#415#;
+   Key_F6                         : constant Special_Key_Code := 8#416#;
+   Key_F7                         : constant Special_Key_Code := 8#417#;
+   Key_F8                         : constant Special_Key_Code := 8#420#;
+   Key_F9                         : constant Special_Key_Code := 8#421#;
+   Key_F10                        : constant Special_Key_Code := 8#422#;
+   Key_F11                        : constant Special_Key_Code := 8#423#;
+   Key_F12                        : constant Special_Key_Code := 8#424#;
+   Key_F13                        : constant Special_Key_Code := 8#425#;
+   Key_F14                        : constant Special_Key_Code := 8#426#;
+   Key_F15                        : constant Special_Key_Code := 8#427#;
+   Key_F16                        : constant Special_Key_Code := 8#430#;
+   Key_F17                        : constant Special_Key_Code := 8#431#;
+   Key_F18                        : constant Special_Key_Code := 8#432#;
+   Key_F19                        : constant Special_Key_Code := 8#433#;
+   Key_F20                        : constant Special_Key_Code := 8#434#;
+   Key_F21                        : constant Special_Key_Code := 8#435#;
+   Key_F22                        : constant Special_Key_Code := 8#436#;
+   Key_F23                        : constant Special_Key_Code := 8#437#;
+   Key_F24                        : constant Special_Key_Code := 8#440#;
+   Key_Delete_Line                : constant Special_Key_Code := 8#510#;
+   Key_Insert_Line                : constant Special_Key_Code := 8#511#;
+   Key_Delete_Char                : constant Special_Key_Code := 8#512#;
+   Key_Insert_Char                : constant Special_Key_Code := 8#513#;
+   Key_Exit_Insert_Mode           : constant Special_Key_Code := 8#514#;
+   Key_Clear_Screen               : constant Special_Key_Code := 8#515#;
+   Key_Clear_End_Of_Screen        : constant Special_Key_Code := 8#516#;
+   Key_Clear_End_Of_Line          : constant Special_Key_Code := 8#517#;
+   Key_Scroll_1_Forward           : constant Special_Key_Code := 8#520#;
+   Key_Scroll_1_Backward          : constant Special_Key_Code := 8#521#;
+   Key_Next_Page                  : constant Special_Key_Code := 8#522#;
+   Key_Previous_Page              : constant Special_Key_Code := 8#523#;
+   Key_Set_Tab                    : constant Special_Key_Code := 8#524#;
+   Key_Clear_Tab                  : constant Special_Key_Code := 8#525#;
+   Key_Clear_All_Tabs             : constant Special_Key_Code := 8#526#;
+   Key_Enter_Or_Send              : constant Special_Key_Code := 8#527#;
+   Key_Soft_Reset                 : constant Special_Key_Code := 8#530#;
+   Key_Reset                      : constant Special_Key_Code := 8#531#;
+   Key_Print                      : constant Special_Key_Code := 8#532#;
+   Key_Bottom                     : constant Special_Key_Code := 8#533#;
+   Key_Upper_Left_Of_Keypad       : constant Special_Key_Code := 8#534#;
+   Key_Upper_Right_Of_Keypad      : constant Special_Key_Code := 8#535#;
+   Key_Center_Of_Keypad           : constant Special_Key_Code := 8#536#;
+   Key_Lower_Left_Of_Keypad       : constant Special_Key_Code := 8#537#;
+   Key_Lower_Right_Of_Keypad      : constant Special_Key_Code := 8#540#;
+   Key_Back_Tab                   : constant Special_Key_Code := 8#541#;
+   Key_Beginning                  : constant Special_Key_Code := 8#542#;
+   Key_Cancel                     : constant Special_Key_Code := 8#543#;
+   Key_Close                      : constant Special_Key_Code := 8#544#;
+   Key_Command                    : constant Special_Key_Code := 8#545#;
+   Key_Copy                       : constant Special_Key_Code := 8#546#;
+   Key_Create                     : constant Special_Key_Code := 8#547#;
+   Key_End                        : constant Special_Key_Code := 8#550#;
+   Key_Exit                       : constant Special_Key_Code := 8#551#;
+   Key_Find                       : constant Special_Key_Code := 8#552#;
+   Key_Help                       : constant Special_Key_Code := 8#553#;
+   Key_Mark                       : constant Special_Key_Code := 8#554#;
+   Key_Message                    : constant Special_Key_Code := 8#555#;
+   Key_Move                       : constant Special_Key_Code := 8#556#;
+   Key_Next                       : constant Special_Key_Code := 8#557#;
+   Key_Open                       : constant Special_Key_Code := 8#560#;
+   Key_Options                    : constant Special_Key_Code := 8#561#;
+   Key_Previous                   : constant Special_Key_Code := 8#562#;
+   Key_Redo                       : constant Special_Key_Code := 8#563#;
+   Key_Reference                  : constant Special_Key_Code := 8#564#;
+   Key_Refresh                    : constant Special_Key_Code := 8#565#;
+   Key_Replace                    : constant Special_Key_Code := 8#566#;
+   Key_Restart                    : constant Special_Key_Code := 8#567#;
+   Key_Resume                     : constant Special_Key_Code := 8#570#;
+   Key_Save                       : constant Special_Key_Code := 8#571#;
+   Key_Shift_Begin                : constant Special_Key_Code := 8#572#;
+   Key_Shift_Cancel               : constant Special_Key_Code := 8#573#;
+   Key_Shift_Command              : constant Special_Key_Code := 8#574#;
+   Key_Shift_Copy                 : constant Special_Key_Code := 8#575#;
+   Key_Shift_Create               : constant Special_Key_Code := 8#576#;
+   Key_Shift_Delete_Char          : constant Special_Key_Code := 8#577#;
+   Key_Shift_Delete_Line          : constant Special_Key_Code := 8#600#;
+   Key_Select                     : constant Special_Key_Code := 8#601#;
+   Key_Shift_End                  : constant Special_Key_Code := 8#602#;
+   Key_Shift_Clear_End_Of_Line    : constant Special_Key_Code := 8#603#;
+   Key_Shift_Exit                 : constant Special_Key_Code := 8#604#;
+   Key_Shift_Find                 : constant Special_Key_Code := 8#605#;
+   Key_Shift_Help                 : constant Special_Key_Code := 8#606#;
+   Key_Shift_Home                 : constant Special_Key_Code := 8#607#;
+   Key_Shift_Insert_Char          : constant Special_Key_Code := 8#610#;
+   Key_Shift_Cursor_Left          : constant Special_Key_Code := 8#611#;
+   Key_Shift_Message              : constant Special_Key_Code := 8#612#;
+   Key_Shift_Move                 : constant Special_Key_Code := 8#613#;
+   Key_Shift_Next_Page            : constant Special_Key_Code := 8#614#;
+   Key_Shift_Options              : constant Special_Key_Code := 8#615#;
+   Key_Shift_Previous_Page        : constant Special_Key_Code := 8#616#;
+   Key_Shift_Print                : constant Special_Key_Code := 8#617#;
+   Key_Shift_Redo                 : constant Special_Key_Code := 8#620#;
+   Key_Shift_Replace              : constant Special_Key_Code := 8#621#;
+   Key_Shift_Cursor_Right         : constant Special_Key_Code := 8#622#;
+   Key_Shift_Resume               : constant Special_Key_Code := 8#623#;
+   Key_Shift_Save                 : constant Special_Key_Code := 8#624#;
+   Key_Shift_Suspend              : constant Special_Key_Code := 8#625#;
+   Key_Shift_Undo                 : constant Special_Key_Code := 8#626#;
+   Key_Suspend                    : constant Special_Key_Code := 8#627#;
+   Key_Undo                       : constant Special_Key_Code := 8#630#;
+   Key_Mouse                      : constant Special_Key_Code := 8#631#;
+   Key_Resize                     : constant Special_Key_Code := 8#632#;
+
+   Key_Max                        : constant Special_Key_Code
+     := Special_Key_Code'Last;
+
+   subtype User_Key_Code is Key_Code
+     range (Key_Max + 129) .. Key_Code'Last;
+   --  This is reserved for user defined key codes. The range between Key_Max
+   --  and the first user code is reserved for subsystems like menu and forms.
+
+   --  For those who like to use the original key names we produce them were
+   --  they differ from the original. Please note that they may differ in
+   --  lower/upper case.
+   KEY_DOWN         : Special_Key_Code renames Key_Cursor_Down;
+   KEY_UP           : Special_Key_Code renames Key_Cursor_Up;
+   KEY_LEFT         : Special_Key_Code renames Key_Cursor_Left;
+   KEY_RIGHT        : Special_Key_Code renames Key_Cursor_Right;
+   KEY_DL           : Special_Key_Code renames Key_Delete_Line;
+   KEY_IL           : Special_Key_Code renames Key_Insert_Line;
+   KEY_DC           : Special_Key_Code renames Key_Delete_Char;
+   KEY_IC           : Special_Key_Code renames Key_Insert_Char;
+   KEY_EIC          : Special_Key_Code renames Key_Exit_Insert_Mode;
+   KEY_CLEAR        : Special_Key_Code renames Key_Clear_Screen;
+   KEY_EOS          : Special_Key_Code renames Key_Clear_End_Of_Screen;
+   KEY_EOL          : Special_Key_Code renames Key_Clear_End_Of_Line;
+   KEY_SF           : Special_Key_Code renames Key_Scroll_1_Forward;
+   KEY_SR           : Special_Key_Code renames Key_Scroll_1_Backward;
+   KEY_NPAGE        : Special_Key_Code renames Key_Next_Page;
+   KEY_PPAGE        : Special_Key_Code renames Key_Previous_Page;
+   KEY_STAB         : Special_Key_Code renames Key_Set_Tab;
+   KEY_CTAB         : Special_Key_Code renames Key_Clear_Tab;
+   KEY_CATAB        : Special_Key_Code renames Key_Clear_All_Tabs;
+   KEY_ENTER        : Special_Key_Code renames Key_Enter_Or_Send;
+   KEY_SRESET       : Special_Key_Code renames Key_Soft_Reset;
+   KEY_LL           : Special_Key_Code renames Key_Bottom;
+   KEY_A1           : Special_Key_Code renames Key_Upper_Left_Of_Keypad;
+   KEY_A3           : Special_Key_Code renames Key_Upper_Right_Of_Keypad;
+   KEY_B2           : Special_Key_Code renames Key_Center_Of_Keypad;
+   KEY_C1           : Special_Key_Code renames Key_Lower_Left_Of_Keypad;
+   KEY_C3           : Special_Key_Code renames Key_Lower_Right_Of_Keypad;
+   KEY_BTAB         : Special_Key_Code renames Key_Back_Tab;
+   KEY_BEG          : Special_Key_Code renames Key_Beginning;
+   KEY_SBEG         : Special_Key_Code renames Key_Shift_Begin;
+   KEY_SCANCEL      : Special_Key_Code renames Key_Shift_Cancel;
+   KEY_SCOMMAND     : Special_Key_Code renames Key_Shift_Command;
+   KEY_SCOPY        : Special_Key_Code renames Key_Shift_Copy;
+   KEY_SCREATE      : Special_Key_Code renames Key_Shift_Create;
+   KEY_SDC          : Special_Key_Code renames Key_Shift_Delete_Char;
+   KEY_SDL          : Special_Key_Code renames Key_Shift_Delete_Line;
+   KEY_SEND         : Special_Key_Code renames Key_Shift_End;
+   KEY_SEOL         : Special_Key_Code renames Key_Shift_Clear_End_Of_Line;
+   KEY_SEXIT        : Special_Key_Code renames Key_Shift_Exit;
+   KEY_SFIND        : Special_Key_Code renames Key_Shift_Find;
+   KEY_SHELP        : Special_Key_Code renames Key_Shift_Help;
+   KEY_SHOME        : Special_Key_Code renames Key_Shift_Home;
+   KEY_SIC          : Special_Key_Code renames Key_Shift_Insert_Char;
+   KEY_SLEFT        : Special_Key_Code renames Key_Shift_Cursor_Left;
+   KEY_SMESSAGE     : Special_Key_Code renames Key_Shift_Message;
+   KEY_SMOVE        : Special_Key_Code renames Key_Shift_Move;
+   KEY_SNEXT        : Special_Key_Code renames Key_Shift_Next_Page;
+   KEY_SOPTIONS     : Special_Key_Code renames Key_Shift_Options;
+   KEY_SPREVIOUS    : Special_Key_Code renames Key_Shift_Previous_Page;
+   KEY_SPRINT       : Special_Key_Code renames Key_Shift_Print;
+   KEY_SREDO        : Special_Key_Code renames Key_Shift_Redo;
+   KEY_SREPLACE     : Special_Key_Code renames Key_Shift_Replace;
+   KEY_SRIGHT       : Special_Key_Code renames Key_Shift_Cursor_Right;
+   KEY_SRSUME       : Special_Key_Code renames Key_Shift_Resume;
+   KEY_SSAVE        : Special_Key_Code renames Key_Shift_Save;
+   KEY_SSUSPEND     : Special_Key_Code renames Key_Shift_Suspend;
+   KEY_SUNDO        : Special_Key_Code renames Key_Shift_Undo;
+
+------------------------------------------------------------------------------
+
+   type Color_Number is range -1 .. Integer (Interfaces.C.short'Last);
+   for Color_Number'Size use Interfaces.C.short'Size;
+   --  (n)curses uses a short for the color index
+   --  The model is, that a Color_Number is an index into an array of
+   --  (potentially) definable colors. Some of those indices are
+   --  predefined (see below), although they may not really exist.
+
+   Default_Color    : constant Color_Number := -1;
+   Black            : constant Color_Number := 0;
+   Red              : constant Color_Number := 1;
+   Green            : constant Color_Number := 2;
+   Yellow           : constant Color_Number := 3;
+   Blue             : constant Color_Number := 4;
+   Magenta          : constant Color_Number := 5;
+   Cyan             : constant Color_Number := 6;
+   White            : constant Color_Number := 7;
+
+   type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last);
+   for RGB_Value'Size use Interfaces.C.short'Size;
+   --  Some system may allow to redefine a color by setting RGB values.
+
+   type Color_Pair is range 0 .. 255;
+   for Color_Pair'Size use 8;
+   subtype Redefinable_Color_Pair is Color_Pair range 1 .. 255;
+   --  (n)curses reserves 1 Byte for the color-pair number. Color Pair 0
+   --  is fixed (Black & White). A color pair is simply a combination of
+   --  two colors described by Color_Numbers, one for the foreground and
+   --  the other for the background
+
+   type Character_Attribute_Set is
+      record
+         Stand_Out               : Boolean;
+         Under_Line              : Boolean;
+         Reverse_Video           : Boolean;
+         Blink                   : Boolean;
+         Dim_Character           : Boolean;
+         Bold_Character          : Boolean;
+         Alternate_Character_Set : Boolean;
+         Invisible_Character     : Boolean;
+         Protected_Character     : Boolean;
+         Horizontal              : Boolean;
+         Left                    : Boolean;
+         Low                     : Boolean;
+         Right                   : Boolean;
+         Top                     : Boolean;
+         Vertical                : Boolean;
+      end record;
+   pragma Convention (C, Character_Attribute_Set);
+
+   for Character_Attribute_Set use
+      record
+         Stand_Out               at 0 range  0 ..  0;
+         Under_Line              at 0 range  1 ..  1;
+         Reverse_Video           at 0 range  2 ..  2;
+         Blink                   at 0 range  3 ..  3;
+         Dim_Character           at 0 range  4 ..  4;
+         Bold_Character          at 0 range  5 ..  5;
+         Alternate_Character_Set at 0 range  6 ..  6;
+         Invisible_Character     at 0 range  7 ..  7;
+         Protected_Character     at 0 range  8 ..  8;
+         Horizontal              at 0 range  9 ..  9;
+         Left                    at 0 range 10 .. 10;
+         Low                     at 0 range 11 .. 11;
+         Right                   at 0 range 12 .. 12;
+         Top                     at 0 range 13 .. 13;
+         Vertical                at 0 range 14 .. 14;
+      end record;
+   for Character_Attribute_Set'Size use 16;
+   --  Please note: this rep. clause is generated and may be
+   --               different on your system.
+   --  (n)curses uses all but the lowest 16 Bits for Attributes.
+
+   Normal_Video : constant Character_Attribute_Set := (others => False);
+
+   type Attributed_Character is
+      record
+         Attr  : Character_Attribute_Set;
+         Color : Color_Pair;
+         Ch    : Character;
+      end record;
+   pragma Convention (C, Attributed_Character);
+   --  This is the counterpart for the chtype in C.
+
+   for Attributed_Character use
+      record
+         Ch    at 0 range  0 ..  7;
+         Color at 0 range  8 .. 15;
+         Attr  at 0 range 16 .. 31;
+      end record;
+   for Attributed_Character'Size use 32;
+      --  Please note: this rep. clause is generated and may be
+      --               different on your system.
+
+   Default_Character : constant Attributed_Character
+     := (Ch    => Character'First,
+         Color => Color_Pair'First,
+         Attr  => (others => False));  --  preelaboratable Normal_Video
+
+   type Attributed_String is array (Positive range <>) of Attributed_Character;
+   pragma Pack (Attributed_String);
+   --  In this binding we allow strings of attributed characters.
+
+   ------------------
+   --  Exceptions  --
+   ------------------
+   Curses_Exception     : exception;
+   Wrong_Curses_Version : exception;
+
+   --  Those exceptions are raised by the ETI (Extended Terminal Interface)
+   --  subpackets for Menu and Forms handling.
+   --
+   Eti_System_Error    : exception;
+   Eti_Bad_Argument    : exception;
+   Eti_Posted          : exception;
+   Eti_Connected       : exception;
+   Eti_Bad_State       : exception;
+   Eti_No_Room         : exception;
+   Eti_Not_Posted      : exception;
+   Eti_Unknown_Command : exception;
+   Eti_No_Match        : exception;
+   Eti_Not_Selectable  : exception;
+   Eti_Not_Connected   : exception;
+   Eti_Request_Denied  : exception;
+   Eti_Invalid_Field   : exception;
+   Eti_Current         : exception;
+
+   --------------------------------------------------------------------------
+   --  External C variables
+   --  Conceptually even in C this are kind of constants, but they are
+   --  initialized and sometimes changed by the library routines at runtime
+   --  depending on the type of terminal. I believe the best way to model
+   --  this is to use functions.
+   --------------------------------------------------------------------------
+
+   function Lines            return Line_Count;
+   pragma Inline (Lines);
+
+   function Columns          return Column_Count;
+   pragma Inline (Columns);
+
+   function Tab_Size         return Natural;
+   pragma Inline (Tab_Size);
+
+   function Number_Of_Colors return Natural;
+   pragma Inline (Number_Of_Colors);
+
+   function Number_Of_Color_Pairs return Natural;
+   pragma Inline (Number_Of_Color_Pairs);
+
+   type C_ACS_Map is array (Character'Val (0) .. Character'Val (127))
+        of Attributed_Character;
+   ACS_Map : C_ACS_Map;
+   pragma Import (C, ACS_Map, "acs_map");
+   --
+   --
+   --  Constants for several characters from the Alternate Character Set
+   --  You must use these constants as indices into the ACS_Map array
+   --  to get the corresponding attributed character at runtime.
+   --
+   ACS_Upper_Left_Corner    : constant Character := 'l';
+   ACS_Lower_Left_Corner    : constant Character := 'm';
+   ACS_Upper_Right_Corner   : constant Character := 'k';
+   ACS_Lower_Right_Corner   : constant Character := 'j';
+   ACS_Left_Tee             : constant Character := 't';
+   ACS_Right_Tee            : constant Character := 'u';
+   ACS_Bottom_Tee           : constant Character := 'v';
+   ACS_Top_Tee              : constant Character := 'w';
+   ACS_Horizontal_Line      : constant Character := 'q';
+   ACS_Vertical_Line        : constant Character := 'x';
+   ACS_Plus_Symbol          : constant Character := 'n';
+   ACS_Scan_Line_1          : constant Character := 'o';
+   ACS_Scan_Line_9          : constant Character := 's';
+   ACS_Diamond              : constant Character := Character'Val (96);
+   ACS_Checker_Board        : constant Character := 'a';
+   ACS_Degree               : constant Character := 'f';
+   ACS_Plus_Minus           : constant Character := 'g';
+   ACS_Bullet               : constant Character := '~';
+   ACS_Left_Arrow           : constant Character := ',';
+   ACS_Right_Arrow          : constant Character := '+';
+   ACS_Down_Arrow           : constant Character := '.';
+   ACS_Up_Arrow             : constant Character := '-';
+   ACS_Board_Of_Squares     : constant Character := 'h';
+   ACS_Lantern              : constant Character := 'i';
+   ACS_Solid_Block          : constant Character := '0';
+   ACS_Scan_Line_3          : constant Character := 'p';
+   ACS_Scan_Line_7          : constant Character := 'r';
+   ACS_Less_Or_Equal        : constant Character := 'y';
+   ACS_Greater_Or_Equal     : constant Character := 'z';
+   ACS_PI                   : constant Character := '{';
+   ACS_Not_Equal            : constant Character := '|';
+   ACS_Sterling             : constant Character := '}';
+
+   --  |=====================================================================
+   --  | Man page curs_initscr.3x
+   --  |=====================================================================
+   --  | Not implemented: newterm, set_term, delscreen
+
+   --  #1A NAME="AFU_1"#2|
+   function Standard_Window return Window;
+   --  AKA: stdscr
+   pragma Inline (Standard_Window);
+
+   --  #1A NAME="AFU_2"#2|
+   function Current_Window return Window;
+   --  AKA: curscr
+   pragma Inline (Current_Window);
+
+   --  #1A NAME="AFU_3"#2|
+   procedure Init_Screen;
+
+   --  #1A NAME="AFU_4"#2|
+   procedure Init_Windows renames Init_Screen;
+   --  AKA: initscr()
+   pragma Inline (Init_Screen);
+   --  pragma Inline (Init_Windows);
+
+   --  #1A NAME="AFU_5"#2|
+   procedure End_Windows;
+   --  AKA: endwin()
+   procedure End_Screen renames End_Windows;
+   pragma Inline (End_Windows);
+   --  pragma Inline (End_Screen);
+
+   --  #1A NAME="AFU_6"#2|
+   function Is_End_Window return Boolean;
+   --  AKA: isendwin()
+   pragma Inline (Is_End_Window);
+
+   --  |=====================================================================
+   --  | Man page curs_move.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_7"#2|
+   procedure Move_Cursor (Win    : in Window := Standard_Window;
+                          Line   : in Line_Position;
+                          Column : in Column_Position);
+   --  AKA: wmove()
+   --  AKA: move()
+   pragma Inline (Move_Cursor);
+
+   --  |=====================================================================
+   --  | Man page curs_addch.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_8"#2|
+   procedure Add (Win :  in Window := Standard_Window;
+                  Ch  :  in Attributed_Character);
+   --  AKA: waddch()
+   --  AKA: addch()
+
+   procedure Add (Win :  in Window := Standard_Window;
+                  Ch  :  in Character);
+   --  Add a single character at the current logical cursor position to
+   --  the window. Use the current windows attributes.
+
+   --  #1A NAME="AFU_9"#2|
+   procedure Add
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Ch     : in Attributed_Character);
+   --  AKA: mvwaddch()
+   --  AKA: mvaddch()
+
+   procedure Add
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position;
+      Ch     : in Character);
+   --  Move to the position and add a single character into the window
+   --  There are more Add routines, so the Inline pragma follows later
+
+   --  #1A NAME="AFU_10"#2|
+   procedure Add_With_Immediate_Echo
+     (Win : in Window := Standard_Window;
+      Ch  : in Attributed_Character);
+   --  AKA: wechochar()
+   --  AKA: echochar()
+
+   procedure Add_With_Immediate_Echo
+     (Win : in Window := Standard_Window;
+      Ch  : in Character);
+   --  Add a character and do an immediate refresh of the screen.
+   pragma Inline (Add_With_Immediate_Echo);
+
+   --  |=====================================================================
+   --  | Man page curs_window.3x
+   --  |=====================================================================
+   --  Not Implemented: wcursyncup
+
+   --  #1A NAME="AFU_11"#2|
+   function Create
+     (Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window;
+   --  Not Implemented: Default Number_Of_Lines, Number_Of_Columns
+   --  the C version lets them be 0, see the man page.
+   --  AKA: newwin()
+   pragma Inline (Create);
+
+   function New_Window
+     (Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window
+     renames Create;
+   --  pragma Inline (New_Window);
+
+   --  #1A NAME="AFU_12"#2|
+   procedure Delete (Win : in out Window);
+   --  AKA: delwin()
+   --  Reset Win to Null_Window
+   pragma Inline (Delete);
+
+   --  #1A NAME="AFU_13"#2|
+   function Sub_Window
+     (Win                   : Window := Standard_Window;
+      Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window;
+   --  AKA: subwin()
+   pragma Inline (Sub_Window);
+
+   --  #1A NAME="AFU_14"#2|
+   function Derived_Window
+     (Win                   : Window := Standard_Window;
+      Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window;
+   --  AKA: derwin()
+   pragma Inline (Derived_Window);
+
+   --  #1A NAME="AFU_15"#2|
+   function Duplicate (Win : Window) return Window;
+   --  AKA: dupwin()
+   pragma Inline (Duplicate);
+
+   --  #1A NAME="AFU_16"#2|
+   procedure Move_Window (Win    : in Window;
+                          Line   : in Line_Position;
+                          Column : in Column_Position);
+   --  AKA: mvwin()
+   pragma Inline (Move_Window);
+
+   --  #1A NAME="AFU_17"#2|
+   procedure Move_Derived_Window (Win    : in Window;
+                                  Line   : in Line_Position;
+                                  Column : in Column_Position);
+   --  AKA: mvderwin()
+   pragma Inline (Move_Derived_Window);
+
+   --  #1A NAME="AFU_18"#2|
+   procedure Synchronize_Upwards (Win : in Window);
+   --  AKA: wsyncup()
+   pragma Import (C, Synchronize_Upwards, "wsyncup");
+
+   --  #1A NAME="AFU_19"#2|
+   procedure Synchronize_Downwards (Win : in Window);
+   --  AKA: wsyncdown()
+   pragma Import (C, Synchronize_Downwards, "wsyncdown");
+
+   --  #1A NAME="AFU_20"#2|
+   procedure Set_Synch_Mode (Win  : in Window := Standard_Window;
+                             Mode : in Boolean := False);
+   --  AKA: syncok()
+   pragma Inline (Set_Synch_Mode);
+
+   --  |=====================================================================
+   --  | Man page curs_addstr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_21"#2|
+   procedure Add (Win : in Window := Standard_Window;
+                  Str : in String;
+                  Len : in Integer := -1);
+   --  AKA: waddnstr()
+   --  AKA: waddstr()
+   --  AKA: addnstr()
+   --  AKA: addstr()
+
+   --  #1A NAME="AFU_22"#2|
+   procedure Add (Win    : in Window := Standard_Window;
+                  Line   : in Line_Position;
+                  Column : in Column_Position;
+                  Str    : in String;
+                  Len    : in Integer := -1);
+   --  AKA: mvwaddnstr()
+   --  AKA: mvwaddstr()
+   --  AKA: mvaddnstr()
+   --  AKA: mvaddstr()
+
+   --  |=====================================================================
+   --  | Man page curs_addchstr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_23"#2|
+   procedure Add (Win : in Window := Standard_Window;
+                  Str : in Attributed_String;
+                  Len : in Integer := -1);
+   --  AKA: waddchnstr()
+   --  AKA: waddchstr()
+   --  AKA: addchnstr()
+   --  AKA: addchstr()
+
+   --  #1A NAME="AFU_24"#2|
+   procedure Add (Win    : in Window := Standard_Window;
+                  Line   : in Line_Position;
+                  Column : in Column_Position;
+                  Str    : in Attributed_String;
+                  Len    : in Integer := -1);
+   --  AKA: mvwaddchnstr()
+   --  AKA: mvwaddchstr()
+   --  AKA: mvaddchnstr()
+   --  AKA: mvaddchstr()
+   pragma Inline (Add);
+
+   --  |=====================================================================
+   --  | Man page curs_border.3x
+   --  |=====================================================================
+   --  | Not implemented: mvhline,  mvwhline, mvvline, mvwvline
+   --  | use Move_Cursor then Horizontal_Line or Vertical_Line
+
+   --  #1A NAME="AFU_25"#2|
+   procedure Border
+     (Win                       : in Window := Standard_Window;
+      Left_Side_Symbol          : in Attributed_Character := Default_Character;
+      Right_Side_Symbol         : in Attributed_Character := Default_Character;
+      Top_Side_Symbol           : in Attributed_Character := Default_Character;
+      Bottom_Side_Symbol        : in Attributed_Character := Default_Character;
+      Upper_Left_Corner_Symbol  : in Attributed_Character := Default_Character;
+      Upper_Right_Corner_Symbol : in Attributed_Character := Default_Character;
+      Lower_Left_Corner_Symbol  : in Attributed_Character := Default_Character;
+      Lower_Right_Corner_Symbol : in Attributed_Character := Default_Character
+     );
+   --  AKA: wborder()
+   --  AKA: border()
+   pragma Inline (Border);
+
+   --  #1A NAME="AFU_26"#2|
+   procedure Box
+     (Win               : in Window := Standard_Window;
+      Vertical_Symbol   : in Attributed_Character := Default_Character;
+      Horizontal_Symbol : in Attributed_Character := Default_Character);
+   --  AKA: box()
+   pragma Inline (Box);
+
+   --  #1A NAME="AFU_27"#2|
+   procedure Horizontal_Line
+     (Win         : in Window := Standard_Window;
+      Line_Size   : in Natural;
+      Line_Symbol : in Attributed_Character := Default_Character);
+   --  AKA: whline()
+   --  AKA: hline()
+   pragma Inline (Horizontal_Line);
+
+   --  #1A NAME="AFU_28"#2|
+   procedure Vertical_Line
+     (Win         : in Window := Standard_Window;
+      Line_Size   : in Natural;
+      Line_Symbol : in Attributed_Character := Default_Character);
+   --  AKA: wvline()
+   --  AKA: vline()
+   pragma Inline (Vertical_Line);
+
+   --  |=====================================================================
+   --  | Man page curs_getch.3x
+   --  |=====================================================================
+   --  Not implemented: mvgetch, mvwgetch
+
+   --  #1A NAME="AFU_29"#2|
+   function Get_Keystroke (Win : Window := Standard_Window)
+                           return Real_Key_Code;
+   --  AKA: wgetch()
+   --  AKA: getch()
+   --  Get a character from the keyboard and echo it - if enabled - to the
+   --  window.
+   --  If for any reason (i.e. a timeout) we couldn't get a character the
+   --  returned keycode is Key_None.
+   pragma Inline (Get_Keystroke);
+
+   --  #1A NAME="AFU_30"#2|
+   procedure Undo_Keystroke (Key : in Real_Key_Code);
+   --  AKA: ungetch()
+   pragma Inline (Undo_Keystroke);
+
+   --  #1A NAME="AFU_31"#2|
+   function Has_Key (Key : Special_Key_Code) return Boolean;
+   --  AKA: has_key()
+   pragma Inline (Has_Key);
+
+   --  |
+   --  | Some helper functions
+   --  |
+   function Is_Function_Key (Key : Special_Key_Code) return Boolean;
+   --  Return True if the Key is a function key (i.e. one of F0 .. F63)
+   pragma Inline (Is_Function_Key);
+
+   subtype Function_Key_Number is Integer range 0 .. 63;
+   --  (n)curses allows for 64 function keys.
+
+   function Function_Key (Key : Real_Key_Code) return Function_Key_Number;
+   --  Return the number of the function key. If the code is not a
+   --  function key, a CONSTRAINT_ERROR will be raised.
+   pragma Inline (Function_Key);
+
+   function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code;
+   --  Return the key code for a given function-key number.
+   pragma Inline (Function_Key_Code);
+
+   --  |=====================================================================
+   --  | Man page curs_attr.3x
+   --  |=====================================================================
+   --  | Not implemented attr_off,  wattr_off,
+   --  |  attr_on, wattr_on, attr_set, wattr_set
+
+   --  PAIR_NUMBER
+   --  PAIR_NUMBER(c) is the same as c.Color
+
+   --  #1A NAME="AFU_32"#2|
+   procedure Standout (Win : Window  := Standard_Window;
+                       On  : Boolean := True);
+   --  AKA: wstandout()
+   --  AKA: wstandend()
+
+   --  #1A NAME="AFU_33"#2|
+   procedure Switch_Character_Attribute
+     (Win  : in Window := Standard_Window;
+      Attr : in Character_Attribute_Set := Normal_Video;
+      On   : in Boolean := True); --  if False we switch Off.
+   --  Switches those Attributes set to true in the list.
+   --  AKA: wattron()
+   --  AKA: wattroff()
+   --  AKA: attron()
+   --  AKA: attroff()
+
+   --  #1A NAME="AFU_34"#2|
+   procedure Set_Character_Attributes
+     (Win   : in Window := Standard_Window;
+      Attr  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: wattrset()
+   --  AKA: attrset()
+   pragma Inline (Set_Character_Attributes);
+
+   --  #1A NAME="AFU_35"#2|
+   function Get_Character_Attribute
+     (Win : in Window := Standard_Window) return Character_Attribute_Set;
+   --  AKA: wattr_get()
+   --  AKA: attr_get()
+
+   --  #1A NAME="AFU_36"#2|
+   function Get_Character_Attribute
+     (Win : in Window := Standard_Window) return Color_Pair;
+   --  AKA: wattr_get()
+   pragma Inline (Get_Character_Attribute);
+
+   --  #1A NAME="AFU_37"#2|
+   procedure Set_Color (Win  : in Window := Standard_Window;
+                        Pair : in Color_Pair);
+   --  AKA: wcolor_set()
+   --  AKA: color_set()
+   pragma Inline (Set_Color);
+
+   --  #1A NAME="AFU_38"#2|
+   procedure Change_Attributes
+     (Win   : in Window := Standard_Window;
+      Count : in Integer := -1;
+      Attr  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: wchgat()
+   --  AKA: chgat()
+
+   --  #1A NAME="AFU_39"#2|
+   procedure Change_Attributes
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position := Line_Position'First;
+      Column : in Column_Position := Column_Position'First;
+      Count  : in Integer := -1;
+      Attr   : in Character_Attribute_Set := Normal_Video;
+      Color  : in Color_Pair := Color_Pair'First);
+   --  AKA: mvwchgat()
+   --  AKA: mvchgat()
+   pragma Inline (Change_Attributes);
+
+   --  |=====================================================================
+   --  | Man page curs_beep.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_40"#2|
+   procedure Beep;
+   --  AKA: beep()
+   pragma Inline (Beep);
+
+   --  #1A NAME="AFU_41"#2|
+   procedure Flash_Screen;
+   --  AKA: flash()
+   pragma Inline (Flash_Screen);
+
+   --  |=====================================================================
+   --  | Man page curs_inopts.3x
+   --  |=====================================================================
+
+   --  | Not implemented : typeahead
+   --
+   --  #1A NAME="AFU_42"#2|
+   procedure Set_Cbreak_Mode (SwitchOn : in Boolean := True);
+   --  AKA: cbreak()
+   --  AKA: nocbreak()
+   pragma Inline (Set_Cbreak_Mode);
+
+   --  #1A NAME="AFU_43"#2|
+   procedure Set_Raw_Mode (SwitchOn : in Boolean := True);
+   --  AKA: raw()
+   --  AKA: noraw()
+   pragma Inline (Set_Raw_Mode);
+
+   --  #1A NAME="AFU_44"#2|
+   procedure Set_Echo_Mode (SwitchOn : in Boolean := True);
+   --  AKA: echo()
+   --  AKA: noecho()
+   pragma Inline (Set_Echo_Mode);
+
+   --  #1A NAME="AFU_45"#2|
+   procedure Set_Meta_Mode (Win      : in Window := Standard_Window;
+                            SwitchOn : in Boolean := True);
+   --  AKA: meta()
+   pragma Inline (Set_Meta_Mode);
+
+   --  #1A NAME="AFU_46"#2|
+   procedure Set_KeyPad_Mode (Win      : in Window := Standard_Window;
+                              SwitchOn : in Boolean := True);
+   --  AKA: keypad()
+   pragma Inline (Set_KeyPad_Mode);
+
+   function Get_KeyPad_Mode (Win : in Window := Standard_Window)
+                             return Boolean;
+   --  This has no pendant in C. There you've to look into the WINDOWS
+   --  structure to get the value. Bad practice, not repeated in Ada.
+
+   type Half_Delay_Amount is range 1 .. 255;
+
+   --  #1A NAME="AFU_47"#2|
+   procedure Half_Delay (Amount : in Half_Delay_Amount);
+   --  AKA: halfdelay()
+   pragma Inline (Half_Delay);
+
+   --  #1A NAME="AFU_48"#2|
+   procedure Set_Flush_On_Interrupt_Mode
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := True);
+   --  AKA: intrflush()
+   pragma Inline (Set_Flush_On_Interrupt_Mode);
+
+   --  #1A NAME="AFU_49"#2|
+   procedure Set_Queue_Interrupt_Mode
+     (Win   : in Window := Standard_Window;
+      Flush : in Boolean := True);
+   --  AKA: qiflush()
+   --  AKA: noqiflush()
+   pragma Inline (Set_Queue_Interrupt_Mode);
+
+   --  #1A NAME="AFU_50"#2|
+   procedure Set_NoDelay_Mode
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := False);
+   --  AKA: nodelay()
+   pragma Inline (Set_NoDelay_Mode);
+
+   type Timeout_Mode is (Blocking, Non_Blocking, Delayed);
+
+   --  #1A NAME="AFU_51"#2|
+   procedure Set_Timeout_Mode (Win    : in Window := Standard_Window;
+                               Mode   : in Timeout_Mode;
+                               Amount : in Natural); --  in Milliseconds
+   --  AKA: wtimeout()
+   --  AKA: timeout()
+   --  Instead of overloading the semantic of the sign of amount, we
+   --  introduce the Timeout_Mode parameter. This should improve
+   --  readability. For Blocking and Non_Blocking, the Amount is not
+   --  evaluated.
+   --  We don't inline this procedure.
+
+   --  #1A NAME="AFU_52"#2|
+   procedure Set_Escape_Timer_Mode
+     (Win       : in Window := Standard_Window;
+      Timer_Off : in Boolean := False);
+   --  AKA: notimeout()
+   pragma Inline (Set_Escape_Timer_Mode);
+
+   --  |=====================================================================
+   --  | Man page curs_outopts.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_53"#2|
+   procedure Set_NL_Mode (SwitchOn : in Boolean := True);
+   --  AKA: nl()
+   --  AKA: nonl()
+   pragma Inline (Set_NL_Mode);
+
+   --  #1A NAME="AFU_54"#2|
+   procedure Clear_On_Next_Update
+     (Win      : in Window := Standard_Window;
+      Do_Clear : in Boolean := True);
+   --  AKA: clearok()
+   pragma Inline (Clear_On_Next_Update);
+
+   --  #1A NAME="AFU_55"#2|
+   procedure Use_Insert_Delete_Line
+     (Win    : in Window := Standard_Window;
+      Do_Idl : in Boolean := True);
+   --  AKA: idlok()
+   pragma Inline (Use_Insert_Delete_Line);
+
+   --  #1A NAME="AFU_56"#2|
+   procedure Use_Insert_Delete_Character
+     (Win    : in Window := Standard_Window;
+      Do_Idc : in Boolean := True);
+   --  AKA: idcok()
+   pragma Inline (Use_Insert_Delete_Character);
+
+   --  #1A NAME="AFU_57"#2|
+   procedure Leave_Cursor_After_Update
+     (Win      : in Window := Standard_Window;
+      Do_Leave : in Boolean := True);
+   --  AKA: leaveok()
+   pragma Inline (Leave_Cursor_After_Update);
+
+   --  #1A NAME="AFU_58"#2|
+   procedure Immediate_Update_Mode
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := False);
+   --  AKA: immedok()
+   pragma Inline (Immediate_Update_Mode);
+
+   --  #1A NAME="AFU_59"#2|
+   procedure Allow_Scrolling
+     (Win  : in Window := Standard_Window;
+      Mode : in Boolean := False);
+   --  AKA: scrollok()
+   pragma Inline (Allow_Scrolling);
+
+   function Scrolling_Allowed (Win : Window := Standard_Window) return Boolean;
+   --  There is no such function in the C interface.
+   pragma Inline (Scrolling_Allowed);
+
+   --  #1A NAME="AFU_60"#2|
+   procedure Set_Scroll_Region
+     (Win         : in Window := Standard_Window;
+      Top_Line    : in Line_Position;
+      Bottom_Line : in Line_Position);
+   --  AKA: wsetscrreg()
+   --  AKA: setscrreg()
+   pragma Inline (Set_Scroll_Region);
+
+   --  |=====================================================================
+   --  | Man page curs_refresh.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_61"#2|
+   procedure Update_Screen;
+   --  AKA: doupdate()
+   pragma Inline (Update_Screen);
+
+   --  #1A NAME="AFU_62"#2|
+   procedure Refresh (Win : in Window := Standard_Window);
+   --  AKA: wrefresh()
+   --  There is an overloaded Refresh for Pads.
+   --  The Inline pragma appears there
+   --  AKA: refresh()
+
+   --  #1A NAME="AFU_63"#2|
+   procedure Refresh_Without_Update
+     (Win : in Window := Standard_Window);
+   --  AKA: wnoutrefresh()
+   --  There is an overloaded Refresh_Without_Update for Pads.
+   --  The Inline pragma appears there
+
+   --  #1A NAME="AFU_64"#2|
+   procedure Redraw (Win : in Window := Standard_Window);
+   --  AKA: redrawwin()
+
+   --  #1A NAME="AFU_65"#2|
+   procedure Redraw (Win        : in Window := Standard_Window;
+                     Begin_Line : in Line_Position;
+                     Line_Count : in Positive);
+   --  AKA: wredrawln()
+   pragma Inline (Redraw);
+
+   --  |=====================================================================
+   --  | Man page curs_clear.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_66"#2|
+   procedure Erase (Win : in Window := Standard_Window);
+   --  AKA: werase()
+   --  AKA: erase()
+   pragma Inline (Erase);
+
+   --  #1A NAME="AFU_67"#2|
+   procedure Clear
+     (Win : in Window := Standard_Window);
+   --  AKA: wclear()
+   --  AKA: clear()
+   pragma Inline (Clear);
+
+   --  #1A NAME="AFU_68"#2|
+   procedure Clear_To_End_Of_Screen
+     (Win : in Window := Standard_Window);
+   --  AKA: wclrtobot()
+   --  AKA: clrtobot()
+   pragma Inline (Clear_To_End_Of_Screen);
+
+   --  #1A NAME="AFU_69"#2|
+   procedure Clear_To_End_Of_Line
+     (Win : in Window := Standard_Window);
+   --  AKA: wclrtoeol()
+   --  AKA: clrtoeol()
+   pragma Inline (Clear_To_End_Of_Line);
+
+   --  |=====================================================================
+   --  | Man page curs_bkgd.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_70"#2|
+   --  TODO: we could have Set_Background(Window; Character_Attribute_Set)
+   --  because in C it is common to see bkgdset(A_BOLD) or
+   --  bkgdset(COLOR_PAIR(n))
+   procedure Set_Background
+     (Win : in Window := Standard_Window;
+      Ch  : in Attributed_Character);
+   --  AKA: wbkgdset()
+   --  AKA: bkgdset()
+   pragma Inline (Set_Background);
+
+   --  #1A NAME="AFU_71"#2|
+   procedure Change_Background
+     (Win : in Window := Standard_Window;
+      Ch  : in Attributed_Character);
+   --  AKA: wbkgd()
+   --  AKA: bkgd()
+   pragma Inline (Change_Background);
+
+   --  #1A NAME="AFU_72"#2|
+   --  ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough.
+   function Get_Background (Win : Window := Standard_Window)
+     return Attributed_Character;
+   --  AKA: wbkgdget()
+   --  AKA: bkgdget()
+   pragma Inline (Get_Background);
+
+   --  |=====================================================================
+   --  | Man page curs_touch.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_73"#2|
+   procedure Untouch (Win : in Window := Standard_Window);
+   --  AKA: untouchwin()
+   pragma Inline (Untouch);
+
+   --  #1A NAME="AFU_74"#2|
+   procedure Touch (Win : in Window := Standard_Window);
+   --  AKA: touchwin()
+
+   --  #1A NAME="AFU_75"#2|
+   procedure Touch (Win   : in Window := Standard_Window;
+                    Start : in Line_Position;
+                    Count : in Positive);
+   --  AKA: touchline()
+   pragma Inline (Touch);
+
+   --  #1A NAME="AFU_76"#2|
+   procedure Change_Lines_Status (Win   : in Window := Standard_Window;
+                                  Start : in Line_Position;
+                                  Count : in Positive;
+                                  State : in Boolean);
+   --  AKA: wtouchln()
+   pragma Inline (Change_Lines_Status);
+
+   --  #1A NAME="AFU_77"#2|
+   function Is_Touched (Win  : Window := Standard_Window;
+                        Line : Line_Position) return Boolean;
+   --  AKA: is_linetouched()
+
+   --  #1A NAME="AFU_78"#2|
+   function Is_Touched (Win : Window := Standard_Window) return Boolean;
+   --  AKA: is_wintouched()
+   pragma Inline (Is_Touched);
+
+   --  |=====================================================================
+   --  | Man page curs_overlay.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_79"#2|
+   procedure Copy
+     (Source_Window            : in Window;
+      Destination_Window       : in Window;
+      Source_Top_Row           : in Line_Position;
+      Source_Left_Column       : in Column_Position;
+      Destination_Top_Row      : in Line_Position;
+      Destination_Left_Column  : in Column_Position;
+      Destination_Bottom_Row   : in Line_Position;
+      Destination_Right_Column : in Column_Position;
+      Non_Destructive_Mode     : in Boolean := True);
+   --  AKA: copywin()
+   pragma Inline (Copy);
+
+   --  #1A NAME="AFU_80"#2|
+   procedure Overwrite (Source_Window      : in Window;
+                        Destination_Window : in Window);
+   --  AKA: overwrite()
+   pragma Inline (Overwrite);
+
+   --  #1A NAME="AFU_81"#2|
+   procedure Overlay (Source_Window      : in Window;
+                      Destination_Window : in Window);
+   --  AKA: overlay()
+   pragma Inline (Overlay);
+
+   --  |=====================================================================
+   --  | Man page curs_deleteln.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_82"#2|
+   procedure Insert_Delete_Lines
+     (Win   : in Window  := Standard_Window;
+      Lines : in Integer := 1); --  default is to insert one line above
+   --  AKA: winsdelln()
+   --  AKA: insdelln()
+   pragma Inline (Insert_Delete_Lines);
+
+   --  #1A NAME="AFU_83"#2|
+   procedure Delete_Line (Win : in Window := Standard_Window);
+   --  AKA: wdeleteln()
+   --  AKA: deleteln()
+   pragma Inline (Delete_Line);
+
+   --  #1A NAME="AFU_84"#2|
+   procedure Insert_Line (Win : in Window := Standard_Window);
+   --  AKA: winsertln()
+   --  AKA: insertln()
+   pragma Inline (Insert_Line);
+
+   --  |=====================================================================
+   --  | Man page curs_getyx.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_85"#2|
+   procedure Get_Size
+     (Win               : in Window := Standard_Window;
+      Number_Of_Lines   : out Line_Count;
+      Number_Of_Columns : out Column_Count);
+   --  AKA: getmaxyx()
+   pragma Inline (Get_Size);
+
+   --  #1A NAME="AFU_86"#2|
+   procedure Get_Window_Position
+     (Win             : in Window := Standard_Window;
+      Top_Left_Line   : out Line_Position;
+      Top_Left_Column : out Column_Position);
+   --  AKA: getbegyx()
+   pragma Inline (Get_Window_Position);
+
+   --  #1A NAME="AFU_87"#2|
+   procedure Get_Cursor_Position
+     (Win    : in  Window := Standard_Window;
+      Line   : out Line_Position;
+      Column : out Column_Position);
+   --  AKA: getyx()
+   pragma Inline (Get_Cursor_Position);
+
+   --  #1A NAME="AFU_88"#2|
+   procedure Get_Origin_Relative_To_Parent
+     (Win                : in  Window;
+      Top_Left_Line      : out Line_Position;
+      Top_Left_Column    : out Column_Position;
+      Is_Not_A_Subwindow : out Boolean);
+   --  AKA: getparyx()
+   --  Instead of placing -1 in the coordinates as return, we use a boolean
+   --  to return the info that the window has no parent.
+   pragma Inline (Get_Origin_Relative_To_Parent);
+
+   --  |=====================================================================
+   --  | Man page curs_pad.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_89"#2|
+   function New_Pad (Lines   : Line_Count;
+                     Columns : Column_Count) return Window;
+   --  AKA: newpad()
+   pragma Inline (New_Pad);
+
+   --  #1A NAME="AFU_90"#2|
+   function Sub_Pad
+     (Pad                   : Window;
+      Number_Of_Lines       : Line_Count;
+      Number_Of_Columns     : Column_Count;
+      First_Line_Position   : Line_Position;
+      First_Column_Position : Column_Position) return Window;
+   --  AKA: subpad()
+   pragma Inline (Sub_Pad);
+
+   --  #1A NAME="AFU_91"#2|
+   procedure Refresh
+     (Pad                      : in Window;
+      Source_Top_Row           : in Line_Position;
+      Source_Left_Column       : in Column_Position;
+      Destination_Top_Row      : in Line_Position;
+      Destination_Left_Column  : in Column_Position;
+      Destination_Bottom_Row   : in Line_Position;
+      Destination_Right_Column : in Column_Position);
+   --  AKA: prefresh()
+   pragma Inline (Refresh);
+
+   --  #1A NAME="AFU_92"#2|
+   procedure Refresh_Without_Update
+     (Pad                      : in Window;
+      Source_Top_Row           : in Line_Position;
+      Source_Left_Column       : in Column_Position;
+      Destination_Top_Row      : in Line_Position;
+      Destination_Left_Column  : in Column_Position;
+      Destination_Bottom_Row   : in Line_Position;
+      Destination_Right_Column : in Column_Position);
+   --  AKA: pnoutrefresh()
+   pragma Inline (Refresh_Without_Update);
+
+   --  #1A NAME="AFU_93"#2|
+   procedure Add_Character_To_Pad_And_Echo_It
+     (Pad : in Window;
+      Ch  : in Attributed_Character);
+   --  AKA: pechochar()
+
+   procedure Add_Character_To_Pad_And_Echo_It
+     (Pad : in Window;
+      Ch  : in Character);
+   pragma Inline (Add_Character_To_Pad_And_Echo_It);
+
+   --  |=====================================================================
+   --  | Man page curs_scroll.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_94"#2|
+   procedure Scroll (Win    : in Window  := Standard_Window;
+                     Amount : in Integer := 1);
+   --  AKA: wscrl()
+   --  AKA: scroll()
+   --  AKA: scrl()
+   pragma Inline (Scroll);
+
+   --  |=====================================================================
+   --  | Man page curs_delch.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_95"#2|
+   procedure Delete_Character (Win : in Window := Standard_Window);
+   --  AKA: wdelch()
+   --  AKA: delch()
+
+   --  #1A NAME="AFU_96"#2|
+   procedure Delete_Character
+     (Win    : in Window := Standard_Window;
+      Line   : in Line_Position;
+      Column : in Column_Position);
+   --  AKA: mvwdelch()
+   --  AKA: mvdelch()
+   pragma Inline (Delete_Character);
+
+   --  |=====================================================================
+   --  | Man page curs_inch.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_97"#2|
+   function Peek (Win : Window := Standard_Window)
+     return Attributed_Character;
+   --  AKA: inch()
+   --  AKA: winch()
+
+   --  #1A NAME="AFU_98"#2|
+   function Peek
+     (Win    : Window := Standard_Window;
+      Line   : Line_Position;
+      Column : Column_Position) return Attributed_Character;
+   --  AKA: mvwinch()
+   --  AKA: mvinch()
+   --  More Peek's follow, pragma Inline appears later.
+
+   --  |=====================================================================
+   --  | Man page curs_insch.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_99"#2|
+   procedure Insert (Win : in Window := Standard_Window;
+                     Ch  : in Attributed_Character);
+   --  AKA: winsch()
+   --  AKA: insch()
+
+   --  #1A NAME="AFU_100"#2|
+   procedure Insert (Win    : in Window := Standard_Window;
+                     Line   : in Line_Position;
+                     Column : in Column_Position;
+                     Ch     : in Attributed_Character);
+   --  AKA: mvwinsch()
+   --  AKA: mvinsch()
+
+   --  |=====================================================================
+   --  | Man page curs_insstr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_101"#2|
+   procedure Insert (Win : in Window := Standard_Window;
+                     Str : in String;
+                     Len : in Integer := -1);
+   --  AKA: winsnstr()
+   --  AKA: winsstr()
+   --  AKA: insnstr()
+   --  AKA: insstr()
+
+   --  #1A NAME="AFU_102"#2|
+   procedure Insert (Win    : in Window := Standard_Window;
+                     Line   : in Line_Position;
+                     Column : in Column_Position;
+                     Str    : in String;
+                     Len    : in Integer := -1);
+   --  AKA: mvwinsnstr()
+   --  AKA: mvwinsstr()
+   --  AKA: mvinsnstr()
+   --  AKA: mvinsstr()
+   pragma Inline (Insert);
+
+   --  |=====================================================================
+   --  | Man page curs_instr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_103"#2|
+   procedure Peek (Win : in  Window := Standard_Window;
+                   Str : out String;
+                   Len : in  Integer := -1);
+   --  AKA: winnstr()
+   --  AKA: winstr()
+   --  AKA: innstr()
+   --  AKA: instr()
+
+   --  #1A NAME="AFU_104"#2|
+   procedure Peek (Win    : in  Window := Standard_Window;
+                   Line   : in  Line_Position;
+                   Column : in  Column_Position;
+                   Str    : out String;
+                   Len    : in  Integer := -1);
+   --  AKA: mvwinnstr()
+   --  AKA: mvwinstr()
+   --  AKA: mvinnstr()
+   --  AKA: mvinstr()
+
+   --  |=====================================================================
+   --  | Man page curs_inchstr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_105"#2|
+   procedure Peek (Win : in  Window := Standard_Window;
+                   Str : out Attributed_String;
+                   Len : in  Integer := -1);
+   --  AKA: winchnstr()
+   --  AKA: winchstr()
+   --  AKA: inchnstr()
+   --  AKA: inchstr()
+
+   --  #1A NAME="AFU_106"#2|
+   procedure Peek (Win    : in  Window := Standard_Window;
+                   Line   : in  Line_Position;
+                   Column : in  Column_Position;
+                   Str    : out Attributed_String;
+                   Len    : in  Integer := -1);
+   --  AKA: mvwinchnstr()
+   --  AKA: mvwinchstr()
+   --  AKA: mvinchnstr()
+   --  AKA: mvinchstr()
+   --  We don't inline the Peek procedures
+
+   --  |=====================================================================
+   --  | Man page curs_getstr.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_107"#2|
+   procedure Get (Win : in  Window := Standard_Window;
+                  Str : out String;
+                  Len : in  Integer := -1);
+   --  AKA: wgetnstr()
+   --  AKA: wgetstr()
+   --  AKA: getnstr()
+   --  AKA: getstr()
+   --  actually getstr is not supported because that results in buffer
+   --  overflows.
+
+   --  #1A NAME="AFU_108"#2|
+   procedure Get (Win    : in  Window := Standard_Window;
+                  Line   : in  Line_Position;
+                  Column : in  Column_Position;
+                  Str    : out String;
+                  Len    : in  Integer := -1);
+   --  AKA: mvwgetnstr()
+   --  AKA: mvwgetstr()
+   --  AKA: mvgetnstr()
+   --  AKA: mvgetstr()
+   --  Get is not inlined
+
+   --  |=====================================================================
+   --  | Man page curs_slk.3x
+   --  |=====================================================================
+
+   --  Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set
+
+   type Soft_Label_Key_Format is (Three_Two_Three,
+                                  Four_Four,
+                                  PC_Style,              --  ncurses specific
+                                  PC_Style_With_Index);  --  "
+   type Label_Number is new Positive range 1 .. 12;
+   type Label_Justification is (Left, Centered, Right);
+
+   --  #1A NAME="AFU_109"#2|
+   procedure Init_Soft_Label_Keys
+     (Format : in Soft_Label_Key_Format := Three_Two_Three);
+   --  AKA: slk_init()
+   pragma Inline (Init_Soft_Label_Keys);
+
+   --  #1A NAME="AFU_110"#2|
+   procedure Set_Soft_Label_Key (Label : in Label_Number;
+                                 Text  : in String;
+                                 Fmt   : in Label_Justification := Left);
+   --  AKA: slk_set()
+   --  We don't inline this procedure
+
+   --  #1A NAME="AFU_111"#2|
+   procedure Refresh_Soft_Label_Keys;
+   --  AKA: slk_refresh()
+   pragma Inline (Refresh_Soft_Label_Keys);
+
+   --  #1A NAME="AFU_112"#2|
+   procedure Refresh_Soft_Label_Keys_Without_Update;
+   --  AKA: slk_noutrefresh()
+   pragma Inline (Refresh_Soft_Label_Keys_Without_Update);
+
+   --  #1A NAME="AFU_113"#2|
+   procedure Get_Soft_Label_Key (Label : in Label_Number;
+                                 Text  : out String);
+   --  AKA: slk_label()
+
+   --  #1A NAME="AFU_114"#2|
+   function Get_Soft_Label_Key (Label : in Label_Number) return String;
+   --  AKA: slk_label()
+   --  Same as function
+   pragma Inline (Get_Soft_Label_Key);
+
+   --  #1A NAME="AFU_115"#2|
+   procedure Clear_Soft_Label_Keys;
+   --  AKA: slk_clear()
+   pragma Inline (Clear_Soft_Label_Keys);
+
+   --  #1A NAME="AFU_116"#2|
+   procedure Restore_Soft_Label_Keys;
+   --  AKA: slk_restore()
+   pragma Inline (Restore_Soft_Label_Keys);
+
+   --  #1A NAME="AFU_117"#2|
+   procedure Touch_Soft_Label_Keys;
+   --  AKA: slk_touch()
+   pragma Inline (Touch_Soft_Label_Keys);
+
+   --  #1A NAME="AFU_118"#2|
+   procedure Switch_Soft_Label_Key_Attributes
+     (Attr : in Character_Attribute_Set;
+      On   : in Boolean := True);
+   --  AKA: slk_attron()
+   --  AKA: slk_attroff()
+   pragma Inline (Switch_Soft_Label_Key_Attributes);
+
+   --  #1A NAME="AFU_119"#2|
+   procedure Set_Soft_Label_Key_Attributes
+     (Attr  : in Character_Attribute_Set := Normal_Video;
+      Color : in Color_Pair := Color_Pair'First);
+   --  AKA: slk_attrset()
+   pragma Inline (Set_Soft_Label_Key_Attributes);
+
+   --  #1A NAME="AFU_120"#2|
+   function Get_Soft_Label_Key_Attributes return Character_Attribute_Set;
+   --  AKA: slk_attr()
+
+   --  #1A NAME="AFU_121"#2|
+   function Get_Soft_Label_Key_Attributes return Color_Pair;
+   --  AKA: slk_attr()
+   pragma Inline (Get_Soft_Label_Key_Attributes);
+
+   --  #1A NAME="AFU_122"#2|
+   procedure Set_Soft_Label_Key_Color (Pair : in Color_Pair);
+   --  AKA: slk_color()
+   pragma Inline (Set_Soft_Label_Key_Color);
+
+   --  |=====================================================================
+   --  | Man page keybound.3x
+   --  |=====================================================================
+   --  Not Implemented: keybound
+
+   --  |=====================================================================
+   --  | Man page keyok.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_123"#2|
+   procedure Enable_Key (Key    : in Special_Key_Code;
+                         Enable : in Boolean := True);
+   --  AKA: keyok()
+   pragma Inline (Enable_Key);
+
+   --  |=====================================================================
+   --  | Man page define_key.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_124"#2|
+   procedure Define_Key (Definition : in String;
+                         Key        : in Special_Key_Code);
+   --  AKA: define_key()
+   pragma Inline (Define_Key);
+
+   --  |=====================================================================
+   --  | Man page curs_util.3x
+   --  |=====================================================================
+
+   --  | Not implemented : filter, use_env
+   --  | putwin, getwin are in the child package PutWin
+   --
+
+   --  #1A NAME="AFU_125"#2|
+   procedure Key_Name (Key  : in  Real_Key_Code;
+                       Name : out String);
+   --  AKA: keyname()
+   --  The external name for a real keystroke.
+
+   --  #1A NAME="AFU_126"#2|
+   function Key_Name (Key  : in  Real_Key_Code) return String;
+   --  AKA: keyname()
+   --  Same as function
+   --  We don't inline this routine
+
+   --  #1A NAME="AFU_127"#2|
+   procedure Un_Control (Ch  : in Attributed_Character;
+                         Str : out String);
+   --  AKA: unctrl()
+
+   --  #1A NAME="AFU_128"#2|
+   function Un_Control (Ch  : in Attributed_Character) return String;
+   --  AKA: unctrl()
+   --  Same as function
+   pragma Inline (Un_Control);
+
+   --  #1A NAME="AFU_129"#2|
+   procedure Delay_Output (Msecs : in Natural);
+   --  AKA: delay_output()
+   pragma Inline (Delay_Output);
+
+   --  #1A NAME="AFU_130"#2|
+   procedure Flush_Input;
+   --  AKA: flushinp()
+   pragma Inline (Flush_Input);
+
+   --  |=====================================================================
+   --  | Man page curs_termattrs.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_131"#2|
+   function Baudrate return Natural;
+   --  AKA: baudrate()
+   pragma Inline (Baudrate);
+
+   --  #1A NAME="AFU_132"#2|
+   function Erase_Character return Character;
+   --  AKA: erasechar()
+   pragma Inline (Erase_Character);
+
+   --  #1A NAME="AFU_133"#2|
+   function Kill_Character return Character;
+   --  AKA: killchar()
+   pragma Inline (Kill_Character);
+
+   --  #1A NAME="AFU_134"#2|
+   function Has_Insert_Character return Boolean;
+   --  AKA: has_ic()
+   pragma Inline (Has_Insert_Character);
+
+   --  #1A NAME="AFU_135"#2|
+   function Has_Insert_Line return Boolean;
+   --  AKA: has_il()
+   pragma Inline (Has_Insert_Line);
+
+   --  #1A NAME="AFU_136"#2|
+   function Supported_Attributes return Character_Attribute_Set;
+   --  AKA: termattrs()
+   pragma Inline (Supported_Attributes);
+
+   --  #1A NAME="AFU_137"#2|
+   procedure Long_Name (Name : out String);
+   --  AKA: longname()
+
+   --  #1A NAME="AFU_138"#2|
+   function Long_Name return String;
+   --  AKA: longname()
+   --  Same as function
+   pragma Inline (Long_Name);
+
+   --  #1A NAME="AFU_139"#2|
+   procedure Terminal_Name (Name : out String);
+   --  AKA: termname()
+
+   --  #1A NAME="AFU_140"#2|
+   function Terminal_Name return String;
+   --  AKA: termname()
+   --  Same as function
+   pragma Inline (Terminal_Name);
+
+   --  |=====================================================================
+   --  | Man page curs_color.3x
+   --  |=====================================================================
+
+   --  COLOR_PAIR
+   --  COLOR_PAIR(n) in C is the same as
+   --  Attributed_Character(Ch => Nul, Color => n, Attr => Normal_Video)
+   --  In C you often see something like c = c | COLOR_PAIR(n);
+   --  This is equivalent to c.Color := n;
+
+   --  #1A NAME="AFU_141"#2|
+   procedure Start_Color;
+   --  AKA: start_color()
+   pragma Import (C, Start_Color, "start_color");
+
+   --  #1A NAME="AFU_142"#2|
+   procedure Init_Pair (Pair : in Redefinable_Color_Pair;
+                        Fore : in Color_Number;
+                        Back : in Color_Number);
+   --  AKA: init_pair()
+   pragma Inline (Init_Pair);
+
+   --  #1A NAME="AFU_143"#2|
+   procedure Pair_Content (Pair : in Color_Pair;
+                           Fore : out Color_Number;
+                           Back : out Color_Number);
+   --  AKA: pair_content()
+   pragma Inline (Pair_Content);
+
+   --  #1A NAME="AFU_144"#2|
+   function Has_Colors return Boolean;
+   --  AKA: has_colors()
+   pragma Inline (Has_Colors);
+
+   --  #1A NAME="AFU_145"#2|
+   procedure Init_Color (Color : in Color_Number;
+                         Red   : in RGB_Value;
+                         Green : in RGB_Value;
+                         Blue  : in RGB_Value);
+   --  AKA: init_color()
+   pragma Inline (Init_Color);
+
+   --  #1A NAME="AFU_146"#2|
+   function Can_Change_Color return Boolean;
+   --  AKA: can_change_color()
+   pragma Inline (Can_Change_Color);
+
+   --  #1A NAME="AFU_147"#2|
+   procedure Color_Content (Color : in  Color_Number;
+                            Red   : out RGB_Value;
+                            Green : out RGB_Value;
+                            Blue  : out RGB_Value);
+   --  AKA: color_content()
+   pragma Inline (Color_Content);
+
+   --  |=====================================================================
+   --  | Man page curs_kernel.3x
+   --  |=====================================================================
+   --  | Not implemented: getsyx, setsyx
+   --
+   type Curses_Mode is (Curses, Shell);
+
+   --  #1A NAME="AFU_148"#2|
+   procedure Save_Curses_Mode (Mode : in Curses_Mode);
+   --  AKA: def_prog_mode()
+   --  AKA: def_shell_mode()
+   pragma Inline (Save_Curses_Mode);
+
+   --  #1A NAME="AFU_149"#2|
+   procedure Reset_Curses_Mode (Mode : in Curses_Mode);
+   --  AKA: reset_prog_mode()
+   --  AKA: reset_shell_mode()
+   pragma Inline (Reset_Curses_Mode);
+
+   --  #1A NAME="AFU_150"#2|
+   procedure Save_Terminal_State;
+   --  AKA: savetty()
+   pragma Inline (Save_Terminal_State);
+
+   --  #1A NAME="AFU_151"#2|
+   procedure Reset_Terminal_State;
+   --  AKA: resetty();
+   pragma Inline (Reset_Terminal_State);
+
+   type Stdscr_Init_Proc is access
+      function (Win     : Window;
+                Columns : Column_Count) return Integer;
+   pragma Convention (C, Stdscr_Init_Proc);
+   --  N.B.: the return value is actually ignored, but it seems to be
+   --        a good practice to return 0 if you think all went fine
+   --        and -1 otherwise.
+
+   --  #1A NAME="AFU_152"#2|
+   procedure Rip_Off_Lines (Lines : in Integer;
+                            Proc  : in Stdscr_Init_Proc);
+   --  AKA: ripoffline()
+   --  N.B.: to be more precise, this uses a ncurses specific enhancement of
+   --        ripoffline(), in which the Lines argument absolute value is the
+   --        number of lines to be ripped of. The official ripoffline() only
+   --        uses the sign of Lines to rip of a single line from bottom or top.
+   pragma Inline (Rip_Off_Lines);
+
+   type Cursor_Visibility is (Invisible, Normal, Very_Visible);
+
+   --  #1A NAME="AFU_153"#2|
+   procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility);
+   --  AKA: curs_set()
+   pragma Inline (Set_Cursor_Visibility);
+
+   --  #1A NAME="AFU_154"#2|
+   procedure Nap_Milli_Seconds (Ms : in Natural);
+   --  AKA: napms()
+   pragma Inline (Nap_Milli_Seconds);
+
+   --  |=====================================================================
+   --  | Some useful helpers.
+   --  |=====================================================================
+   type Transform_Direction is (From_Screen, To_Screen);
+   procedure Transform_Coordinates
+     (W      : in Window := Standard_Window;
+      Line   : in out Line_Position;
+      Column : in out Column_Position;
+      Dir    : in Transform_Direction := From_Screen);
+   --  This procedure transforms screen coordinates into coordinates relative
+   --  to the window and vice versa, depending on the Dir parameter.
+   --  Screen coordinates are the position informations on the physical device.
+   --  An Curses_Exception will be raised if Line and Column are not in the
+   --  Window or if you pass the Null_Window as argument.
+   --  We don't inline this procedure
+
+   --  |=====================================================================
+   --  | Man page default_colors.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_155"#2|
+   procedure Use_Default_Colors;
+   --  AKA: use_default_colors()
+   pragma Inline (Use_Default_Colors);
+
+   --  #1A NAME="AFU_156"#2|
+   procedure Assume_Default_Colors (Fore : Color_Number := Default_Color;
+                                    Back : Color_Number := Default_Color);
+   --  AKA: assume_default_colors()
+   pragma Inline (Assume_Default_Colors);
+
+   --  |=====================================================================
+   --  | Man page curs_extend.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_157"#2|
+   function Curses_Version return String;
+   --  AKA: curses_version()
+
+   --  #1A NAME="AFU_158"#2|
+   --  The returnvalue is the previous setting of the flag
+   function Use_Extended_Names (Enable : Boolean) return Boolean;
+   --  AKA: use_extended_names()
+
+   --  |=====================================================================
+   --  | Man page curs_trace.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_159"#2|
+   procedure Curses_Free_All;
+   --  AKA: _nc_freeall()
+
+   --  |=====================================================================
+   --  | Man page curs_scr_dump.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_160"#2|
+   procedure Screen_Dump_To_File (Filename : in String);
+   --  AKA: scr_dump()
+
+   --  #1A NAME="AFU_161"#2|
+   procedure Screen_Restore_From_File (Filename : in String);
+   --  AKA: scr_restore()
+
+   --  #1A NAME="AFU_162"#2|
+   procedure Screen_Init_From_File (Filename : in String);
+   --  AKA: scr_init()
+
+   --  #1A NAME="AFU_163"#2|
+   procedure Screen_Set_File (Filename : in String);
+   --  AKA: scr_set()
+
+   --  |=====================================================================
+   --  | Man page curs_print.3x
+   --  |=====================================================================
+   --  Not implemented:  mcprint
+
+   --  |=====================================================================
+   --  | Man page curs_printw.3x
+   --  |=====================================================================
+   --  Not implemented: printw,  wprintw, mvprintw, mvwprintw, vwprintw,
+   --                   vw_printw
+   --  Please use the Ada style Text_IO child packages for formatted
+   --  printing. It doesn't make a lot of sense to map the printf style
+   --  C functions to Ada.
+
+   --  |=====================================================================
+   --  | Man page curs_scanw.3x
+   --  |=====================================================================
+   --  Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw
+
+   --  |=====================================================================
+   --  | Man page resizeterm.3x
+   --  |=====================================================================
+   --  Not Implemented: resizeterm
+
+   --  |=====================================================================
+   --  | Man page wresize.3x
+   --  |=====================================================================
+
+   --  #1A NAME="AFU_164"#2|
+   procedure Resize (Win               : Window := Standard_Window;
+                     Number_Of_Lines   : Line_Count;
+                     Number_Of_Columns : Column_Count);
+   --  AKA: wresize()
+
+private
+   type Window is new System.Storage_Elements.Integer_Address;
+   Null_Window : constant Window := 0;
+
+   --  The next constants are generated and may be different on your
+   --  architecture.
+   --
+   Sizeof_bool        : constant Natural :=  1; --  bool
+   Offset_XY          : constant Natural :=  1; --  int
+
+   type Curses_Bool is mod 2 ** Interfaces.C.char'Size;
+   Curses_Bool_False : constant Curses_Bool := 0;
+
+end Terminal_Interface.Curses;
+
diff --git a/ncurses/doc/html/ada/terminal_interface__ads.htm b/ncurses/doc/html/ada/terminal_interface__ads.htm new file mode 100644 index 0000000..6d7cdf1 --- /dev/null +++ b/ncurses/doc/html/ada/terminal_interface__ads.htm @@ -0,0 +1,53 @@ + +terminal_interface.ads + +

File : terminal_interface.ads


+
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                            Terminal_Interface                            --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software Foundation, Inc.                   --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "Software"), to deal in the Software without restriction, including      --
+-- without limitation the rights to use, copy, modify, merge, publish,      --
+-- distribute, distribute with modifications, sublicense, and/or sell       --
+-- copies of the Software, and to permit persons to whom the Software is    --
+-- furnished to do so, subject to the following conditions:                 --
+--                                                                          --
+-- The above copyright notice and this permission notice shall be included  --
+-- in all copies or substantial portions of the Software.                   --
+--                                                                          --
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --
+-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --
+-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --
+-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --
+-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --
+-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --
+--                                                                          --
+-- Except as contained in this notice, the name(s) of the above copyright   --
+-- holders shall not be used in advertising or otherwise to promote the     --
+-- sale, use or other dealings in this Software without prior written       --
+-- authorization.                                                           --
+------------------------------------------------------------------------------
+--  Author:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.14 @
+--  @Date: 2006/06/25 14:30:22 @
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+package Terminal_Interface is
+   pragma Pure (Terminal_Interface);
+--
+--  Everything is in the child units
+--
+end Terminal_Interface;
+
diff --git a/ncurses/doc/html/announce.html b/ncurses/doc/html/announce.html new file mode 100644 index 0000000..234c703 --- /dev/null +++ b/ncurses/doc/html/announce.html @@ -0,0 +1,588 @@ + + + + +Announcing ncurses 5.7 + + + + + +

Announcing ncurses 5.7

+ +The ncurses (new curses) library is a free software emulation of +curses in System V Release 4.0, and more. It uses terminfo format, +supports pads and color +and multiple highlights and forms characters and function-key mapping, +and has all the other SYSV-curses enhancements over BSD curses.

+ +In mid-June 1995, the maintainer of 4.4BSD curses declared that he +considered 4.4BSD curses obsolete, and encouraged the keepers of +Unix releases such as BSD/OS, FreeBSD and NetBSD to switch over to +ncurses.

+ +The ncurses code was developed under GNU/Linux. +It has been in use for some time with OpenBSD as the system curses library, +and on FreeBSD and NetBSD as an external package. +It should port easily to any ANSI/POSIX-conforming UNIX. +It has even been ported to OS/2 Warp!

+ +The distribution includes the library and support utilities, including a +terminfo compiler tic(1), a decompiler infocmp(1), clear(1), tput(1), tset(1), +and a termcap conversion tool captoinfo(1). Full manual pages are provided for +the library and tools.

+ +The ncurses distribution is available via anonymous FTP at +the GNU distribution site +ftp://ftp.gnu.org/gnu/ncurses/ . +
It is also available at +ftp://invisible-island.net/ncurses/ . + +

Release Notes

+ +This release is designed to be upward compatible from ncurses 5.0 through 5.6; +very few applications will require recompilation, depending on the platform. +These are the highlights from the change-log since ncurses 5.6 release. +

+Interface changes: +

    +
  • generate linkable stubs for some macros: +
    + getattrs + +
+New features and improvements: +
    +
  • library +
      +
    • new flavor of the ncurses library provides rudimentary + support for POSIX threads. Several functions are + reentrant, but most require either a window-level or + screen-level mutex.
      + (This is API-compatible, + but not ABI-compatible with the normal library). + +
    • add NCURSES_OPAQUE symbol to curses.h, will + use to make structs opaque in selected configurations. + +
    • add NCURSES_EXT_FUNCS and + NCURSES_EXT_COLORS symbols to curses.h to make + it simpler to tell if the extended functions and/or colors + are declared. + +
    • add wresize() to C++ binding + +
    • eliminate fixed-buffer vsprintf() calls in C++ binding. + +
    • add several functions to C++ binding which wrap C functions + that pass a WINDOW* parameter. + +
    • adapt mouse-handling code from menu library in form-library + +
    • improve tracing for form library, showing created forms, + fields, etc. + +
    • make $NCURSES_NO_PADDING feature work for termcap interface . + +
    • add check to trace-file open, if the given name is a + directory, add ".log" to the name and try again. + +
    • several new manpages: curs_legacy.3x, curs_memleaks.3x, + curs_opaque.3x and curs_threads.3x +
    + +
  • programs: +
      +
    • modified three test-programs to demonstrate the threading + support in this version: ditto, rain, worm. + +
    • several new test-programs: demo_panels, dots_mvcur, + inch_wide, inchs, key_name, key_names, savescreen, + savescreen.sh test_arrays, test_get_wstr, test_getstr, + test_instr, test_inwstr and test_opaque. + +
    • add adacurses-config to the Ada95 install. + +
    • modify tic -f option to format spaces as + \s to prevent them from being lost when that + is read back in unformatted strings. + +
    • The tack program is now distributed separately + from ncurses. +
    + +
  • terminal database +
      +
    • added entries: +
        +
      • Eterm-256color, + Eterm-88color and + rxvt-88color +
      • aterm +
      • konsole-256color +
      • mrxvt +
      • screen.mlterm +
      • screen.rxvt +
      • teraterm4.59 is now the primary primary + teraterm entry, renamed original to + teraterm2.3 +
      • 9term terminal +
      • Newbury Data entries +
      +
    • updated/improved entries: +
        +
      • gnome to version 2.22.3 +
      • h19, z100 +
      • konsole to version 1.6.6 +
      • mlterm, mlterm+pcfkeys +
      • xterm, and building-blocks for function-keys + to xterm patch #230. +
      +
    +
+Major bug fixes: +
    +
  • add logic to tic for cancelling strings in user-defined + capabilities + (this is needed for + current konsole terminfo entry). + +
  • modify mk-1st.awk so the generated makefile rules for + linking or installing shared libraries do not first remove the + library, in case it is in use, e.g., libncurses.so by + /bin/sh. + +
  • correct check for notimeout() in wgetch(). + +
  • fix a sign-extension bug in infocmp's repair_acsc() function. + +
  • change winnstr() to stop at the end of the line. + +
  • make Ada95 demo_panels() example work. + +
  • fix for adding a non-spacing character at the beginning of a line. + +
  • fill in extended-color pair to make colors work + for wide-characters using extended-colors. + +
  • improve refresh of window on top of multi-column characters, + taking into account split characters on left/right window + boundaries. + +
  • modify win_wchnstr() to ensure that only a base cell + is returned for each multi-column character. + +
  • improve waddch() and winsch() handling of + EILSEQ from mbrtowc() by using unctrl() + to display illegal bytes rather than trying to append further bytes + to make up a valid sequence. + +
  • restore curs_set() state after + endwin()/refresh() + +
  • modify keyname() to use "^X" form only if + meta() has been called, or if keyname() + is called without initializing curses, e.g., via + initscr() or newterm(). + +
  • modify unctrl() to check codes in 128-255 range versus + isprint(). + If they are not printable, and locale was set, use a "M-" or "~" + sequence. + +
  • improve resizeterm() by moving ripped-off lines, and + repainting the soft-keys. + +
  • modify form library to accept control characters such as newline + in set_field_buffer(), which is compatible with Solaris. + +
  • use NCURSES_MOUSE_MASK() in definition of + BUTTON_RELEASE(), etc., to make those work properly + with the --enable-ext-mouse configuration + +
  • correct some functions in Ada95 binding which were using return + value from C where none was returned. + +
  • reviewed/fixed issues reported by Coverity and Klocwork tools. +
+ +Portability: +
    +
  • configure script: +
      +
    • new options: +
      + +
      --disable-big-strings +
      control whether static string tables are generated as single + large strings (to improve startup performance), or as array + of individual strings. + +
      --disable-relink +
      control whether shared libraries are relinked (during install) + when rpath is enabled. + +
      --disable-tic-depends +
      make explicit whether tic library depends on ncurses/ncursesw + library. + +
      --enable-mixed-case +
      override the configure script's check if the filesystem + supports mixed-case filenames. + This allows one to control how the terminal database + maps to the filesystem. + For filesystems that do not support mixed-case, the library + uses generate 2-character (hexadecimal) codes for the + lower-level of the filesystem terminfo database + +
      --enable-reentrant +
      builds a different flavor of the ncurses library (ncursest) + which improves reentrant use of the + library by reducing global and static variables + (see the "--with-pthread" option for the threaded support). + +
      --enable-weak-symbols +
      use weak-symbols for linking to the POSIX thread library, + and use the same soname for the ncurses shared library + as the normal library (caveat: the ABI is for the threaded + library, which makes global data accessed via functions). + +
      --with-pthread +
      build with the POSIX thread library (tested with AIX, + Linux, FreeBSD, OpenBSD, HPUX, IRIX64, Solaris, Tru64). + +
      --with-ticlib +
      build/install the tic-support functions in a separate library + +
      + +
    • improved options: +
      + +
      --enable-ext-colors +
      requires the wide-character configuration. + +
      --with-chtype +
      ignore option value "unsigned" is always added to + the type in curses.h; do the same for --with-mmask-t. + +
      --with-dmalloc +
      build-fix for redefinition of strndup. + +
      --with-hashed-db +
      accepts a parameter which is the install-prefix of a given + Berkeley Database. + +
      --with-hashed-db +
      the $LIBS environment variable overrides the search for the db + library. + +
      --without-hashed-db +
      assumed when "--disable-database" is used. + +
      + +
    + +
  • other configure/build issues: +
      +
    • build-fixes for LynxOS +
    • modify shared-library rules to allow FreeBSD 3.x to use rpath. +
    • build-fix for FreeBSD "contemporary" TTY interface. +
    • build-fixes for AIX with libtool. +
    • build-fixes for Darwin and libtool. +
    • modify BeOS-specific ifdef's to build on Haiku. +
    • corrected gcc options for building shared libraries on Solaris + and IRIX64. +
    • change shared-library configuration for OpenBSD, make rpath work. +
    • build-fixes for using libutf8, e.g., on OpenBSD 3.7 +
    • add "-e" option in ncurses/Makefile.in when generating source-files + to force earlier exit if the build environment fails unexpectedly. +
    • add support for shared libraries for QNX. +
    • change delimiter in MKlib_gen.sh from '%' to '@', to + avoid substitution by IBM xlc to '#' as part of its extensions to + digraphs. +
    + +
  • library: +
      +
    • rewrite wrapper for wcrtomb(), making it work on + Solaris. This is used in the form library to determine the length + of the buffer needed by field_buffer. +
    • add/use configure script macro CF_SIG_ATOMIC_T, use the corresponding + type for data manipulated by signal handlers. +
    • set locale in misc/ncurses-config.in since it uses a range +
    • disable GPM mouse support when $TERM does not happen to contain + "linux", since Gpm_Open() no longer limits its assertion to terminals + that it might handle, e.g., within "screen" in xterm. +
    • reset mouse file-descriptor when unloading GPM library. +
    + +
  • test programs: +
      +
    • update test programs to build/work with various UNIX curses for + comparisons. +
    +
+ +

Features of Ncurses

+ +The ncurses package is fully compatible with SVr4 (System V Release 4) curses: + +
    +
  • All 257 of the SVr4 calls have been implemented (and are documented). +
  • Full support for SVr4 curses features including keyboard mapping, color, +forms-drawing with ACS characters, and automatic recognition of keypad +and function keys. +
  • An emulation of the SVr4 panels library, supporting +a stack of windows with backing store, is included. +
  • An emulation of the SVr4 menus library, supporting +a uniform but flexible interface for menu programming, is included. +
  • An emulation of the SVr4 form library, supporting +data collection through on-screen forms, is included. +
  • Binary terminfo entries generated by the ncurses tic(1) implementation +are bit-for-bit-compatible with the entry format SVr4 curses uses. +
  • The utilities have options to allow you to filter terminfo +entries for use with less capable curses/terminfo +versions such as the HP/UX and AIX ports.
+ +The ncurses package also has many useful extensions over SVr4: + +
    +
  • The API is 8-bit clean and base-level conformant with the X/OPEN curses +specification, XSI curses (that is, it implements all BASE level features, +and most EXTENDED features). +It includes many function calls not supported under SVr4 curses +(but portability of all +calls is documented so you can use the SVr4 subset only). +
  • Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner +of the screen if your terminal has an insert-character capability. +
  • Ada95 and C++ bindings. +
  • Support for mouse event reporting with X Window xterm +and FreeBSD and OS/2 console windows. +
  • Extended mouse support via Alessandro Rubini's gpm package. +
  • The function wresize() allows you to resize windows, preserving +their data. +
  • The function use_default_colors() allows you to +use the terminal's default colors for the default color pair, +achieving the effect of transparent colors. +
  • The functions keyok() +and define_key() allow +you to better control the use of function keys, +e.g., disabling the ncurses KEY_MOUSE, +or by defining more than one control sequence to map to a given key code. +
  • Support for 256-color terminals, such as modern xterm, when configured +using the --enable-ext-colors option. +
  • Support for 16-color terminals, such as aixterm and modern xterm. +
  • Better cursor-movement optimization. The package now features a +cursor-local-movement computation more efficient than either BSD's +or System V's. +
  • Super hardware scrolling support. The screen-update code incorporates +a novel, simple, and cheap algorithm that enables it to make optimal +use of hardware scrolling, line-insertion, and line-deletion +for screen-line movements. This algorithm is more powerful than +the 4.4BSD curses quickch() routine. +
  • Real support for terminals with the magic-cookie glitch. The +screen-update code will refrain from drawing a highlight if the magic- +cookie unattributed spaces required just before the beginning and +after the end would step on a non-space character. It will +automatically shift highlight boundaries when doing so would make it +possible to draw the highlight without changing the visual appearance +of the screen. +
  • It is possible to generate the library with a list of pre-loaded +fallback entries linked to it so that it can serve those terminal types even +when no terminfo tree or termcap file is accessible (this may be useful +for support of screen-oriented programs that must run in single-user mode). +
  • The tic(1)/captoinfo utility provided with ncurses has the +ability to translate many termcaps from the XENIX, IBM and +AT&T extension sets. +
  • A BSD-like tset(1) utility is provided. +
  • The ncurses library and utilities will automatically read terminfo +entries from $HOME/.terminfo if it exists, and compile to that directory +if it exists and the user has no write access to the system directory. +This feature makes it easier for users to have personal terminfo entries +without giving up access to the system terminfo directory. +
  • You may specify a path of directories to search for compiled +descriptions with the environment variable TERMINFO_DIRS (this +generalizes the feature provided by TERMINFO under stock System V.) +
  • In terminfo source files, use capabilities may refer not just to +other entries in the same source file (as in System V) but also to +compiled entries in either the system terminfo directory or the user's +$HOME/.terminfo directory. +
  • A script (capconvert) is provided to help BSD users +transition from termcap to terminfo. It gathers the information in a +TERMCAP environment variable and/or a ~/.termcap local entries file +and converts it to an equivalent local terminfo tree under $HOME/.terminfo. +
  • Automatic fallback to the /etc/termcap file can be compiled in +when it is not possible to build a terminfo tree. This feature is neither +fast nor cheap, you don't want to use it unless you have to, +but it's there. +
  • The table-of-entries utility toe makes it easy for users to +see exactly what terminal types are available on the system. +
  • The library meets the XSI requirement that every macro entry +point have a corresponding function which may be linked (and will be +prototype-checked) if the macro definition is disabled with +#undef. +
  • An HTML "Introduction to Programming with NCURSES" document provides +a narrative introduction to the curses programming interface. +
+ +

State of the Package

+ +Numerous bugs present in earlier versions have been fixed; the +library is far more reliable than it used to be. Bounds checking in many +`dangerous' entry points has been improved. The code is now type-safe +according to gcc -Wall. The library has been checked for malloc leaks and +arena corruption by the Purify memory-allocation tester.

+ +The ncurses code has been tested with a wide variety of applications +including (versions starting with those noted): +

+
cdk +
Curses Development Kit +
+http://invisible-island.net/cdk/ +
+http://www.vexus.ca/products/CDK/ +
ded +
directory-editor +
+http://invisible-island.net/ded/ +
dialog +
the underlying application used in Slackware's setup, and the basis +for similar applications on GNU/Linux. +
+http://invisible-island.net/dialog/ +
lynx +
the character-screen WWW browser +
+http://lynx.isc.org/release/ +
Midnight Commander +
file manager +
+http://www.ibiblio.org/mc/ +
mutt +
mail utility +
+http://www.mutt.org/ +
ncftp +
file-transfer utility +
+http://www.ncftp.com/ +
nvi +
New vi versions 1.50 are able to use ncurses versions 1.9.7 and later. +
+http://www.bostic.com/vi/ +
+
pinfo +
Lynx-like info browser. +https://alioth.debian.org/projects/pinfo/ +
tin +
newsreader, supporting color, MIME +http://www.tin.org/ +
+as well as some that use ncurses for the terminfo support alone: +
+
minicom +
terminal emulator +
+ +http://alioth.debian.org/projects/minicom/ +
vile +
vi-like-emacs +
+http://invisible-island.net/vile/ +
+

+ +The ncurses distribution includes a selection of test programs (including +a few games). + +

Who's Who and What's What

+ +Zeyd Ben-Halim +started it from a previous package pcurses, written by Pavel Curtis. +Eric S. Raymond +continued development. +Jürgen Pfeifer wrote most of the form and menu libraries. +Ongoing work is being done by +Thomas Dickey. +Thomas Dickey +acts as the maintainer for the Free Software Foundation, +which holds the copyright on ncurses. +Contact the current maintainers at +bug-ncurses@gnu.org. +

+ +To join the ncurses mailing list, please write email to +bug-ncurses-request@gnu.org containing the line: +

+             subscribe <name>@<host.domain>
+
+ +This list is open to anyone interested in helping with the development and +testing of this package.

+ +Beta versions of ncurses and patches to the current release are made available at +ftp://invisible-island.net/ncurses/ . + +

Future Plans

+
    +
  • Extended-level XPG4 conformance, with internationalization support. +
  • Ports to more systems, including DOS and Windows. +
+We need people to help with these projects. If you are interested in working +on them, please join the ncurses list. + +

Other Related Resources

+ +The distribution provides a newer version of the terminfo-format +terminal description file once maintained by +Eric Raymond . +Unlike the older version, the termcap and terminfo data are provided +in the same file, and provides several user-definable extensions +beyond the X/Open specification.

+ +You can find lots of information on terminal-related topics +not covered in the terminfo file at +Richard Shuford's +archive . + + + diff --git a/ncurses/doc/html/hackguide.html b/ncurses/doc/html/hackguide.html new file mode 100644 index 0000000..97d1369 --- /dev/null +++ b/ncurses/doc/html/hackguide.html @@ -0,0 +1,914 @@ + + + + +A Hacker's Guide to Ncurses Internals + + + + + + +

A Hacker's Guide to NCURSES

+ +

Contents

+ + +

Abstract

+ +This document is a hacker's tour of the ncurses library and utilities. +It discusses design philosophy, implementation methods, and the +conventions used for coding and documentation. It is recommended +reading for anyone who is interested in porting, extending or improving the +package. + +

Objective of the Package

+ +The objective of the ncurses package is to provide a free software API for +character-cell terminals and terminal emulators with the following +characteristics: + +
    +
  • Source-compatible with historical curses implementations (including + the original BSD curses and System V curses. +
  • Conformant with the XSI Curses standard issued as part of XPG4 by + X/Open. +
  • High-quality -- stable and reliable code, wide portability, good + packaging, superior documentation. +
  • Featureful -- should eliminate as much of the drudgery of C interface + programming as possible, freeing programmers to think at a higher + level of design. +
+ +These objectives are in priority order. So, for example, source +compatibility with older version must trump featurefulness -- we cannot +add features if it means breaking the portion of the API corresponding +to historical curses versions. + +

Why System V Curses?

+ +We used System V curses as a model, reverse-engineering their API, in +order to fulfill the first two objectives.

+ +System V curses implementations can support BSD curses programs with +just a recompilation, so by capturing the System V API we also +capture BSD's.

+ +More importantly for the future, the XSI Curses standard issued by X/Open +is explicitly and closely modeled on System V. So conformance with +System V took us most of the way to base-level XSI conformance. + +

How to Design Extensions

+ +The third objective (standards conformance) requires that it be easy to +condition source code using ncurses so that the absence of nonstandard +extensions does not break the code.

+ +Accordingly, we have a policy of associating with each nonstandard extension +a feature macro, so that ncurses client code can use this macro to condition +in or out the code that requires the ncurses extension.

+ +For example, there is a macro NCURSES_MOUSE_VERSION which XSI Curses +does not define, but which is defined in the ncurses library header. +You can use this to condition the calls to the mouse API calls. + +

Portability and Configuration

+ +Code written for ncurses may assume an ANSI-standard C compiler and +POSIX-compatible OS interface. It may also assume the presence of a +System-V-compatible select(2) call.

+ +We encourage (but do not require) developers to make the code friendly +to less-capable UNIX environments wherever possible.

+ +We encourage developers to support OS-specific optimizations and methods +not available under POSIX/ANSI, provided only that: + +

    +
  • All such code is properly conditioned so the build process does not + attempt to compile it under a plain ANSI/POSIX environment. +
  • Adding such implementation methods does not introduce incompatibilities + in the ncurses API between platforms. +
+ +We use GNU autoconf(1) as a tool to deal with portability issues. +The right way to leverage an OS-specific feature is to modify the autoconf +specification files (configure.in and aclocal.m4) to set up a new feature +macro, which you then use to condition your code. + +

Documentation Conventions

+ +There are three kinds of documentation associated with this package. Each +has a different preferred format: + +
    +
  • Package-internal files (README, INSTALL, TO-DO etc.) +
  • Manual pages. +
  • Everything else (i.e., narrative documentation). +
+ +Our conventions are simple: +
    +
  1. Maintain package-internal files in plain text. + The expected viewer for them more(1) or an editor window; there's + no point in elaborate mark-up. + +
  2. Mark up manual pages in the man macros. These have to be viewable + through traditional man(1) programs. + +
  3. Write everything else in HTML. +
+ +When in doubt, HTMLize a master and use lynx(1) to generate +plain ASCII (as we do for the announcement document).

+ +The reason for choosing HTML is that it's (a) well-adapted for on-line +browsing through viewers that are everywhere; (b) more easily readable +as plain text than most other mark-ups, if you don't have a viewer; and (c) +carries enough information that you can generate a nice-looking printed +version from it. Also, of course, it make exporting things like the +announcement document to WWW pretty trivial. + +

How to Report Bugs

+ +The reporting address for bugs is +bug-ncurses@gnu.org. +This is a majordomo list; to join, write +to bug-ncurses-request@gnu.org with a message containing the line: +
+             subscribe <name>@<host.domain>
+
+ +The ncurses code is maintained by a small group of +volunteers. While we try our best to fix bugs promptly, we simply +don't have a lot of hours to spend on elementary hand-holding. We rely +on intelligent cooperation from our users. If you think you have +found a bug in ncurses, there are some steps you can take +before contacting us that will help get the bug fixed quickly.

+ +In order to use our bug-fixing time efficiently, we put people who +show us they've taken these steps at the head of our queue. This +means that if you don't, you'll probably end up at the tail end and +have to wait a while. + +

    +
  1. Develop a recipe to reproduce the bug. +

    +Bugs we can reproduce are likely to be fixed very quickly, often +within days. The most effective single thing you can do to get a +quick fix is develop a way we can duplicate the bad behavior -- +ideally, by giving us source for a small, portable test program that +breaks the library. (Even better is a keystroke recipe using one of +the test programs provided with the distribution.) + +

  2. Try to reproduce the bug on a different terminal type.

    + +In our experience, most of the behaviors people report as library bugs +are actually due to subtle problems in terminal descriptions. This is +especially likely to be true if you're using a traditional +asynchronous terminal or PC-based terminal emulator, rather than xterm +or a UNIX console entry.

    + +It's therefore extremely helpful if you can tell us whether or not your +problem reproduces on other terminal types. Usually you'll have both +a console type and xterm available; please tell us whether or not your +bug reproduces on both.

    + +If you have xterm available, it is also good to collect xterm reports for +different window sizes. This is especially true if you normally use an +unusual xterm window size -- a surprising number of the bugs we've seen +are either triggered or masked by these. + +

  3. Generate and examine a trace file for the broken behavior.

    + +Recompile your program with the debugging versions of the libraries. +Insert a trace() call with the argument set to TRACE_UPDATE. +(See "Writing Programs with +NCURSES" for details on trace levels.) +Reproduce your bug, then look at the trace file to see what the library +was actually doing.

    + +Another frequent cause of apparent bugs is application coding errors +that cause the wrong things to be put on the virtual screen. Looking +at the virtual-screen dumps in the trace file will tell you immediately if +this is happening, and save you from the possible embarrassment of being +told that the bug is in your code and is your problem rather than ours.

    + +If the virtual-screen dumps look correct but the bug persists, it's +possible to crank up the trace level to give more and more information +about the library's update actions and the control sequences it issues +to perform them. The test directory of the distribution contains a +tool for digesting these logs to make them less tedious to wade +through.

    + +Often you'll find terminfo problems at this stage by noticing that the +escape sequences put out for various capabilities are wrong. If not, +you're likely to learn enough to be able to characterize any bug in +the screen-update logic quite exactly. + +

  4. Report details and symptoms, not just interpretations.

    + +If you do the preceding two steps, it is very likely that you'll discover +the nature of the problem yourself and be able to send us a fix. This +will create happy feelings all around and earn you good karma for the first +time you run into a bug you really can't characterize and fix yourself.

    + +If you're still stuck, at least you'll know what to tell us. Remember, we +need details. If you guess about what is safe to leave out, you are too +likely to be wrong.

    + +If your bug produces a bad update, include a trace file. Try to make +the trace at the least voluminous level that pins down the +bug. Logs that have been through tracemunch are OK, it doesn't throw +away any information (actually they're better than un-munched ones because +they're easier to read).

    + +If your bug produces a core-dump, please include a symbolic stack trace +generated by gdb(1) or your local equivalent.

    + +Tell us about every terminal on which you've reproduced the bug -- and +every terminal on which you can't. Ideally, sent us terminfo sources +for all of these (yours might differ from ours).

    + +Include your ncurses version and your OS/machine type, of course! You can +find your ncurses version in the curses.h file. +

+ +If your problem smells like a logic error or in cursor movement or +scrolling or a bad capability, there are a couple of tiny test frames +for the library algorithms in the progs directory that may help you +isolate it. These are not part of the normal build, but do have their +own make productions.

+ +The most important of these is mvcur, a test frame for the +cursor-movement optimization code. With this program, you can see +directly what control sequences will be emitted for any given cursor +movement or scroll/insert/delete operations. If you think you've got +a bad capability identified, you can disable it and test again. The +program is command-driven and has on-line help.

+ +If you think the vertical-scroll optimization is broken, or just want to +understand how it works better, build hashmap and read the +header comments of hardscroll.c and hashmap.c; then try +it out. You can also test the hardware-scrolling optimization separately +with hardscroll.

+ +

A Tour of the Ncurses Library

+ +

Library Overview

+ +Most of the library is superstructure -- fairly trivial convenience +interfaces to a small set of basic functions and data structures used +to manipulate the virtual screen (in particular, none of this code +does any I/O except through calls to more fundamental modules +described below). The files +
+ +lib_addch.c +lib_bkgd.c +lib_box.c +lib_chgat.c +lib_clear.c +lib_clearok.c +lib_clrbot.c +lib_clreol.c +lib_colorset.c +lib_data.c +lib_delch.c +lib_delwin.c +lib_echo.c +lib_erase.c +lib_gen.c +lib_getstr.c +lib_hline.c +lib_immedok.c +lib_inchstr.c +lib_insch.c +lib_insdel.c +lib_insstr.c +lib_instr.c +lib_isendwin.c +lib_keyname.c +lib_leaveok.c +lib_move.c +lib_mvwin.c +lib_overlay.c +lib_pad.c +lib_printw.c +lib_redrawln.c +lib_scanw.c +lib_screen.c +lib_scroll.c +lib_scrollok.c +lib_scrreg.c +lib_set_term.c +lib_slk.c +lib_slkatr_set.c +lib_slkatrof.c +lib_slkatron.c +lib_slkatrset.c +lib_slkattr.c +lib_slkclear.c +lib_slkcolor.c +lib_slkinit.c +lib_slklab.c +lib_slkrefr.c +lib_slkset.c +lib_slktouch.c +lib_touch.c +lib_unctrl.c +lib_vline.c +lib_wattroff.c +lib_wattron.c +lib_window.c + +
+are all in this category. They are very +unlikely to need change, barring bugs or some fundamental +reorganization in the underlying data structures.

+ +These files are used only for debugging support: +

+ +lib_trace.c +lib_traceatr.c +lib_tracebits.c +lib_tracechr.c +lib_tracedmp.c +lib_tracemse.c +trace_buf.c + +
+It is rather unlikely you will ever need to change these, unless +you want to introduce a new debug trace level for some reason.

+ +There is another group of files that do direct I/O via tputs(), +computations on the terminal capabilities, or queries to the OS +environment, but nevertheless have only fairly low complexity. These +include: +

+ +lib_acs.c +lib_beep.c +lib_color.c +lib_endwin.c +lib_initscr.c +lib_longname.c +lib_newterm.c +lib_options.c +lib_termcap.c +lib_ti.c +lib_tparm.c +lib_tputs.c +lib_vidattr.c +read_entry.c. + +
+They are likely to need revision only if +ncurses is being ported to an environment without an underlying +terminfo capability representation.

+ +These files +have serious hooks into +the tty driver and signal facilities: +

+ +lib_kernel.c +lib_baudrate.c +lib_raw.c +lib_tstp.c +lib_twait.c + +
+If you run into porting snafus +moving the package to another UNIX, the problem is likely to be in one +of these files. +The file lib_print.c uses sleep(2) and also +falls in this category.

+ +Almost all of the real work is done in the files +

+ +hardscroll.c +hashmap.c +lib_addch.c +lib_doupdate.c +lib_getch.c +lib_mouse.c +lib_mvcur.c +lib_refresh.c +lib_setup.c +lib_vidattr.c + +
+Most of the algorithmic complexity in the +library lives in these files. +If there is a real bug in ncurses itself, it's probably here. +We'll tour some of these files in detail +below (see The Engine Room).

+ +Finally, there is a group of files that is actually most of the +terminfo compiler. The reason this code lives in the ncurses +library is to support fallback to /etc/termcap. These files include +

+ +alloc_entry.c +captoinfo.c +comp_captab.c +comp_error.c +comp_hash.c +comp_parse.c +comp_scan.c +parse_entry.c +read_termcap.c +write_entry.c + +
+We'll discuss these in the compiler tour. + +

The Engine Room

+ +

Keyboard Input

+ +All ncurses input funnels through the function +wgetch(), defined in lib_getch.c. This function is +tricky; it has to poll for keyboard and mouse events and do a running +match of incoming input against the set of defined special keys.

+ +The central data structure in this module is a FIFO queue, used to +match multiple-character input sequences against special-key +capabilities; also to implement pushback via ungetch().

+ +The wgetch() code distinguishes between function key +sequences and the same sequences typed manually by doing a timed wait +after each input character that could lead a function key sequence. +If the entire sequence takes less than 1 second, it is assumed to have +been generated by a function key press.

+ +Hackers bruised by previous encounters with variant select(2) +calls may find the code in lib_twait.c interesting. It deals +with the problem that some BSD selects don't return a reliable +time-left value. The function timed_wait() effectively +simulates a System V select. + +

Mouse Events

+ +If the mouse interface is active, wgetch() polls for mouse +events each call, before it goes to the keyboard for input. It is +up to lib_mouse.c how the polling is accomplished; it may vary +for different devices.

+ +Under xterm, however, mouse event notifications come in via the keyboard +input stream. They are recognized by having the kmous capability +as a prefix. This is kind of klugey, but trying to wire in recognition of +a mouse key prefix without going through the function-key machinery would +be just too painful, and this turns out to imply having the prefix somewhere +in the function-key capabilities at terminal-type initialization.

+ +This kluge only works because kmous isn't actually used by any +historic terminal type or curses implementation we know of. Best +guess is it's a relic of some forgotten experiment in-house at Bell +Labs that didn't leave any traces in the publicly-distributed System V +terminfo files. If System V or XPG4 ever gets serious about using it +again, this kluge may have to change.

+ +Here are some more details about mouse event handling:

+ +The lib_mouse()code is logically split into a lower level that +accepts event reports in a device-dependent format and an upper level that +parses mouse gestures and filters events. The mediating data structure is a +circular queue of event structures.

+ +Functionally, the lower level's job is to pick up primitive events and +put them on the circular queue. This can happen in one of two ways: +either (a) _nc_mouse_event() detects a series of incoming +mouse reports and queues them, or (b) code in lib_getch.c detects the +kmous prefix in the keyboard input stream and calls _nc_mouse_inline +to queue up a series of adjacent mouse reports.

+ +In either case, _nc_mouse_parse() should be called after the +series is accepted to parse the digested mouse reports (low-level +events) into a gesture (a high-level or composite event). + +

Output and Screen Updating

+ +With the single exception of character echoes during a wgetnstr() +call (which simulates cooked-mode line editing in an ncurses window), +the library normally does all its output at refresh time.

+ +The main job is to go from the current state of the screen (as represented +in the curscr window structure) to the desired new state (as +represented in the newscr window structure), while doing as +little I/O as possible.

+ +The brains of this operation are the modules hashmap.c, +hardscroll.c and lib_doupdate.c; the latter two use +lib_mvcur.c. Essentially, what happens looks like this:

+ +The hashmap.c module tries to detect vertical motion +changes between the real and virtual screens. This information +is represented by the oldindex members in the newscr structure. +These are modified by vertical-motion and clear operations, and both are +re-initialized after each update. To this change-journalling +information, the hashmap code adds deductions made using a modified Heckel +algorithm on hash values generated from the line contents.

+ +The hardscroll.c module computes an optimum set of scroll, +insertion, and deletion operations to make the indices match. It calls +_nc_mvcur_scrolln() in lib_mvcur.c to do those motions.

+ +Then lib_doupdate.c goes to work. Its job is to do line-by-line +transformations of curscr lines to newscr lines. Its main +tool is the routine mvcur() in lib_mvcur.c. This routine +does cursor-movement optimization, attempting to get from given screen +location A to given location B in the fewest output characters possible.

+ +If you want to work on screen optimizations, you should use the fact +that (in the trace-enabled version of the library) enabling the +TRACE_TIMES trace level causes a report to be emitted after +each screen update giving the elapsed time and a count of characters +emitted during the update. You can use this to tell when an update +optimization improves efficiency.

+ +In the trace-enabled version of the library, it is also possible to disable +and re-enable various optimizations at runtime by tweaking the variable +_nc_optimize_enable. See the file include/curses.h.in +for mask values, near the end. + +

The Forms and Menu Libraries

+ +The forms and menu libraries should work reliably in any environment you +can port ncurses to. The only portability issue anywhere in them is what +flavor of regular expressions the built-in form field type TYPE_REGEXP +will recognize.

+ +The configuration code prefers the POSIX regex facility, modeled on +System V's, but will settle for BSD regexps if the former isn't available.

+ +Historical note: the panels code was written primarily to assist in +porting u386mon 2.0 (comp.sources.misc v14i001-4) to systems lacking +panels support; u386mon 2.10 and beyond use it. This version has been +slightly cleaned up for ncurses. + +

A Tour of the Terminfo Compiler

+ +The ncurses implementation of tic is rather complex +internally; it has to do a trying combination of missions. This starts +with the fact that, in addition to its normal duty of compiling +terminfo sources into loadable terminfo binaries, it has to be able to +handle termcap syntax and compile that too into terminfo entries.

+ +The implementation therefore starts with a table-driven, dual-mode +lexical analyzer (in comp_scan.c). The lexer chooses its +mode (termcap or terminfo) based on the first `,' or `:' it finds in +each entry. The lexer does all the work of recognizing capability +names and values; the grammar above it is trivial, just "parse entries +till you run out of file". + +

Translation of Non-use Capabilities

+ +Translation of most things besides use capabilities is pretty +straightforward. The lexical analyzer's tokenizer hands each capability +name to a hash function, which drives a table lookup. The table entry +yields an index which is used to look up the token type in another table, +and controls interpretation of the value.

+ +One possibly interesting aspect of the implementation is the way the +compiler tables are initialized. All the tables are generated by various +awk/sed/sh scripts from a master table include/Caps; these +scripts actually write C initializers which are linked to the compiler. +Furthermore, the hash table is generated in the same way, so it doesn't +have to be generated at compiler startup time (another benefit of this +organization is that the hash table can be in shareable text space).

+ +Thus, adding a new capability is usually pretty trivial, just a matter +of adding one line to the include/Caps file. We'll have more +to say about this in the section on Source-Form +Translation. + +

Use Capability Resolution

+ +The background problem that makes tic tricky isn't the capability +translation itself, it's the resolution of use capabilities. Older +versions would not handle forward use references for this reason +(that is, a using terminal always had to follow its use target in the +source file). By doing this, they got away with a simple implementation +tactic; compile everything as it blows by, then resolve uses from compiled +entries.

+ +This won't do for ncurses. The problem is that that the whole +compilation process has to be embeddable in the ncurses library +so that it can be called by the startup code to translate termcap +entries on the fly. The embedded version can't go promiscuously writing +everything it translates out to disk -- for one thing, it will typically +be running with non-root permissions.

+ +So our tic is designed to parse an entire terminfo file into a +doubly-linked circular list of entry structures in-core, and then do +use resolution in-memory before writing everything out. This +design has other advantages: it makes forward and back use-references +equally easy (so we get the latter for free), and it makes checking for +name collisions before they're written out easy to do.

+ +And this is exactly how the embedded version works. But the stand-alone +user-accessible version of tic partly reverts to the historical +strategy; it writes to disk (not keeping in core) any entry with no +use references.

+ +This is strictly a core-economy kluge, implemented because the +terminfo master file is large enough that some core-poor systems swap +like crazy when you compile it all in memory...there have been reports of +this process taking three hours, rather than the twenty seconds +or less typical on the author's development box.

+ +So. The executable tic passes the entry-parser a hook that +immediately writes out the referenced entry if it has no use +capabilities. The compiler main loop refrains from adding the entry +to the in-core list when this hook fires. If some other entry later +needs to reference an entry that got written immediately, that's OK; +the resolution code will fetch it off disk when it can't find it in +core.

+ +Name collisions will still be detected, just not as cleanly. The +write_entry() code complains before overwriting an entry that +postdates the time of tic's first call to +write_entry(), Thus it will complain about overwriting +entries newly made during the tic run, but not about +overwriting ones that predate it. + +

Source-Form Translation

+ +Another use of tic is to do source translation between various termcap +and terminfo formats. There are more variants out there than you might +think; the ones we know about are described in the captoinfo(1) +manual page.

+ +The translation output code (dump_entry() in +ncurses/dump_entry.c) is shared with the infocmp(1) +utility. It takes the same internal representation used to generate +the binary form and dumps it to standard output in a specified +format.

+ +The include/Caps file has a header comment describing ways you +can specify source translations for nonstandard capabilities just by +altering the master table. It's possible to set up capability aliasing +or tell the compiler to plain ignore a given capability without writing +any C code at all.

+ +For circumstances where you need to do algorithmic translation, there +are functions in parse_entry.c called after the parse of each +entry that are specifically intended to encapsulate such +translations. This, for example, is where the AIX box1 capability +get translated to an acsc string. + +

Other Utilities

+ +The infocmp utility is just a wrapper around the same +entry-dumping code used by tic for source translation. Perhaps +the one interesting aspect of the code is the use of a predicate +function passed in to dump_entry() to control which +capabilities are dumped. This is necessary in order to handle both +the ordinary De-compilation case and entry difference reporting.

+ +The tput and clear utilities just do an entry load +followed by a tputs() of a selected capability. + +

Style Tips for Developers

+ +See the TO-DO file in the top-level directory of the source distribution +for additions that would be particularly useful.

+ +The prefix _nc_ should be used on library public functions that are +not part of the curses API in order to prevent pollution of the +application namespace. + +If you have to add to or modify the function prototypes in curses.h.in, +read ncurses/MKlib_gen.sh first so you can avoid breaking XSI conformance. + +Please join the ncurses mailing list. See the INSTALL file in the +top level of the distribution for details on the list.

+ +Look for the string FIXME in source files to tag minor bugs +and potential problems that could use fixing.

+ +Don't try to auto-detect OS features in the main body of the C code. +That's the job of the configuration system.

+ +To hold down complexity, do make your code data-driven. Especially, +if you can drive logic from a table filtered out of +include/Caps, do it. If you find you need to augment the +data in that file in order to generate the proper table, that's still +preferable to ad-hoc code -- that's why the fifth field (flags) is +there.

+ +Have fun! + +

Porting Hints

+ +The following notes are intended to be a first step towards DOS and Macintosh +ports of the ncurses libraries.

+ +The following library modules are `pure curses'; they operate only on +the curses internal structures, do all output through other curses +calls (not including tputs() and putp()) and do not +call any other UNIX routines such as signal(2) or the stdio library. +Thus, they should not need to be modified for single-terminal +ports. + +

+ +lib_addch.c +lib_addstr.c +lib_bkgd.c +lib_box.c +lib_clear.c +lib_clrbot.c +lib_clreol.c +lib_delch.c +lib_delwin.c +lib_erase.c +lib_inchstr.c +lib_insch.c +lib_insdel.c +lib_insstr.c +lib_keyname.c +lib_move.c +lib_mvwin.c +lib_newwin.c +lib_overlay.c +lib_pad.c +lib_printw.c +lib_refresh.c +lib_scanw.c +lib_scroll.c +lib_scrreg.c +lib_set_term.c +lib_touch.c +lib_tparm.c +lib_tputs.c +lib_unctrl.c +lib_window.c +panel.c + +
+

+ +This module is pure curses, but calls outstr(): + +

+ +lib_getstr.c + +
+

+ +These modules are pure curses, except that they use tputs() +and putp(): + +

+ +lib_beep.c +lib_color.c +lib_endwin.c +lib_options.c +lib_slk.c +lib_vidattr.c + +
+

+ +This modules assist in POSIX emulation on non-POSIX systems: +

+
sigaction.c +
signal calls +
+ +The following source files will not be needed for a +single-terminal-type port. + +
+ +alloc_entry.c +captoinfo.c +clear.c +comp_captab.c +comp_error.c +comp_hash.c +comp_main.c +comp_parse.c +comp_scan.c +dump_entry.c +infocmp.c +parse_entry.c +read_entry.c +tput.c +write_entry.c + +
+

+ +The following modules will use open()/read()/write()/close()/lseek() on files, +but no other OS calls. + +

+
lib_screen.c +
used to read/write screen dumps +
lib_trace.c +
used to write trace data to the logfile +
+ +Modules that would have to be modified for a port start here:

+ +The following modules are `pure curses' but contain assumptions inappropriate +for a memory-mapped port. + +

+
lib_longname.c
assumes there may be multiple terminals +
lib_acs.c
assumes acs_map as a double indirection +
lib_mvcur.c
assumes cursor moves have variable cost +
lib_termcap.c
assumes there may be multiple terminals +
lib_ti.c
assumes there may be multiple terminals +
+ +The following modules use UNIX-specific calls: + +
+
lib_doupdate.c
input checking +
lib_getch.c
read() +
lib_initscr.c
getenv() +
lib_newterm.c +
lib_baudrate.c +
lib_kernel.c
various tty-manipulation and system calls +
lib_raw.c
various tty-manipulation calls +
lib_setup.c
various tty-manipulation calls +
lib_restart.c
various tty-manipulation calls +
lib_tstp.c
signal-manipulation calls +
lib_twait.c
gettimeofday(), select(). +
+ +
+
Eric S. Raymond <esr@snark.thyrsus.com>
+(Note: This is not the bug address!) + + diff --git a/ncurses/doc/html/index.html b/ncurses/doc/html/index.html new file mode 100644 index 0000000..cb2a90d --- /dev/null +++ b/ncurses/doc/html/index.html @@ -0,0 +1,57 @@ + + + + +Welcome to ncurses + + + + +

Welcome to ncurses

+From this index page you have access to these further documents +

+We also have HTML versions of all the ncurses manpages. + + + diff --git a/ncurses/doc/html/man/captoinfo.1m.html b/ncurses/doc/html/man/captoinfo.1m.html new file mode 100644 index 0000000..91b3150 --- /dev/null +++ b/ncurses/doc/html/man/captoinfo.1m.html @@ -0,0 +1,226 @@ + + + + +captoinfo 1m + + + + +

captoinfo 1m

+
+
+
+captoinfo(1m)                                             captoinfo(1m)
+
+
+
+
+
+

NAME

+       captoinfo  - convert a termcap description into a terminfo
+       description
+
+
+
+

SYNOPSIS

+       captoinfo [-vn width]  [-V] [-1] [-w width] file . . .
+
+
+
+

DESCRIPTION

+       captoinfo looks in file  for  termcap  descriptions.   For
+       each  one  found,  an  equivalent  terminfo description is
+       written to standard output.  Termcap tc  capabilities  are
+       translated directly to terminfo use capabilities.
+
+       If no file is given, then the environment variable TERMCAP
+       is used for the filename or entry.  If TERMCAP is  a  full
+       pathname to a file, only the terminal whose name is speci-
+       fied in the environment variable TERM  is  extracted  from
+       that  file.   If  the  environment variable TERMCAP is not
+       set, then the file /usr/share/terminfo is read.
+
+       -v   print out tracing information on  standard  error  as
+            the program runs.
+
+       -V   print  out the version of the program in use on stan-
+            dard error and exit.
+
+       -1   cause the fields to print out one to a line.   Other-
+            wise, the fields will be printed several to a line to
+            a maximum width of 60 characters.
+
+       -w   change the output to width characters.
+
+
+
+

FILES

+       /usr/share/terminfo Compiled     terminal      description
+                           database.
+
+
+
+

TRANSLATIONS FROM NONSTANDARD CAPABILITIES

+       Some  obsolete nonstandard capabilities will automatically
+       be translated into  standard  (SVr4/XSI  Curses)  terminfo
+       capabilities  by  captoinfo.   Whenever one of these auto-
+       matic translations is done,  the  program  will  issue  an
+       notification to stderr, inviting the user to check that it
+       has not mistakenly translated  a  completely  unknown  and
+       random capability and/or syntax error.
+
+
+       Nonstd   Std    From           Terminfo
+        name    name                 capability
+       -----------------------------------------------
+       BO       mr     AT&T    enter_reverse_mode
+       CI       vi     AT&T    cursor_invisible
+       CV       ve     AT&T    cursor_normal
+       DS       mh     AT&T    enter_dim_mode
+       EE       me     AT&T    exit_attribute_mode
+       FE       LF     AT&T    label_on
+       FL       LO     AT&T    label_off
+       XS       mk     AT&T    enter_secure_mode
+       EN       @7     XENIX   key_end
+       GE       ae     XENIX   exit_alt_charset_mode
+       GS       as     XENIX   enter_alt_charset_mode
+       HM       kh     XENIX   key_home
+
+       LD       kL     XENIX   key_dl
+       PD       kN     XENIX   key_npage
+       PN       po     XENIX   prtr_off
+       PS       pf     XENIX   prtr_on
+       PU       kP     XENIX   key_ppage
+       RT       @8     XENIX   kent
+       UP       ku     XENIX   kcuu1
+       KA       k;     Tek     key_f10
+       KB       F1     Tek     key_f11
+       KC       F2     Tek     key_f12
+       KD       F3     Tek     key_f13
+       KE       F4     Tek     key_f14
+       KF       F5     Tek     key_f15
+       BC       Sb     Tek     set_background
+       FC       Sf     Tek     set_foreground
+       HS       mh     Iris    enter_dim_mode
+
+       XENIX  termcap  also used to have a set of extension capa-
+       bilities for forms drawing, designed to take advantage  of
+       the IBM PC high-half graphics.  They were as follows:
+
+
+       Cap          Graphic
+       -----------------------------
+       G2    upper left
+       G3    lower left
+       G1    upper right
+       G4    lower right
+       GR    pointing right
+       GL    pointing left
+       GU    pointing up
+       GD    pointing down
+       GH    horizontal line
+       GV    vertical line
+       GC    intersection
+       G6    upper left
+       G7    lower left
+       G5    upper right
+       G8    lower right
+       Gr    tee pointing right
+       Gr    tee pointing left
+       Gu    tee pointing up
+       Gd    tee pointing down
+       Gh    horizontal line
+       Gv    vertical line
+       Gc    intersection
+       GG    acs magic cookie count
+
+       If  the  single-line  capabilities occur in an entry, they
+       will automatically be composed into an acsc  string.   The
+       double-line capabilities and GG are discarded with a warn-
+       ing message.
+
+       IBM's AIX has a terminfo facility descended from SVr1 ter-
+       minfo but incompatible with the SVr4 format. The following
+       AIX extensions are automatically translated:
+
+        IBM    XSI
+       -------------
+       ksel    kslt
+       kbtab   kcbt
+       font0   s0ds
+       font1   s1ds
+       font2   s2ds
+       font3   s3ds
+
+       Additionally, the AIX box1 capability  will  be  automati-
+       cally translated to an acsc string.
+
+       Hewlett-Packard's  terminfo  library supports two nonstan-
+       dard terminfo capabilities meml  (memory  lock)  and  memu
+       (memory  unlock).   These will be discarded with a warning
+       message.
+
+
+
+

NOTES

+       This utility is actually a link to tic(1m), running in  -I
+       mode.  You can use other tic options such as -f and  -x.
+
+       The  trace option is not identical to SVr4's.  Under SVr4,
+       instead of following the -v with  a  trace  level  n,  you
+       repeat it n times.
+
+
+
+

SEE ALSO

+       infocmp(1m), curses(3x), terminfo(5)
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+

AUTHOR

+       Eric S. Raymond <esr@snark.thyrsus.com>
+
+
+
+                                                          captoinfo(1m)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/clear.1.html b/ncurses/doc/html/man/clear.1.html new file mode 100644 index 0000000..22661b5 --- /dev/null +++ b/ncurses/doc/html/man/clear.1.html @@ -0,0 +1,84 @@ + + + + +clear 1 + + + + +

clear 1

+
+
+
+clear(1)                                                       clear(1)
+
+
+
+
+
+

NAME

+       clear - clear the terminal screen
+
+
+
+

SYNOPSIS

+       clear
+
+
+
+

DESCRIPTION

+       clear clears your screen if this is possible.  It looks in
+       the environment for the terminal type and then in the ter-
+       minfo database to figure out how to clear the screen.
+
+       clear  ignores  any  command-line  parameters  that may be
+       present.
+
+
+
+

SEE ALSO

+       tput(1), terminfo(5)
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                               clear(1)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_add_wch.3x.html b/ncurses/doc/html/man/curs_add_wch.3x.html new file mode 100644 index 0000000..af7c895 --- /dev/null +++ b/ncurses/doc/html/man/curs_add_wch.3x.html @@ -0,0 +1,140 @@ + + + + +curs_add_wch 3x + + + + +

curs_add_wch 3x

+
+
+
+curs_add_wch(3x)                                       curs_add_wch(3x)
+
+
+
+
+
+

NAME

+       add_wch,   wadd_wch,  mvadd_wch,  mvwadd_wch,  echo_wchar,
+       wecho_wchar - add a complex character and rendition  to  a
+       curses window, then advance the cursor
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int add_wch( const cchar_t *wch );
+       int wadd_wch( WINDOW *win, const cchar_t *wch );
+       int mvadd_wch( int y, int x, const cchar_t *wch );
+       int  mvwadd_wch(  WINDOW *win, int y, int x, const cchar_t
+       *wch );
+       int echo_wchar( const cchar_t *wch );
+       int wecho_wchar( WINDOW *win, const cchar_t *wch );
+
+
+
+

DESCRIPTION

+       The add_wch, wadd_wch, mvadd_wch, and mvwadd_wch functions
+       put the complex character wch into the given window at its
+       current position, which is then advanced.  These functions
+       perform  wrapping and special-character processing as fol-
+       lows:
+
+       -    If wch refers to a spacing character, then any previ-
+            ous  character  at  that  location is removed.  A new
+            character specified by wch is placed at that location
+            with  rendition  specified  by  wch.  The cursor then
+            advances to the next spacing character on the screen.
+
+       -    If  wch refers to a non-spacing character, all previ-
+            ous characters at that location are  preserved.   The
+            non-spacing  characters of wch are added to the spac-
+            ing complex character, and the rendition specified by
+            wch is ignored.
+
+       -    If  the  character  part  of  wch  is a tab, newline,
+            backspace or other control character, the  window  is
+            updated and the cursor moves as if addch were called.
+
+       The echo_wchar function is functionally  equivalent  to  a
+       call to add_wch followed by a call to refresh.  Similarly,
+       the wecho_wchar is functionally equivalent to  a  call  to
+       wadd_wch  followed  by  a call to wrefresh.  The knowledge
+       that only a single character is being output is taken into
+       consideration and, for non-control characters, a consider-
+       able performance gain might be seen by  using  the  *echo*
+       functions instead of their equivalents.
+
+
+
+

RETURN VALUES

+       All routines return the integer ERR upon failure and OK on
+       success.
+
+
+
+

NOTES

+       Note that add_wch, mvadd_wch, mvwadd_wch,  and  echo_wchar
+       may be macros.
+
+
+
+

PORTABILITY

+       All  these functions are described in the XSI Curses stan-
+       dard, Issue 4.  The defaults specified  for  forms-drawing
+       characters apply in the POSIX locale.
+
+       XSI  documents  constants  beginning  with WACS_ which are
+       used for line-drawing.  Those  are  not  currently  imple-
+       mented in ncurses.
+
+
+
+

SEE ALSO

+       curses(3x), curs_addch(3x), curs_attr(3x), curs_clear(3x),
+       curs_outopts(3x), curs_refresh(3x), putwc(3)
+
+
+
+                                                       curs_add_wch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_add_wchstr.3x.html b/ncurses/doc/html/man/curs_add_wchstr.3x.html new file mode 100644 index 0000000..11d93b1 --- /dev/null +++ b/ncurses/doc/html/man/curs_add_wchstr.3x.html @@ -0,0 +1,127 @@ + + + + +curs_add_wchstr 3x + + + + +

curs_add_wchstr 3x

+
+
+
+curs_add_wchstr(3x)                                 curs_add_wchstr(3x)
+
+
+
+
+
+

NAME

+       add_wchstr,    add_wchnstr,   wadd_wchstr,   wadd_wchnstr,
+       mvadd_wchstr, mvadd_wchnstr, mvwadd_wchstr, mvwadd_wchnstr
+       - add an array of complex characters (and attributes) to a
+       curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int add_wchstr(const cchar_t *wchstr);
+       int add_wchnstr(const cchar_t *wchstr, int n);
+       int wadd_wchstr(WINDOW * win, const cchar_t *wchstr);
+       int wadd_wchnstr(WINDOW * win, const cchar_t *wchstr, int n);
+       int mvadd_wchstr(int y, int x, const cchar_t *wchstr);
+       int mvadd_wchnstr(int y, int x, const cchar_t *wchstr, int n);
+       int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wchstr);
+       int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wchstr, int n);
+
+
+
+

DESCRIPTION

+       These routines copy the array of complex characters wchstr
+       into  the  window image structure at and after the current
+       cursor position.  The four routines with  n  as  the  last
+       argument  copy  at  most n elements, but no more than will
+       fit on the line.  If n=-1 then the whole array is  copied,
+       to  the  maximum number of characters that will fit on the
+       line.
+
+       The window cursor is not advanced.   These  routines  work
+       faster than waddnstr.  On the other hand, they do not per-
+       form checking (such as for the newline, backspace, or car-
+       riage  return characters), they do not advance the current
+       cursor position, they do not expand other control  charac-
+       ters  to  ^-escapes,  and  they  truncate the string if it
+       crosses the right margin, rather than wrapping  it  around
+       to the new line.
+
+       These  routines  end  successfully  on encountering a null
+       cchar_t, or when they have filled the current line.  If  a
+       complex  character cannot completely fit at the end of the
+       current line, the remaining columns are  filled  with  the
+       background character and rendition.
+
+
+
+

NOTES

+       All functions except wadd_wchnstr may be macros.
+
+
+
+

RETURN VALUES

+       All routines return the integer ERR upon failure and OK on
+       success.
+
+
+
+

PORTABILITY

+       All these entry points are described  in  the  XSI  Curses
+       standard, Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x), curs_addchstr(3x), curs_addwstr(3x)
+
+
+
+                                                    curs_add_wchstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_addch.3x.html b/ncurses/doc/html/man/curs_addch.3x.html new file mode 100644 index 0000000..162532c --- /dev/null +++ b/ncurses/doc/html/man/curs_addch.3x.html @@ -0,0 +1,210 @@ + + + + +curs_addch 3x + + + + +

curs_addch 3x

+
+
+
+curs_addch(3x)                                           curs_addch(3x)
+
+
+
+
+
+

NAME

+       addch,  waddch,  mvaddch,  mvwaddch, echochar, wechochar -
+       add a character (with attributes) to a curses window, then
+       advance the cursor
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int addch(const chtype ch);
+       int waddch(WINDOW *win, const chtype ch);
+       int mvaddch(int y, int x, const chtype ch);
+       int mvwaddch(WINDOW *win, int y, int x, const chtype ch);
+       int echochar(const chtype ch);
+       int wechochar(WINDOW *win, const chtype ch);
+
+
+
+

DESCRIPTION

+       The  addch,  waddch, mvaddch and mvwaddch routines put the
+       character ch into the given window at its  current  window
+       position,  which  is then advanced.  They are analogous to
+       putchar in stdio(3).  If the advance is at the right  mar-
+       gin,  the  cursor  automatically wraps to the beginning of
+       the next line.  At the bottom  of  the  current  scrolling
+       region,  if  scrollok  is enabled, the scrolling region is
+       scrolled up one line.
+
+       If ch is a tab, newline, or backspace, the cursor is moved
+       appropriately within the window.  Backspace moves the cur-
+       sor one character left; at the left edge of  a  window  it
+       does  nothing.   Newline  does  a clrtoeol, then moves the
+       cursor to  the  window  left  margin  on  the  next  line,
+       scrolling  the  window if on the last line.  Tabs are con-
+       sidered to be at every eighth column.   The  tab  interval
+       may be altered by setting the TABSIZE variable.
+
+       If ch is any control character other than tab, newline, or
+       backspace, it is drawn  in  ^X  notation.   Calling  winch
+       after adding a control character does not return the char-
+       acter itself, but instead returns the ^-representation  of
+       the control character.
+
+       Video attributes can be combined with a character argument
+       passed to addch or related functions by logical-ORing them
+       into  the  character.   (Thus, text, including attributes,
+       can be copied from one place to  another  using  inch  and
+       addch.)   See  the curs_attr(3x) page for values of prede-
+       fined video attribute constants that can be usefully OR'ed
+       into characters.
+
+       The  echochar  and  wechochar routines are equivalent to a
+       call to addch followed by a call to refresh, or a call  to
+       waddch followed by a call to wrefresh.  The knowledge that
+       only a single character is being output is used  and,  for
+       non-control  characters,  a  considerable performance gain
+       may be seen by  using  these  routines  instead  of  their
+       equivalents.
+
+   Line Graphics
+       The  following  variables  may be used to add line drawing
+       characters to the screen with routines of the  addch  fam-
+       ily.   The  default  character listed below is used if the
+       acsc  capability  does  not  define  a   terminal-specific
+       replacement  for  it.   The  names  are  taken  from VT100
+       nomenclature.
+
+
+       Name           Default   Description
+       --------------------------------------------------
+       ACS_BLOCK      #         solid square block
+       ACS_BOARD      #         board of squares
+       ACS_BTEE       +         bottom tee
+       ACS_BULLET     o         bullet
+       ACS_CKBOARD    :         checker board (stipple)
+       ACS_DARROW     v         arrow pointing down
+       ACS_DEGREE     '         degree symbol
+       ACS_DIAMOND    +         diamond
+       ACS_GEQUAL     >         greater-than-or-equal-to
+       ACS_HLINE      -         horizontal line
+       ACS_LANTERN    #         lantern symbol
+       ACS_LARROW     <         arrow pointing left
+       ACS_LEQUAL     <         less-than-or-equal-to
+       ACS_LLCORNER   +         lower left-hand corner
+       ACS_LRCORNER   +         lower right-hand corner
+       ACS_LTEE       +         left tee
+       ACS_NEQUAL     !         not-equal
+       ACS_PI         *         greek pi
+       ACS_PLMINUS    #         plus/minus
+       ACS_PLUS       +         plus
+       ACS_RARROW     >         arrow pointing right
+       ACS_RTEE       +         right tee
+       ACS_S1         -         scan line 1
+       ACS_S3         -         scan line 3
+       ACS_S7         -         scan line 7
+       ACS_S9         _         scan line 9
+       ACS_STERLING   f         pound-sterling symbol
+       ACS_TTEE       +         top tee
+       ACS_UARROW     ^         arrow pointing up
+       ACS_ULCORNER   +         upper left-hand corner
+       ACS_URCORNER   +         upper right-hand corner
+       ACS_VLINE      |         vertical line
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon failure and OK on
+       success  (the  SVr4 manuals specify only "an integer value
+       other than ERR") upon successful completion, unless other-
+       wise noted in the preceding routine descriptions.
+
+
+
+

NOTES

+       Note  that  addch,  mvaddch, mvwaddch, and echochar may be
+       macros.
+
+
+
+

PORTABILITY

+       All these functions are described in the XSI Curses  stan-
+       dard,  Issue  4.  The defaults specified for forms-drawing
+       characters apply in the POSIX locale.
+
+       Some ACS symbols (ACS_S3, ACS_S7, ACS_LEQUAL,  ACS_GEQUAL,
+       ACS_PI,  ACS_NEQUAL,  ACS_STERLING) were not documented in
+       any publicly released System V.   However,  many  publicly
+       available  terminfos  include  acsc strings in which their
+       key characters (pryz{|}) are embedded, and  a  second-hand
+       list  of  their  character descriptions has come to light.
+       The  ACS-prefixed  names  for  them  were   invented   for
+       ncurses(3x).
+
+       The  TABSIZE  variable  is implemented in some versions of
+       curses, but is not part of X/Open curses.
+
+       If ch is a carriage return, the cursor  is  moved  to  the
+       beginning  of the current row of the window.  This is true
+       of other implementations, but is not documented.
+
+
+
+

SEE ALSO

+       curses(3x), curs_attr(3x), curs_clear(3x),  curs_inch(3x),
+       curs_outopts(3x), curs_refresh(3x), putc(3).
+
+       Comparable  functions  in  the  wide-character  (ncursesw)
+       library are described in curs_add_wch(3x).
+
+
+
+                                                         curs_addch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_addchstr.3x.html b/ncurses/doc/html/man/curs_addchstr.3x.html new file mode 100644 index 0000000..2d342f5 --- /dev/null +++ b/ncurses/doc/html/man/curs_addchstr.3x.html @@ -0,0 +1,129 @@ + + + + +curs_addchstr 3x + + + + +

curs_addchstr 3x

+
+
+
+curs_addchstr(3x)                                     curs_addchstr(3x)
+
+
+
+
+
+

NAME

+       addchstr, addchnstr, waddchstr, waddchnstr, mvaddchstr,
+       mvaddchnstr, mvwaddchstr, mvwaddchnstr - add a string of
+       characters (and attributes) to a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int addchstr(const chtype *chstr);
+       int addchnstr(const chtype *chstr, int n);
+       int waddchstr(WINDOW *win, const chtype *chstr);
+       int waddchnstr(WINDOW *win, const chtype *chstr, int n);
+       int mvaddchstr(int y, int x, const chtype *chstr);
+       int mvaddchnstr(int y, int x, const chtype *chstr, int n);
+       int mvwaddchstr(WINDOW *win, int y, int  x,  const  chtype
+       *chstr);
+       int  mvwaddchnstr(WINDOW  *win, int y, int x, const chtype
+       *chstr, int n);
+
+
+
+

DESCRIPTION

+       These routines copy chstr into the window image  structure
+       at  and  after the current cursor position.  The four rou-
+       tines with n as the last argument copy at most n elements,
+       but  no  more than will fit on the line.  If n=-1 then the
+       whole string is copied, to the maximum number  of  charac-
+       ters that will fit on the line.
+
+       The window cursor is not advanced, and these routines work
+       faster than waddnstr.  On the other hand, they do not per-
+       form  any  kind  of  checking  (such  as  for the newline,
+       backspace, or carriage return characters), they do not ad-
+       vance the current cursor position, they do not expand oth-
+       er control characters to ^-escapes, and they truncate  the
+       string  if  it crosses the right margin, rather than wrap-
+       ping it around to the new line.
+
+
+
+

RETURN VALUES

+       All routines return the integer ERR upon failure and OK on
+       success  (the  SVr4 manuals specify only "an integer value
+       other than ERR") upon successful completion, unless other-
+       wise noted in the preceding routine descriptions.
+
+       X/Open  does not define any error conditions.  This imple-
+       mentation returns an error if the window pointer is  null.
+
+
+
+

NOTES

+       Note that all routines except waddchnstr may be macros.
+
+
+
+

PORTABILITY

+       These  entry  points are described in the XSI Curses stan-
+       dard, Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x).
+
+       Comparable functions in the wide-character (ncursesw)  li-
+       brary are described in curs_add_wchstr(3x).
+
+
+
+                                                      curs_addchstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_addstr.3x.html b/ncurses/doc/html/man/curs_addstr.3x.html new file mode 100644 index 0000000..ccc93a3 --- /dev/null +++ b/ncurses/doc/html/man/curs_addstr.3x.html @@ -0,0 +1,121 @@ + + + + +curs_addstr 3x + + + + +

curs_addstr 3x

+
+
+
+curs_addstr(3x)                                         curs_addstr(3x)
+
+
+
+
+
+

NAME

+       addstr, addnstr, waddstr, waddnstr, mvaddstr, mvaddnstr,
+       mvwaddstr, mvwaddnstr - add a string of characters to a
+       curses window and advance cursor
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int addstr(const char *str);
+       int addnstr(const char *str, int n);
+       int waddstr(WINDOW *win, const char *str);
+       int waddnstr(WINDOW *win, const char *str, int n);
+       int mvaddstr(int y, int x, const char *str);
+       int mvaddnstr(int y, int x, const char *str, int n);
+       int mvwaddstr(WINDOW *win, int y, int x, const char *str);
+       int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n);
+
+
+
+

DESCRIPTION

+       These routines write the characters of the (null-terminat-
+       ed) character string str on the given window.  It is simi-
+       lar  to  calling  waddch  once  for  each character in the
+       string.  The four routines with n  as  the  last  argument
+       write  at  most n characters.  If n is -1, then the entire
+       string will be added, up to the maximum number of  charac-
+       ters  that  will  fit  on the line, or until a terminating
+       null is reached.
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon failure and OK on
+       success  (the  SVr4 manuals specify only "an integer value
+       other than ERR") upon successful completion.
+
+       X/Open does not define any error conditions.  This  imple-
+       mentation  returns  an error if the window pointer is null
+       or if the string pointer is null or if  the  corresponding
+       calls to waddch return an error.
+
+
+
+

NOTES

+       Note  that  all  of  these  routines  except  waddstr  and
+       waddnstr may be macros.
+
+
+
+

PORTABILITY

+       All these entry points are described  in  the  XSI  Curses
+       standard,  Issue  4.  The XSI errors EILSEQ and EOVERFLOW,
+       associated with extended-level conformance,  are  not  yet
+       detected.
+
+
+
+

SEE ALSO

+       curses(3x), curs_addch(3x).
+
+
+
+                                                        curs_addstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_addwstr.3x.html b/ncurses/doc/html/man/curs_addwstr.3x.html new file mode 100644 index 0000000..e0bd724 --- /dev/null +++ b/ncurses/doc/html/man/curs_addwstr.3x.html @@ -0,0 +1,120 @@ + + + + +curs_addwstr 3x + + + + +

curs_addwstr 3x

+
+
+
+curs_addwstr(3x)                                       curs_addwstr(3x)
+
+
+
+
+
+

NAME

+       addwstr, addnwstr, waddwstr, waddnwstr, mvaddwstr,
+       mvaddnwstr, mvwaddwstr, mvwaddnwstr - add a string of wide
+       characters to a curses window and advance cursor
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int addwstr(const wchar_t *wstr);
+       int addnwstr(const wchar_t *wstr, int n);
+       int waddwstr(WINDOW *win, const wchar_t *wstr);
+       int waddnwstr(WINDOW *win, const wchar_t *wstr, int n);
+       int mvaddwstr(int y, int x, const wchar_t *wstr);
+       int mvaddnwstr(int y, int x, const wchar_t *wstr, int n);
+       int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr);
+       int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
+
+
+
+

DESCRIPTION

+       These routines write the characters of the (null-terminat-
+       ed) wchar_t character string wstr on the given window.  It
+       is  similar  to constructing a cchar_t for each wchar_t in
+       the  string,  then  calling  wadd_wch  for  the  resulting
+       cchar_t.
+
+       The mv routines perform cursor movement once, before writ-
+       ing any characters.  Thereafter, the cursor is advanced as
+       a side-effect of writing to the window.
+
+       The  four  routines  with  n as the last argument write at
+       most n wchar_t characters.  If n is -1,  then  the  entire
+       string  will be added, up to the maximum number of charac-
+       ters that will fit on the line,  or  until  a  terminating
+       null is reached.
+
+
+
+

RETURN VALUES

+       All routines return the integer ERR upon failure and OK on
+       success.
+
+
+
+

NOTES

+       Note that all of these routines except  waddnwstr  may  be
+       macros.
+
+
+
+

PORTABILITY

+       All  these  entry  points  are described in the XSI Curses
+       standard, Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x), curs_add_wch(3x)
+
+
+
+                                                       curs_addwstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_attr.3x.html b/ncurses/doc/html/man/curs_attr.3x.html new file mode 100644 index 0000000..9a7b2a4 --- /dev/null +++ b/ncurses/doc/html/man/curs_attr.3x.html @@ -0,0 +1,263 @@ + + + + +curs_attr 3x + + + + +

curs_attr 3x

+
+
+
+curs_attr(3x)                                             curs_attr(3x)
+
+
+
+
+
+

NAME

+       attroff, wattroff, attron, wattron, attrset, wattrset,
+       color_set, wcolor_set, standend, wstandend, standout,
+       wstandout, attr_get, wattr_get, attr_off, wattr_off,
+       attr_on, wattr_on, attr_set, wattr_set, chgat, wchgat,
+       mvchgat, mvwchgat, PAIR_NUMBER - curses character and
+       window attribute control routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+       int attroff(int attrs);
+       int wattroff(WINDOW *win, int attrs);
+       int attron(int attrs);
+       int wattron(WINDOW *win, int attrs);
+       int attrset(int attrs);
+       int wattrset(WINDOW *win, int attrs);
+       int color_set(short color_pair_number, void* opts);
+       int wcolor_set(WINDOW *win, short color_pair_number,
+             void* opts);
+       int standend(void);
+       int wstandend(WINDOW *win);
+       int standout(void);
+       int wstandout(WINDOW *win);
+       int attr_get(attr_t *attrs, short *pair, void *opts);
+       int wattr_get(WINDOW *win, attr_t *attrs, short *pair,
+              void *opts);
+       int attr_off(attr_t attrs, void *opts);
+       int wattr_off(WINDOW *win, attr_t attrs, void *opts);
+       int attr_on(attr_t attrs, void *opts);
+       int wattr_on(WINDOW *win, attr_t attrs, void *opts);
+       int attr_set(attr_t attrs, short pair, void *opts);
+       int wattr_set(WINDOW *win, attr_t attrs, short pair,  void
+       *opts);
+       int chgat(int n, attr_t attr, short color,
+             const void *opts)
+       int wchgat(WINDOW *win, int n, attr_t attr,
+             short color, const void *opts)
+       int mvchgat(int y, int x, int n, attr_t attr,
+             short color, const void *opts)
+       int mvwchgat(WINDOW *win, int y, int x, int n,
+             attr_t attr, short color, const void *opts)
+
+
+
+

DESCRIPTION

+       These  routines  manipulate  the current attributes of the
+       named window.  The current attributes of a window apply to
+       all characters that are written into the window with wadd-
+       ch, waddstr and wprintw.  Attributes are a property of the
+       character,   and  move  with  the  character  through  any
+       scrolling and insert/delete line/character operations.  To
+       the  extent  possible,  they  are displayed as appropriate
+       modifications to the graphic rendition of  characters  put
+       on the screen.
+
+       The  routine  attrset  sets  the current attributes of the
+       given window to attrs.  The routine attroff turns off  the
+       named  attributes  without turning any other attributes on
+       or off.  The routine attron turns on the named  attributes
+       without affecting any others.  The routine standout is the
+       same as attron(A_STANDOUT).  The routine standend  is  the
+       same as attrset(A_NORMAL) or attrset(0), that is, it turns
+       off all attributes.
+
+       The attrset and related routines do  not  affect  the  at-
+       tributes  used  when  erasing portions of the window.  See
+       curs_bkgd(3x) for functions which  modify  the  attributes
+       used for erasing and clearing.
+
+       The  routine color_set sets the current color of the given
+       window to the foreground/background combination  described
+       by  the  color_pair_number. The parameter opts is reserved
+       for future use, applications must supply a null pointer.
+
+       The routine wattr_get returns the  current  attribute  and
+       color pair for the given window; attr_get returns the cur-
+       rent attribute and color pair for stdscr.   The  remaining
+       attr_*  functions  operate  exactly like the corresponding
+       attr* functions, except that they take arguments  of  type
+       attr_t rather than int.
+
+       The routine chgat changes the attributes of a given number
+       of characters starting at the current cursor  location  of
+       stdscr.   It  does not update the cursor and does not per-
+       form wrapping.  A character count of -1  or  greater  than
+       the  remaining window width means to change attributes all
+       the way to the end of the current line.  The wchgat  func-
+       tion generalizes this to any window; the mvwchgat function
+       does a cursor move before acting.  In these functions, the
+       color  argument is a color-pair index (as in the first ar-
+       gument of init_pair, see curs_color(3x)).  The opts  argu-
+       ment is not presently used, but is reserved for the future
+       (leave it NULL).
+
+   Attributes
+       The following video attributes, defined in <curses.h>, can
+       be passed to the routines attron, attroff, and attrset, or
+       OR'd with the characters passed to addch.
+
+
+        A_NORMAL        Normal display (no highlight)
+        A_STANDOUT      Best highlighting mode of the terminal.
+        A_UNDERLINE     Underlining
+        A_REVERSE       Reverse video
+        A_BLINK         Blinking
+        A_DIM           Half bright
+        A_BOLD          Extra bright or bold
+        A_PROTECT       Protected mode
+        A_INVIS         Invisible or blank mode
+        A_ALTCHARSET    Alternate character set
+        A_CHARTEXT      Bit-mask to extract a character
+        COLOR_PAIR(n)   Color-pair number n
+
+       The following macro is the reverse of COLOR_PAIR(n):
+
+       PAIR_NUMBER(attrs) Returns the pair number associated
+                          with the COLOR_PAIR(n) attribute.
+
+       The return values of many of these routines are not  mean-
+       ingful (they are implemented as macro-expanded assignments
+       and simply return their argument).  The SVr4  manual  page
+       claims (falsely) that these routines always return 1.
+
+
+
+

NOTES

+       Note  that  attroff,  wattroff,  attron, wattron, attrset,
+       wattrset, standend and standout may be macros.
+
+       COLOR_PAIR values can only be OR'd with attributes if  the
+       pair  number  is  less  than 256.  The alternate functions
+       such as color_set can pass a color  pair  value  directly.
+       However,  ncurses  ABI 4 and 5 simply OR this value within
+       the alternate functions.  You must use ncurses  ABI  6  to
+       support more than 256 color pairs.
+
+
+
+

PORTABILITY

+       These  functions are supported in the XSI Curses standard,
+       Issue 4.  The standard  defined  the  dedicated  type  for
+       highlights,  attr_t,  which is not defined in SVr4 curses.
+       The functions taking attr_t arguments  are  not  supported
+       under SVr4.
+
+       The XSI Curses standard states that whether the tradition-
+       al functions  attron/attroff/attrset  can  manipulate  at-
+       tributes  other  than  A_BLINK,  A_BOLD, A_DIM, A_REVERSE,
+       A_STANDOUT, or A_UNDERLINE is "unspecified".   Under  this
+       implementation  as  well  as  SVr4 curses, these functions
+       correctly manipulate all other  highlights  (specifically,
+       A_ALTCHARSET, A_PROTECT, and A_INVIS).
+
+       XSI  Curses added the new entry points, attr_get, attr_on,
+       attr_off, attr_set, wattr_on, wattr_off,  wattr_get,  wat-
+       tr_set.   These  are intended to work with a new series of
+       highlight macros prefixed with WA_.
+
+       Older versions of this library did not force an update  of
+       the  screen when changing the attributes.  Use touchwin to
+       force the screen to match the updated attributes.
+
+
+        WA_NORMAL       Normal display (no highlight)
+        WA_STANDOUT     Best highlighting mode of the terminal.
+        WA_UNDERLINE    Underlining
+        WA_REVERSE      Reverse video
+        WA_BLINK        Blinking
+        WA_DIM          Half bright
+        WA_BOLD         Extra bright or bold
+        WA_ALTCHARSET   Alternate character set
+
+       The XSI curses standard specifies that each pair of corre-
+       sponding  A_  and WA_-using functions operates on the same
+       current-highlight information.
+
+       The XSI standard extended conformance level adds new high-
+       lights A_HORIZONTAL, A_LEFT, A_LOW, A_RIGHT, A_TOP, A_VER-
+       TICAL (and corresponding WA_ macros for each)  which  this
+       implementation does not yet support.
+
+
+
+

RETURN VALUE

+       All  routines  return the integer OK on success, or ERR on
+       failure.
+
+       X/Open does not define any error conditions.
+
+       This implementation returns an error if the window pointer
+       is  null.  The wcolor_set function returns an error if the
+       color  pair  parameter  is  outside  the   range   0..COL-
+       OR_PAIRS-1.   This  implementation  also provides getattrs
+       for compatibility with older versions of curses.
+
+
+
+

SEE ALSO

+       curses(3x),        curs_addch(3x),        curs_addstr(3x),
+       curs_bkgd(3x), curs_printw(3x)
+
+
+
+                                                          curs_attr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_beep.3x.html b/ncurses/doc/html/man/curs_beep.3x.html new file mode 100644 index 0000000..271acc1 --- /dev/null +++ b/ncurses/doc/html/man/curs_beep.3x.html @@ -0,0 +1,106 @@ + + + + +curs_beep 3x + + + + +

curs_beep 3x

+
+
+
+curs_beep(3x)                                             curs_beep(3x)
+
+
+
+
+
+

NAME

+       beep, flash - curses bell and screen flash routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int beep(void);
+       int flash(void);
+
+
+
+

DESCRIPTION

+       The beep and flash routines are used to alert the terminal
+       user.  The routine beep sounds an  audible  alarm  on  the
+       terminal,  if  possible;  otherwise  it flashes the screen
+       (visible bell).  The routine flash flashes the screen, and
+       if  that  is  not  possible, sounds the alert.  If neither
+       alert is possible, nothing happens.  Nearly all  terminals
+       have  an  audible  alert (bell or beep), but only some can
+       flash the screen.
+
+
+
+

RETURN VALUE

+       These routines return OK if they  succeed  in  beeping  or
+       flashing, ERR otherwise.
+
+
+
+

EXTENSIONS

+       SVr4's  beep  and flash routines always returned OK, so it
+       was not possible to tell when the beep or flash failed.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue  4.  Like SVr4, it specifies that they always return
+       OK.
+
+
+
+

SEE ALSO

+       curses(3x)
+
+
+
+                                                          curs_beep(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_bkgd.3x.html b/ncurses/doc/html/man/curs_bkgd.3x.html new file mode 100644 index 0000000..e73f90f --- /dev/null +++ b/ncurses/doc/html/man/curs_bkgd.3x.html @@ -0,0 +1,131 @@ + + + + +curs_bkgd 3x + + + + +

curs_bkgd 3x

+
+
+
+curs_bkgd(3x)                                             curs_bkgd(3x)
+
+
+
+
+
+

NAME

+       bkgdset,  wbkgdset,  bkgd,  wbkgd, getbkgd - curses window
+       background manipulation routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       void bkgdset(chtype ch);
+       void wbkgdset(WINDOW *win, chtype ch);
+       int bkgd(chtype ch);
+       int wbkgd(WINDOW *win, chtype ch);
+       chtype getbkgd(WINDOW *win);
+
+
+
+

DESCRIPTION

+       The bkgdset and wbkgdset  routines  manipulate  the  back-
+       ground  of  the  named window.  The window background is a
+       chtype consisting of any combination of attributes  (i.e.,
+       rendition)  and  a  character.   The attribute part of the
+       background is combined (OR'ed) with all non-blank  charac-
+       ters  that  are written into the window with waddch.  Both
+       the character and attribute parts of  the  background  are
+       combined   with  the  blank  characters.   The  background
+       becomes a property of the character  and  moves  with  the
+       character   through   any   scrolling   and  insert/delete
+       line/character operations.
+
+       To the extent  possible  on  a  particular  terminal,  the
+       attribute  part  of  the  background  is  displayed as the
+       graphic rendition of the character put on the screen.
+
+       The bkgd and wbkgd functions set the  background  property
+       of  the  current  or  specified window and then apply this
+       setting to every character position in that window:
+
+              The rendition of every character on the  screen  is
+              changed to the new background rendition.
+
+              Wherever  the  former background character appears,
+              it is changed to the new background character.
+
+       The getbkgd function returns the  given  window's  current
+       background character/attribute pair.
+
+
+
+

RETURN VALUE

+       The  routines  bkgd  and wbkgd return the integer OK.  The
+       SVr4.0 manual says "or a non-negative integer  if  immedok
+       is set", but this appears to be an error.
+
+
+
+

NOTES

+       Note that bkgdset and bkgd may be macros.
+
+
+
+

PORTABILITY

+       These  functions are described in the XSI Curses standard,
+       Issue 4.  It specifies that bkgd and wbkgd return  ERR  on
+       failure.  but gives no failure conditions.
+
+
+
+

SEE ALSO

+       curses(3x),   curs_addch(3x),   curs_attr(3x),   curs_out-
+       opts(3x)
+
+
+
+                                                          curs_bkgd(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_bkgrnd.3x.html b/ncurses/doc/html/man/curs_bkgrnd.3x.html new file mode 100644 index 0000000..dd761b7 --- /dev/null +++ b/ncurses/doc/html/man/curs_bkgrnd.3x.html @@ -0,0 +1,128 @@ + + + + +curs_bkgrnd 3x + + + + +

curs_bkgrnd 3x

+
+
+
+curs_bkgrnd(3x)                                         curs_bkgrnd(3x)
+
+
+
+
+
+

NAME

+       bkgrnd,  wbkgrnd,  bkgrndset, wbkgrndset, getbkgrnd, wget-
+       bkgrnd - curses  window  complex  background  manipulation
+       routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int bkgrnd( const cchar_t *wch);
+       int wbkgrnd( WINDOW *win, const cchar_t *wch);
+       void bkgrndset(const cchar_t *wch );
+       void wbkgrndset(WINDOW *win, const cchar_t *wch);
+       int getbkgrnd(cchar_t *wch);
+       int wgetbkgrnd(WINDOW *win, cchar_t *wch);
+
+
+
+

DESCRIPTION

+       The bkgrndset and wbkgrndset routines manipulate the back-
+       ground of the named window.  The window  background  is  a
+       cchar_t consisting of any combination of attributes (i.e.,
+       rendition) and a complex character.  The attribute part of
+       the  background  is  combined  (OR'ed)  with all non-blank
+       characters that are written into the window  with  waddch.
+       Both  the  character and attribute parts of the background
+       are combined with the blank  characters.   The  background
+       becomes  a  property  of  the character and moves with the
+       character  through   any   scrolling   and   insert/delete
+       line/character operations.
+
+       To  the  extent  possible  on  a  particular terminal, the
+       attribute part of  the  background  is  displayed  as  the
+       graphic rendition of the character put on the screen.
+
+       The  bkgrnd and wbkgrnd functions set the background prop-
+       erty of the current or specified  window  and  then  apply
+       this setting to every character position in that window:
+
+              The  rendition  of every character on the screen is
+              changed to the new background rendition.
+
+              Wherever the former background  character  appears,
+              it is changed to the new background character.
+
+       The  getbkgrnd function returns the given window's current
+       background character/attribute pair via the wch pointer.
+
+
+
+

NOTES

+       Note that bkgrnd, bkgrndset, and getbkgrnd may be  macros.
+
+
+
+

RETURN VALUES

+       The  bkgrndset  and  wbkgrndset  routines  do not return a
+       value.
+
+       Upon successful completion, the other functions return OK.
+       Otherwise,  they  return  ERR.   A  null window pointer is
+       treated as an error.
+
+
+
+

SEE ALSO

+       curses(3x), curs_bkgd(3x)
+
+
+
+                                                        curs_bkgrnd(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_border.3x.html b/ncurses/doc/html/man/curs_border.3x.html new file mode 100644 index 0000000..e084827 --- /dev/null +++ b/ncurses/doc/html/man/curs_border.3x.html @@ -0,0 +1,158 @@ + + + + +curs_border 3x + + + + +

curs_border 3x

+
+
+
+curs_border(3x)                                         curs_border(3x)
+
+
+
+
+
+

NAME

+       border, wborder, box, hline, whline, vline, wvline,
+       mvhline, mvwhline, mvvline, mvwvline - create curses
+       borders, horizontal and vertical lines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+       int border(chtype ls, chtype rs, chtype ts, chtype bs,
+          chtype tl, chtype tr, chtype bl, chtype br);
+       int wborder(WINDOW *win, chtype ls, chtype rs,
+          chtype ts, chtype bs, chtype tl, chtype tr,
+          chtype bl, chtype br);
+       int box(WINDOW *win, chtype verch, chtype horch);
+       int hline(chtype ch, int n);
+       int whline(WINDOW *win, chtype ch, int n);
+       int vline(chtype ch, int n);
+       int wvline(WINDOW *win, chtype ch, int n);
+       int mvhline(int y, int x, chtype ch, int n);
+       int mvwhline(WINDOW *, int y, int x, chtype ch, int n);
+       int mvvline(int y, int x, chtype ch, int n);
+       int mvwvline(WINDOW *, int y, int x, chtype ch, int n);
+
+
+
+

DESCRIPTION

+       The border, wborder and box routines draw a box around the
+       edges of a window.  Other than the window,  each  argument
+       is a character with attributes:
+
+              ls - left side,
+              rs - right side,
+              ts - top side,
+              bs - bottom side,
+              tl - top left-hand corner,
+              tr - top right-hand corner,
+              bl - bottom left-hand corner, and
+              br - bottom right-hand corner.
+
+       If  any of these arguments is zero, then the corresponding
+       default values (defined in curses.h) are used instead:
+
+              ACS_VLINE,
+              ACS_VLINE,
+              ACS_HLINE,
+              ACS_HLINE,
+              ACS_ULCORNER,
+              ACS_URCORNER,
+              ACS_LLCORNER,
+              ACS_LRCORNER.
+
+       box(win, verch, horch) is a shorthand  for  the  following
+       call:  wborder(win,  verch,  verch, horch, horch, 0, 0, 0,
+       0).
+
+       The hline and whline functions draw a horizontal (left  to
+       right)  line using ch starting at the current cursor posi-
+       tion in the window.  The current cursor  position  is  not
+       changed.   The  line  is  at most n characters long, or as
+       many as fit into the window.
+
+       The vline and wvline functions draw  a  vertical  (top  to
+       bottom) line using ch starting at the current cursor posi-
+       tion in the window.  The current cursor  position  is  not
+       changed.   The  line  is  at most n characters long, or as
+       many as fit into the window.
+
+
+
+

RETURN VALUE

+       All routines return the integer  OK.   The  SVr4.0  manual
+       says  "or  a  non-negative integer if immedok is set", but
+       this appears to be an error.
+
+       X/Open does not define any error conditions.  This  imple-
+       mentation  returns an error if the window pointer is null.
+
+
+
+

NOTES

+       The borders generated by these functions are  inside  bor-
+       ders (this is also true of SVr4 curses, though the fact is
+       not documented).
+
+       Note that border and box may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue  4.   The standard specifies that they return ERR on
+       failure, but specifies no error conditions.
+
+
+
+

SEE ALSO

+       curses(3x), curs_outopts(3x).
+
+
+
+                                                        curs_border(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_border_set.3x.html b/ncurses/doc/html/man/curs_border_set.3x.html new file mode 100644 index 0000000..415e810 --- /dev/null +++ b/ncurses/doc/html/man/curs_border_set.3x.html @@ -0,0 +1,179 @@ + + + + +curs_border_set 3x + + + + +

curs_border_set 3x

+
+
+
+curs_border_set(3x)                                 curs_border_set(3x)
+
+
+
+
+
+

NAME

+       border_set, wborder_set, box_set, hline_set, whline_set,
+       mvhline_set, mvwhline_set, vline_set, wvline_set,
+       mvvline_set, mvwvline_set - create curses borders or lines
+       using complex characters and renditions
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int border_set(
+          const cchar_t *ls, const cchar_t *rs,
+          const cchar_t *ts, const cchar_t *bs,
+          const cchar_t *tl, const cchar_t *tr,
+          const cchar_t *bl, const cchar_t *br );
+       int wborder_set(
+          WINDOW *win,
+          const cchar_t *ls, const cchar_t *rs,
+          const cchar_t *ts, const cchar_t *bs,
+          const cchar_t *tl, const cchar_t *tr,
+          const cchar_t *bl, const cchar_t *br);
+       int box_set(
+          WINDOW *win,
+          const cchar_t *verch,
+          const cchar_t *horch);
+       int hline_set(
+          const cchar_t *wch, int n);
+       int whline_set(
+          WINDOW *win,
+          const cchar_t *wch, int n);
+       int mvhline_set(
+          int y, int x,
+          const cchar_t *wch, int n);
+       int mvwhline_set(
+          WINDOW *win,
+          int y, int x,
+          const cchar_t *wch, int n);
+       int vline_set(
+          const cchar_t *wch, int n);
+       int wvline_set(
+          WINDOW *win,
+          const cchar_t *wch, int n);
+       int mvvline_set(
+          int y, int x,
+          const cchar_t *wch, int n);
+       int mvwvline_set(
+          WINDOW *win,
+          int y, int x,
+          const cchar_t *wch, int n);
+
+
+
+

DESCRIPTION

+       The border_set and wborder_set  functions  draw  a  border
+       around  the  edges  of  the  current  or specified window.
+       These functions do not change the cursor position, and  do
+       not wrap.
+
+       Other  than the window, each argument is a complex charac-
+       ter with attributes:
+              ls - left side,
+              rs - right side,
+              ts - top side,
+              bs - bottom side,
+              tl - top left-hand corner,
+              tr - top right-hand corner,
+              bl - bottom left-hand corner, and
+              br - bottom right-hand corner.
+
+       If any of these arguments is zero, then the  corresponding
+       default values (defined in curses.h) are used instead:
+              WACS_VLINE,
+              WACS_VLINE,
+              WACS_HLINE,
+              WACS_HLINE,
+              WACS_ULCORNER,
+              WACS_URCORNER,
+              WACS_LLCORNER, and
+              WACS_LRCORNER.
+
+       box_set(win, verch, horch); is a shorthand for the follow-
+       ing call:
+
+       wborder_set(win, verch, verch,
+           horch, horch, NULL, NULL, NULL, NULL);
+
+       The *line_set functions use wch to draw a line starting at
+       the current cursor position in the window.  The line is at
+       most n characters long or as many as fit into the  window.
+       The current cursor position is not changed.
+
+       The  hline_set,  mvhline_set, mvwhline_set, and whline_set
+       functions draw a line proceeding toward the last column of
+       the same line.
+
+       The  vline_set,  mvvline_set, mvwvline_set, and wvline_set
+       functions draw a line proceeding toward the last  line  of
+       the window.
+
+
+
+

NOTES

+       Note that border_set, hline_set, mvhline_set, mvvline_set,
+       mvwhline_set, mvwvline_set, and vline_set may be macros.
+
+
+
+

RETURN VALUES

+       Upon successful completion,  these  functions  return  OK.
+       Otherwise, they return ERR.
+
+       Functions  using  a window parameter return an error if it
+       is null.
+
+
+
+

SEE ALSO

+       ncurses(3x), curs_border(3x), curs_outopts(3x)
+
+
+
+                                                    curs_border_set(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_clear.3x.html b/ncurses/doc/html/man/curs_clear.3x.html new file mode 100644 index 0000000..86bb486 --- /dev/null +++ b/ncurses/doc/html/man/curs_clear.3x.html @@ -0,0 +1,145 @@ + + + + +curs_clear 3x + + + + +

curs_clear 3x

+
+
+
+curs_clear(3x)                                           curs_clear(3x)
+
+
+
+
+
+

NAME

+       erase, werase, clear, wclear, clrtobot, wclrtobot,
+       clrtoeol, wclrtoeol - clear all or part of a curses window
+
+
+
+

SYNOPSIS

+       # include <curses.h>
+
+       int erase(void);
+       int werase(WINDOW *win);
+       int clear(void);
+       int wclear(WINDOW *win);
+       int clrtobot(void);
+       int wclrtobot(WINDOW *win);
+       int clrtoeol(void);
+       int wclrtoeol(WINDOW *win);
+
+
+
+

DESCRIPTION

+       The  erase  and werase routines copy blanks to every posi-
+       tion in the window, clearing the screen.
+
+       The clear and wclear routines are like erase  and  werase,
+       but  they also call clearok, so that the screen is cleared
+       completely on the next call to wrefresh  for  that  window
+       and repainted from scratch.
+
+       The  clrtobot and wclrtobot routines erase from the cursor
+       to the end of screen.  That is, they erase all lines below
+       the  cursor  in the window.  Also, the current line to the
+       right of the cursor, inclusive, is erased.
+
+       The clrtoeol and wclrtoeol routines erase the current line
+       to  the  right of the cursor, inclusive, to the end of the
+       current line.
+
+       Blanks created by erasure have the current background ren-
+       dition (as set by wbkgdset) merged into them.
+
+
+
+

RETURN VALUE

+       All  routines  return the integer OK on success and ERR on
+       failure.  The SVr4.0 manual says "or a non-negative  inte-
+       ger if immedok is set", but this appears to be an error.
+
+       X/Open  defines  no error conditions.  In this implementa-
+       tion, functions using a window pointer parameter return an
+       error if it is null.
+
+
+
+

NOTES

+       Note that erase, werase, clear, wclear, clrtobot, and clr-
+       toeol may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue  4.   The standard specifies that they return ERR on
+       failure, but specifies no error conditions.
+
+       Some historic curses implementations had,  as  an  undocu-
+       mented  feature,  the  ability  to  do  the  equivalent of
+       clearok(..., 1) by saying touchwin(stdscr)  or  clear(std-
+       scr).  This will not work under ncurses.
+
+       This  implementation, and others such as Solaris, sets the
+       current position to 0,0 after  erasing  via  werase()  and
+       wclear().   That fact is not documented in other implemen-
+       tations, and may not be true of implementations which were
+       not derived from SVr4 source.
+
+       Not  obvious  from  the  description, most implementations
+       clear the screen after wclear even for a subwindow or  de-
+       rived window.  If you do not want to clear the screen dur-
+       ing the next wrefresh, use werase instead.
+
+
+
+

SEE ALSO

+       curses(3x), curs_outopts(3x), curs_refresh(3x)
+
+
+
+                                                         curs_clear(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_color.3x.html b/ncurses/doc/html/man/curs_color.3x.html new file mode 100644 index 0000000..684605f --- /dev/null +++ b/ncurses/doc/html/man/curs_color.3x.html @@ -0,0 +1,282 @@ + + + + +curs_color 3x + + + + +

curs_color 3x

+
+
+
+curs_color(3x)                                           curs_color(3x)
+
+
+
+
+
+

NAME

+       start_color, init_pair, init_color, has_colors,
+       can_change_color, color_content, pair_content, COLOR_PAIR
+       - curses color manipulation routines
+
+
+
+

SYNOPSIS

+       # include <curses.h>
+       int start_color(void);
+       int init_pair(short pair, short f, short b);
+       int init_color(short color, short r, short g, short b);
+       bool has_colors(void);
+       bool can_change_color(void);
+       int  color_content(short  color, short *r, short *g, short
+       *b);
+       int pair_content(short pair, short *f, short *b);
+
+
+
+

DESCRIPTION

+   Overview
+       curses support color attributes on terminals with that ca-
+       pability.   To  use  these  routines  start_color  must be
+       called, usually right after initscr.   Colors  are  always
+       used  in pairs (referred to as color-pairs).  A color-pair
+       consists of a foreground  color  (for  characters)  and  a
+       background color (for the blank field on which the charac-
+       ters are displayed).  A programmer  initializes  a  color-
+       pair  with  the routine init_pair.  After it has been ini-
+       tialized, COLOR_PAIR(n), a macro  defined  in  <curses.h>,
+       can be used as a new video attribute.
+
+       If  a  terminal  is capable of redefining colors, the pro-
+       grammer can use the routine init_color to change the defi-
+       nition   of   a   color.    The  routines  has_colors  and
+       can_change_color  return  TRUE  or  FALSE,  depending   on
+       whether  the  terminal  has color capabilities and whether
+       the programmer can change the colors.   The  routine  col-
+       or_content  allows  a programmer to extract the amounts of
+       red, green, and blue components in an  initialized  color.
+       The  routine  pair_content allows a programmer to find out
+       how a given color-pair is currently defined.
+
+   Routine Descriptions
+       The start_color routine requires no arguments.  It must be
+       called  if  the programmer wants to use colors, and before
+       any other color manipulation routine  is  called.   It  is
+       good  practice  to  call this routine right after initscr.
+       start_color initializes eight basic  colors  (black,  red,
+       green,  yellow,  blue,  magenta, cyan, and white), and two
+       global variables,  COLORS  and  COLOR_PAIRS  (respectively
+       defining  the maximum number of colors and color-pairs the
+       terminal can support).  It also restores the colors on the
+       terminal to the values they had when the terminal was just
+       turned on.
+
+       The init_pair routine changes the definition of  a  color-
+       pair.   It takes three arguments: the number of the color-
+       pair to be changed, the foreground color number,  and  the
+       background color number.  For portable applications:
+
+       -    The value of the first argument must be between 1 and
+            COLOR_PAIRS-1.
+
+       -    The value of the second and third arguments  must  be
+            between  0 and COLORS.  Color pair 0 is assumed to be
+            white on black, but is actually whatever the terminal
+            implements before color is initialized.  It cannot be
+            modified by the application.
+
+       If the color-pair was previously initialized,  the  screen
+       is  refreshed  and  all occurrences of that color-pair are
+       changed to the new definition.
+
+       As an extension, ncurses allows you to set  color  pair  0
+       via  the  assume_default_colors routine, or to specify the
+       use of default colors (color number -1) if you  first  in-
+       voke the use_default_colors routine.
+
+       The  init_color routine changes the definition of a color.
+       It takes four arguments: the number of  the  color  to  be
+       changed  followed  by three RGB values (for the amounts of
+       red, green, and blue components).  The value of the  first
+       argument  must  be between 0 and COLORS.  (See the section
+       Colors for the default color index.)   Each  of  the  last
+       three  arguments must be a value between 0 and 1000.  When
+       init_color is used, all occurrences of that color  on  the
+       screen immediately change to the new definition.
+
+       The  has_colors routine requires no arguments.  It returns
+       TRUE if the terminal can manipulate colors; otherwise,  it
+       returns FALSE.  This routine facilitates writing terminal-
+       independent programs.  For example, a programmer  can  use
+       it  to decide whether to use color or some other video at-
+       tribute.
+
+       The can_change_color routine requires  no  arguments.   It
+       returns  TRUE  if  the  terminal  supports  colors and can
+       change their definitions; other, it returns  FALSE.   This
+       routine facilitates writing terminal-independent programs.
+
+       The color_content routine gives programmers a way to  find
+       the intensity of the red, green, and blue (RGB) components
+       in a color.  It requires four arguments: the color number,
+       and  three addresses of shorts for storing the information
+       about the amounts of red, green, and  blue  components  in
+       the  given color.  The value of the first argument must be
+       between 0 and COLORS.  The values that are stored  at  the
+       addresses  pointed  to by the last three arguments are be-
+       tween 0 (no component) and 1000 (maximum amount of  compo-
+       nent).
+
+       The  pair_content  routine  allows programmers to find out
+       what colors a given color-pair consists of.   It  requires
+       three  arguments: the color-pair number, and two addresses
+       of shorts for storing the foreground  and  the  background
+       color  numbers.   The  value of the first argument must be
+       between 1 and COLOR_PAIRS-1.  The values that  are  stored
+       at  the addresses pointed to by the second and third argu-
+       ments are between 0 and COLORS.
+
+   Colors
+       In <curses.h> the following macros are defined.  These are
+       the  default colors.  curses also assumes that COLOR_BLACK
+       is the default background color for all terminals.
+
+             COLOR_BLACK
+             COLOR_RED
+             COLOR_GREEN
+             COLOR_YELLOW
+             COLOR_BLUE
+             COLOR_MAGENTA
+             COLOR_CYAN
+             COLOR_WHITE
+
+
+
+

RETURN VALUE

+       The routines can_change_color()  and  has_colors()  return
+       TRUE or FALSE.
+
+       All other routines return the integer ERR upon failure and
+       an OK (SVr4 specifies only "an integer  value  other  than
+       ERR") upon successful completion.
+
+       X/Open  defines  no error conditions.  This implementation
+       will return ERR on attempts to use  color  values  outside
+       the range 0 to COLORS-1 (except for the default colors ex-
+       tension), or use color pairs outside the range 0  to  COL-
+       OR_PAIR-1.  Color values used in init_color must be in the
+       range 0 to 1000.  An error is returned from all  functions
+       if the terminal has not been initialized.  An error is re-
+       turned from  secondary  functions  such  as  init_pair  if
+       start_color was not called.
+
+              init_color
+                   returns an error if the terminal does not sup-
+                   port  this  feature,  e.g.,  if  the  initial-
+                   ize_color capability is absent from the termi-
+                   nal description.
+
+              start_color
+                   returns an error If the color table cannot  be
+                   allocated.
+
+
+
+

NOTES

+       In  the  ncurses implementation, there is a separate color
+       activation flag, color palette, color pairs table, and as-
+       sociated  COLORS  and  COLOR_PAIRS counts for each screen;
+       the start_color function only affects the current  screen.
+       The SVr4/XSI interface is not really designed with this in
+       mind, and historical  implementations  may  use  a  single
+       shared color palette.
+
+       Note that setting an implicit background color via a color
+       pair affects only character cells that a  character  write
+       operation  explicitly  touches.   To change the background
+       color used when parts of a window are blanked  by  erasing
+       or scrolling operations, see curs_bkgd(3x).
+
+       Several  caveats  apply  on 386 and 486 machines with VGA-
+       compatible graphics:
+
+       -    COLOR_YELLOW is actually brown.  To get  yellow,  use
+            COLOR_YELLOW combined with the A_BOLD attribute.
+
+       -    The  A_BLINK  attribute  should  in  theory cause the
+            background to go bright.  This often fails  to  work,
+            and  even  some cards for which it mostly works (such
+            as the Paradise and compatibles) do the  wrong  thing
+            when you try to set a bright "yellow" background (you
+            get a blinking yellow foreground instead).
+
+       -    Color RGB values are not settable.
+
+
+
+

PORTABILITY

+       This implementation satisfies XSI Curses's  minimum  maxi-
+       mums for COLORS and COLOR_PAIRS.
+
+       The  init_pair  routine  accepts  negative values of fore-
+       ground  and  background  color  to  support  the   use_de-
+       fault_colors  extension, but only if that routine has been
+       first invoked.
+
+       The assumption that COLOR_BLACK is the default  background
+       color  for  all  terminals  can  be modified using the as-
+       sume_default_colors extension.
+
+       This implementation checks the  pointers,  e.g.,  for  the
+       values  returned  by  color_content  and pair_content, and
+       will treat those as optional parameters when null.
+
+
+
+

SEE ALSO

+       curses(3x), curs_initscr(3x), curs_attr(3x),  default_col-
+       ors(3x)
+
+
+
+                                                         curs_color(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_delch.3x.html b/ncurses/doc/html/man/curs_delch.3x.html new file mode 100644 index 0000000..3b6562a --- /dev/null +++ b/ncurses/doc/html/man/curs_delch.3x.html @@ -0,0 +1,108 @@ + + + + +curs_delch 3x + + + + +

curs_delch 3x

+
+
+
+curs_delch(3x)                                           curs_delch(3x)
+
+
+
+
+
+

NAME

+       delch,  wdelch, mvdelch, mvwdelch - delete character under
+       the cursor in a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int delch(void);
+       int wdelch(WINDOW *win);
+       int mvdelch(int y, int x);
+       int mvwdelch(WINDOW *win, int y, int x);
+
+
+
+

DESCRIPTION

+       These routines delete the character under the cursor;  all
+       characters to the right of the cursor on the same line are
+       moved to the left one position and the last  character  on
+       the line is filled with a blank.  The cursor position does
+       not change (after moving to y, x,  if  specified).   (This
+       does  not  imply use of the hardware delete character fea-
+       ture.)
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon failure and an OK
+       (SVr4  specifies  only  "an integer value other than ERR")
+       upon successful completion.
+
+
+
+

NOTES

+       Note that delch, mvdelch, and mvwdelch may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue  4.   The standard specifies that they return ERR on
+       failure, but specifies no error conditions.
+
+
+
+

SEE ALSO

+       curses(3x)
+
+
+
+                                                         curs_delch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_deleteln.3x.html b/ncurses/doc/html/man/curs_deleteln.3x.html new file mode 100644 index 0000000..8e73ce5 --- /dev/null +++ b/ncurses/doc/html/man/curs_deleteln.3x.html @@ -0,0 +1,126 @@ + + + + +curs_deleteln 3x + + + + +

curs_deleteln 3x

+
+
+
+curs_deleteln(3x)                                     curs_deleteln(3x)
+
+
+
+
+
+

NAME

+       deleteln,  wdeleteln,  insdelln, winsdelln, insertln, win-
+       sertln - delete and insert lines in a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int deleteln(void);
+       int wdeleteln(WINDOW *win);
+       int insdelln(int n);
+       int winsdelln(WINDOW *win, int n);
+       int insertln(void);
+       int winsertln(WINDOW *win);
+
+
+
+

DESCRIPTION

+       The deleteln and wdeleteln routines delete the line  under
+       the cursor in the window; all lines below the current line
+       are moved up one line.  The bottom line of the  window  is
+       cleared.  The cursor position does not change.
+
+       The  insdelln  and  winsdelln  routines,  for  positive n,
+       insert n lines into the specified window above the current
+       line.   The  n  bottom  lines  are  lost.  For negative n,
+       delete n lines (starting with the one under  the  cursor),
+       and  move  the remaining lines up.  The bottom n lines are
+       cleared.  The current cursor position remains the same.
+
+       The insertln and winsertln routines insert  a  blank  line
+       above the current line and the bottom line is lost.
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon failure and an OK
+       (SVr4 specifies only "an integer value  other  than  ERR")
+       upon successful completion.
+
+       X/Open  defines  no error conditions.  In this implementa-
+       tion, if  the  window  parameter  is  null,  an  error  is
+       returned.
+
+
+
+

PORTABILITY

+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The standard specifies that they return  ERR  on
+       failure, but specifies no error conditions.
+
+
+
+

NOTES

+       Note that all but winsdelln may be macros.
+
+       These  routines  do  not require a hardware line delete or
+       insert feature in the terminal.  In fact,  they  will  not
+       use  hardware  line  delete/insert unless idlok(..., TRUE)
+       has been set on the current window.
+
+
+
+

SEE ALSO

+       curses(3x)
+
+
+
+                                                      curs_deleteln(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_extend.3x.html b/ncurses/doc/html/man/curs_extend.3x.html new file mode 100644 index 0000000..483003c --- /dev/null +++ b/ncurses/doc/html/man/curs_extend.3x.html @@ -0,0 +1,111 @@ + + + + +curs_extend 3x + + + + +

curs_extend 3x

+
+
+
+curs_extend(3x)                                         curs_extend(3x)
+
+
+
+
+
+

NAME

+       curses_version,  use_extended_names - miscellaneous curses
+       extensions
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       const char * curses_version(void);
+       int use_extended_names(bool enable);
+
+
+
+

DESCRIPTION

+       These functions are extensions to the curses library which
+       do not fit easily into other categories.
+
+       Use  curses_version() to get the version number, including
+       patch level of the library, e.g., 5.0.19991023
+
+       The use_extended_names()  function  controls  whether  the
+       calling  application  is  able to use user-defined or non-
+       standard names which may be  compiled  into  the  terminfo
+       description, i.e., via the terminfo or termcap interfaces.
+       Normally these names are  available  for  use,  since  the
+       essential  decision  is made by using the -x option of tic
+       to compile extended terminal definitions.  However you can
+       disable  this  feature  to ensure compatibility with other
+       implementations of curses.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on them be  con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       curs_getch(3x),       curs_mouse(3x),      curs_print(3x),
+       curs_util(3x),  default_colors(3x),  define_key(3x),  key-
+       bound(3x), keyok(3x), resizeterm(3x), wresize(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey.
+
+
+
+                                                        curs_extend(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_get_wch.3x.html b/ncurses/doc/html/man/curs_get_wch.3x.html new file mode 100644 index 0000000..40a77c7 --- /dev/null +++ b/ncurses/doc/html/man/curs_get_wch.3x.html @@ -0,0 +1,151 @@ + + + + +curs_get_wch 3x + + + + +

curs_get_wch 3x

+
+
+
+curs_get_wch(3x)                                       curs_get_wch(3x)
+
+
+
+
+
+

NAME

+       get_wch,  wget_wch, mvget_wch, mvwget_wch, unget_wch - get
+       (or push back) a wide character from curses terminal  key-
+       board
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int get_wch(wint_t *wch);
+       int wget_wch(WINDOW *win, wint_t *wch);
+       int mvget_wch(int y, int x, wint_t *wch);
+       int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch);
+       int unget_wch(const wchar_t wch);
+
+
+
+

DESCRIPTION

+       The get_wch, wget_wch, mvget_wch, and mvwget_wch functions
+       read a character from the  terminal  associated  with  the
+       current  or  specified  window.   In  no-delay mode, if no
+       input is waiting, the value ERR  is  returned.   In  delay
+       mode,  the  program  waits  until  the  system passes text
+       through to the  program.   Depending  on  the  setting  of
+       cbreak,  this  is  after  one  character (cbreak mode), or
+       after the first newline (nocbreak  mode).   In  half-delay
+       mode,  the  program waits until the user types a character
+       or the specified timeout interval has elapsed.
+
+       Unless noecho has been set, these routines echo the  char-
+       acter into the designated window.
+
+       If  the window is not a pad and has been moved or modified
+       since the last call to wrefresh, wrefresh will  be  called
+       before another character is read.
+
+       If  keypad  is  enabled,  these  functions  respond to the
+       pressing of a function key by setting the  object  pointed
+       to  by  wch  to  the  corresponding  KEY_ value defined in
+       <curses.h> and returning  KEY_CODE_YES.   If  a  character
+       (such as escape) that could be the beginning of a function
+       key is received, curses sets a timer.  If the remainder of
+       the  sequence  does  arrive  within  the  designated time,
+       curses passes through  the  character;  otherwise,  curses
+       returns  the  function  key  value.  For this reason, many
+       terminals experience a  delay  between  the  time  a  user
+       presses the escape key and the time the escape is returned
+       to the program.
+
+       The unget_wch function pushes the wide character wch  back
+       onto the head of the input queue, so the wide character is
+       returned by the next call to get_wch.  The pushback of one
+       character  is  guaranteed.  If the program calls unget_wch
+       too many times without an intervening call to get_wch, the
+       operation may fail.
+
+
+
+

NOTES

+       The  header  file  <curses.h>  automatically  includes the
+       header file <stdio.h>.
+
+       Applications should not define the escape key by itself as
+       a single-character function.
+
+       When  using  get_wch,  wget_wch, mvget_wch, or mvwget_wch,
+       applications should not use nocbreak mode and echo mode at
+       the  same  time.  Depending on the state of the tty driver
+       when each character is  typed,  the  program  may  produce
+       undesirable results.
+
+       All functions except wget_wch and unget_wch may be macros.
+
+
+
+

RETURN VALUES

+       When get_wch, wget_wch, mvget_wch,  and  mvwget_wch  func-
+       tions  successfully report the pressing of a function key,
+       they return KEY_CODE_YES.  When they successfully report a
+       wide  character,  they  return OK.  Otherwise, they return
+       ERR.
+
+       Upon successful completion, unget_wch returns OK.   Other-
+       wise, the function returns ERR.
+
+
+
+

SEE ALSO

+       curses(3x),        curs_getch(3x),       curs_ins_wch(3x),
+       curs_inopts(3x), curs_move(3x), curs_refresh(3x)
+
+
+
+                                                       curs_get_wch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_get_wstr.3x.html b/ncurses/doc/html/man/curs_get_wstr.3x.html new file mode 100644 index 0000000..159cebe --- /dev/null +++ b/ncurses/doc/html/man/curs_get_wstr.3x.html @@ -0,0 +1,162 @@ + + + + +curs_get_wstr 3x + + + + +

curs_get_wstr 3x

+
+
+
+curs_get_wstr(3x)                                     curs_get_wstr(3x)
+
+
+
+
+
+

NAME

+       get_wstr, getn_wstr, wget_wstr, wgetn_wstr, mvget_wstr,
+       mvgetn_wstr, mvwget_wstr, mvwgetn_wstr - get an array of
+       wide characters from a curses terminal keyboard
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int get_wstr(wint_t *wstr);
+       int getn_wstr(wint_t *wstr, int n);
+       int wget_wstr(WINDOW *win, wint_t *wstr);
+       int wgetn_wstr(WINDOW *win, wint_t *wstr, int n);
+       int mvget_wstr(int y, int x, wint_t *wstr);
+       int mvgetn_wstr(int y, int x, wint_t *wstr, int n);
+       int mvwget_wstr(WINDOW *win, int y, int x, wint_t *wstr);
+       int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n);
+
+
+
+

DESCRIPTION

+       The  effect  of get_wstr is as though a series of calls to
+       get_wch were made, until a newline, other end-of-line,  or
+       end-of-file condition is processed.  An end-of-file condi-
+       tion is represented by WEOF, as defined in <wchar.h>.  The
+       newline  and end-of-line conditions are represented by the
+       \n wchar_t value.  In all instances, the end of the string
+       is  terminated  by a null wchar_t.  The routine places re-
+       sulting values in the area pointed to by wstr.
+
+       The user's erase and kill characters are interpreted.   If
+       keypad   mode   is   on   for  the  window,  KEY_LEFT  and
+       KEY_BACKSPACE are both considered equivalent to the user's
+       kill character.
+
+       Characters  input are echoed only if echo is currently on.
+       In that case, backspace is echoed as deletion of the  pre-
+       vious character (typically a left motion).
+
+       The  effect of wget_wstr is as though a series of calls to
+       wget_wch were made.
+
+       The effect of mvget_wstr is as though a call to  move  and
+       then a series of calls to get_wch were made.
+
+       The effect of mvwget_wstr is as though a call to wmove and
+       then a series of calls to wget_wch were made.
+
+       The getn_wstr, mvgetn_wstr, mvwgetn_wstr,  and  wgetn_wstr
+       functions  are  identical  to  the  get_wstr,  mvget_wstr,
+       mvwget_wstr, and wget_wstr functions, respectively, except
+       that  the *n_* versions read at most n characters, letting
+       the application prevent overflow of the input buffer.
+
+
+
+

NOTES

+       Using get_wstr, mvget_wstr, mvwget_wstr, or  wget_wstr  to
+       read  a  line  that overflows the array pointed to by wstr
+       causes  undefined  results.    The   use   of   getn_wstr,
+       mvgetn_wstr, mvwgetn_wstr, or wgetn_wstr, respectively, is
+       recommended.
+
+       These functions cannot return KEY_ values because there is
+       no  way  to  distinguish a KEY_ value from a valid wchar_t
+       value.
+
+       All of these routines except wgetn_wstr may be macros.
+
+
+
+

RETURN VALUES

+       All of these functions return OK upon  successful  comple-
+       tion.  Otherwise, they return ERR.
+
+       Functions  using  a window parameter return an error if it
+       is null.
+
+              wgetn_wstr
+                   returns an error if  the  associated  call  to
+                   wget_wch failed.
+
+
+
+

PORTABILITY

+       These  functions are described in The Single Unix Specifi-
+       cation, Version 2.  No error conditions are defined.  This
+       implementation  returns ERR if the window pointer is null,
+       or if the lower-level wget_wch call returns  an  ERR.   In
+       the  latter  case,  an  ERR  return  without other data is
+       treated as an end-of-file condition, and the returned  ar-
+       ray contains a WEOF followed by a null wchar_t.
+
+       X/Open  curses  documents these functions to pass an array
+       of wchar_t, but all of the vendors  implement  this  using
+       wint_t.
+
+
+
+

SEE ALSO

+       Functions:  curses(3x), curs_get_wch(3x), curs_getstr(3x).
+
+
+
+                                                      curs_get_wstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_getcchar.3x.html b/ncurses/doc/html/man/curs_getcchar.3x.html new file mode 100644 index 0000000..b55ce1d --- /dev/null +++ b/ncurses/doc/html/man/curs_getcchar.3x.html @@ -0,0 +1,157 @@ + + + + +curs_getcchar 3x + + + + +

curs_getcchar 3x

+
+
+
+curs_getcchar(3x)                                     curs_getcchar(3x)
+
+
+
+
+
+

NAME

+       getcchar,  setcchar - Get a wide character string and ren-
+       dition from a cchar_t or set a cchar_t from a wide-charac-
+       ter string
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int getcchar(
+               const cchar_t *wcval,
+               wchar_t *wch,
+               attr_t *attrs,
+               short *color_pair,
+               void *opts );
+
+       int setcchar(
+               cchar_t *wcval,
+               const wchar_t *wch,
+               const attr_t attrs,
+               short color_pair,
+               void *opts );
+
+
+
+

DESCRIPTION

+       The  getcchar  function  gets  a wide-character string and
+       rendition from a cchar_t argument.  When wch is not a null
+       pointer, the getcchar function does the following:
+
+       -    Extracts information from a cchar_t value wcval
+
+       -    Stores  the  character  attributes  in  the  location
+            pointed to by attrs
+
+       -    Stores the color-pair in the location pointed  to  by
+            color_pair
+
+       -    Stores  the  wide-character string, characters refer-
+            enced by wcval, into the array pointed to by wch.
+
+       When wch is a null pointer, the getcchar function does the
+       following:
+
+       -    Obtains  the  number of wide characters pointed to by
+            wcval
+
+       -    Does not change  the  data  referenced  by  attrs  or
+            color_pair
+
+       The  setcchar function initializes the location pointed to
+       by wcval by using:
+
+       -    The character attributes in attrs
+
+       -    The color pair in color_pair
+
+       -    The wide-character string pointed  to  by  wch.   The
+            string  must be L'\0' terminated, contain at most one
+            spacing character, which must be the first.
+
+            Up to CCHARW_MAX-1 nonspacing characters may  follow.
+            Additional nonspacing characters are ignored.
+
+            The  string  may  contain  a single control character
+            instead.  In that case, no nonspacing characters  are
+            allowed.
+
+
+
+

NOTES

+       The  opts argument is reserved for future use.  Currently,
+       an application must provide a null pointer as opts.
+
+       The wcval argument may be a value generated by a  call  to
+       setcchar  or by a function that has a cchar_t output argu-
+       ment.  If wcval is constructed by  any  other  means,  the
+       effect is unspecified.
+
+
+
+

RETURN VALUES

+       When wch is a null pointer, getcchar returns the number of
+       wide characters referenced by wcval.
+
+       When wch is not a null pointer, getcchar returns  OK  upon
+       successful completion, and ERR otherwise.
+
+       Upon  successful  completion, setcchar returns OK.  Other-
+       wise, it returns ERR.
+
+
+
+

SEE ALSO

+       Functions:  curs_attr(3x),   curs_color(3x),   curses(3x),
+       wcwidth(3).
+
+
+
+                                                      curs_getcchar(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_getch.3x.html b/ncurses/doc/html/man/curs_getch.3x.html new file mode 100644 index 0000000..e7df663 --- /dev/null +++ b/ncurses/doc/html/man/curs_getch.3x.html @@ -0,0 +1,338 @@ + + + + +curs_getch 3x + + + + +

curs_getch 3x

+
+
+
+curs_getch(3x)                                           curs_getch(3x)
+
+
+
+
+
+

NAME

+       getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get
+       (or push back) characters from curses terminal keyboard
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int getch(void);
+       int wgetch(WINDOW *win);
+       int mvgetch(int y, int x);
+       int mvwgetch(WINDOW *win, int y, int x);
+       int ungetch(int ch);
+       int has_key(int ch);
+
+
+
+

DESCRIPTION

+       The getch, wgetch, mvgetch and mvwgetch, routines  read  a
+       character  from the window.  In no-delay mode, if no input
+       is waiting, the value ERR is returned.  In delay mode, the
+       program  waits until the system passes text through to the
+       program.  Depending on the setting of cbreak, this is  af-
+       ter  one  character (cbreak mode), or after the first new-
+       line (nocbreak mode).  In  half-delay  mode,  the  program
+       waits  until a character is typed or the specified timeout
+       has been reached.
+
+       Unless noecho has been set, then the character  will  also
+       be echoed into the designated window according to the fol-
+       lowing rules: If the character is the current erase  char-
+       acter,  left  arrow, or backspace, the cursor is moved one
+       space to the left and that screen position is erased as if
+       delch had been called.  If the character value is any oth-
+       er KEY_ define, the user is  alerted  with  a  beep  call.
+       Otherwise the character is simply output to the screen.
+
+       If the window is not a pad, and it has been moved or modi-
+       fied since the last call to  wrefresh,  wrefresh  will  be
+       called before another character is read.
+
+       If  keypad is TRUE, and a function key is pressed, the to-
+       ken for that function key is returned instead of  the  raw
+       characters.   Possible function keys are defined in <curs-
+       es.h> as macros with values outside  the  range  of  8-bit
+       characters  whose  names begin with KEY_. Thus, a variable
+       intended to hold the return value of a function  key  must
+       be of short size or larger.
+
+       When a character that could be the beginning of a function
+       key is received (which, on modern terminals, means an  es-
+       cape character), curses sets a timer.  If the remainder of
+       the sequence does not come in within the designated  time,
+       the  character  is passed through; otherwise, the function
+       key value is returned.  For this  reason,  many  terminals
+       experience a delay between the time a user presses the es-
+       cape key and the escape is returned to the program.
+
+       The ungetch routine places ch back onto the input queue to
+       be returned by the next call to wgetch.  There is just one
+       input queue for all windows.
+
+
+   Function Keys
+       The following function keys, defined in <curses.h>,  might
+       be  returned  by  getch  if keypad has been enabled.  Note
+       that not all of these are  necessarily  supported  on  any
+       particular terminal.
+
+
+            Name            Key name
+            KEY_BREAK       Break key
+            KEY_DOWN        The four arrow keys ...
+            KEY_UP
+            KEY_LEFT
+            KEY_RIGHT
+            KEY_HOME        Home key (upward+left arrow)
+            KEY_BACKSPACE   Backspace
+            KEY_F0          Function keys; space for 64 keys
+                            is reserved.
+            KEY_F(n)        For 0 <= n <= 63
+            KEY_DL          Delete line
+            KEY_IL          Insert line
+            KEY_DC          Delete character
+            KEY_IC          Insert char or enter insert mode
+            KEY_EIC         Exit insert char mode
+            KEY_CLEAR       Clear screen
+            KEY_EOS         Clear to end of screen
+            KEY_EOL         Clear to end of line
+            KEY_SF          Scroll 1 line forward
+            KEY_SR          Scroll 1 line backward (reverse)
+            KEY_NPAGE       Next page
+            KEY_PPAGE       Previous page
+            KEY_STAB        Set tab
+            KEY_CTAB        Clear tab
+            KEY_CATAB       Clear all tabs
+            KEY_ENTER       Enter or send
+            KEY_SRESET      Soft (partial) reset
+            KEY_RESET       Reset or hard reset
+            KEY_PRINT       Print or copy
+            KEY_LL          Home down or bottom (lower left)
+            KEY_A1          Upper left of keypad
+            KEY_A3          Upper right of keypad
+            KEY_B2          Center of keypad
+            KEY_C1          Lower left of keypad
+            KEY_C3          Lower right of keypad
+            KEY_BTAB        Back tab key
+            KEY_BEG         Beg(inning) key
+            KEY_CANCEL      Cancel key
+            KEY_CLOSE       Close key
+            KEY_COMMAND     Cmd (command) key
+            KEY_COPY        Copy key
+            KEY_CREATE      Create key
+            KEY_END         End key
+            KEY_EXIT        Exit key
+            KEY_FIND        Find key
+            KEY_HELP        Help key
+            KEY_MARK        Mark key
+            KEY_MESSAGE     Message key
+            KEY_MOUSE       Mouse event read
+            KEY_MOVE        Move key
+            KEY_NEXT        Next object key
+            KEY_OPEN        Open key
+            KEY_OPTIONS     Options key
+            KEY_PREVIOUS    Previous object key
+            KEY_REDO        Redo key
+            KEY_REFERENCE   Ref(erence) key
+            KEY_REFRESH     Refresh key
+            KEY_REPLACE     Replace key
+            KEY_RESIZE      Screen resized
+            KEY_RESTART     Restart key
+            KEY_RESUME      Resume key
+
+            KEY_SAVE        Save key
+            KEY_SBEG        Shifted beginning key
+            KEY_SCANCEL     Shifted cancel key
+            KEY_SCOMMAND    Shifted command key
+            KEY_SCOPY       Shifted copy key
+            KEY_SCREATE     Shifted create key
+            KEY_SDC         Shifted delete char key
+            KEY_SDL         Shifted delete line key
+            KEY_SELECT      Select key
+            KEY_SEND        Shifted end key
+            KEY_SEOL        Shifted clear line key
+            KEY_SEXIT       Shifted exit key
+            KEY_SFIND       Shifted find key
+            KEY_SHELP       Shifted help key
+            KEY_SHOME       Shifted home key
+            KEY_SIC         Shifted input key
+            KEY_SLEFT       Shifted left arrow key
+            KEY_SMESSAGE    Shifted message key
+            KEY_SMOVE       Shifted move key
+            KEY_SNEXT       Shifted next key
+            KEY_SOPTIONS    Shifted options key
+            KEY_SPREVIOUS   Shifted prev key
+            KEY_SPRINT      Shifted print key
+            KEY_SREDO       Shifted redo key
+            KEY_SREPLACE    Shifted replace key
+            KEY_SRIGHT      Shifted right arrow
+            KEY_SRSUME      Shifted resume key
+            KEY_SSAVE       Shifted save key
+            KEY_SSUSPEND    Shifted suspend key
+            KEY_SUNDO       Shifted undo key
+            KEY_SUSPEND     Suspend key
+            KEY_UNDO        Undo key
+
+       Keypad is arranged like this:
+
+
+                         +-----+------+-------+
+                         | A1  |  up  |  A3   |
+                         +-----+------+-------+
+                         |left |  B2  | right |
+                         +-----+------+-------+
+                         | C1  | down |  C3   |
+                         +-----+------+-------+
+       The has_key routine takes a key value from the above list,
+       and returns TRUE or FALSE according to whether the current
+       terminal type recognizes a key with that value.  Note that
+       a  few  values  do  not  correspond  to  a real key, e.g.,
+       KEY_RESIZE and KEY_MOUSE.  See resizeterm(3x) for more de-
+       tails  about  KEY_RESIZE, and curs_mouse(3x) for a discus-
+       sion of KEY_MOUSE.
+
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon  failure  and  an
+       integer value other than ERR (OK in the case of ungetch())
+       upon successful completion.
+
+              ungetch
+                   returns an error if there is no more  room  in
+                   the FIFO.
+
+              wgetch
+                   returns  an  error  if  the  window pointer is
+                   null, or if its timeout expires without having
+                   any data.
+
+
+
+

NOTES

+       Use of the escape key by a programmer for a single charac-
+       ter function is discouraged, as it will cause a  delay  of
+       up to one second while the keypad code looks for a follow-
+       ing function-key sequence.
+
+       Note that some keys may be the same as commonly used  con-
+       trol keys, e.g., KEY_ENTER versus control/M, KEY_BACKSPACE
+       versus control/H.  Some curses implementations may  differ
+       according  to  whether  they treat these control keys spe-
+       cially (and ignore the terminfo), or use the terminfo def-
+       initions.   Ncurses  uses  the terminfo definition.  If it
+       says  that  KEY_ENTER  is  control/M,  getch  will  return
+       KEY_ENTER when you press control/M.
+
+       When  using  getch, wgetch, mvgetch, or mvwgetch, nocbreak
+       mode (nocbreak) and echo mode (echo) should not be used at
+       the  same  time.  Depending on the state of the tty driver
+       when each character is typed, the program may produce  un-
+       desirable results.
+
+       Note that getch, mvgetch, and mvwgetch may be macros.
+
+       Historically, the set of keypad macros was largely defined
+       by the extremely function-key-rich keyboard  of  the  AT&T
+       7300,  aka  3B1,  aka Safari 4.  Modern personal computers
+       usually have only a small subset of these.   IBM  PC-style
+       consoles   typically  support  little  more  than  KEY_UP,
+       KEY_DOWN,   KEY_LEFT,   KEY_RIGHT,   KEY_HOME,    KEY_END,
+       KEY_NPAGE, KEY_PPAGE, and function keys 1 through 12.  The
+       Ins key is usually mapped to KEY_IC.
+
+
+
+

PORTABILITY

+       The *get* functions are described in the XSI Curses  stan-
+       dard,  Issue  4.   They  read single-byte characters only.
+       The standard specifies that they return  ERR  on  failure,
+       but specifies no error conditions.
+
+       The  echo  behavior of these functions on input of KEY_ or
+       backspace characters was not specified in the  SVr4  docu-
+       mentation.  This description is adopted from the XSI Curs-
+       es standard.
+
+       The behavior of getch and friends in the presence of  han-
+       dled  signals  is  unspecified  in the SVr4 and XSI Curses
+       documentation.  Under historical  curses  implementations,
+       it  varied depending on whether the operating system's im-
+       plementation  of  handled  signal  receipt  interrupts   a
+       read(2)  call in progress or not, and also (in some imple-
+       mentations) depending on whether an input timeout or  non-
+       blocking mode has been set.
+
+       Programmers concerned about portability should be prepared
+       for either of two cases: (a) signal receipt does  not  in-
+       terrupt  getch;  (b)  signal  receipt interrupts getch and
+       causes it to return ERR with errno set  to  EINTR.   Under
+       the  ncurses  implementation, handled signals never inter-
+       rupt getch.
+
+       The has_key function is unique to ncurses.   We  recommend
+       that  any  code  using it be conditionalized on the NCURS-
+       ES_VERSION feature macro.
+
+
+
+

SEE ALSO

+       curses(3x),        curs_inopts(3x),        curs_mouse(3x),
+       curs_move(3x), curs_refresh(3x), resizeterm(3x).
+
+       Comparable  functions in the wide-character (ncursesw) li-
+       brary are described in curs_get_wch(3x).
+
+
+
+                                                         curs_getch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_getstr.3x.html b/ncurses/doc/html/man/curs_getstr.3x.html new file mode 100644 index 0000000..f5f9d07 --- /dev/null +++ b/ncurses/doc/html/man/curs_getstr.3x.html @@ -0,0 +1,151 @@ + + + + +curs_getstr 3x + + + + +

curs_getstr 3x

+
+
+
+curs_getstr(3x)                                         curs_getstr(3x)
+
+
+
+
+
+

NAME

+       getstr, getnstr, wgetstr, wgetnstr, mvgetstr, mvgetnstr,
+       mvwgetstr, mvwgetnstr - accept character strings from
+       curses terminal keyboard
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int getstr(char *str);
+       int getnstr(char *str, int n);
+       int wgetstr(WINDOW *win, char *str);
+       int wgetnstr(WINDOW *win, char *str, int n);
+       int mvgetstr(int y, int x, char *str);
+       int mvwgetstr(WINDOW *win, int y, int x, char *str);
+       int mvgetnstr(int y, int x, char *str, int n);
+       int mvwgetnstr(WINDOW *, int y, int x, char *str, int n);
+
+
+
+

DESCRIPTION

+       The  function getstr is equivalent to a series of calls to
+       getch, until a newline or carriage return is received (the
+       terminating  character  is  not  included  in the returned
+       string).  The resulting value is placed in the area point-
+       ed to by the character pointer str.
+
+       wgetnstr  reads  at  most  n characters, thus preventing a
+       possible overflow of the input buffer.  Any attempt to en-
+       ter more characters (other than the terminating newline or
+       carriage return) causes a beep.  Function keys also  cause
+       a  beep  and are ignored.  The getnstr function reads from
+       the stdscr default window.
+
+       The user's erase and kill characters are interpreted.   If
+       keypad   mode   is   on   for  the  window,  KEY_LEFT  and
+       KEY_BACKSPACE are both considered equivalent to the user's
+       kill character.
+
+       Characters  input are echoed only if echo is currently on.
+       In that case, backspace is echoed as deletion of the  pre-
+       vious character (typically a left motion).
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon failure and an OK
+       (SVr4 specifies only "an integer value  other  than  ERR")
+       upon successful completion.
+
+       X/Open defines no error conditions.
+
+       In this implementation, these functions return an error if
+       the window pointer is null,  or  if  its  timeout  expires
+       without having any data.
+
+       This  implementation  provides an extension as well.  If a
+       SIGWINCH interrupts the function, it will  return  KEY_RE-
+       SIZE rather than OK or ERR.
+
+
+
+

NOTES

+       Note that getstr, mvgetstr, and mvwgetstr may be macros.
+
+
+
+

PORTABILITY

+       These  functions are described in the XSI Curses standard,
+       Issue 4.  They  read  single-byte  characters  only.   The
+       standard  does  not define any error conditions.  This im-
+       plementation returns ERR if the window pointer is null, or
+       if the lower-level wgetch call returns an ERR.
+
+       SVr3  and early SVr4 curses implementations did not reject
+       function keys; the SVr4.0 documentation claimed that "spe-
+       cial  keys"  (such  as  function keys, "home" key, "clear"
+       key, etc.) are "interpreted", without giving details.   It
+       lied.   In  fact,  the  `character'  value appended to the
+       string by those implementations was  predictable  but  not
+       useful  (being,  in  fact, the low-order eight bits of the
+       key's KEY_ value).
+
+       The functions  getnstr,  mvgetnstr,  and  mvwgetnstr  were
+       present but not documented in SVr4.
+
+
+
+

SEE ALSO

+       curses(3x), curs_getch(3x).
+
+
+
+                                                        curs_getstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_getyx.3x.html b/ncurses/doc/html/man/curs_getyx.3x.html new file mode 100644 index 0000000..22b3aec --- /dev/null +++ b/ncurses/doc/html/man/curs_getyx.3x.html @@ -0,0 +1,131 @@ + + + + +curs_getyx 3x + + + + +

curs_getyx 3x

+
+
+
+curs_getyx(3x)                                           curs_getyx(3x)
+
+
+
+
+
+

NAME

+       getyx,  getparyx,  getbegyx,  getmaxyx - get curses cursor
+       and window coordinates
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       void getyx(WINDOW *win, int y, int x);
+       void getparyx(WINDOW *win, int y, int x);
+       void getbegyx(WINDOW *win, int y, int x);
+       void getmaxyx(WINDOW *win, int y, int x);
+
+
+
+

DESCRIPTION

+       The getyx macro places the current cursor position of  the
+       given window in the two integer variables y and x.
+
+       If  win  is  a  subwindow,  the  getparyx macro places the
+       beginning coordinates of the  subwindow  relative  to  the
+       parent  window into two integer variables y and x.  Other-
+       wise, -1 is placed into y and x.
+
+       Like getyx, the getbegyx and  getmaxyx  macros  store  the
+       current  beginning  coordinates  and size of the specified
+       window.
+
+
+
+

RETURN VALUE

+       The return values of these  macros  are  undefined  (i.e.,
+       they  should not be used as the right-hand side of assign-
+       ment statements).
+
+
+
+

NOTES

+       All of these interfaces are macros.  A "&" is  not  neces-
+       sary before the variables y and x.
+
+
+
+

PORTABILITY

+       The  getyx,  getparyx,  getbegyx  and  getmaxyx macros are
+       described in the XSI Curses standard, Issue 4.
+
+       This implementation also provides functions getbegx, getb-
+       egy,  getcurx, getcury, getmaxx, getmaxy, getparx and get-
+       pary for compatibility with older versions of curses.
+
+       Although X/Open Curses does not address this, many  imple-
+       mentations  provide  members  of the WINDOW structure con-
+       taining values corresponding to these  macros.   For  best
+       portability,  do  not  rely  on  using the data in WINDOW,
+       since some implementations  make  WINDOW  opaque  (do  not
+       allow direct use of its members).
+
+       Besides  the problem of opaque structures, the data stored
+       in like-named members may not have like-values in  differ-
+       ent  implementations.   For  example, the WINDOW._maxx and
+       WINDOW._maxy  values  in  ncurses  have  (at  least  since
+       release 1.8.1) differed by one from some other implementa-
+       tions.  The difference is hidden by  means  of  the  macro
+       getmaxyx.
+
+
+
+

SEE ALSO

+       curses(3x), curs_legacy(3x), curs_opaque(3x)
+
+
+
+                                                         curs_getyx(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_in_wch.3x.html b/ncurses/doc/html/man/curs_in_wch.3x.html new file mode 100644 index 0000000..ab4083b --- /dev/null +++ b/ncurses/doc/html/man/curs_in_wch.3x.html @@ -0,0 +1,105 @@ + + + + +curs_in_wch 3x + + + + +

curs_in_wch 3x

+
+
+
+curs_in_wch(3x)                                         curs_in_wch(3x)
+
+
+
+
+
+

NAME

+       in_wch,  mvin_wch,  mvwin_wch, win_wch - extract a complex
+       character and rendition from a window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int in_wch(cchar_t *wcval);
+       int mvin_wch(int y, int x, cchar_t *wcval);
+       int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval);
+       int win_wch(WINDOW *win, cchar_t *wcval);
+
+
+
+

DESCRIPTION

+       These functions extract the complex character  and  rendi-
+       tion  from  the  current position in the named window into
+       the cchar_t object referenced by wcval.
+
+
+
+

RETURN VALUE

+       No errors are defined in the XSI  Curses  standard.   This
+       implementation  checks  for  null pointers, returns ERR in
+       that case.  Also, the mv routines check for  error  moving
+       the  cursor,  returning  ERR in that case.  Otherwise they
+       return OK
+
+
+
+

NOTES

+       Note that all of these routines may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x), curs_inch(3x).
+
+
+
+                                                        curs_in_wch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_in_wchstr.3x.html b/ncurses/doc/html/man/curs_in_wchstr.3x.html new file mode 100644 index 0000000..f576286 --- /dev/null +++ b/ncurses/doc/html/man/curs_in_wchstr.3x.html @@ -0,0 +1,120 @@ + + + + +curs_in_wchstr 3x + + + + +

curs_in_wchstr 3x

+
+
+
+curs_in_wchstr(3x)                                   curs_in_wchstr(3x)
+
+
+
+
+
+

NAME

+       in_wchstr, in_wchnstr, win_wchstr, win_wchnstr,
+       mvin_wchstr, mvin_wchnstr, mvwin_wchstr, mvwin_wchnstr -
+       get an array of complex characters and renditions from a
+       curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int in_wchstr(cchar_t *wchstr);
+       int in_wchnstr(cchar_t *wchstr, int n);
+       int win_wchstr(WINDOW *win, cchar_t *wchstr);
+       int win_wchnstr(WINDOW *win, cchar_t *wchstr, int n);
+       int mvin_wchstr(int y, int x, cchar_t *wchstr);
+       int mvin_wchnstr(int y, int x, cchar_t *wchstr, int n);
+       int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wchstr);
+       int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wchstr, int n);
+
+
+
+

DESCRIPTION

+       These functions return an array of complex  characters  in
+       wchstr,  starting  at  the  current cursor position in the
+       named window.  Attributes (rendition) are stored with  the
+       characters.
+
+       The  in_wchnstr, mvin_wchnstr, mvwin_wchnstr and win_wchn-
+       str fill the array with at most n cchar_t elements.
+
+
+
+

NOTES

+       Note that all routines except win_wchnstr may be macros.
+
+       Reading a line that overflows the array pointed to by wch-
+       str  with in_wchstr, mvin_wchstr, mvwin_wchstr or win_wch-
+       str  causes  undefined  results.  Therefore,  the  use  of
+       in_wchnstr, mvin_wchnstr, mvwin_wchnstr, or win_wchnstr is
+       recommended.
+
+
+
+

RETURN VALUES

+       Upon successful completion,  these  functions  return  OK.
+       Otherwise, they return ERR.
+
+
+
+

PORTABILITY

+       The  XSI  Curses defines no error conditions.  This imple-
+       mentation checks for null pointers, returning ERR in  that
+       case.
+
+
+
+

SEE ALSO

+       Functions:  curses(3x),  curs_in_wch(3x),  curs_instr(3x),
+       curs_inwstr(3x) curs_inchstr(3x)
+
+
+
+                                                     curs_in_wchstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_inch.3x.html b/ncurses/doc/html/man/curs_inch.3x.html new file mode 100644 index 0000000..d601804 --- /dev/null +++ b/ncurses/doc/html/man/curs_inch.3x.html @@ -0,0 +1,111 @@ + + + + +curs_inch 3x + + + + +

curs_inch 3x

+
+
+
+curs_inch(3x)                                             curs_inch(3x)
+
+
+
+
+
+

NAME

+       inch,  winch,  mvinch,  mvwinch  -  get  a  character  and
+       attributes from a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       chtype inch(void);
+       chtype winch(WINDOW *win);
+       chtype mvinch(int y, int x);
+       chtype mvwinch(WINDOW *win, int y, int x);
+
+
+
+

DESCRIPTION

+       These routines return the character, of  type  chtype,  at
+       the   current  position  in  the  named  window.   If  any
+       attributes are set for that  position,  their  values  are
+       OR'ed  into  the  value  returned.   Constants  defined in
+       <curses.h> can be used with the & (logical  AND)  operator
+       to extract the character or attributes alone.
+
+   Attributes
+       The  following  bit-masks  may  be  AND-ed with characters
+       returned by winch.
+
+       A_CHARTEXT     Bit-mask to extract character
+       A_ATTRIBUTES   Bit-mask to extract attributes
+       A_COLOR        Bit-mask to extract color-pair field information
+
+
+
+

NOTES

+       Note that all of these routines may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x).
+
+       Comparable  functions  in  the  wide-character  (ncursesw)
+       library are described in curs_in_wch(3x).
+
+
+
+                                                          curs_inch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_inchstr.3x.html b/ncurses/doc/html/man/curs_inchstr.3x.html new file mode 100644 index 0000000..1b73cc3 --- /dev/null +++ b/ncurses/doc/html/man/curs_inchstr.3x.html @@ -0,0 +1,129 @@ + + + + +curs_inchstr 3x + + + + +

curs_inchstr 3x

+
+
+
+curs_inchstr(3x)                                       curs_inchstr(3x)
+
+
+
+
+
+

NAME

+       inchstr, inchnstr, winchstr, winchnstr, mvinchstr,
+       mvinchnstr, mvwinchstr, mvwinchnstr - get a string of
+       characters (and attributes) from a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int inchstr(chtype *chstr);
+       int inchnstr(chtype *chstr, int n);
+       int winchstr(WINDOW *win, chtype *chstr);
+       int winchnstr(WINDOW *win, chtype *chstr, int n);
+       int mvinchstr(int y, int x, chtype *chstr);
+       int mvinchnstr(int y, int x, chtype *chstr, int n);
+       int mvwinchstr(WINDOW *win, int y, int x, chtype *chstr);
+       int  mvwinchnstr(WINDOW *win, int y, int x, chtype *chstr,
+       int n);
+
+
+
+

DESCRIPTION

+       These routines return a NULL-terminated  array  of  chtype
+       quantities, starting at the current cursor position in the
+       named window and ending at the right margin of the window.
+       The  four  functions with n as the last argument, return a
+       leading substring at most n characters long (exclusive  of
+       the  trailing (chtype)0).  Constants defined in <curses.h>
+       can be used with the & (logical AND) operator  to  extract
+       the  character or the attribute alone from any position in
+       the chstr [see curs_inch(3x)].
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon  failure  and  an
+       integer  value  other  than ERR upon successful completion
+       (the number of  characters  retrieved,  exclusive  of  the
+       trailing 0).
+
+       No  error  conditions are defined.  If the chstr parameter
+       is null, no data is returned, and the return value is  ze-
+       ro.
+
+
+
+

NOTES

+       Note  that  all  routines  except winchnstr may be macros.
+       SVr4 does not document whether the result string is 0-ter-
+       minated; it does not document whether a length limit argu-
+       ment includes any trailing 0; and it does not document the
+       meaning of the return value.
+
+
+
+

PORTABILITY

+       These  functions are described in the XSI Curses standard,
+       Issue 4.  It is no more specific than the SVr4  documenta-
+       tion on the trailing 0.  It does specify that the success-
+       ful return of the functions is OK.
+
+
+
+

SEE ALSO

+       curses(3x), curs_inch(3x).
+
+       Comparable functions in the wide-character (ncursesw)  li-
+       brary are described in curs_in_wchstr(3x).
+
+
+
+                                                       curs_inchstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_initscr.3x.html b/ncurses/doc/html/man/curs_initscr.3x.html new file mode 100644 index 0000000..f5fd544 --- /dev/null +++ b/ncurses/doc/html/man/curs_initscr.3x.html @@ -0,0 +1,167 @@ + + + + +curs_initscr 3x + + + + +

curs_initscr 3x

+
+
+
+curs_initscr(3x)                                       curs_initscr(3x)
+
+
+
+
+
+

NAME

+       initscr, newterm, endwin, isendwin, set_term, delscreen -
+       curses screen initialization and manipulation routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       WINDOW *initscr(void);
+       int endwin(void);
+       bool isendwin(void);
+       SCREEN *newterm(char *type, FILE *outfd, FILE *infd);
+       SCREEN *set_term(SCREEN *new);
+       void delscreen(SCREEN* sp);
+
+
+
+

DESCRIPTION

+       initscr is normally the first curses routine to call  when
+       initializing  a program.  A few special routines sometimes
+       need to be called before it; these are  slk_init,  filter,
+       ripoffline,  use_env.  For multiple-terminal applications,
+       newterm may be called before initscr.
+
+       The initscr code determines the terminal type and initial-
+       izes  all curses data structures.  initscr also causes the
+       first call to refresh to clear the screen.  If errors  oc-
+       cur,  initscr writes an appropriate error message to stan-
+       dard error and exits; otherwise, a pointer is returned  to
+       stdscr.
+
+       A  program  that  outputs to more than one terminal should
+       use the newterm  routine  for  each  terminal  instead  of
+       initscr.  A program that needs to inspect capabilities, so
+       it can continue to run in a line-oriented mode if the ter-
+       minal cannot support a screen-oriented program, would also
+       use newterm.  The routine newterm should  be  called  once
+       for each terminal.  It returns a variable of type SCREEN *
+       which should be saved as a  reference  to  that  terminal.
+       The  arguments  are the type of the terminal to be used in
+       place of $TERM, a file pointer for output to the terminal,
+       and  another  file pointer for input from the terminal (if
+       type is NULL, $TERM will be used).  The program must  also
+       call  endwin  for  each terminal being used before exiting
+       from curses.  If newterm is called more than once for  the
+       same  terminal, the first terminal referred to must be the
+       last one for which endwin is called.
+
+       A program should always call endwin before exiting or  es-
+       caping  from  curses  mode  temporarily.  This routine re-
+       stores tty modes, moves the cursor to the lower  left-hand
+       corner  of  the  screen  and  resets the terminal into the
+       proper non-visual mode.  Calling refresh or doupdate after
+       a  temporary  escape  causes  the program to resume visual
+       mode.
+
+       The isendwin routine  returns  TRUE  if  endwin  has  been
+       called without any subsequent calls to wrefresh, and FALSE
+       otherwise.
+
+       The set_term routine is used to switch  between  different
+       terminals.   The screen reference new becomes the new cur-
+       rent terminal.  The previous terminal is returned  by  the
+       routine.   This  is  the  only  routine  which manipulates
+       SCREEN pointers; all other routines affect only  the  cur-
+       rent terminal.
+
+       The  delscreen  routine  frees storage associated with the
+       SCREEN data structure.  The endwin  routine  does  not  do
+       this, so delscreen should be called after endwin if a par-
+       ticular SCREEN is no longer needed.
+
+
+
+

RETURN VALUE

+       endwin returns the integer ERR upon failure  and  OK  upon
+       successful completion.
+
+       Routines that return pointers always return NULL on error.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion  endwin returns an error if the terminal was not ini-
+       tialized.
+
+
+
+

NOTES

+       Note that initscr and newterm may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue 4.  It specifies that portable applications must not
+       call initscr more than once.
+
+       Old versions of curses, e.g., BSD 4.4, may have returned a
+       null  pointer  from  initscr  when  an  error is detected,
+       rather than exiting.  It is safe but  redundant  to  check
+       the return value of initscr in XSI Curses.
+
+
+
+

SEE ALSO

+       curses(3x),       curs_kernel(3x),       curs_refresh(3x),
+       curs_slk(3x), curs_util(3x)
+
+
+
+                                                       curs_initscr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_inopts.3x.html b/ncurses/doc/html/man/curs_inopts.3x.html new file mode 100644 index 0000000..7eec3ed --- /dev/null +++ b/ncurses/doc/html/man/curs_inopts.3x.html @@ -0,0 +1,261 @@ + + + + +curs_inopts 3x + + + + +

curs_inopts 3x

+
+
+
+curs_inopts(3x)                                         curs_inopts(3x)
+
+
+
+
+
+

NAME

+       cbreak, nocbreak, echo, noecho, halfdelay, intrflush,
+       keypad, meta, nodelay, notimeout, raw, noraw, noqiflush,
+       qiflush, timeout, wtimeout, typeahead - curses input
+       options
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int cbreak(void);
+       int nocbreak(void);
+       int echo(void);
+       int noecho(void);
+       int halfdelay(int tenths);
+       int intrflush(WINDOW *win, bool bf);
+       int keypad(WINDOW *win, bool bf);
+       int meta(WINDOW *win, bool bf);
+       int nodelay(WINDOW *win, bool bf);
+       int raw(void);
+       int noraw(void);
+       void noqiflush(void);
+       void qiflush(void);
+       int notimeout(WINDOW *win, bool bf);
+       void timeout(int delay);
+       void wtimeout(WINDOW *win, int delay);
+       int typeahead(int fd);
+
+
+
+

DESCRIPTION

+       Normally, the tty driver buffers typed characters until  a
+       newline  or  carriage return is typed.  The cbreak routine
+       disables line buffering and erase/kill  character-process-
+       ing  (interrupt  and flow control characters are unaffect-
+       ed), making  characters  typed  by  the  user  immediately
+       available  to  the  program.  The nocbreak routine returns
+       the terminal to normal (cooked) mode.
+
+       Initially the terminal may or may not be in  cbreak  mode,
+       as the mode is inherited; therefore, a program should call
+       cbreak or nocbreak explicitly.  Most interactive  programs
+       using  curses set the cbreak mode.  Note that cbreak over-
+       rides raw.  [See curs_getch(3x) for a  discussion  of  how
+       these routines interact with echo and noecho.]
+
+       The  echo  and  noecho routines control whether characters
+       typed by the user are echoed by getch as they  are  typed.
+       Echoing by the tty driver is always disabled, but initial-
+       ly getch is in echo mode, so characters typed are  echoed.
+       Authors  of  most  interactive programs prefer to do their
+       own echoing in a controlled area of the screen, or not  to
+       echo  at  all,  so they disable echoing by calling noecho.
+       [See curs_getch(3x) for a discussion of how these routines
+       interact with cbreak and nocbreak.]
+
+       The  halfdelay  routine is used for half-delay mode, which
+       is similar to cbreak mode in that characters typed by  the
+       user  are  immediately available to the program.  However,
+       after blocking for tenths tenths of seconds,  ERR  is  re-
+       turned  if  nothing  has  been typed.  The value of tenths
+       must be a number between 1 and 255.  Use nocbreak to leave
+       half-delay mode.
+
+       If  the intrflush option is enabled, (bf is TRUE), when an
+       interrupt key  is  pressed  on  the  keyboard  (interrupt,
+       break,  quit)  all  output in the tty driver queue will be
+       flushed, giving the effect of faster response to  the  in-
+       terrupt, but causing curses to have the wrong idea of what
+       is on the screen.  Disabling (bf  is  FALSE),  the  option
+       prevents  the flush.  The default for the option is inher-
+       ited from the tty driver settings.  The window argument is
+       ignored.
+
+       The  keypad option enables the keypad of the user's termi-
+       nal.  If enabled (bf is TRUE), the user can press a  func-
+       tion  key (such as an arrow key) and wgetch returns a sin-
+       gle value representing the function key, as  in  KEY_LEFT.
+       If  disabled (bf is FALSE), curses does not treat function
+       keys specially and the program has to interpret the escape
+       sequences  itself.   If  the keypad in the terminal can be
+       turned on (made to transmit) and off (made to work  local-
+       ly),  turning on this option causes the terminal keypad to
+       be turned on when wgetch is called.  The default value for
+       keypad is false.
+
+       Initially, whether the terminal returns 7 or 8 significant
+       bits on input depends on the control mode of the tty driv-
+       er  [see  termio(7)].  To force 8 bits to be returned, in-
+       voke meta(win, TRUE); this is equivalent, under POSIX,  to
+       setting  the CS8 flag on the terminal.  To force 7 bits to
+       be returned, invoke meta(win, FALSE); this is  equivalent,
+       under POSIX, to setting the CS7 flag on the terminal.  The
+       window argument, win, is always ignored.  If the  terminfo
+       capabilities  smm (meta_on) and rmm (meta_off) are defined
+       for the  terminal,  smm  is  sent  to  the  terminal  when
+       meta(win,  TRUE)  is called and rmm is sent when meta(win,
+       FALSE) is called.
+
+       The nodelay option causes getch to be a non-blocking call.
+       If  no input is ready, getch returns ERR.  If disabled (bf
+       is FALSE), getch waits until a key is pressed.
+
+       While interpreting an input escape sequence, wgetch sets a
+       timer  while  waiting  for the next character.  If notime-
+       out(win, TRUE) is called,  then  wgetch  does  not  set  a
+       timer.  The purpose of the timeout is to differentiate be-
+       tween sequences received from a  function  key  and  those
+       typed by a user.
+
+       The  raw and noraw routines place the terminal into or out
+       of raw mode.  Raw mode is similar to cbreak mode, in  that
+       characters typed are immediately passed through to the us-
+       er program.  The differences are that in raw mode, the in-
+       terrupt,  quit,  suspend,  and flow control characters are
+       all passed through uninterpreted, instead of generating  a
+       signal.   The  behavior  of the BREAK key depends on other
+       bits in the tty driver that are not set by curses.
+
+       When the noqiflush routine is used, normal flush of  input
+       and  output queues associated with the INTR, QUIT and SUSP
+       characters will not be done [see termio(7)].  When qiflush
+       is  called,  the queues will be flushed when these control
+       characters are read.  You may want to call noqiflush()  in
+       a  signal handler if you want output to continue as though
+       the interrupt had not occurred, after the handler exits.
+
+       The timeout and wtimeout routines  set  blocking  or  non-
+       blocking  read  for a given window.  If delay is negative,
+       blocking read is used (i.e., waits  indefinitely  for  in-
+       put).   If  delay  is zero, then non-blocking read is used
+       (i.e., read returns ERR if no input is waiting).  If delay
+       is  positive, then read blocks for delay milliseconds, and
+       returns ERR if there is still no input.  Hence, these rou-
+       tines  provide the same functionality as nodelay, plus the
+       additional capability of being able to block for only  de-
+       lay milliseconds (where delay is positive).
+
+       The  curses library does ``line-breakout optimization'' by
+       looking for  typeahead  periodically  while  updating  the
+       screen.   If  input is found, and it is coming from a tty,
+       the current update is postponed until refresh or  doupdate
+       is  called again.  This allows faster response to commands
+       typed in advance.  Normally, the input FILE pointer passed
+       to  newterm,  or  stdin in the case that initscr was used,
+       will be used to do this typeahead checking.  The typeahead
+       routine  specifies  that  the  file descriptor fd is to be
+       used to check for typeahead instead.  If fd is -1, then no
+       typeahead checking is done.
+
+
+
+

RETURN VALUE

+       All  routines that return an integer return ERR upon fail-
+       ure and OK (SVr4 specifies only "an  integer  value  other
+       than  ERR")  upon  successful completion, unless otherwise
+       noted in the preceding routine descriptions.
+
+       X/Open does not define any error conditions.  In this  im-
+       plementation,  functions  with a window parameter will re-
+       turn an error if it is null.  Any function will  also  re-
+       turn an error if the terminal was not initialized.  Also,
+
+              halfdelay
+                   returns  an  error if its parameter is outside
+                   the range 1..255.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+       The  ncurses  library obeys the XPG4 standard and the his-
+       torical practice of the AT&T  curses  implementations,  in
+       that  the  echo bit is cleared when curses initializes the
+       terminal state.  BSD curses differed from  this  slightly;
+       it left the echo bit on at initialization, but the BSD raw
+       call turned it off as a side-effect.  For best  portabili-
+       ty,  set  echo or noecho explicitly just after initializa-
+       tion, even if your program remains in cooked mode.
+
+
+
+

NOTES

+       Note that echo, noecho, halfdelay, intrflush, meta,  node-
+       lay,  notimeout, noqiflush, qiflush, timeout, and wtimeout
+       may be macros.
+
+       The noraw and nocbreak calls follow historical practice in
+       that  they  attempt  to  restore to normal (`cooked') mode
+       from raw and cbreak modes respectively.  Mixing  raw/noraw
+       and  cbreak/nocbreak  calls  leads  to  tty driver control
+       states that are hard to predict or understand; it  is  not
+       recommended.
+
+
+
+

SEE ALSO

+       curses(3x), curs_getch(3x), curs_initscr(3x), termio(7)
+
+
+
+                                                        curs_inopts(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_ins_wch.3x.html b/ncurses/doc/html/man/curs_ins_wch.3x.html new file mode 100644 index 0000000..6e69d8f --- /dev/null +++ b/ncurses/doc/html/man/curs_ins_wch.3x.html @@ -0,0 +1,100 @@ + + + + +curs_ins_wch 3x + + + + +

curs_ins_wch 3x

+
+
+
+curs_ins_wch(3x)                                       curs_ins_wch(3x)
+
+
+
+
+
+

NAME

+       ins_wch,  mvins_wch,  mvwins_wch, wins_wch - insert a com-
+       plex character and rendition into a window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int ins_wch(const cchar_t *wch);
+       int wins_wch(WINDOW *win, const cchar_t *wch);
+       int mvins_wch(int y, int x, const cchar_t *wch);
+       int mvwins_wch(WINDOW *win, int y, int  x,  const  cchar_t
+       *wch);
+
+
+
+

DESCRIPTION

+       These routines, insert the complex character wch with ren-
+       dition before the character under the cursor.  All charac-
+       ters to the right of the cursor are moved one space to the
+       right, with the possibility of the rightmost character  on
+       the  line  being  lost.   The insertion operation does not
+       change the cursor position.
+
+
+
+

RETURN VALUE

+       If successful, these functions return OK.   If  not,  they
+       return ERR.
+
+
+
+

ERRORS

+       No errors are defined.
+
+
+
+

SEE ALSO

+       curses(3x), curs_insch(3x).
+
+
+
+                                                       curs_ins_wch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_ins_wstr.3x.html b/ncurses/doc/html/man/curs_ins_wstr.3x.html new file mode 100644 index 0000000..3d81870 --- /dev/null +++ b/ncurses/doc/html/man/curs_ins_wstr.3x.html @@ -0,0 +1,125 @@ + + + + +curs_ins_wstr 3x + + + + +

curs_ins_wstr 3x

+
+
+
+curs_ins_wstr(3x)                                     curs_ins_wstr(3x)
+
+
+
+
+
+

NAME

+       ins_wstr, ins_nwstr, wins_wstr, wins_nwstr, mvins_wstr,
+       mvins_nwstr, mvwins_wstr, mvwins_nwstr - insert a wide-
+       character string into a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int ins_wstr(const wchar_t *wstr);
+       int ins_nwstr(const wchar_t *wstr, int n);
+       int wins_wstr(WINDOW *win, const wchar_t *wstr);
+       int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n);
+       int mvins_wstr(int y, int x, const wchar_t *wstr);
+       int mvins_nwstr(int y, int x, const wchar_t *wstr, int n);
+       int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr);
+       int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
+
+
+
+

DESCRIPTION

+       These  routines insert a wchar_t character string (as many
+       characters as will fit on the line) before  the  character
+       under the cursor.  All characters to the right of the cur-
+       sor are shifted right, with the possibility of the  right-
+       most  characters  on  the line being lost.  No wrapping is
+       performed.  The cursor position  does  not  change  (after
+       moving  to  y, x, if specified).  The four routines with n
+       as the last argument insert a leading substring of at most
+       n  wchar_t  characters.   If  n is less than 1, the entire
+       string is inserted.
+
+       If a character in wstr is a tab, newline, carriage  return
+       or backspace, the cursor is moved appropriately within the
+       window.  A newline also does  a  clrtoeol  before  moving.
+       Tabs  are  considered  to be at every eighth column.  If a
+       character in wstr is  another  control  character,  it  is
+       drawn  in the ^X notation.  Calling win_wch after adding a
+       control character (and moving to it,  if  necessary)  does
+       not  return  the  control character, but instead returns a
+       character in the ^-representation of the  control  charac-
+       ter.
+
+
+
+

NOTES

+       Note that all but wins_nwstr may be macros.
+
+       If the first character in the string is a nonspacing char-
+       acter, these functions will fail.   XSI  does  not  define
+       what  will happen if a nonspacing character follows a con-
+       trol character.
+
+
+
+

RETURN VALUES

+       Upon successful completion,  these  functions  return  OK.
+       Otherwise, they return ERR.
+
+
+
+

SEE ALSO

+       curses(3x),        curs_insstr(3x),       curs_in_wch(3x),
+       curs_ins_wch(3x).
+
+
+
+                                                      curs_ins_wstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_insch.3x.html b/ncurses/doc/html/man/curs_insch.3x.html new file mode 100644 index 0000000..1ffe0ac --- /dev/null +++ b/ncurses/doc/html/man/curs_insch.3x.html @@ -0,0 +1,113 @@ + + + + +curs_insch 3x + + + + +

curs_insch 3x

+
+
+
+curs_insch(3x)                                           curs_insch(3x)
+
+
+
+
+
+

NAME

+       insch,  winsch,  mvinsch,  mvwinsch  -  insert a character
+       before cursor in a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int insch(chtype ch);
+       int winsch(WINDOW *win, chtype ch);
+       int mvinsch(int y, int x, chtype ch);
+       int mvwinsch(WINDOW *win, int y, int x, chtype ch);
+
+
+
+

DESCRIPTION

+       These routines insert the character ch before the  charac-
+       ter  under the cursor.  All characters to the right of the
+       cursor are moved one space to the right, with  the  possi-
+       bility  of the rightmost character on the line being lost.
+       The insertion operation does not change the  cursor  posi-
+       tion.
+
+
+
+

RETURN VALUE

+       All  routines that return an integer return ERR upon fail-
+       ure and OK (SVr4 specifies only "an  integer  value  other
+       than  ERR")  upon  successful completion, unless otherwise
+       noted in the preceding routine descriptions.
+
+
+
+

NOTES

+       These routines do not necessarily imply use of a  hardware
+       insert character feature.
+
+       Note that insch, mvinsch, and mvwinsch may be macros.
+
+
+
+

PORTABILITY

+       These  functions are described in the XSI Curses standard,
+       Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x).
+
+       Comparable  functions  in  the  wide-character  (ncursesw)
+       library are described in curs_ins_wch(3x).
+
+
+
+                                                         curs_insch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_insstr.3x.html b/ncurses/doc/html/man/curs_insstr.3x.html new file mode 100644 index 0000000..4a43951 --- /dev/null +++ b/ncurses/doc/html/man/curs_insstr.3x.html @@ -0,0 +1,127 @@ + + + + +curs_insstr 3x + + + + +

curs_insstr 3x

+
+
+
+curs_insstr(3x)                                         curs_insstr(3x)
+
+
+
+
+
+

NAME

+       insstr,  insnstr,  winsstr, winsnstr, mvinsstr, mvinsnstr,
+       mvwinsstr, mvwinsnstr - insert string before cursor  in  a
+       curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+       int insstr(const char *str);
+       int insnstr(const char *str, int n);
+       int winsstr(WINDOW *win, const char *str);
+       int winsnstr(WINDOW *win, const char *str, int n);
+       int mvinsstr(int y, int x, const char *str);
+       int mvinsnstr(int y, int x, const char *str, int n);
+       int mvwinsstr(WINDOW *win, int y, int x, const char *str);
+       int mvwinsnstr(WINDOW *win, int y, int x, const char *str,
+       int n);
+
+
+
+

DESCRIPTION

+       These  routines insert a character string (as many charac-
+       ters as will fit on the line) before the  character  under
+       the cursor.  All characters to the right of the cursor are
+       shifted right with the possibility of the rightmost  char-
+       acters  on  the line being lost.  The cursor position does
+       not change (after moving to  y,  x,  if  specified).   The
+       functions  with  n  as  the last argument insert a leading
+       substring of at most n  characters.   If  n<=0,  then  the
+       entire string is inserted.
+
+       Special characters are handled as in addch.
+
+
+
+

RETURN VALUE

+       All  routines that return an integer return ERR upon fail-
+       ure and OK (SVr4 specifies only "an  integer  value  other
+       than  ERR")  upon  successful completion, unless otherwise
+       noted in the preceding routine descriptions.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion, if the window parameter is null or the str parameter
+       is null, an error is returned.
+
+
+
+

NOTES

+       Note that all but winsnstr may be macros.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue 4, which adds const qualifiers to the arguments.
+
+       The  Single  Unix  Specification,  Version  2  states that
+       insnstr and winsnstr perform wrapping.  This  is  probably
+       an error, since it makes this group of functions inconsis-
+       tent.  Also, no implementation of  curses  documents  this
+       inconsistency.
+
+
+
+

SEE ALSO

+       curses(3x),  curs_util(3x), curs_clear(3x), curs_inch(3x).
+
+
+
+                                                        curs_insstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_instr.3x.html b/ncurses/doc/html/man/curs_instr.3x.html new file mode 100644 index 0000000..98ae39e --- /dev/null +++ b/ncurses/doc/html/man/curs_instr.3x.html @@ -0,0 +1,119 @@ + + + + +curs_instr 3x + + + + +

curs_instr 3x

+
+
+
+curs_instr(3x)                                           curs_instr(3x)
+
+
+
+
+
+

NAME

+       instr,  innstr, winstr, winnstr, mvinstr, mvinnstr, mvwin-
+       str, mvwinnstr - get a string of characters from a  curses
+       window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int instr(char *str);
+       int innstr(char *str, int n);
+       int winstr(WINDOW *win, char *str);
+       int winnstr(WINDOW *win, char *str, int n);
+       int mvinstr(int y, int x, char *str);
+       int mvinnstr(int y, int x, char *str, int n);
+       int mvwinstr(WINDOW *win, int y, int x, char *str);
+       int  mvwinnstr(WINDOW  *win,  int y, int x, char *str, int
+       n);
+
+
+
+

DESCRIPTION

+       These routines return  a  string  of  characters  in  str,
+       extracted  starting  at the current cursor position in the
+       named window.  Attributes are stripped  from  the  charac-
+       ters.   The  four  functions  with  n as the last argument
+       return a leading  substring  at  most  n  characters  long
+       (exclusive of the trailing NUL).
+
+
+
+

RETURN VALUE

+       All  of the functions return ERR upon failure, or the num-
+       ber of characters actually read into the string.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion, if the window parameter is null or the str parameter
+       is null, a zero is returned.
+
+
+
+

NOTES

+       Note that all routines except winnstr may be macros.
+
+
+
+

PORTABILITY

+       SVr4 does not document whether a length limit includes  or
+       excludes the trailing NUL.
+
+       The  ncurses library extends the XSI description by allow-
+       ing a negative value for n.  In this case,  the  functions
+       return the string ending at the right margin.
+
+
+
+

SEE ALSO

+       curses(3x).
+
+
+
+                                                         curs_instr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_inwstr.3x.html b/ncurses/doc/html/man/curs_inwstr.3x.html new file mode 100644 index 0000000..17e13b0 --- /dev/null +++ b/ncurses/doc/html/man/curs_inwstr.3x.html @@ -0,0 +1,111 @@ + + + + +curs_inwstr 3x + + + + +

curs_inwstr 3x

+
+
+
+curs_inwstr(3x)                                         curs_inwstr(3x)
+
+
+
+
+
+

NAME

+       inwstr,  innwstr,  winwstr, winnwstr, mvinwstr, mvinnwstr,
+       mvwinwstr, mvwinnwstr - get a string of wchar_t characters
+       from a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int inwstr(wchar_t *str);
+       int innwstr(wchar_t *str, int n);
+       int winwstr(WINDOW *win, wchar_t *str);
+       int winnwstr(WINDOW *win, wchar_t *str, int n);
+       int mvinwstr(int y, int x, wchar_t *str);
+       int mvinnwstr(int y, int x, wchar_t *str, int n);
+       int mvwinwstr(WINDOW *win, int y, int x, wchar_t *str);
+       int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *str, int n);
+
+
+
+

DESCRIPTION

+       These  routines  return  a string of wchar_t characters in
+       wstr, extracted starting at the current cursor position in
+       the  named window.  Attributes are stripped from the char-
+       acters.  The four functions with n as  the  last  argument
+       return a leading substring at most n bytes long (exclusive
+       of the trailing NUL).  Transfer stops at the  end  of  the
+       current  line,  or  when  n  bytes have been stored at the
+       location referenced by wstr.
+
+       If the size n is not large  enough  to  store  a  complete
+       character, an error is generated.
+
+
+
+

NOTES

+       Note that all routines except winnwstr may be macros.
+
+
+
+

RETURN VALUES

+       All routines return ERR upon failure. Upon successful com-
+       pletion, the *inwstr routines return OK, and the  *innwstr
+       routines  return  the  number  of characters read into the
+       string.
+
+
+
+

SEE ALSO

+       curses(3x), curs_instr(3x), curs_in_wchstr(3x)
+
+
+
+                                                        curs_inwstr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_kernel.3x.html b/ncurses/doc/html/man/curs_kernel.3x.html new file mode 100644 index 0000000..11f41d3 --- /dev/null +++ b/ncurses/doc/html/man/curs_kernel.3x.html @@ -0,0 +1,205 @@ + + + + +curs_kernel 3x + + + + +

curs_kernel 3x

+
+
+
+curs_kernel(3x)                                         curs_kernel(3x)
+
+
+
+
+
+

NAME

+       def_prog_mode, def_shell_mode, reset_prog_mode,
+       reset_shell_mode, resetty, savetty, getsyx, setsyx,
+       ripoffline, curs_set, napms - low-level curses routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int def_prog_mode(void);
+       int def_shell_mode(void);
+       int reset_prog_mode(void);
+       int reset_shell_mode(void);
+       int resetty(void);
+       int savetty(void);
+       void getsyx(int y, int x);
+       void setsyx(int y, int x);
+       int ripoffline(int line, int (*init)(WINDOW *, int));
+       int curs_set(int visibility);
+       int napms(int ms);
+
+
+
+

DESCRIPTION

+       The  following  routines  give low-level access to various
+       curses capabilities.  Theses routines typically  are  used
+       inside library routines.
+
+       The  def_prog_mode  and  def_shell_mode  routines save the
+       current terminal modes as the  "program"  (in  curses)  or
+       "shell"   (not  in  curses)  state  for  use  by  the  re-
+       set_prog_mode and reset_shell_mode routines.  This is done
+       automatically by initscr.  There is one such save area for
+       each screen context allocated by newterm().
+
+       The reset_prog_mode and reset_shell_mode routines  restore
+       the  terminal  to "program" (in curses) or "shell" (out of
+       curses) state.  These are  done  automatically  by  endwin
+       and,  after  an  endwin, by doupdate, so they normally are
+       not called.
+
+       The resetty and savetty  routines  save  and  restore  the
+       state  of  the  terminal modes.  savetty saves the current
+       state in a buffer and resetty restores the state  to  what
+       it was at the last call to savetty.
+
+       The  getsyx routine returns the current coordinates of the
+       virtual screen cursor in y and x.  If leaveok is currently
+       TRUE,  then -1,-1 is returned.  If lines have been removed
+       from the top of the screen, using ripoffline, y and x  in-
+       clude  these lines; therefore, y and x should be used only
+       as arguments for setsyx.
+
+       The setsyx routine sets the virtual screen cursor to y, x.
+       If y and x are both -1, then leaveok is set.  The two rou-
+       tines getsyx and setsyx are designed to be used by  a  li-
+       brary  routine,  which manipulates curses windows but does
+       not want to change the current position of  the  program's
+       cursor.   The library routine would call getsyx at the be-
+       ginning, do its manipulation of  its  own  windows,  do  a
+       wnoutrefresh  on  its  windows, call setsyx, and then call
+       doupdate.
+
+       The ripoffline routine provides access to the same facili-
+       ty  that  slk_init  [see  curs_slk(3x)] uses to reduce the
+       size of the screen.   ripoffline  must  be  called  before
+       initscr or newterm is called.  If line is positive, a line
+       is removed from the top of stdscr; if line is negative,  a
+       line is removed from the bottom.  When this is done inside
+       initscr, the routine init (supplied by the user) is called
+       with  two arguments: a window pointer to the one-line win-
+       dow that has been allocated and an integer with the number
+       of columns in the window.  Inside this initialization rou-
+       tine, the integer variables LINES  and  COLS  (defined  in
+       <curses.h>) are not guaranteed to be accurate and wrefresh
+       or doupdate must not be called.  It is allowable  to  call
+       wnoutrefresh during the initialization routine.
+
+       ripoffline  can  be called up to five times before calling
+       initscr or newterm.
+
+       The curs_set routine sets the cursor state is set  to  in-
+       visible,  normal,  or very visible for visibility equal to
+       0, 1, or 2 respectively.  If  the  terminal  supports  the
+       visibility  requested,  the  previous  cursor state is re-
+       turned; otherwise, ERR is returned.
+
+       The napms routine is used to sleep for ms milliseconds.
+
+
+
+

RETURN VALUE

+       Except for curs_set, these routines always return OK.
+
+       curs_set returns the previous cursor state, or ERR if  the
+       requested visibility is not supported.
+
+       X/Open  defines  no error conditions.  In this implementa-
+       tion
+
+              def_prog_mode, def_shell_mode, reset_prog_mode, re-
+              set_shell_mode
+                   return an error if the terminal was  not  ini-
+                   tialized,  or  if  the  I/O call to obtain the
+                   terminal settings fails.
+
+              ripoffline
+                   returns an error  if  the  maximum  number  of
+                   ripped-off  lines exceeds the maximum (NRIPS =
+                   5).
+
+
+
+

NOTES

+       Note that getsyx is a macro, so & is not necessary  before
+       the variables y and x.
+
+       Older  SVr4  man  pages  warn  that  the  return  value of
+       curs_set "is currently  incorrect".   This  implementation
+       gets  it  right, but it may be unwise to count on the cor-
+       rectness of the return value anywhere else.
+
+       Both ncurses and SVr4 will  call  curs_set  in  endwin  if
+       curs_set  has  been  called  to make the cursor other than
+       normal, i.e., either invisible or very visible.  There  is
+       no  way  for ncurses to determine the initial cursor state
+       to restore that.
+
+
+
+

PORTABILITY

+       The functions setsyx and getsyx are not described  in  the
+       XSI  Curses standard, Issue 4.  All other functions are as
+       described in XSI Curses.
+
+       The SVr4 documentation describes setsyx and getsyx as hav-
+       ing  return  type  int.  This  is  misleading, as they are
+       macros with no documented semantics for the return  value.
+
+
+
+

SEE ALSO

+       curses(3x),  curs_initscr(3x),  curs_outopts(3x), curs_re-
+       fresh(3x), curs_scr_dump(3x), curs_slk(3x)
+
+
+
+                                                        curs_kernel(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_legacy.3x.html b/ncurses/doc/html/man/curs_legacy.3x.html new file mode 100644 index 0000000..d1de590 --- /dev/null +++ b/ncurses/doc/html/man/curs_legacy.3x.html @@ -0,0 +1,120 @@ + + + + +curs_legacy 3x + + + + +

curs_legacy 3x

+
+
+
+curs_legacy(3x)                                         curs_legacy(3x)
+
+
+
+
+
+

NAME

+       getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, get-
+       parx, getpary - get curses cursor and window coordinates
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int getbegx(WINDOW *win);
+       int getbegy(WINDOW *win);
+       int getcurx(WINDOW *win);
+       int getcury(WINDOW *win);
+       int getmaxx(WINDOW *win);
+       int getmaxy(WINDOW *win);
+       int getparx(WINDOW *win);
+       int getpary(WINDOW *win);
+
+
+
+

DESCRIPTION

+       The getbegy and getbegx functions return the same data  as
+       getbegyx.
+
+       The  getcury and getcurx functions return the same data as
+       getyx.
+
+       The getmaxy and getmaxx functions return the same data  as
+       getmaxyx.
+
+       The  getpary and getparx functions return the same data as
+       getparyx.
+
+
+
+

RETURN VALUE

+       These functions return an integer, or ERR  if  the  window
+       parameter is null.
+
+
+
+

NOTES

+       All  of  these interfaces are provided as macros and func-
+       tions.  The macros are suppressed (and only the  functions
+       provided)  when  NCURSES_OPAQUE  is defined.  The standard
+       forms such as getyx must be implemented as macros, and (in
+       this implementation) are defined in terms of the functions
+       described here, to avoid reliance on internal  details  of
+       the WINDOW structure.
+
+
+
+

PORTABILITY

+       These functions were supported on Version 7, BSD or System
+       V implementations.
+
+
+
+

SEE ALSO

+       curses(3x), curs_getyx(3x), curs_opaque(3x)
+
+
+
+                                                        curs_legacy(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_mouse.3x.html b/ncurses/doc/html/man/curs_mouse.3x.html new file mode 100644 index 0000000..2309482 --- /dev/null +++ b/ncurses/doc/html/man/curs_mouse.3x.html @@ -0,0 +1,308 @@ + + + + +curs_mouse 3x + + + + +

curs_mouse 3x

+
+
+
+curs_mouse(3x)                                           curs_mouse(3x)
+
+
+
+
+
+

NAME

+       getmouse, ungetmouse, mousemask, wenclose, mouse_trafo,
+       wmouse_trafo, mouseinterval - mouse interface through
+       curses
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       typedef unsigned long mmask_t;
+
+       typedef struct
+       {
+           short id;         /* ID to distinguish multiple devices */
+           int x, y, z;      /* event coordinates */
+           mmask_t bstate;   /* button state bits */
+       }
+       MEVENT;
+       int getmouse(MEVENT *event);
+       int ungetmouse(MEVENT *event);
+       mmask_t mousemask(mmask_t newmask, mmask_t *oldmask);
+       bool wenclose(const WINDOW *win, int y, int x);
+       bool mouse_trafo(int* pY, int* pX, bool to_screen);
+       bool wmouse_trafo(const WINDOW* win, int* pY, int* pX,
+            bool to_screen);
+       int mouseinterval(int erval);
+
+
+
+

DESCRIPTION

+       These  functions provide an interface to mouse events from
+       ncurses(3x).  Mouse events are  represented  by  KEY_MOUSE
+       pseudo-key values in the wgetch input stream.
+
+       To  make mouse events visible, use the mousemask function.
+       This will set the mouse events to  be  reported.   By  de-
+       fault,  no  mouse  events are reported.  The function will
+       return a mask to indicate which  of  the  specified  mouse
+       events  can be reported; on complete failure it returns 0.
+       If oldmask is non-NULL, this function fills the  indicated
+       location  with  the  previous  value of the given window's
+       mouse event mask.
+
+       As a side effect, setting a zero mousemask  may  turn  off
+       the  mouse pointer; setting a nonzero mask may turn it on.
+       Whether this happens is device-dependent.
+
+       Here are the mouse event type masks which may be defined:
+
+
+       Name                     Description
+       ---------------------------------------------------------------------
+       BUTTON1_PRESSED          mouse button 1 down
+       BUTTON1_RELEASED         mouse button 1 up
+       BUTTON1_CLICKED          mouse button 1 clicked
+       BUTTON1_DOUBLE_CLICKED   mouse button 1 double clicked
+       BUTTON1_TRIPLE_CLICKED   mouse button 1 triple clicked
+       ---------------------------------------------------------------------
+       BUTTON2_PRESSED          mouse button 2 down
+       BUTTON2_RELEASED         mouse button 2 up
+       BUTTON2_CLICKED          mouse button 2 clicked
+       BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
+       BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
+       ---------------------------------------------------------------------
+
+       BUTTON3_PRESSED          mouse button 3 down
+       BUTTON3_RELEASED         mouse button 3 up
+       BUTTON3_CLICKED          mouse button 3 clicked
+       BUTTON3_DOUBLE_CLICKED   mouse button 3 double clicked
+       BUTTON3_TRIPLE_CLICKED   mouse button 3 triple clicked
+       ---------------------------------------------------------------------
+       BUTTON4_PRESSED          mouse button 4 down
+       BUTTON4_RELEASED         mouse button 4 up
+       BUTTON4_CLICKED          mouse button 4 clicked
+       BUTTON4_DOUBLE_CLICKED   mouse button 4 double clicked
+       BUTTON4_TRIPLE_CLICKED   mouse button 4 triple clicked
+       ---------------------------------------------------------------------
+       BUTTON5_PRESSED          mouse button 5 down
+       BUTTON5_RELEASED         mouse button 5 up
+       BUTTON5_CLICKED          mouse button 5 clicked
+       BUTTON5_DOUBLE_CLICKED   mouse button 5 double clicked
+       BUTTON5_TRIPLE_CLICKED   mouse button 5 triple clicked
+       ---------------------------------------------------------------------
+       BUTTON_SHIFT             shift was down during button state change
+       BUTTON_CTRL              control was down during button state change
+       BUTTON_ALT               alt was down during button state change
+       ALL_MOUSE_EVENTS         report all button state changes
+       REPORT_MOUSE_POSITION    report mouse movement
+       ---------------------------------------------------------------------
+
+       Once a class of mouse events have been made visible  in  a
+       window, calling the wgetch function on that window may re-
+       turn KEY_MOUSE as an indicator that a mouse event has been
+       queued.   To read the event data and pop the event off the
+       queue, call getmouse.  This function will return OK  if  a
+       mouse  event  is actually visible in the given window, ERR
+       otherwise.  When getmouse returns OK, the  data  deposited
+       as  y  and  x  in  the event structure coordinates will be
+       screen-relative character-cell coordinates.  The  returned
+       state  mask  will have exactly one bit set to indicate the
+       event type.
+
+       The ungetmouse function behaves  analogously  to  ungetch.
+       It  pushes a KEY_MOUSE event onto the input queue, and as-
+       sociates with that event the given state data and  screen-
+       relative character-cell coordinates.
+
+       The  wenclose  function  tests  whether  a  given  pair of
+       screen-relative character-cell coordinates is enclosed  by
+       a  given  window, returning TRUE if it is and FALSE other-
+       wise.  It is useful for determining  what  subset  of  the
+       screen windows enclose the location of a mouse event.
+
+       The wmouse_trafo function transforms a given pair of coor-
+       dinates from stdscr-relative  coordinates  to  coordinates
+       relative to the given window or vice versa.  Please remem-
+       ber, that stdscr-relative coordinates are not always iden-
+       tical  to window-relative coordinates due to the mechanism
+       to reserve lines on top or bottom of the screen for  other
+       purposes (see the ripoffline() and slk_init calls, for ex-
+       ample).  If the parameter to_screen is TRUE, the  pointers
+       pY, pX must reference the coordinates of a location inside
+       the window win.  They are converted to window-relative co-
+       ordinates  and returned through the pointers.  If the con-
+       version was successful, the function returns TRUE.  If one
+       of  the  parameters was NULL or the location is not inside
+       the window, FALSE is returned.  If to_screen is FALSE, the
+       pointers  pY,  pX  must  reference window-relative coordi-
+       nates.  They are converted to stdscr-relative  coordinates
+       if  the  window win encloses this point.  In this case the
+       function returns TRUE.  If one of the parameters  is  NULL
+       or  the point is not inside the window, FALSE is returned.
+       Please notice, that the referenced  coordinates  are  only
+       replaced  by  the converted coordinates if the transforma-
+       tion was successful.
+
+       The mouse_trafo function performs the same translation  as
+       wmouse_trafo, using stdscr for win.
+
+       The mouseinterval function sets the maximum time (in thou-
+       sands of a second) that can elapse between press  and  re-
+       lease  events  for  them to be recognized as a click.  Use
+       mouseinterval(0) to disable click resolution.  This  func-
+       tion returns the previous interval value.  Use mouseinter-
+       val(-1) to obtain the interval without altering  it.   The
+       default is one sixth of a second.
+
+       Note  that  mouse  events will be ignored when input is in
+       cooked mode, and will cause an error beep when cooked mode
+       is  being simulated in a window by a function such as get-
+       str that expects a linefeed for input-loop termination.
+
+
+
+

RETURN VALUE

+       getmouse and ungetmouse return the integer ERR upon  fail-
+       ure or OK upon successful completion.
+
+              getmouse
+                   returns an error.  If no mouse driver was ini-
+                   tialized, or if the mask parameter is zero,
+
+              ungetmouse
+                   returns an error if the FIFO is full.
+
+       mousemask returns the mask of reportable events.
+
+       mouseinterval returns the previous interval value,  unless
+       the  terminal  was  not initialized.  In that case, it re-
+       turns the maximum interval value (166).
+
+       wenclose and wmouse_trafo are boolean functions  returning
+       TRUE or FALSE depending on their test result.
+
+
+
+

PORTABILITY

+       These  calls  were  designed  for ncurses(3x), and are not
+       found in SVr4 curses, 4.4BSD curses, or any other previous
+       version of curses.
+
+       The feature macro NCURSES_MOUSE_VERSION is provided so the
+       preprocessor can be used to test  whether  these  features
+       are  present.   If  the interface is changed, the value of
+       NCURSES_MOUSE_VERSION will be incremented.   These  values
+       for  NCURSES_MOUSE_VERSION may be specified when configur-
+       ing ncurses:
+
+              1  has definitions for reserved events.   The  mask
+                 uses 28 bits.
+
+              2  adds definitions for button 5, removes the defi-
+                 nitions for reserved events.  The mask  uses  29
+                 bits.
+
+       The  order  of the MEVENT structure members is not guaran-
+       teed.  Additional fields may be added to the structure  in
+       the future.
+
+       Under  ncurses(3x),  these calls are implemented using ei-
+       ther xterm's built-in mouse-tracking API or  platform-spe-
+       cific drivers including
+              Alessandro Rubini's gpm server.
+              FreeBSD sysmouse
+              OS/2 EMX
+       If  you  are  using  an  unsupported  configuration, mouse
+       events will not be visible to ncurses(3x) (and the  mouse-
+       mask function will always return 0).
+
+       If  the  terminfo entry contains a XM string, this is used
+       in the xterm mouse driver to control the way the  terminal
+       is initialized for mouse operation.  The default, if XM is
+       not found, corresponds to private mode 1000 of xterm:
+              \E[?1000%?%p1%{1}%=%th%el%;
+       The z member in the event structure is not presently used.
+       It  is  intended  for use with touch screens (which may be
+       pressure-sensitive)   or   with   3D-mice/trackballs/power
+       gloves.
+
+
+
+

BUGS

+       Mouse  events under xterm will not in fact be ignored dur-
+       ing cooked mode, if they have been enabled  by  mousemask.
+       Instead,  the  xterm  mouse report sequence will appear in
+       the string read.
+
+       Mouse events under xterm will not be detected correctly in
+       a  window  with  its keypad bit off, since they are inter-
+       preted as a variety of function key.   Your  terminfo  de-
+       scription  should  have kmous set to "\E[M" (the beginning
+       of the response from xterm for mouse clicks).  Other  val-
+       ues  for  kmous  are permitted, but under the same assump-
+       tion, i.e., it is the beginning of the response.
+
+       Because there are  no  standard  terminal  responses  that
+       would  serve to identify terminals which support the xterm
+       mouse protocol, ncurses assumes that if your  $TERM  envi-
+       ronment  variable contains "xterm", or kmous is defined in
+       the terminal description, then the terminal may send mouse
+       events.
+
+
+
+

SEE ALSO

+       curses(3x), curs_kernel(3x), curs_slk(3x).
+
+
+
+                                                         curs_mouse(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_move.3x.html b/ncurses/doc/html/man/curs_move.3x.html new file mode 100644 index 0000000..25c52b4 --- /dev/null +++ b/ncurses/doc/html/man/curs_move.3x.html @@ -0,0 +1,105 @@ + + + + +curs_move 3x + + + + +

curs_move 3x

+
+
+
+curs_move(3x)                                             curs_move(3x)
+
+
+
+
+
+

NAME

+       move, wmove - move curses window cursor
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int move(int y, int x);
+       int wmove(WINDOW *win, int y, int x);
+
+
+
+

DESCRIPTION

+       These  routines move the cursor associated with the window
+       to line y and column x.  This routine does  not  move  the
+       physical  cursor  of the terminal until refresh is called.
+       The position specified is relative to the upper  left-hand
+       corner of the window, which is (0,0).
+
+
+
+

RETURN VALUE

+       These routines return ERR upon failure and OK (SVr4 speci-
+       fies only "an integer value other than ERR") upon success-
+       ful completion.
+
+       Specifically,  they  return an error if the window pointer
+       is null, or if the position is outside the window.
+
+
+
+

NOTES

+       Note that move may be a macro.
+
+
+
+

PORTABILITY

+       These functions are described in the XSI Curses  standard,
+       Issue 4.
+
+
+
+

SEE ALSO

+       curses(3x), curs_refresh(3x)
+
+
+
+                                                          curs_move(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_opaque.3x.html b/ncurses/doc/html/man/curs_opaque.3x.html new file mode 100644 index 0000000..3e0f1ae --- /dev/null +++ b/ncurses/doc/html/man/curs_opaque.3x.html @@ -0,0 +1,151 @@ + + + + +curs_opaque 3x + + + + +

curs_opaque 3x

+
+
+
+curs_opaque(3x)                                         curs_opaque(3x)
+
+
+
+
+
+

NAME

+       is_cleared, is_idlok, is_idcok, is_immedok, is_keypad,
+       is_leaveok, is_nodelay, is_timeout, is_scrollok, is_syncok
+       - curses window properties
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       bool is_cleared(const WINDOW *win);
+       bool is_idcok(const WINDOW *win);
+       bool is_idlok(const WINDOW *win);
+       bool is_immedok(const WINDOW *win);
+       bool is_keypad(const WINDOW *win);
+       bool is_leaveok(const WINDOW *win);
+       bool is_nodelay(const WINDOW *win);
+       bool is_notimeout(const WINDOW *win);
+       bool is_scrollok(const WINDOW *win);
+       bool is_syncok(const WINDOW *win);
+       WINDOW * wgetparent(const WINDOW *win);
+       int wgetscrreg(const WINDOW *win, int *top, int *bottom);
+
+
+
+

DESCRIPTION

+       This  implementation provides functions which return prop-
+       erties set in the WINDOW  structure,  allowing  it  to  be
+       ``opaque'' if the symbol NCURSES_OPAQUE is defined:
+
+       is_cleared
+            returns the value set in clearok
+
+       is_idcok
+            returns the value set in idcok
+
+       is_idlok
+            returns the value set in idlok
+
+       is_immedok
+            returns the value set in immedok
+
+       is_keypad
+            returns the value set in keypad
+
+       is_leaveok
+            returns the value set in leaveok
+
+       is_nodelay
+            returns the value set in nodelay
+
+       is_notimeout
+            returns the value set in notimeout
+
+       is_scrollok
+            returns the value set in scrollok
+
+       is_syncok
+            returns the value set in syncok
+
+       wgetparent
+            returns  the parent WINDOW pointer for subwindows, or
+            NULL for windows having no parent.
+
+       wgetscrreg
+            returns the top and bottom  rows  for  the  scrolling
+            margin as set in wsetscrreg.
+
+
+
+

RETURN VALUE

+       These functions all return TRUE or FALSE, except as noted.
+
+
+
+

NOTES

+       Both a macro and a function are provided for each name.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on  ncurses  ex-
+       tensions be conditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       curses(3x),  curs_inopts(3x),  curs_outopts(3x), curs_win-
+       dow(3x)
+
+
+
+                                                        curs_opaque(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_outopts.3x.html b/ncurses/doc/html/man/curs_outopts.3x.html new file mode 100644 index 0000000..c8d4a06 --- /dev/null +++ b/ncurses/doc/html/man/curs_outopts.3x.html @@ -0,0 +1,233 @@ + + + + +curs_outopts 3x + + + + +

curs_outopts 3x

+
+
+
+curs_outopts(3x)                                       curs_outopts(3x)
+
+
+
+
+
+

NAME

+       clearok, idlok, idcok, immedok, leaveok, setscrreg,
+       wsetscrreg, scrollok, nl, nonl - curses output options
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int clearok(WINDOW *win, bool bf);
+       int idlok(WINDOW *win, bool bf);
+       void idcok(WINDOW *win, bool bf);
+       void immedok(WINDOW *win, bool bf);
+       int leaveok(WINDOW *win, bool bf);
+       int setscrreg(int top, int bot);
+       int wsetscrreg(WINDOW *win, int top, int bot);
+       int scrollok(WINDOW *win, bool bf);
+       int nl(void);
+       int nonl(void);
+
+
+
+

DESCRIPTION

+       These routines set options that change the style of output
+       within  curses.   All  options are initially FALSE, unless
+       otherwise stated.  It is not necessary to turn  these  op-
+       tions off before calling endwin.
+
+       If  clearok is called with TRUE as argument, the next call
+       to wrefresh with this window will clear  the  screen  com-
+       pletely  and  redraw the entire screen from scratch.  This
+       is useful when the contents of the screen  are  uncertain,
+       or  in  some  cases for a more pleasing visual effect.  If
+       the win argument to clearok is the global variable curscr,
+       the  next  call  to  wrefresh  with  any window causes the
+       screen to be cleared and repainted from scratch.
+
+       If idlok is called with TRUE as  second  argument,  curses
+       considers using the hardware insert/delete line feature of
+       terminals so equipped.  Calling idlok with FALSE as second
+       argument  disables  use  of  line  insertion and deletion.
+       This option should be  enabled  only  if  the  application
+       needs  insert/delete  line, for example, for a screen edi-
+       tor.  It is disabled by default because insert/delete line
+       tends  to  be  visually annoying when used in applications
+       where it is not really needed.  If insert/delete line can-
+       not  be  used,  curses redraws the changed portions of all
+       lines.
+
+       If idcok is called with FALSE as second  argument,  curses
+       no longer considers using the hardware insert/delete char-
+       acter feature of terminals so equipped.  Use of  character
+       insert/delete  is  enabled by default.  Calling idcok with
+       TRUE as second argument re-enables use of character inser-
+       tion and deletion.
+
+       If  immedok is called with TRUE as argument, any change in
+       the window image, such as the ones caused by waddch, wclr-
+       tobot,  wscrl,  etc.,  automatically  cause a call to wre-
+       fresh.  However, it may degrade performance  considerably,
+       due  to repeated calls to wrefresh.  It is disabled by de-
+       fault.
+
+       Normally, the hardware cursor is left at the  location  of
+       the window cursor being refreshed.  The leaveok option al-
+       lows the cursor to be left wherever the update happens  to
+       leave  it.  It is useful for applications where the cursor
+       is not used, since it reduces the need for cursor motions.
+
+       The  setscrreg  and wsetscrreg routines allow the applica-
+       tion programmer to set a software scrolling  region  in  a
+       window.   top  and bot are the line numbers of the top and
+       bottom margin of the scrolling region.  (Line 0 is the top
+       line  of the window.)  If this option and scrollok are en-
+       abled, an attempt to move off the bottom margin line caus-
+       es all lines in the scrolling region to scroll one line in
+       the direction of the first line.  Only  the  text  of  the
+       window  is  scrolled.   (Note  that this has nothing to do
+       with the use of a physical scrolling region capability  in
+       the terminal, like that in the VT100.  If idlok is enabled
+       and the terminal has either  a  scrolling  region  or  in-
+       sert/delete line capability, they will probably be used by
+       the output routines.)
+
+       The scrollok option controls what happens when the  cursor
+       of  a  window  is  moved  off  the  edge  of the window or
+       scrolling region, either as a result of a  newline  action
+       on  the  bottom  line, or typing the last character of the
+       last line.  If disabled, (bf is FALSE), the cursor is left
+       on  the bottom line.  If enabled, (bf is TRUE), the window
+       is scrolled up one line (Note that  to  get  the  physical
+       scrolling  effect on the terminal, it is also necessary to
+       call idlok).
+
+       The nl and nonl routines control  whether  the  underlying
+       display  device  translates the return key into newline on
+       input, and whether it translates newline into  return  and
+       line-feed  on output (in either case, the call addch('\n')
+       does the equivalent of return and line feed on the virtual
+       screen).   Initially, these translations do occur.  If you
+       disable them using nonl, curses will be able to make  bet-
+       ter  use  of the line-feed capability, resulting in faster
+       cursor motion.  Also, curses will then be able  to  detect
+       the return key.
+
+
+
+

RETURN VALUE

+       The functions setscrreg and wsetscrreg return OK upon suc-
+       cess and ERR upon failure.  All other routines that return
+       an integer always return OK.
+
+       X/Open does not define any error conditions.
+
+       In this implementation, those functions that have a window
+       pointer will return an error  if  the  window  pointer  is
+       null.
+
+              wclrtoeol
+                   returns  an  error  if  the cursor position is
+                   about to wrap.
+
+              wsetscrreg
+                   returns an error if the scrolling region  lim-
+                   its extend outside the window.
+
+       X/Open  does not define any error conditions.  This imple-
+       mentation returns an error if the window pointer is  null.
+
+
+
+

PORTABILITY

+       These  functions are described in the XSI Curses standard,
+       Issue 4.
+
+       The XSI Curses standard is ambiguous on  the  question  of
+       whether  raw()  should  disable the CRLF translations con-
+       trolled by nl() and nonl().  BSD curses did turn off these
+       translations;  AT&T  curses (at least as late as SVr1) did
+       not.  We choose to do so, on the theory that a  programmer
+       requesting  raw  input wants a clean (ideally 8-bit clean)
+       connection that the operating system will not alter.
+
+       Some historic curses implementations had,  as  an  undocu-
+       mented  feature,  the  ability  to  do  the  equivalent of
+       clearok(..., 1) by saying touchwin(stdscr)  or  clear(std-
+       scr).  This will not work under ncurses.
+
+       Earlier  System  V  curses  implementations specified that
+       with scrollok enabled, any window modification  triggering
+       a  scroll also forced a physical refresh.  XSI Curses does
+       not require this, and ncurses avoids doing it  to  perform
+       better vertical-motion optimization at wrefresh time.
+
+       The  XSI  Curses standard does not mention that the cursor
+       should be made invisible  as  a  side-effect  of  leaveok.
+       SVr4  curses  documentation  does  this, but the code does
+       not.  Use curs_set to make the cursor invisible.
+
+
+
+

NOTES

+       Note that clearok, leaveok, scrollok, idcok, nl, nonl  and
+       setscrreg may be macros.
+
+       The immedok routine is useful for windows that are used as
+       terminal emulators.
+
+
+
+

SEE ALSO

+       curses(3x),        curs_addch(3x),         curs_clear(3x),
+       curs_initscr(3x), curs_scroll(3x), curs_refresh(3x)
+
+
+
+                                                       curs_outopts(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_overlay.3x.html b/ncurses/doc/html/man/curs_overlay.3x.html new file mode 100644 index 0000000..967186c --- /dev/null +++ b/ncurses/doc/html/man/curs_overlay.3x.html @@ -0,0 +1,122 @@ + + + + +curs_overlay 3x + + + + +

curs_overlay 3x

+
+
+
+curs_overlay(3x)                                       curs_overlay(3x)
+
+
+
+
+
+

NAME

+       overlay, overwrite, copywin - overlay and manipulate
+       overlapped curses windows
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int overlay(const WINDOW *srcwin, WINDOW *dstwin);
+       int overwrite(const WINDOW *srcwin, WINDOW *dstwin);
+       int copywin(const  WINDOW  *srcwin,  WINDOW  *dstwin,  int
+       sminrow,
+             int smincol, int dminrow, int dmincol, int dmaxrow,
+             int dmaxcol, int overlay);
+
+
+
+

DESCRIPTION

+       The  overlay  and overwrite routines overlay srcwin on top
+       of dstwin.  scrwin and dstwin are not required to  be  the
+       same  size;  only  text  where  the two windows overlap is
+       copied.  The difference is that overlay is non-destructive
+       (blanks  are not copied) whereas overwrite is destructive.
+
+       The copywin routine provides a finer granularity  of  con-
+       trol over the overlay and overwrite routines.  Like in the
+       prefresh routine, a rectangle is specified in the destina-
+       tion  window,  (dminrow,  dmincol) and (dmaxrow, dmaxcol),
+       and the upper-left-corner coordinates of the  source  win-
+       dow, (sminrow, smincol).  If the argument overlay is true,
+       then copying is non-destructive, as in overlay.
+
+
+
+

RETURN VALUE

+       Routines that return an integer return ERR  upon  failure,
+       and  OK  (SVr4 only specifies "an integer value other than
+       ERR") upon successful completion.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion,  copywin,  overlay  and overwrite return an error if
+       either of the window pointers are null, or if some part of
+       the window would be placed off-screen.
+
+
+
+

NOTES

+       Note that overlay and overwrite may be macros.
+
+
+
+

PORTABILITY

+       The XSI Curses standard, Issue 4 describes these functions
+       (adding the const qualifiers).  It further specifies their
+       behavior in the presence of characters with multibyte ren-
+       ditions (not yet supported in this implementation).
+
+
+
+

SEE ALSO

+       curses(3x), curs_pad(3x), curs_refresh(3x)
+
+
+
+                                                       curs_overlay(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_pad.3x.html b/ncurses/doc/html/man/curs_pad.3x.html new file mode 100644 index 0000000..e497181 --- /dev/null +++ b/ncurses/doc/html/man/curs_pad.3x.html @@ -0,0 +1,184 @@ + + + + +curs_pad 3x + + + + +

curs_pad 3x

+
+
+
+curs_pad(3x)                                               curs_pad(3x)
+
+
+
+
+
+

NAME

+       newpad, subpad, prefresh, pnoutrefresh, pechochar,
+       pecho_wchar - create and display curses pads
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       WINDOW *newpad(int nlines, int ncols);
+       WINDOW *subpad(WINDOW *orig, int nlines, int ncols,
+             int begin_y, int begin_x);
+       int prefresh(WINDOW *pad, int pminrow, int pmincol,
+             int sminrow, int smincol, int smaxrow, int smaxcol);
+       int pnoutrefresh(WINDOW *pad, int pminrow, int pmincol,
+             int sminrow, int smincol, int smaxrow, int smaxcol);
+       int pechochar(WINDOW *pad, chtype ch);
+       int pecho_wchar(WINDOW *pad, const cchar_t *wch);
+
+
+
+

DESCRIPTION

+       The newpad routine creates and returns a pointer to a  new
+       pad data structure with the given number of lines, nlines,
+       and columns, ncols.  A pad is like a window,  except  that
+       it is not restricted by the screen size, and is not neces-
+       sarily associated with a particular part  of  the  screen.
+       Pads can be used when a large window is needed, and only a
+       part of the window will be on the screen at one time.  Au-
+       tomatic refreshes of pads (e.g., from scrolling or echoing
+       of input) do not occur.  It is not legal to call  wrefresh
+       with  a  pad  as  an  argument;  the  routines prefresh or
+       pnoutrefresh should be called instead.   Note  that  these
+       routines require additional parameters to specify the part
+       of the pad to be displayed and the location on the  screen
+       to be used for the display.
+
+       The subpad routine creates and returns a pointer to a sub-
+       window within a  pad  with  the  given  number  of  lines,
+       nlines,  and  columns,  ncols.   Unlike subwin, which uses
+       screen coordinates, the window is  at  position  (begin_x,
+       begin_y)  on the pad.  The window is made in the middle of
+       the window orig, so that changes made to one window affect
+       both windows.  During the use of this routine, it will of-
+       ten be necessary to call touchwin or touchline on orig be-
+       fore calling prefresh.
+
+       The  prefresh  and  pnoutrefresh routines are analogous to
+       wrefresh and wnoutrefresh except that they relate to  pads
+       instead  of windows.  The additional parameters are needed
+       to indicate what part of the pad and screen are  involved.
+       pminrow  and pmincol specify the upper left-hand corner of
+       the rectangle to be displayed in the pad.  sminrow,  smin-
+       col, smaxrow, and smaxcol specify the edges of the rectan-
+       gle to be displayed on the screen.  The  lower  right-hand
+       corner of the rectangle to be displayed in the pad is cal-
+       culated from the screen coordinates, since the  rectangles
+       must  be  the same size.  Both rectangles must be entirely
+       contained within their  respective  structures.   Negative
+       values of pminrow, pmincol, sminrow, or smincol are treat-
+       ed as if they were zero.
+
+       The pechochar routine is functionally equivalent to a call
+       to  addch  followed by a call to refresh, a call to waddch
+       followed by a call to wrefresh, or a call to  waddch  fol-
+       lowed  by  a  call to prefresh.  The knowledge that only a
+       single character is being output is taken into  considera-
+       tion  and, for non-control characters, a considerable per-
+       formance gain might be seen by using  these  routines  in-
+       stead of their equivalents.  In the case of pechochar, the
+       last location of the pad on the screen is reused  for  the
+       arguments to prefresh.
+
+       The  pecho_wchar  function is the analogous wide-character
+       form of pechochar.  It outputs one character to a pad  and
+       immediately  refreshes the pad.  It does this by a call to
+       wadd_wch followed by a call to prefresh.
+
+
+
+

RETURN VALUE

+       Routines that return an integer return  ERR  upon  failure
+       and  OK  (SVr4 only specifies "an integer value other than
+       ERR") upon successful completion.
+
+       Routines that return pointers return NULL  on  error,  and
+       set errno to ENOMEM.
+
+       X/Open  does not define any error conditions.  In this im-
+       plementation
+
+              prefresh and pnoutrefresh
+                   return an error if the window pointer is null,
+                   or if the window is not really a pad or if the
+                   area to refresh extends off-screen or  if  the
+                   minimum coordinates are greater than the maxi-
+                   mum.
+
+              pechochar
+                   returns an error if the window is not really a
+                   pad,  and the associated call to wechochar re-
+                   turns an error.
+
+              pecho_wchar
+                   returns an error if the window is not really a
+                   pad,  and  the  associated call to wecho_wchar
+                   returns an error.
+
+
+
+

NOTES

+       Note that pechochar may be a macro.
+
+
+
+

PORTABILITY

+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.
+
+
+
+

SEE ALSO

+       curses(3x),  curs_refresh(3x),  curs_touch(3x),  curs_add-
+       ch(3x).
+
+
+
+                                                           curs_pad(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_print.3x.html b/ncurses/doc/html/man/curs_print.3x.html new file mode 100644 index 0000000..15f76f9 --- /dev/null +++ b/ncurses/doc/html/man/curs_print.3x.html @@ -0,0 +1,121 @@ + + + + +curs_print 3x + + + + +

curs_print 3x

+
+
+
+curs_print(3x)                                           curs_print(3x)
+
+
+
+
+
+

NAME

+       mcprint - ship binary data to printer
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int mcprint(char *data, int len);
+
+
+
+

DESCRIPTION

+       This  function  uses the mc5p or mc4 and mc5 capabilities,
+       if they are present, to  ship  given  data  to  a  printer
+       attached to the terminal.
+
+       Note  that  the mcprint code has no way to do flow control
+       with the printer or to know how  much  buffering  it  has.
+       Your  application  is  responsible for keeping the rate of
+       writes to the printer below its continuous throughput rate
+       (typically  about  half  of its nominal cps rating).  Dot-
+       matrix printers and 6-page-per-minute lasers can typically
+       handle  80cps,  so a good conservative rule of thumb is to
+       sleep for a second after shipping each 80-character  line.
+
+
+
+

RETURN VALUE

+       The  mcprint  function  returns ERR if the write operation
+       aborted for some reason.  In this case, errno will contain
+       either  an  error  associated  with write(2) or one of the
+       following:
+
+       ENODEV
+            Capabilities for printer redirection do not exist.
+
+       ENOMEM
+            Couldn't allocate sufficient  memory  to  buffer  the
+            printer write.
+
+       When mcprint succeeds, it returns the number of characters
+       actually sent to the printer.
+
+
+
+

PORTABILITY

+       The mcprint call was designed for ncurses(3x), and is  not
+       found in SVr4 curses, 4.4BSD curses, or any other previous
+       version of curses.
+
+
+
+

BUGS

+       Padding in the mc5p, mc4 and mc5 capabilities will not  be
+       interpreted.
+
+
+
+

SEE ALSO

+       curses(3x)
+
+
+
+                                                         curs_print(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_printw.3x.html b/ncurses/doc/html/man/curs_printw.3x.html new file mode 100644 index 0000000..5e88d60 --- /dev/null +++ b/ncurses/doc/html/man/curs_printw.3x.html @@ -0,0 +1,122 @@ + + + + +curs_printw 3x + + + + +

curs_printw 3x

+
+
+
+curs_printw(3x)                                         curs_printw(3x)
+
+
+
+
+
+

NAME

+       printw, wprintw, mvprintw, mvwprintw, vwprintw, vw_printw
+       - print formatted output in curses windows
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int printw(const char *fmt, ...);
+       int wprintw(WINDOW *win, const char *fmt, ...);
+       int mvprintw(int y, int x, const char *fmt, ...);
+       int mvwprintw(WINDOW *win, int y, int x, const char  *fmt,
+       ...);
+       int  vwprintw(WINDOW  *win,  const char *fmt, va_list var-
+       glist);
+       int vw_printw(WINDOW *win, const char *fmt,  va_list  var-
+       glist);
+
+
+
+

DESCRIPTION

+       The  printw,  wprintw, mvprintw and mvwprintw routines are
+       analogous to  printf  [see  printf(3)].   In  effect,  the
+       string that would be output by printf is output instead as
+       though waddstr were used on the given window.
+
+       The vwprintw  and  wv_printw  routines  are  analogous  to
+       vprintf  [see  printf(3)]  and  perform  a wprintw using a
+       variable argument list.  The third argument is a  va_list,
+       a   pointer   to  a  list  of  arguments,  as  defined  in
+       <stdarg.h>.
+
+
+
+

RETURN VALUE

+       Routines that return an integer return  ERR  upon  failure
+       and  OK  (SVr4 only specifies "an integer value other than
+       ERR") upon successful completion.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion,  an  error  may  be  returned  if it cannot allocate
+       enough memory for the buffer used to format  the  results.
+       It will return an error if the window pointer is null.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.  The function vwprintw is marked TO  BE  WITHDRAWN,
+       and  is  to  be replaced by a function vw_printw using the
+       <stdarg.h> interface.  The Single Unix Specification, Ver-
+       sion  2  states  that  vw_printw  is preferred to vwprintw
+       since the latter  requires  including  <varargs.h>,  which
+       cannot  be  used in the same file as <stdarg.h>.  This im-
+       plementation uses <stdarg.h> for both, because that header
+       is included in <curses.h>.
+
+
+
+

SEE ALSO

+       curses(3x), printf(3), vprintf(3)
+
+
+
+                                                        curs_printw(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_refresh.3x.html b/ncurses/doc/html/man/curs_refresh.3x.html new file mode 100644 index 0000000..e169d95 --- /dev/null +++ b/ncurses/doc/html/man/curs_refresh.3x.html @@ -0,0 +1,170 @@ + + + + +curs_refresh 3x + + + + +

curs_refresh 3x

+
+
+
+curs_refresh(3x)                                       curs_refresh(3x)
+
+
+
+
+
+

NAME

+       doupdate, redrawwin, refresh, wnoutrefresh, wredrawln,
+       wrefresh - refresh curses windows and lines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int refresh(void);
+       int wrefresh(WINDOW *win);
+       int wnoutrefresh(WINDOW *win);
+       int doupdate(void);
+       int redrawwin(WINDOW *win);
+       int wredrawln(WINDOW *win, int beg_line, int num_lines);
+
+
+
+

DESCRIPTION

+       The refresh and wrefresh  routines  (or  wnoutrefresh  and
+       doupdate)  must be called to get actual output to the ter-
+       minal, as other routines  merely  manipulate  data  struc-
+       tures.   The  routine  wrefresh copies the named window to
+       the physical terminal screen, taking into account what  is
+       already there to do optimizations.  The refresh routine is
+       the same, using stdscr  as  the  default  window.   Unless
+       leaveok  has been enabled, the physical cursor of the ter-
+       minal is left at the location of the cursor for that  win-
+       dow.
+
+       The  wnoutrefresh and doupdate routines allow multiple up-
+       dates with more efficiency than wrefresh alone.  In  addi-
+       tion  to  all the window structures, curses keeps two data
+       structures representing the terminal  screen:  a  physical
+       screen,  describing  what is actually on the screen, and a
+       virtual screen, describing what the  programmer  wants  to
+       have on the screen.
+
+       The  routine wrefresh works by first calling wnoutrefresh,
+       which copies the named window to the virtual  screen,  and
+       then  calling  doupdate, which compares the virtual screen
+       to the physical screen and does the actual update.  If the
+       programmer wishes to output several windows at once, a se-
+       ries of calls to wrefresh results in alternating calls  to
+       wnoutrefresh  and doupdate, causing several bursts of out-
+       put to the screen.  By first calling wnoutrefresh for each
+       window, it is then possible to call doupdate once, result-
+       ing in only one burst of output, with fewer total  charac-
+       ters transmitted and less CPU time used.  If the win argu-
+       ment to wrefresh is the global variable curscr, the screen
+       is immediately cleared and repainted from scratch.
+
+       The phrase "copies the named window to the virtual screen"
+       above is ambiguous.  What actually  happens  is  that  all
+       touched  (changed)  lines  in the window are copied to the
+       virtual screen.  This affects programs that  use  overlap-
+       ping  windows;  it  means that if two windows overlap, you
+       can refresh them in either order and  the  overlap  region
+       will be modified only when it is explicitly changed.  (But
+       see the section on PORTABILITY below for a  warning  about
+       exploiting this behavior.)
+
+       The wredrawln routine indicates to curses that some screen
+       lines are corrupted and should be thrown away before  any-
+       thing  is  written  over  them.   It touches the indicated
+       lines (marking them  changed).   The  routine  redrawwin()
+       touches the entire window.
+
+
+
+

RETURN VALUE

+       Routines  that  return an integer return ERR upon failure,
+       and OK (SVr4 only specifies "an integer value  other  than
+       ERR") upon successful completion.
+
+       X/Open  does not define any error conditions.  In this im-
+       plementation
+
+              wnoutrefresh
+                   returns an error  if  the  window  pointer  is
+                   null, or if the window is really a pad.
+
+              wredrawln
+                   returns  an  error  if  the associated call to
+                   touchln returns an error.
+
+
+
+

NOTES

+       Note that refresh and redrawwin may be macros.
+
+
+
+

PORTABILITY

+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.
+
+       Whether  wnoutrefresh()  copies  to the virtual screen the
+       entire contents of a window or just its  changed  portions
+       has never been well-documented in historic curses versions
+       (including SVr4).  It might be unwise to  rely  on  either
+       behavior  in  programs  that  might have to be linked with
+       other curses implementations.  Instead, you can do an  ex-
+       plicit  touchwin() before the wnoutrefresh() call to guar-
+       antee an entire-contents copy anywhere.
+
+
+
+

SEE ALSO

+       curses(3x), curs_outopts(3x)
+
+
+
+                                                       curs_refresh(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_scanw.3x.html b/ncurses/doc/html/man/curs_scanw.3x.html new file mode 100644 index 0000000..56618ff --- /dev/null +++ b/ncurses/doc/html/man/curs_scanw.3x.html @@ -0,0 +1,129 @@ + + + + +curs_scanw 3x + + + + +

curs_scanw 3x

+
+
+
+curs_scanw(3x)                                           curs_scanw(3x)
+
+
+
+
+
+

NAME

+       scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw - con-
+       vert formatted input from a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int scanw(char *fmt, ...);
+       int wscanw(WINDOW *win, char *fmt, ...);
+       int mvscanw(int y, int x, char *fmt, ...);
+       int mvwscanw(WINDOW *win, int y, int x, char *fmt, ...);
+       int vw_scanw(WINDOW *win, char *fmt, va_list varglist);
+       int vwscanw(WINDOW *win, char *fmt, va_list varglist);
+
+
+
+

DESCRIPTION

+       The scanw, wscanw and mvscanw routines  are  analogous  to
+       scanf  [see scanf(3)].  The effect of these routines is as
+       though wgetstr were called on the window, and the  result-
+       ing line used as input for sscanf(3).  Fields which do not
+       map to a variable in the fmt field are lost.
+
+       The vwscanw and vw_scanw routines are analogous to vscanf.
+       They perform a wscanw using a variable argument list.  The
+       third argument is a va_list, a pointer to a list of  argu-
+       ments, as defined in <stdarg.h>.
+
+
+
+

RETURN VALUE

+       vwscanw returns ERR on failure and an integer equal to the
+       number of fields scanned on success.
+
+       Applications may use the  return  value  from  the  scanw,
+       wscanw,  mvscanw  and  mvwscanw  routines to determine the
+       number of fields which were mapped in the call.
+
+
+
+

PORTABILITY

+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.   The  function  vwscanw is marked TO BE WITHDRAWN,
+       and is to be replaced by a  function  vw_scanw  using  the
+       <stdarg.h> interface.  The Single Unix Specification, Ver-
+       sion 2 states that vw_scanw  is preferred to vwscanw since
+       the latter requires including <varargs.h>, which cannot be
+       used in the same file as <stdarg.h>.  This  implementation
+       uses  <stdarg.h> for both, because that header is included
+       in <curses.h>.
+
+       Both XSI and The  Single  Unix  Specification,  Version  2
+       state  that  these  functions return ERR or OK.  Since the
+       underlying scanf can return the number of  items  scanned,
+       and the SVr4 code was documented to use this feature, this
+       is probably an editing error which was introduced in  XSI,
+       rather  than  being done intentionally.  Portable applica-
+       tions should only test if the return value is  ERR,  since
+       the  OK value (zero) is likely to be misleading.  One pos-
+       sible way to get useful results would be  to  use  a  "%n"
+       conversion  at the end of the format string to ensure that
+       something was processed.
+
+
+
+

SEE ALSO

+       curses(3x), curs_getstr(3x), curs_printw(3x), scanf(3)
+
+
+
+                                                         curs_scanw(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_scr_dump.3x.html b/ncurses/doc/html/man/curs_scr_dump.3x.html new file mode 100644 index 0000000..8dd6321 --- /dev/null +++ b/ncurses/doc/html/man/curs_scr_dump.3x.html @@ -0,0 +1,137 @@ + + + + +curs_scr_dump 3x + + + + +

curs_scr_dump 3x

+
+
+
+curs_scr_dump(3x)                                     curs_scr_dump(3x)
+
+
+
+
+
+

NAME

+       scr_dump, scr_restore, scr_init, scr_set - read (write) a
+       curses screen from (to) a file
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int scr_dump(const char *filename);
+       int scr_restore(const char *filename);
+       int scr_init(const char *filename);
+       int scr_set(const char *filename);
+
+
+
+

DESCRIPTION

+       The scr_dump routine dumps the  current  contents  of  the
+       virtual screen to the file filename.
+
+       The  scr_restore  routine  sets  the virtual screen to the
+       contents of filename, which must have been  written  using
+       scr_dump.   The  next call to doupdate restores the screen
+       to the way it looked in the dump file.
+
+       The scr_init routine reads in the contents of filename and
+       uses  them  to initialize the curses data structures about
+       what the terminal currently has on its screen.  If the da-
+       ta is determined to be valid, curses bases its next update
+       of the screen on this information rather than clearing the
+       screen  and starting from scratch.  scr_init is used after
+       initscr or a system call to share the screen with  another
+       process  which  has done a scr_dump after its endwin call.
+       The data is declared invalid if the terminfo  capabilities
+       rmcup and nrrmc exist; also if the terminal has been writ-
+       ten to since the preceding scr_dump call.
+
+       The scr_set routine is a combination  of  scr_restore  and
+       scr_init.   It  tells  the program that the information in
+       filename is what is currently on the screen, and also what
+       the  program  wants on the screen.  This can be thought of
+       as a screen inheritance function.
+
+       To read (write) a window from (to) a file, use the  getwin
+       and putwin routines [see curs_util(3x)].
+
+
+
+

RETURN VALUE

+       All  routines  return  the integer ERR upon failure and OK
+       upon success.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion,  each  will  return  an  error if the file cannot be
+       opened.
+
+
+
+

NOTES

+       Note  that  scr_init,  scr_set,  and  scr_restore  may  be
+       macros.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard, Issue 4, describes these func-
+       tions (adding the const qualifiers).
+
+       The SVr4 docs merely say under scr_init that the dump data
+       is  also  considered invalid "if the time-stamp of the tty
+       is old" but do not define "old".
+
+
+
+

SEE ALSO

+       curses(3x),      curs_initscr(3x),       curs_refresh(3x),
+       curs_util(3x), system(3)
+
+
+
+                                                      curs_scr_dump(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_scroll.3x.html b/ncurses/doc/html/man/curs_scroll.3x.html new file mode 100644 index 0000000..7f41572 --- /dev/null +++ b/ncurses/doc/html/man/curs_scroll.3x.html @@ -0,0 +1,131 @@ + + + + +curs_scroll 3x + + + + +

curs_scroll 3x

+
+
+
+curs_scroll(3x)                                         curs_scroll(3x)
+
+
+
+
+
+

NAME

+       scroll, scrl, wscrl - scroll a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int scroll(WINDOW *win);
+       int scrl(int n);
+       int wscrl(WINDOW *win, int n);
+
+
+
+

DESCRIPTION

+       The  scroll  routine scrolls the window up one line.  This
+       involves moving the lines in the  window  data  structure.
+       As  an optimization, if the scrolling region of the window
+       is the entire screen, the physical screen may be  scrolled
+       at the same time.
+
+       For  positive  n,  the  scrl and wscrl routines scroll the
+       window up n lines (line i+n becomes i);  otherwise  scroll
+       the  window  down n lines.  This involves moving the lines
+       in the window character image structure.  The current cur-
+       sor position is not changed.
+
+       For these functions to work, scrolling must be enabled via
+       scrollok.
+
+
+
+

RETURN VALUE

+       These routines return ERR upon failure, and OK (SVr4  only
+       specifies "an integer value other than ERR") upon success-
+       ful completion.
+
+       X/Open defines no error conditions.
+
+       This implementation returns an error if the window pointer
+       is  null,  or  if  scrolling is not enabled in the window,
+       e.g., with scrollok.
+
+
+
+

NOTES

+       Note that scrl and scroll may be macros.
+
+       The SVr4 documentation says that the optimization of phys-
+       ically  scrolling  immediately if the scroll region is the
+       entire screen "is"  performed,  not  "may  be"  performed.
+       This  implementation  deliberately does not guarantee that
+       this will occur, to leave open the possibility of  smarter
+       optimization  of  multiple  scroll actions on the next up-
+       date.
+
+       Neither the SVr4 nor the XSI documentation specify whether
+       the current attribute or current color-pair of blanks gen-
+       erated by the scroll function is zeroed.  Under  this  im-
+       plementation it is.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.
+
+
+
+

SEE ALSO

+       curses(3x), curs_outopts(3x)
+
+
+
+                                                        curs_scroll(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_slk.3x.html b/ncurses/doc/html/man/curs_slk.3x.html new file mode 100644 index 0000000..e76dcc7 --- /dev/null +++ b/ncurses/doc/html/man/curs_slk.3x.html @@ -0,0 +1,219 @@ + + + + +curs_slk 3x + + + + +

curs_slk 3x

+
+
+
+curs_slk(3x)                                               curs_slk(3x)
+
+
+
+
+
+

NAME

+       slk_init, slk_set, slk_refresh, slk_noutrefresh,
+       slk_label, slk_clear, slk_restore, slk_touch, slk_attron,
+       slk_attrset, slk_attroff, slk_attr_on, slk_attr_set,
+       slk_attr_off, slk_attr, slk_color - curses soft label
+       routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int slk_init(int fmt);
+       int slk_set(int labnum, const char *label, int fmt);
+       int slk_refresh(void);
+       int slk_noutrefresh(void);
+       char *slk_label(int labnum);
+       int slk_clear(void);
+       int slk_restore(void);
+       int slk_touch(void);
+       int slk_attron(const chtype attrs);
+       int slk_attroff(const chtype attrs);
+       int slk_attrset(const chtype attrs);
+       int slk_attr_on(attr_t attrs, void* opts);
+       int slk_attr_off(const attr_t attrs, void * opts);
+       int slk_attr_set(const attr_t attrs,
+            short color_pair_number, void* opts);
+       attr_t slk_attr(void);
+       int slk_color(short color_pair_number);
+
+
+
+

DESCRIPTION

+       The slk* functions manipulate the set of soft function-key
+       labels that exist on many terminals.  For those  terminals
+       that do not have soft labels, curses takes over the bottom
+       line of stdscr, reducing the size of stdscr and the  vari-
+       able  LINES.  curses standardizes on eight labels of up to
+       eight characters each. In addition to  this,  the  ncurses
+       implementation  supports  a mode where it simulates 12 la-
+       bels of up to five characters each. This  is  most  common
+       for  todays  PC  like  enduser  devices.  Please note that
+       ncurses simulates this mode by taking over up to two lines
+       at  the  bottom  of the screen, it does not try to use any
+       hardware support for this mode.
+
+       The slk_init routine must  be  called  before  initscr  or
+       newterm is called.  If initscr eventually uses a line from
+       stdscr to emulate the soft labels, then fmt determines how
+       the  labels  are arranged on the screen.  Setting fmt to 0
+       indicates a 3-2-3 arrangement of the labels, 1 indicates a
+       4-4 arrangement and 2 indicates the PC like 4-4-4 mode. If
+       fmt is set to 3, it is again the PC like 4-4-4  mode,  but
+       in  addition  an index line is generated, helping the user
+       to identify the key numbers easily.
+
+       The slk_set routine requires labnum to be a label  number,
+       from 1 to 8 (resp. 12); label must be the string to be put
+       on the label, up  to  eight  (resp.  five)  characters  in
+       length.   A  null string or a null pointer sets up a blank
+       label. fmt is either 0, 1, or 2,  indicating  whether  the
+       label  is  to be left-justified, centered, or right-justi-
+       fied, respectively, within the label.
+
+       The slk_refresh and slk_noutrefresh routines correspond to
+       the wrefresh and wnoutrefresh routines.
+
+       The  slk_label routine returns the current label for label
+       number labnum, with leading and trailing blanks  stripped.
+
+       The  slk_clear  routine  clears  the  soft labels from the
+       screen.
+
+       The slk_restore routine restores the soft  labels  to  the
+       screen after a slk_clear has been performed.
+
+       The  slk_touch  routine  forces  all the soft labels to be
+       output the next time a slk_noutrefresh is performed.
+
+       The slk_attron, slk_attrset, slk_attroff and slk_attr rou-
+       tines correspond to attron, attrset, attroff and attr_get.
+       They have an effect only if soft labels are  simulated  on
+       the  bottom line of the screen.  The default highlight for
+       soft keys is A_STANDOUT (as in System V curses, which does
+       not document this fact).
+
+       The  slk_color routine corresponds to color_set. It has an
+       effect only if soft labels are  simulated  on  the  bottom
+       line of the screen.
+
+
+
+

RETURN VALUE

+       These routines return ERR upon failure and OK (SVr4 speci-
+       fies only "an integer value other than ERR") upon success-
+       ful completion.
+
+       X/Open  defines  no error conditions.  In this implementa-
+       tion
+
+              slk_attr
+                   returns the attribute used for the soft  keys.
+
+              slk_attroff, slk_attron, slk_clear,
+              slk_noutrefresh, slk_refresh, slk_touch
+                   return  an  error if the terminal or the soft-
+                   keys were not initialized.
+
+              slk_attrset
+                   returns an error if the terminal or the  soft-
+                   keys were not initialized.
+
+              slk_attr_set
+                   returns  an error if the terminal or the soft-
+                   keys were not initialized, or the  color  pair
+                   is outside the range 0..COLOR_PAIRS-1, or opts
+                   is not null.
+
+              slk_color
+                   returns an error if the terminal or the  soft-
+                   keys  were  not initialized, or the color pair
+                   is outside the range 0..COLOR_PAIRS-1.
+
+              slk_init
+                   returns an error if the  format  parameter  is
+                   outside the range 0..3.
+
+              slk_label
+                   returns NULL on error.
+
+              slk_set
+                   returns  an error if the terminal or the soft-
+                   keys were not initialized, or the  labnum  pa-
+                   rameter  is outside the range of label counts,
+                   or if the  format  parameter  is  outside  the
+                   range 0..2, or if memory for the labels cannot
+                   be allocated.
+
+
+
+

NOTES

+       Most applications would use slk_noutrefresh because a wre-
+       fresh is likely to follow soon.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard, Issue 4, describes these func-
+       tions.  It changes the argument type of the  attribute-ma-
+       nipulation  functions slk_attron, slk_attroff, slk_attrset
+       to be attr_t, and adds const qualifiers. The format  codes
+       2  and 3 for slk_init() and the function slk_attr are spe-
+       cific to ncurses.
+
+
+
+

SEE ALSO

+       curses(3x),  curs_attr(3x),   curs_initscr(3x),   curs_re-
+       fresh(3x)
+
+
+
+                                                           curs_slk(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_termattrs.3x.html b/ncurses/doc/html/man/curs_termattrs.3x.html new file mode 100644 index 0000000..daf3a76 --- /dev/null +++ b/ncurses/doc/html/man/curs_termattrs.3x.html @@ -0,0 +1,161 @@ + + + + +curs_termattrs 3x + + + + +

curs_termattrs 3x

+
+
+
+curs_termattrs(3x)                                   curs_termattrs(3x)
+
+
+
+
+
+

NAME

+       baudrate, erasechar, erasewchar, has_ic, has_il, killchar,
+       killwchar, longname,  term_attrs,  termattrs,  termname  -
+       curses environment query routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int baudrate(void);
+       char erasechar(void);
+       int erasewchar(wchar_t *ch);
+       bool has_ic(void);
+       bool has_il(void);
+       char killchar(void);
+       int killwchar(wchar_t *ch);
+       char *longname(void);
+       attr_t term_attrs(void);
+       chtype termattrs(void);
+       char *termname(void);
+
+
+
+

DESCRIPTION

+       The  baudrate routine returns the output speed of the ter-
+       minal.  The number returned is in  bits  per  second,  for
+       example 9600, and is an integer.
+
+       The  erasechar  routine  returns  the user's current erase
+       character.
+
+       The erasewchar routine stores the current erase  character
+       in  the  location referenced by ch.  If no erase character
+       has been defined, the routine fails and the location  ref-
+       erenced by ch is not changed.
+
+       The has_ic routine is true if the terminal has insert- and
+       delete- character capabilities.
+
+       The has_il routine is true if the terminal has insert- and
+       delete-line  capabilities,  or  can  simulate  them  using
+       scrolling regions.  This might be used to determine if  it
+       would  be  appropriate to turn on physical scrolling using
+       scrollok.
+
+       The killchar routine returns the user's current line  kill
+       character.
+
+       The killwchar routine stores the current line-kill charac-
+       ter in the location referenced by  ch.   If  no  line-kill
+       character  has  been  defined,  the  routine fails and the
+       location referenced by ch is not changed.
+
+       The longname routine returns a pointer to  a  static  area
+       containing  a verbose description of the current terminal.
+       The maximum length of a verbose description is 128 charac-
+       ters.   It  is  defined  only after the call to initscr or
+       newterm.  The area is overwritten by each call to  newterm
+       and  is  not  restored by set_term, so the value should be
+       saved between calls to newterm if longname is going to  be
+       used with multiple terminals.
+
+       If  a  given  terminal  does not support a video attribute
+       that an application program is trying to use,  curses  may
+       substitute  a  different  video  attribute  for  it.   The
+       termattrs and term_attrs functions return a logical OR  of
+       all  video  attributes  supported by the terminal using A_
+       and WA_ constants respectively.  This information is  use-
+       ful  when a curses program needs complete control over the
+       appearance of the screen.
+
+       The termname routine returns the  terminal  name  used  by
+       setupterm.
+
+
+
+

RETURN VALUE

+       longname and termname return NULL on error.
+
+       Routines  that  return  an integer return ERR upon failure
+       and OK (SVr4 only specifies "an integer value  other  than
+       ERR") upon successful completion.
+
+
+
+

NOTES

+       Note that termattrs may be a macro.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.  It changes the return type of termattrs to the new
+       type  attr_t.  Most versions of curses truncate the result
+       returned by termname to 14 characters.
+
+
+
+

SEE ALSO

+       curses(3x), curs_initscr(3x), curs_outopts(3x)
+
+
+
+                                                     curs_termattrs(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_termcap.3x.html b/ncurses/doc/html/man/curs_termcap.3x.html new file mode 100644 index 0000000..a245778 --- /dev/null +++ b/ncurses/doc/html/man/curs_termcap.3x.html @@ -0,0 +1,190 @@ + + + + +curs_termcap 3x + + + + +

curs_termcap 3x

+
+
+
+curs_termcap(3x)                                       curs_termcap(3x)
+
+
+
+
+
+

NAME

+       tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs - direct
+       curses interface to the terminfo capability database
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+       #include <term.h>
+
+       extern char PC;
+       extern char * UP;
+       extern char * BC;
+       extern short ospeed;
+
+       int tgetent(char *bp, const char *name);
+       int tgetflag(char *id);
+       int tgetnum(char *id);
+       char *tgetstr(char *id, char **area);
+       char *tgoto(const char *cap, int col, int row);
+       int tputs(const char *str, int affcnt, int (*putc)(int));
+
+
+
+

DESCRIPTION

+       These routines are included as a conversion aid  for  pro-
+       grams  that use the termcap library.  Their parameters are
+       the same and the routines are emulated using the  terminfo
+       database.   Thus, they can only be used to query the capa-
+       bilities of entries for which a terminfo  entry  has  been
+       compiled.
+
+       The  tgetent routine loads the entry for name.  It returns
+       1 on success, 0 if there is no such entry, and -1  if  the
+       terminfo  database  could  not  be  found.   The emulation
+       ignores the buffer pointer bp.
+
+       The tgetflag routine gets the boolean  entry  for  id,  or
+       zero if it is not available.
+
+       The  tgetnum  routine gets the numeric entry for id, or -1
+       if it is not available.
+
+       The tgetstr routine returns the string entry  for  id,  or
+       zero  if  it  is  not  available.  Use tputs to output the
+       returned string.  The return value will also be copied  to
+       the  buffer pointed to by area, and the area value will be
+       updated to point past the null ending this value.
+
+       Only the first two characters of the id parameter of tget-
+       flag, tgetnum and tgetstr are compared in lookups.
+
+       The  tgoto  routine  instantiates  the parameters into the
+       given capability.  The output from this routine is  to  be
+       passed to tputs.
+
+       The  tputs  routine  is described on the curs_terminfo(3x)
+       manual page.  It can retrieve capabilities by either term-
+       cap or terminfo name.
+
+       The variables PC, UP and BC are set by tgetent to the ter-
+       minfo   entry's   data   for   pad_char,   cursor_up   and
+       backspace_if_not_bs,  respectively.   UP  is  not  used by
+       ncurses.  PC is used in the tdelay_output function.  BC is
+       used  in  the tgoto emulation.  The variable ospeed is set
+       by ncurses in a  system-specific  coding  to  reflect  the
+       terminal speed.
+
+
+
+

RETURN VALUE

+       Except  where  explicitly  noted,  routines that return an
+       integer return ERR upon failure and OK (SVr4  only  speci-
+       fies  "an  integer  value other than ERR") upon successful
+       completion.
+
+       Routines that return pointers return NULL on error.
+
+
+
+

BUGS

+       If you call tgetstr to fetch ca or any other parameterized
+       string,  be  aware  that  it  will be returned in terminfo
+       notation, not the older and  not-quite-compatible  termcap
+       notation.  This will not cause problems if all you do with
+       it is call tgoto or tparm,  which  both  expand  terminfo-
+       style  strings  as terminfo.  (The tgoto function, if con-
+       figured to support termcap, will check if  the  string  is
+       indeed  terminfo-style  by  looking for "%p" parameters or
+       "$<..>" delays, and invoke a termcap-style parser  if  the
+       string does not appear to be terminfo).
+
+       Because  terminfo  conventions for representing padding in
+       string capabilities differ  from  termcap's,  tputs("50");
+       will  put  out a literal "50" rather than busy-waiting for
+       50 milliseconds.  Cope with it.
+
+       Note that termcap has nothing analogous to terminfo's  sgr
+       string.   One consequence of this is that termcap applica-
+       tions assume me (terminfo sgr0) does not reset the  alter-
+       nate  character  set.  This implementation checks for, and
+       modifies the data shown to the termcap interface to accom-
+       modate termcap's limitation in this respect.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.  However, they are marked TO BE WITHDRAWN  and  may
+       be removed in future versions.
+
+       Neither  the  XSI  Curses  standard nor the SVr4 man pages
+       documented the return values of tgetent correctly,  though
+       all  three were in fact returned ever since SVr1.  In par-
+       ticular, an omission in the XSI Curses  documentation  has
+       been  misinterpreted  to  mean  that tgetent returns OK or
+       ERR.  Because the purpose of these functions is to provide
+       compatibility  with  the termcap library, that is a defect
+       in XCurses, Issue 4, Version 2 rather than in ncurses.
+
+       External variables are provided  for  support  of  certain
+       termcap  applications.  However, termcap applications' use
+       of those variables is poorly documented, e.g., not distin-
+       guishing  between  input  and output.  In particular, some
+       applications are reported to declare and/or modify ospeed.
+
+
+
+

SEE ALSO

+       curses(3x), terminfo(5), putc(3).
+
+
+
+                                                       curs_termcap(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_terminfo.3x.html b/ncurses/doc/html/man/curs_terminfo.3x.html new file mode 100644 index 0000000..6877496 --- /dev/null +++ b/ncurses/doc/html/man/curs_terminfo.3x.html @@ -0,0 +1,353 @@ + + + + +curs_terminfo 3x + + + + +

curs_terminfo 3x

+
+
+
+curs_terminfo(3x)                                     curs_terminfo(3x)
+
+
+
+
+
+

NAME

+       del_curterm, mvcur, putp, restartterm, set_curterm,
+       setterm, setupterm, tigetflag, tigetnum, tigetstr, tparm,
+       tputs, vid_attr, vid_puts, vidattr, vidputs - curses
+       interfaces to terminfo database
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+       #include <term.h>
+
+       int setupterm(char *term, int fildes, int *errret);
+       int setterm(char *term);
+       TERMINAL *set_curterm(TERMINAL *nterm);
+       int del_curterm(TERMINAL *oterm);
+       int restartterm(char *term, int fildes, int *errret);
+       char *tparm(char *str, ...);
+       int tputs(const char *str, int affcnt, int (*putc)(int));
+       int putp(const char *str);
+       int vidputs(chtype attrs, int (*putc)(int));
+       int vidattr(chtype attrs);
+       int vid_puts(attr_t attrs, short pair, void *opts, int (*putc)(char));
+       int vid_attr(attr_t attrs, short pair, void *opts);
+       int mvcur(int oldrow, int oldcol, int newrow, int newcol);
+       int tigetflag(char *capname);
+       int tigetnum(char *capname);
+       char *tigetstr(char *capname);
+
+
+
+

DESCRIPTION

+       These low-level routines must be called by  programs  that
+       have to deal directly with the terminfo database to handle
+       certain terminal capabilities, such as  programming  func-
+       tion  keys.   For all other functionality, curses routines
+       are more suitable and their use is recommended.
+
+       Initially, setupterm should  be  called.   Note  that  se-
+       tupterm  is  automatically  called by initscr and newterm.
+       This  defines  the  set  of  terminal-dependent  variables
+       [listed in terminfo(5)].  The terminfo variables lines and
+       columns are initialized by setupterm as follows:
+
+              If use_env(FALSE) has been called, values for lines
+              and columns specified in terminfo are used.
+
+              Otherwise,  if  the environment variables LINES and
+              COLUMNS exist, their values are used.  If these en-
+              vironment variables do not exist and the program is
+              running in a window, the  current  window  size  is
+              used.   Otherwise,  if the environment variables do
+              not exist, the values for lines and columns  speci-
+              fied in the terminfo database are used.
+
+       The  header  files  curses.h and term.h should be included
+       (in this order) to get the definitions for these  strings,
+       numbers,  and  flags.   Parameterized  strings  should  be
+       passed through tparm to instantiate  them.   All  terminfo
+       strings  [including the output of tparm] should be printed
+       with tputs or putp.  Call the reset_shell_mode to  restore
+       the  tty modes before exiting [see curs_kernel(3x)].  Pro-
+       grams  which  use  cursor  addressing  should  output  en-
+       ter_ca_mode  upon  startup  and should output exit_ca_mode
+       before exiting.  Programs desiring  shell  escapes  should
+       call
+
+       reset_shell_mode  and output exit_ca_mode before the shell
+       is called and should output  enter_ca_mode  and  call  re-
+       set_prog_mode after returning from the shell.
+
+       The setupterm routine reads in the terminfo database, ini-
+       tializing the terminfo structures, but does not set up the
+       output virtualization structures used by curses.  The ter-
+       minal type is the character string term; if term is  null,
+       the  environment  variable TERM is used.  All output is to
+       file descriptor fildes which is  initialized  for  output.
+       If  errret  is  not null, then setupterm returns OK or ERR
+       and stores a status value in the integer pointed to by er-
+       rret.   A  return value of OK combined with status of 1 in
+       errret is normal.  If ERR is returned, examine errret:
+
+              1    means that the terminal is hardcopy, cannot be
+                   used for curses applications.
+
+              0    means that the terminal could not be found, or
+                   that it is a generic type, having  too  little
+                   information for curses applications to run.
+
+              -1   means  that the terminfo database could not be
+                   found.
+
+       If errret is null, setupterm prints an error message  upon
+       finding an error and exits.  Thus, the simplest call is:
+
+             setupterm((char *)0, 1, (int *)0);,
+
+       which  uses  all the defaults and sends the output to std-
+       out.
+
+       The setterm routine is being replaced by  setupterm.   The
+       call:
+
+             setupterm(term, 1, (int *)0)
+
+       provides  the  same  functionality  as setterm(term).  The
+       setterm routine is included here  for  BSD  compatibility,
+       and is not recommended for new programs.
+
+       The  set_curterm  routine  sets  the  variable cur_term to
+       nterm, and makes all of the terminfo boolean, numeric, and
+       string  variables  use  the values from nterm.  It returns
+       the old value of cur_term.
+
+       The del_curterm routine frees  the  space  pointed  to  by
+       oterm and makes it available for further use.  If oterm is
+       the same as cur_term, references to any  of  the  terminfo
+       boolean,  numeric, and string variables thereafter may re-
+       fer to invalid memory locations  until  another  setupterm
+       has been called.
+
+       The  restartterm  routine  is  similar  to  setupterm  and
+       initscr, except that it is called after  restoring  memory
+       to  a  previous  state (for example, when reloading a game
+       saved as a core image dump).  It assumes that the  windows
+       and the input and output options are the same as when mem-
+       ory was saved, but the terminal type and baud rate may  be
+       different.   Accordingly, it saves various tty state bits,
+       calls setupterm, and then restores the bits.
+
+       The tparm routine instantiates the string str with parame-
+       ters  pi.  A pointer is returned to the result of str with
+       the parameters applied.
+
+       The tputs  routine  applies  padding  information  to  the
+       string  str  and  outputs  it.  The str must be a terminfo
+       string variable or the return value from  tparm,  tgetstr,
+       or tgoto.  affcnt is the number of lines affected, or 1 if
+       not applicable.  putc is a putchar-like routine  to  which
+       the characters are passed, one at a time.
+
+       The  putp routine calls tputs(str, 1, putchar).  Note that
+       the output of putp always  goes  to  stdout,  not  to  the
+       fildes specified in setupterm.
+
+       The vidputs routine displays the string on the terminal in
+       the video attribute mode attrs, which is  any  combination
+       of  the  attributes  listed in curses(3x).  The characters
+       are passed to the putchar-like routine putc.
+
+       The vidattr routine is like the  vidputs  routine,  except
+       that it outputs through putchar.
+
+       The  vid_attr  and vid_puts routines correspond to vidattr
+       and vidputs, respectively.  They use a  set  of  arguments
+       for  representing  the  video attributes plus color, i.e.,
+       one of type attr_t for the attributes and one of short for
+       the color_pair number.  The vid_attr and vid_puts routines
+       are designed to use the attribute constants with  the  WA_
+       prefix.   The  opts  argument  is reserved for future use.
+       Currently, applications must provide a  null  pointer  for
+       that argument.
+
+       The  mvcur  routine  provides low-level cursor motion.  It
+       takes effect immediately (rather  than  at  the  next  re-
+       fresh).
+
+       The  tigetflag,  tigetnum and tigetstr routines return the
+       value of the capability corresponding to the terminfo cap-
+       name passed to them, such as xenl.
+
+       The  tigetflag  routine returns the value -1 if capname is
+       not a boolean capability, or 0 if it is canceled or absent
+       from the terminal description.
+
+       The  tigetnum  routine  returns the value -2 if capname is
+       not a numeric capability, or -1 if it is canceled  or  ab-
+       sent from the terminal description.
+
+       The  tigetstr routine returns the value (char *)-1 if cap-
+       name is not a string capability, or 0 if it is canceled or
+       absent from the terminal description.
+
+       The capname for each capability is given in the table col-
+       umn entitled capname code in the capabilities  section  of
+       terminfo(5).
+
+              char *boolnames[], *boolcodes[], *boolfnames[]
+
+              char *numnames[], *numcodes[], *numfnames[]
+
+              char *strnames[], *strcodes[], *strfnames[]
+
+       These  null-terminated  arrays  contain  the capnames, the
+       termcap codes, and the full C names, for each of the  ter-
+       minfo variables.
+
+
+
+

RETURN VALUE

+       Routines  that  return  an integer return ERR upon failure
+       and OK (SVr4 only specifies "an integer value  other  than
+       ERR")  upon  successful completion, unless otherwise noted
+       in the preceding routine descriptions.
+
+       Routines that return pointers always return NULL on error.
+
+       X/Open  defines  no error conditions.  In this implementa-
+       tion
+
+              del_curterm
+                   returns an error if its terminal parameter  is
+                   null.
+
+              putp calls tputs, returning the same error-codes.
+
+              restartterm
+                   returns an error if the associated call to se-
+                   tupterm returns an error.
+
+              setupterm
+                   returns an error if it cannot allocate  enough
+                   memory, or create the initial windows (stdscr,
+                   curscr, newscr).  Other error  conditions  are
+                   documented above.
+
+              tputs
+                   returns  an  error  if the string parameter is
+                   null.  It does not detect I/O  errors:  X/Open
+                   states  that tputs ignores the return value of
+                   the output function putc.
+
+
+
+

NOTES

+       The setupterm routine should be used in place of  setterm.
+       It  may be useful when you want to test for terminal capa-
+       bilities without committing to the allocation  of  storage
+       involved in initscr.
+
+       Note that vidattr and vidputs may be macros.
+
+
+
+

PORTABILITY

+       The  function  setterm is not described by X/Open and must
+       be considered non-portable.  All other  functions  are  as
+       described by X/Open.
+
+       setupterm  copies  the terminal name to the array ttytype.
+       This is not part of X/Open Curses, but is assumed by  some
+       applications.
+
+       In  System V Release 4, set_curterm has an int return type
+       and returns OK or ERR.  We have chosen  to  implement  the
+       X/Open Curses semantics.
+
+       In System V Release 4, the third argument of tputs has the
+       type int (*putc)(char).
+
+       At least one implementation of X/Open Curses (Solaris) re-
+       turns  a value other than OK/ERR from tputs.  That returns
+       the length of the string, and does no error-checking.
+
+       X/Open Curses prototypes tparm with a fixed number of  pa-
+       rameters,  rather than a variable argument list.  This im-
+       plementation uses a variable argument list.  Portable  ap-
+       plications  should  provide 9 parameters after the format;
+       zeroes are fine for this purpose.
+
+       X/Open notes that after calling mvcur,  the  curses  state
+       may  not  match the actual terminal state, and that an ap-
+       plication should touch and refresh the window  before  re-
+       suming normal curses calls.  Both ncurses and System V Re-
+       lease 4 curses implement mvcur using the SCREEN data allo-
+       cated in either initscr or newterm.  So though it is docu-
+       mented as a terminfo function, mvcur is  really  a  curses
+       function which is not well specified.
+
+       X/Open  states  that  the  old  location must be given for
+       mvcur.  This implementation allows the caller to use  -1's
+       for  the old ordinates.  In that case, the old location is
+       unknown.
+
+       Extended terminal capability names, e.g.,  as  defined  by
+       tic -x,  are  not  stored  in the arrays described in this
+       section.
+
+
+
+

SEE ALSO

+       curses(3x), curs_initscr(3x), curs_kernel(3x),  curs_term-
+       cap(3x), putc(3), terminfo(5)
+
+
+
+                                                      curs_terminfo(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_threads.3x.html b/ncurses/doc/html/man/curs_threads.3x.html new file mode 100644 index 0000000..2a2f0fd --- /dev/null +++ b/ncurses/doc/html/man/curs_threads.3x.html @@ -0,0 +1,631 @@ + + + + +curs_threads 3x + + + + +

curs_threads 3x

+
+
+
+curs_threads(3x)                                       curs_threads(3x)
+
+
+
+
+
+

NAME

+       use_screen, use_window - curses thread support
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       typedef  int (*NCURSES_WINDOW_CB)(WINDOW *, void *); type-
+       def int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
+       int set_escdelay(int size);
+       int set_tabsize(int size);
+       int use_screen(SCREEN *scr, NCURSES_WINDOW_CB  func,  void
+       *data);
+       int  use_window(WINDOW  *win, NCURSES_SCREEN_CB func, void
+       *data);
+
+
+
+

DESCRIPTION

+       This implementation can be configured to provide  rudimen-
+       tary  support for multi-threaded applications.  This makes
+       a different set of libraries, e.g., libncursest since  the
+       binary interfaces are different.
+
+       Rather  than modify the interfaces to pass a thread speci-
+       fier to each function, it adds a few functions  which  can
+       be used in any configuration which hide the mutex's needed
+       to prevent concurrent use of  the  global  variables  when
+       configured for threading.
+
+       In  addition  to  forcing  access to members of the WINDOW
+       structure to be via functions  (see  curs_opaque(3x)),  it
+       makes functions of the common global variables, e.g., COL-
+       ORS, COLOR_PAIRS, COLS, ESCDELAY, LINES,  TABSIZE  curscr,
+       newscr  and  ttytype.   Those  variables are maintained as
+       read-only values, stored in the SCREEN structure.
+
+       Even this is not enough to make a thread-safe  application
+       using  curses.   A multi-threaded application would be ex-
+       pected to have threads updating separate  windows  (within
+       the same device), or updating on separate screens (on dif-
+       ferent devices).  Also, a few of the global variables  are
+       considered  writable  by some applications.  The functions
+       described here address these special situations.
+
+       The ESCDELAY and TABSIZE global variables are modified  by
+       some  applications.   To modify them in any configuration,
+       use the  set_escdelay  or  set_tabsize  functions.   Other
+       global variables are not modifiable.
+
+       The  use_window  and  use_screen  functions provide coarse
+       granularity mutexes for their respective WINDOW and SCREEN
+       parameters,  and call a user-supplied function, passing it
+       a data parameter, and returning the value from  the  user-
+       supplied function to the application.
+
+   USAGE
+       All  of  the ncurses library functions assume that the lo-
+       cale is not altered during operation.  In  addition,  they
+       use data which is maintained within a hierarchy of scopes.
+
+              -  global data, e.g., used in the low-level termin-
+                 fo or termcap interfaces.
+
+              -  terminal  data,  e.g., associated with a call to
+                 set_curterm.  The terminal data are  initialized
+                 when screens are created.
+
+              -  screen  data,  e.g.,  associated  with a call to
+                 newterm or initscr.
+
+              -  window data, e.g., associated  with  a  call  to
+                 newwin  or  subwin.  Windows are associated with
+                 screens.  Pads are  not  necessarily  associated
+                 with a particular screen.
+
+                 Most  curses applications operate on one or more
+                 windows within a single screen.
+
+              -  reentrant, i.e., it uses only the data passed as
+                 parameters.
+
+       This table lists the scope of data used for each symbol in
+       the ncurses library  when  it  is  configured  to  support
+       threading:
+
+      Symbol                  Scope
+      -------------------------------------------------------------
+      BC                      global
+      COLORS                  screen (readonly)
+      COLOR_PAIR              reentrant
+      COLOR_PAIRS             screen (readonly)
+      COLS                    screen (readonly)
+      ESCDELAY                screen (readonly, see set_escdelay)
+      LINES                   screen (readonly)
+      PAIR_NUMBER             reentrant
+      PC                      global
+      SP                      global
+      TABSIZE                 screen (readonly)
+      UP                      global
+      acs_map                 screen (readonly)
+      add_wch                 window (stdscr)
+      add_wchnstr             window (stdscr)
+      add_wchstr              window (stdscr)
+      addch                   window (stdscr)
+      addchnstr               window (stdscr)
+      addchstr                window (stdscr)
+      addnstr                 window (stdscr)
+      addnwstr                window (stdscr)
+      addstr                  window (stdscr)
+      addwstr                 window (stdscr)
+      assume_default_colors   screen
+      attr_get                window (stdscr)
+      attr_off                window (stdscr)
+      attr_on                 window (stdscr)
+      attr_set                window (stdscr)
+      attroff                 window (stdscr)
+      attron                  window (stdscr)
+      attrset                 window (stdscr)
+      baudrate                screen
+      beep                    screen
+      bkgd                    window (stdscr)
+      bkgdset                 window (stdscr)
+      bkgrnd                  window (stdscr)
+      bkgrndset               window (stdscr)
+      boolcodes               global (readonly)
+      boolfnames              global (readonly)
+      boolnames               global (readonly)
+      border                  window (stdscr)
+      border_set              window (stdscr)
+      box                     window (stdscr)
+      box_set                 window (stdscr)
+
+      can_change_color        terminal
+      cbreak                  screen
+      chgat                   window (stdscr)
+      clear                   window (stdscr)
+      clearok                 window
+      clrtobot                window (stdscr)
+      clrtoeol                window (stdscr)
+      color_content           screen
+      color_set               window (stdscr)
+      copywin                 window locks(source, target)
+      cur_term                terminal
+      curs_set                screen
+      curscr                  screen (readonly)
+      curses_version          global (readonly)
+      def_prog_mode           terminal
+      def_shell_mode          terminal
+      define_key              screen
+      del_curterm             screen
+      delay_output            screen
+      delch                   window (stdscr)
+      deleteln                window (stdscr)
+      delscreen               global locks(screenlist, screen)
+      delwin                  global locks(windowlist)
+      derwin                  screen
+      doupdate                screen
+      dupwin                  screen locks(window)
+      echo                    screen
+      echo_wchar              window (stdscr)
+      echochar                window (stdscr)
+      endwin                  screen
+      erase                   window (stdscr)
+      erasechar               window (stdscr)
+      erasewchar              window (stdscr)
+      filter                  global
+      flash                   terminal
+      flushinp                screen
+      get_wch                 screen (input-operation)
+      get_wstr                screen (input-operation)
+      getattrs                window
+      getbegx                 window
+      getbegy                 window
+      getbkgd                 window
+      getbkgrnd               window
+      getcchar                reentrant
+      getch                   screen (input-operation)
+      getcurx                 window
+      getcury                 window
+      getmaxx                 window
+      getmaxy                 window
+      getmouse                screen (input-operation)
+      getn_wstr               screen (input-operation)
+      getnstr                 screen (input-operation)
+      getparx                 window
+      getpary                 window
+      getstr                  screen (input-operation)
+      getwin                  screen (input-operation)
+      halfdelay               screen
+      has_colors              terminal
+      has_ic                  terminal
+      has_il                  terminal
+      has_key                 screen
+      hline                   window (stdscr)
+      hline_set               window (stdscr)
+      idcok                   window
+      idlok                   window
+      immedok                 window
+
+      in_wch                  window (stdscr)
+      in_wchnstr              window (stdscr)
+      in_wchstr               window (stdscr)
+      inch                    window (stdscr)
+      inchnstr                window (stdscr)
+      inchstr                 window (stdscr)
+      init_color              screen
+      init_pair               screen
+      initscr                 global locks(screenlist)
+      innstr                  window (stdscr)
+      innwstr                 window (stdscr)
+      ins_nwstr               window (stdscr)
+      ins_wch                 window (stdscr)
+      ins_wstr                window (stdscr)
+      insch                   window (stdscr)
+      insdelln                window (stdscr)
+      insertln                window (stdscr)
+      insnstr                 window (stdscr)
+      insstr                  window (stdscr)
+      instr                   window (stdscr)
+      intrflush               terminal
+      inwstr                  window (stdscr)
+      is_cleared              window
+      is_idcok                window
+      is_idlok                window
+      is_immedok              window
+      is_keypad               window
+      is_leaveok              window
+      is_linetouched          window
+      is_nodelay              window
+      is_notimeout            window
+      is_scrollok             window
+      is_syncok               window
+      is_term_resized         terminal
+      is_wintouched           window
+      isendwin                screen
+      key_defined             screen
+      key_name                global (static data)
+      keybound                screen
+      keyname                 global (static data)
+      keyok                   screen
+      keypad                  window
+      killchar                terminal
+      killwchar               terminal
+      leaveok                 window
+      longname                screen
+      mcprint                 terminal
+      meta                    screen
+      mouse_trafo             window (stdscr)
+      mouseinterval           screen
+      mousemask               screen
+      move                    window (stdscr)
+      mvadd_wch               window (stdscr)
+      mvadd_wchnstr           window (stdscr)
+      mvadd_wchstr            window (stdscr)
+      mvaddch                 window (stdscr)
+      mvaddchnstr             window (stdscr)
+      mvaddchstr              window (stdscr)
+      mvaddnstr               window (stdscr)
+      mvaddnwstr              window (stdscr)
+      mvaddstr                window (stdscr)
+      mvaddwstr               window (stdscr)
+      mvchgat                 window (stdscr)
+      mvcur                   screen
+      mvdelch                 window (stdscr)
+      mvderwin                window (stdscr)
+
+      mvget_wch               screen (input-operation)
+      mvget_wstr              screen (input-operation)
+      mvgetch                 screen (input-operation)
+      mvgetn_wstr             screen (input-operation)
+      mvgetnstr               screen (input-operation)
+      mvgetstr                screen (input-operation)
+      mvhline                 window (stdscr)
+      mvhline_set             window (stdscr)
+      mvin_wch                window (stdscr)
+      mvin_wchnstr            window (stdscr)
+      mvin_wchstr             window (stdscr)
+      mvinch                  window (stdscr)
+      mvinchnstr              window (stdscr)
+      mvinchstr               window (stdscr)
+      mvinnstr                window (stdscr)
+      mvinnwstr               window (stdscr)
+      mvins_nwstr             window (stdscr)
+      mvins_wch               window (stdscr)
+      mvins_wstr              window (stdscr)
+      mvinsch                 window (stdscr)
+      mvinsnstr               window (stdscr)
+      mvinsstr                window (stdscr)
+      mvinstr                 window (stdscr)
+      mvinwstr                window (stdscr)
+      mvprintw                window (stdscr)
+      mvscanw                 screen
+      mvvline                 window (stdscr)
+      mvvline_set             window (stdscr)
+      mvwadd_wch              window
+      mvwadd_wchnstr          window
+      mvwadd_wchstr           window
+      mvwaddch                window
+      mvwaddchnstr            window
+      mvwaddchstr             window
+      mvwaddnstr              window
+      mvwaddnwstr             window
+      mvwaddstr               window
+      mvwaddwstr              window
+      mvwchgat                window
+      mvwdelch                window
+      mvwget_wch              screen (input-operation)
+      mvwget_wstr             screen (input-operation)
+      mvwgetch                screen (input-operation)
+      mvwgetn_wstr            screen (input-operation)
+      mvwgetnstr              screen (input-operation)
+      mvwgetstr               screen (input-operation)
+      mvwhline                window
+      mvwhline_set            window
+      mvwin                   window
+      mvwin_wch               window
+      mvwin_wchnstr           window
+      mvwin_wchstr            window
+      mvwinch                 window
+      mvwinchnstr             window
+      mvwinchstr              window
+      mvwinnstr               window
+      mvwinnwstr              window
+      mvwins_nwstr            window
+      mvwins_wch              window
+      mvwins_wstr             window
+      mvwinsch                window
+      mvwinsnstr              window
+      mvwinsstr               window
+      mvwinstr                window
+      mvwinwstr               window
+      mvwprintw               window
+
+      mvwscanw                screen
+      mvwvline                window
+      mvwvline_set            window
+      napms                   reentrant
+      newpad                  global locks(windowlist)
+      newscr                  screen (readonly)
+      newterm                 global locks(screenlist)
+      newwin                  global locks(windowlist)
+      nl                      screen
+      nocbreak                screen
+      nodelay                 window
+      noecho                  screen
+      nofilter                global
+      nonl                    screen
+      noqiflush               terminal
+      noraw                   screen
+      notimeout               window
+      numcodes                global (readonly)
+      numfnames               global (readonly)
+      numnames                global (readonly)
+      ospeed                  global
+      overlay                 window locks(source, target)
+      overwrite               window locks(source, target)
+      pair_content            screen
+      pecho_wchar             screen
+      pechochar               screen
+      pnoutrefresh            screen
+      prefresh                screen
+      printw                  window
+      putp                    global
+      putwin                  window
+      qiflush                 terminal
+      raw                     screen
+      redrawwin               window
+      refresh                 screen
+      reset_prog_mode         screen
+      reset_shell_mode        screen
+      resetty                 terminal
+      resize_term             screen locks(windowlist)
+      resizeterm              screen
+      restartterm             screen
+      ripoffline              global (static data)
+      savetty                 terminal
+      scanw                   screen
+      scr_dump                screen
+      scr_init                screen
+      scr_restore             screen
+      scr_set                 screen
+      scrl                    window (stdscr)
+      scroll                  window
+      scrollok                window
+      set_curterm             screen
+      set_escdelay            screen
+      set_tabsize             screen
+      set_term                global locks(screenlist, screen)
+      setcchar                reentrant
+      setscrreg               window (stdscr)
+      setupterm               global
+      slk_attr                screen
+      slk_attr_off            screen
+      slk_attr_on             screen
+      slk_attr_set            screen
+      slk_attroff             screen
+      slk_attron              screen
+      slk_attrset             screen
+      slk_clear               screen
+
+      slk_color               screen
+      slk_init                screen
+      slk_label               screen
+      slk_noutrefresh         screen
+      slk_refresh             screen
+      slk_restore             screen
+      slk_set                 screen
+      slk_touch               screen
+      slk_wset                screen
+      standend                window
+      standout                window
+      start_color             screen
+      stdscr                  screen (readonly)
+      strcodes                global (readonly)
+      strfnames               global (readonly)
+      strnames                global (readonly)
+      subpad                  window
+      subwin                  window
+      syncok                  window
+      term_attrs              screen
+      termattrs               screen
+      termname                terminal
+      tgetent                 global
+      tgetflag                global
+      tgetnum                 global
+      tgetstr                 global
+      tgoto                   global
+      tigetflag               terminal
+      tigetnum                terminal
+      tigetstr                terminal
+      timeout                 window (stdscr)
+      touchline               window
+      touchwin                window
+      tparm                   global (static data)
+      tputs                   screen
+      trace                   global (static data)
+      ttytype                 screen (readonly)
+      typeahead               screen
+      unctrl                  screen
+      unget_wch               screen (input-operation)
+      ungetch                 screen (input-operation)
+      ungetmouse              screen (input-operation)
+      untouchwin              window
+      use_default_colors      screen
+      use_env                 global (static data)
+      use_extended_names      global (static data)
+      use_legacy_coding       screen
+      use_screen              global locks(screenlist, screen)
+      use_window              global locks(windowlist, window)
+      vid_attr                screen
+      vid_puts                screen
+      vidattr                 screen
+      vidputs                 screen
+      vline                   window (stdscr)
+      vline_set               window (stdscr)
+      vw_printw               window
+      vw_scanw                screen
+      vwprintw                window
+      vwscanw                 screen
+      wadd_wch                window
+      wadd_wchnstr            window
+      wadd_wchstr             window
+      waddch                  window
+      waddchnstr              window
+      waddchstr               window
+      waddnstr                window
+
+      waddnwstr               window
+      waddstr                 window
+      waddwstr                window
+      wattr_get               window
+      wattr_off               window
+      wattr_on                window
+      wattr_set               window
+      wattroff                window
+      wattron                 window
+      wattrset                window
+      wbkgd                   window
+      wbkgdset                window
+      wbkgrnd                 window
+      wbkgrndset              window
+      wborder                 window
+      wborder_set             window
+      wchgat                  window
+      wclear                  window
+      wclrtobot               window
+      wclrtoeol               window
+      wcolor_set              window
+      wcursyncup              screen (affects window plus parents)
+      wdelch                  window
+      wdeleteln               window
+      wecho_wchar             window
+      wechochar               window
+      wenclose                window
+      werase                  window
+      wget_wch                screen (input-operation)
+      wget_wstr               screen (input-operation)
+      wgetbkgrnd              window
+      wgetch                  screen (input-operation)
+      wgetn_wstr              screen (input-operation)
+      wgetnstr                screen (input-operation)
+      wgetparent              window
+      wgetscrreg              window
+      wgetstr                 screen (input-operation)
+      whline                  window
+      whline_set              window
+      win_wch                 window
+      win_wchnstr             window
+      win_wchstr              window
+      winch                   window
+      winchnstr               window
+      winchstr                window
+      winnstr                 window
+      winnwstr                window
+      wins_nwstr              window
+      wins_wch                window
+      wins_wstr               window
+      winsch                  window
+      winsdelln               window
+      winsertln               window
+      winsnstr                window
+      winsstr                 window
+      winstr                  window
+      winwstr                 window
+      wmouse_trafo            window
+      wmove                   window
+      wnoutrefresh            screen
+      wprintw                 window
+      wredrawln               window
+      wrefresh                screen
+      wresize                 window locks(windowlist)
+      wscanw                  screen
+      wscrl                   window
+
+      wsetscrreg              window
+      wstandend               window
+      wstandout               window
+      wsyncdown               screen (affects window plus parents)
+      wsyncup                 screen (affects window plus parents)
+      wtimeout                window
+      wtouchln                window
+      wunctrl                 global (static data)
+      wvline                  window
+      wvline_set              window
+
+
+
+

RETURN VALUE

+       These functions all return TRUE or FALSE, except as noted.
+
+
+
+

NOTES

+       Both a macro and a function are provided for each name.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on  ncurses  ex-
+       tensions be conditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       curses(3x), curs_opaque(3x)
+
+
+
+                                                       curs_threads(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_touch.3x.html b/ncurses/doc/html/man/curs_touch.3x.html new file mode 100644 index 0000000..42c0fe2 --- /dev/null +++ b/ncurses/doc/html/man/curs_touch.3x.html @@ -0,0 +1,144 @@ + + + + +curs_touch 3x + + + + +

curs_touch 3x

+
+
+
+curs_touch(3x)                                           curs_touch(3x)
+
+
+
+
+
+

NAME

+       touchwin, touchline, untouchwin, wtouchln, is_linetouched,
+       is_wintouched - curses refresh control routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+       int touchwin(WINDOW *win);
+       int touchline(WINDOW *win, int start, int count);
+       int untouchwin(WINDOW *win);
+       int wtouchln(WINDOW *win, int y, int n, int changed);
+       bool is_linetouched(WINDOW *win, int line);
+       bool is_wintouched(WINDOW *win);
+
+
+
+

DESCRIPTION

+       The touchwin and touchline routines throw away  all  opti-
+       mization  information about which parts of the window have
+       been touched, by pretending that  the  entire  window  has
+       been  drawn  on.   This  is sometimes necessary when using
+       overlapping windows, since a change to one window  affects
+       the other window, but the records of which lines have been
+       changed in the other window do  not  reflect  the  change.
+       The  routine touchline only pretends that count lines have
+       been changed, beginning with line start.
+
+       The untouchwin routine marks all lines in  the  window  as
+       unchanged since the last call to wrefresh.
+
+       The wtouchln routine makes n lines in the window, starting
+       at line y, look as if they have (changed=1)  or  have  not
+       (changed=0)  been changed since the last call to wrefresh.
+
+       The is_linetouched and is_wintouched routines return  TRUE
+       if  the  specified line/window was modified since the last
+       call to wrefresh; otherwise they return FALSE.   In  addi-
+       tion,  is_linetouched returns ERR if line is not valid for
+       the given window.
+
+
+
+

RETURN VALUE

+       All routines return the integer ERR upon  failure  and  an
+       integer  value  other than ERR upon successful completion,
+       unless otherwise noted in the preceding  routine  descrip-
+       tions.
+
+       X/Open  does not define any error conditions.  In this im-
+       plementation
+
+              is_linetouched
+                   returns an error  if  the  window  pointer  is
+                   null,  or  if  the  line number is outside the
+                   window.  Note that ERR is distinct  from  TRUE
+                   and  FALSE, which are the normal return values
+                   of this function.
+
+              wtouchln
+                   returns an error  if  the  window  pointer  is
+                   null,  or  if  the  line number is outside the
+                   window.
+
+
+
+

PORTABILITY

+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.
+
+       Some  historic  curses  implementations had, as an undocu-
+       mented feature,  the  ability  to  do  the  equivalent  of
+       clearok(...,  1)  by saying touchwin(stdscr) or clear(std-
+       scr).  This will not work under ncurses.
+
+
+
+

NOTES

+       Note that all routines except wtouchln may be macros.
+
+
+
+

SEE ALSO

+       curses(3x), curs_refresh(3x).
+
+
+
+                                                         curs_touch(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_trace.3x.html b/ncurses/doc/html/man/curs_trace.3x.html new file mode 100644 index 0000000..f24a8c8 --- /dev/null +++ b/ncurses/doc/html/man/curs_trace.3x.html @@ -0,0 +1,175 @@ + + + + +curs_trace 3x + + + + +

curs_trace 3x

+
+
+
+curs_trace(3x)                                           curs_trace(3x)
+
+
+
+
+
+

NAME

+       _tracef, _tracedump, _traceattr, _traceattr2,
+       _nc_tracebits, _tracechar, _tracechtype, _tracechtype2,
+       _tracemouse, trace - curses debugging routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       void _tracef(const char *format, ...);
+       void _tracedump(const char *label, WINDOW *win);
+       char *_traceattr(attr_t attr);
+       char *_traceattr2(int buffer, chtype ch);
+       char *_nc_tracebits(void);
+       char *_tracechar(int);
+       char *_tracechtype(chtype ch);
+       char *_tracechtype2(int buffer, chtype ch);
+       char *_tracemouse(const MEVENT *event);
+       void trace(const unsigned int param);
+
+
+
+

DESCRIPTION

+       The  trace routines are used for debugging the ncurses li-
+       braries, as well as applications which use the ncurses li-
+       braries.  These functions are normally available only with
+       the debugging library libncurses_g.a, but may be  compiled
+       into  any  model (shared, static, profile) by defining the
+       symbol TRACE.
+
+       The principal parts of this interface are the  trace  rou-
+       tine which selectively enables different tracing features,
+       and the _tracef routine which writes formatted data to the
+       trace file.
+
+       Calling  trace  with  a  nonzero  parameter opens the file
+       trace in the current directory for output.  The  parameter
+       is formed by OR'ing values from the list of TRACE_xxx def-
+       initions in <curses.h>.  These include:
+
+       TRACE_DISABLE
+            turn off tracing.
+
+       TRACE_TIMES
+            trace user and system times of updates.
+
+       TRACE_TPUTS
+            trace tputs calls.
+
+       TRACE_UPDATE
+            trace update actions, old & new screens.
+
+       TRACE_MOVE
+            trace cursor movement and scrolling.
+
+       TRACE_CHARPUT
+            trace all character outputs.
+
+       TRACE_ORDINARY
+            trace all update actions.  The  old  and  new  screen
+            contents  are  written to the trace file for each re-
+            fresh.
+
+       TRACE_CALLS
+            trace all curses calls.  The parameters for each call
+            are traced, as well as return values.
+
+       TRACE_VIRTPUT
+            trace virtual character puts, i.e., calls to addch.
+
+       TRACE_IEVENT
+            trace low-level input processing, including timeouts.
+
+       TRACE_BITS
+            trace state of TTY control bits.
+
+       TRACE_ICALLS
+            trace internal/nested calls.
+
+       TRACE_CCALLS
+            trace per-character calls.
+
+       TRACE_DATABASE
+            trace read/write of terminfo/termcap data.
+
+       TRACE_ATTRS
+            trace changes to video attributes and colors.
+
+       TRACE_MAXIMUM
+            maximum trace level,  enables  all  of  the  separate
+            trace features.
+
+       Some  tracing  features are enabled whenever the trace pa-
+       rameter is nonzero.  Some features overlap.  The  specific
+       names are used as a guideline.
+
+
+
+

RETURN VALUE

+       Routines  which  return a value are designed to be used as
+       parameters to the _tracef routine.
+
+
+
+

PORTABILITY

+       These functions are not part of the XSI  interface.   Some
+       other  curses  implementations  are known to have similar,
+       undocumented features, but they are  not  compatible  with
+       ncurses.
+
+
+
+

SEE ALSO

+       curses(3x).
+
+
+
+                                                         curs_trace(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_util.3x.html b/ncurses/doc/html/man/curs_util.3x.html new file mode 100644 index 0000000..981a372 --- /dev/null +++ b/ncurses/doc/html/man/curs_util.3x.html @@ -0,0 +1,261 @@ + + + + +curs_util 3x + + + + +

curs_util 3x

+
+
+
+curs_util(3x)                                             curs_util(3x)
+
+
+
+
+
+

NAME

+       delay_output, filter, flushinp, getwin, key_name, keyname,
+       nofilter, putwin, unctrl, use_env, wunctrl - miscellaneous
+       curses utility routines
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       char *unctrl(chtype c);
+       wchar_t *wunctrl(cchar_t *c);
+       char *keyname(int c);
+       char *key_name(wchar_t w);
+       void filter(void);
+       void nofilter(void);
+       void use_env(bool f);
+       int putwin(WINDOW *win, FILE *filep);
+       WINDOW *getwin(FILE *filep);
+       int delay_output(int ms);
+       int flushinp(void);
+
+
+
+

DESCRIPTION

+       The  unctrl  routine returns a character string which is a
+       printable representation of the character c, ignoring  at-
+       tributes.   Control characters are displayed in the ^X no-
+       tation.  Printing characters are  displayed  as  is.   The
+       corresponding  wunctrl  returns a printable representation
+       of a wide-character.
+
+       The keyname routine returns a character string correspond-
+       ing to the key c:
+
+          -  Printable  characters  are  displayed as themselves,
+             e.g., a one-character string containing the key.
+
+          -  Control characters are displayed in the ^X notation.
+
+          -  DEL (character 127) is displayed as ^?.
+
+          -  Values  above 128 are either meta characters (if the
+             screen has not been initialized, or if meta has been
+             called  with a TRUE parameter), shown in the M-X no-
+             tation, or are displayed as themselves.  In the lat-
+             ter case, the values may not be printable; this fol-
+             lows the X/Open specification.
+
+          -  Values above 256 may be the names of  the  names  of
+             function keys.
+
+          -  Otherwise  (if  there  is no corresponding name) the
+             function returns null, to denote an  error.   X/Open
+             also lists an "UNKNOWN KEY" return value, which some
+             implementations return rather than null.
+
+       The corresponding key_name returns a character string cor-
+       responding  to  the wide-character value w.  The two func-
+       tions do not return the same set of  strings;  the  latter
+       returns null where the former would display a meta charac-
+       ter.
+
+       The filter routine, if used, must be called before initscr
+       or  newterm  are called.  The effect is that, during those
+       calls, LINES is set to 1;  the  capabilities  clear,  cup,
+       cud,  cud1,  cuu1,  cuu,  vpa  are  disabled; and the home
+       string is set to the value of cr.
+
+       The nofilter routine cancels the  effect  of  a  preceding
+       filter  call.   That  allows  the  caller  to initialize a
+       screen on a different device, using a different  value  of
+       $TERM.   The  limitation arises because the filter routine
+       modifies the in-memory copy of the terminal information.
+
+       The use_env routine, if used, is called before initscr  or
+       newterm  are  called.   When called with FALSE as an argu-
+       ment, the values of lines and  columns  specified  in  the
+       terminfo  database will be used, even if environment vari-
+       ables LINES and COLUMNS (used by default) are set,  or  if
+       curses  is  running in a window (in which case default be-
+       havior would be to  use  the  window  size  if  LINES  and
+       COLUMNS  are not set).  Note that setting LINES or COLUMNS
+       overrides the corresponding size  which  may  be  obtained
+       from the operating system.
+
+       The  putwin routine writes all data associated with window
+       win into the file to which filep points.  This information
+       can be later retrieved using the getwin function.
+
+       The getwin routine reads window related data stored in the
+       file by putwin.  The routine then creates and  initializes
+       a new window using that data.  It returns a pointer to the
+       new window.
+
+       The delay_output routine inserts an ms  millisecond  pause
+       in  output.   This  routine should not be used extensively
+       because padding characters are  used  rather  than  a  CPU
+       pause.   If  no  padding character is specified, this uses
+       napms to perform the delay.
+
+       The flushinp routine throws away any  typeahead  that  has
+       been  typed  by  the user and has not yet been read by the
+       program.
+
+
+
+

RETURN VALUE

+       Except for flushinp, routines that return an  integer  re-
+       turn  ERR upon failure and OK (SVr4 specifies only "an in-
+       teger value other than ERR") upon successful completion.
+
+       Routines that return pointers return NULL on error.
+
+       X/Open does not define any error conditions.  In this  im-
+       plementation
+
+              flushinp
+                   returns  an error if the terminal was not ini-
+                   tialized.
+
+              putwin
+                   returns an  error  if  the  associated  fwrite
+                   calls return an error.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.  It states that unctrl and wunctrl  will  return  a
+       null  pointer if unsuccessful, but does not define any er-
+       ror conditions.  This implementation checks for three cas-
+       es:
+
+              -    the  parameter is a 7-bit US-ASCII code.  This
+                   is the case that X/Open Curses documented.
+
+              -    the parameter is in the range 128-159, i.e., a
+                   C1  control  code.   If  use_legacy_coding has
+                   been called with a 2 parameter, unctrl returns
+                   the  parameter,  i.e.,  a one-character string
+                   with the parameter  as  the  first  character.
+                   Otherwise,  it  returns  ``~@'', ``~A'', etc.,
+                   analogous to ``^@'', ``^A'', C0 controls.
+
+                   X/Open Curses does not document whether unctrl
+                   can  be  called  before  initializing  curses.
+                   This implementation permits that, and  returns
+                   the ``~@'', etc., values in that case.
+
+              -    parameter  values  outside the 0 to 255 range.
+                   unctrl returns a null pointer.
+
+       The SVr4 documentation describes the action of filter only
+       in  the  vaguest  terms.   The description here is adapted
+       from the XSI Curses standard (which erroneously  fails  to
+       describe the disabling of cuu).
+
+       The  strings returned by unctrl in this implementation are
+       determined at compile time, showing C1 controls  from  the
+       upper-128  codes with a `~' prefix rather than `^'.  Other
+       implementations have different conventions.  For  example,
+       they  may  show  both sets of control characters with `^',
+       and strip the parameter to 7 bits.  Or they may ignore  C1
+       controls  and  treat  all of the upper-128 codes as print-
+       able.  This implementation uses 8 bits but does not modify
+       the string to reflect locale.  The use_legacy_coding func-
+       tion allows the caller to change the output of unctrl.
+
+       Likewise, the meta function allows the  caller  to  change
+       the  output of keyname, i.e., it determines whether to use
+       the `M-' prefix for ``meta'' keys (codes in the range  128
+       to 255).  Both use_legacy_coding and meta succeed only af-
+       ter curses is initialized.  X/Open Curses does  not  docu-
+       ment  the  treatment  of  codes 128 to 159.  When treating
+       them as ``meta'' keys (or if keyname is called before ini-
+       tializing  curses),  this  implementation  returns strings
+       ``M-^@'', ``M-^A'', etc.
+
+       The keyname function may return the names of  user-defined
+       string  capabilities which are defined in the terminfo en-
+       try via the -x option of tic.  This  implementation  auto-
+       matically  assigns  at  run-time  keycodes to user-defined
+       strings which begin  with  "k".   The  keycodes  start  at
+       KEY_MAX,  but  are not guaranteed to be the same value for
+       different runs because user-defined codes are merged  from
+       all  terminal  descriptions  which  have been loaded.  The
+       use_extended_names function controls whether this data  is
+       loaded  when  the  terminal description is read by the li-
+       brary.
+
+       The nofilter routine is specific to ncurses.  It  was  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on  ncurses  ex-
+       tensions be conditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       legacy_coding(3x), curses(3x), curs_initscr(3x), curs_ker-
+       nel(3x), curs_scr_dump(3x), legacy_coding(3x).
+
+
+
+                                                          curs_util(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/curs_window.3x.html b/ncurses/doc/html/man/curs_window.3x.html new file mode 100644 index 0000000..da6219d --- /dev/null +++ b/ncurses/doc/html/man/curs_window.3x.html @@ -0,0 +1,215 @@ + + + + +curs_window 3x + + + + +

curs_window 3x

+
+
+
+curs_window(3x)                                         curs_window(3x)
+
+
+
+
+
+

NAME

+       newwin, delwin, mvwin, subwin, derwin, mvderwin, dupwin,
+       wsyncup, syncok, wcursyncup, wsyncdown - create curses
+       windows
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       WINDOW *newwin(int nlines, int ncols, int begin_y,
+             int begin_x);
+       int delwin(WINDOW *win);
+       int mvwin(WINDOW *win, int y, int x);
+       WINDOW *subwin(WINDOW *orig, int nlines, int ncols,
+             int begin_y, int begin_x);
+       WINDOW *derwin(WINDOW *orig, int nlines, int ncols,
+             int begin_y, int begin_x);
+       int mvderwin(WINDOW *win, int par_y, int par_x);
+       WINDOW *dupwin(WINDOW *win);
+       void wsyncup(WINDOW *win);
+       int syncok(WINDOW *win, bool bf);
+       void wcursyncup(WINDOW *win);
+       void wsyncdown(WINDOW *win);
+
+
+
+

DESCRIPTION

+       Calling newwin creates and returns a pointer to a new win-
+       dow with the given number of lines and columns.  The upper
+       left-hand  corner of the window is at line begin_y, column
+       begin_x.  If either nlines or ncols is zero, they  default
+       to  LINES - begin_y and COLS - begin_x.  A new full-screen
+       window is created by calling newwin(0,0,0,0).
+
+       Calling delwin deletes the named window, freeing all memo-
+       ry associated with it (it does not actually erase the win-
+       dow's screen image).  Subwindows must  be  deleted  before
+       the main window can be deleted.
+
+       Calling mvwin moves the window so that the upper left-hand
+       corner is at position (x, y).  If the move would cause the
+       window to be off the screen, it is an error and the window
+       is not moved.  Moving subwindows is allowed, but should be
+       avoided.
+
+       Calling subwin creates and returns a pointer to a new win-
+       dow with the given number of lines, nlines,  and  columns,
+       ncols.   The  window  is at position (begin_y, begin_x) on
+       the screen.  (This position is relative to the screen, and
+       not to the window orig.)  The window is made in the middle
+       of the window orig, so that changes  made  to  one  window
+       will  affect  both  windows.   The subwindow shares memory
+       with the window orig.  When using this routine, it is nec-
+       essary  to call touchwin or touchline on orig before call-
+       ing wrefresh on the subwindow.
+
+       Calling derwin is the same as calling subwin, except  that
+       begin_y and begin_x are relative to the origin of the win-
+       dow orig rather than the screen.  There is  no  difference
+       between the subwindows and the derived windows.
+
+       Calling mvderwin moves a derived window (or subwindow) in-
+       side its parent window.  The screen-relative parameters of
+       the  window are not changed.  This routine is used to dis-
+       play different parts of the  parent  window  at  the  same
+       physical position on the screen.
+
+       Calling  dupwin  creates  an exact duplicate of the window
+       win.
+
+       Calling wsyncup touches all locations in ancestors of  win
+       that  are changed in win.  If syncok is called with second
+       argument TRUE then wsyncup is called automatically whenev-
+       er there is a change in the window.
+
+       The  wsyncdown  routine  touches each location in win that
+       has been touched in any of  its  ancestor  windows.   This
+       routine  is  called by wrefresh, so it should almost never
+       be necessary to call it manually.
+
+       The routine wcursyncup updates the current cursor position
+       of  all the ancestors of the window to reflect the current
+       cursor position of the window.
+
+
+
+

RETURN VALUE

+       Routines that return an integer return the integer ERR up-
+       on  failure  and OK (SVr4 only specifies "an integer value
+       other than ERR") upon successful completion.
+
+       Routines that return pointers return NULL on error.
+
+       X/Open defines no error conditions.  In  this  implementa-
+       tion
+
+              delwin
+                   returns  an  error  if  the  window pointer is
+                   null, or if the window is the parent of anoth-
+                   er window.
+
+                   This  implementation  also maintains a list of
+                   windows, and checks that the pointer passed to
+                   delwin  is  one  that it created, returning an
+                   error if it was not..
+
+              mvderwin
+                   returns an error  if  the  window  pointer  is
+                   null,  or  if some part of the window would be
+                   placed off-screen.
+
+              mvwin
+                   returns an error  if  the  window  pointer  is
+                   null,  or if the window is really a pad, or if
+                   some part of the window would be  placed  off-
+                   screen.
+
+              syncok
+                   returns  an  error  if  the  window pointer is
+                   null.
+
+
+
+

NOTES

+       If many small changes are made to the window, the  wsyncup
+       option could degrade performance.
+
+       Note that syncok may be a macro.
+
+
+
+

BUGS

+       The  subwindow  functions (subwin, derwin, mvderwin, wsyn-
+       cup, wsyncdown, wcursyncup, syncok) are flaky, incomplete-
+       ly implemented, and not well tested.
+
+       The  System  V  curses documentation is very unclear about
+       what wsyncup and wsyncdown actually do.  It seems to imply
+       that  they  are only supposed to touch exactly those lines
+       that are affected by ancestor changes.  The language here,
+       and  the  behavior  of  the curses implementation, is pat-
+       terned on the XPG4 curses standard.  The weaker XPG4  spec
+       may result in slower updates.
+
+
+
+

PORTABILITY

+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.
+
+
+
+

SEE ALSO

+       curses(3x), curs_refresh(3x), curs_touch(3x)
+
+
+
+                                                        curs_window(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/default_colors.3x.html b/ncurses/doc/html/man/default_colors.3x.html new file mode 100644 index 0000000..4c9e801 --- /dev/null +++ b/ncurses/doc/html/man/default_colors.3x.html @@ -0,0 +1,180 @@ + + + + +default_colors 3x + + + + +

default_colors 3x

+
+
+
+default_colors(3x)                                   default_colors(3x)
+
+
+
+
+
+

NAME

+       use_default_colors, assume_default_colors - use terminal's
+       default colors
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int use_default_colors(void);
+       int assume_default_colors(int fg, int bg);
+
+
+
+

DESCRIPTION

+       The use_default_colors() and assume_default_colors() func-
+       tions are extensions to the curses library.  They are used
+       with terminals that support ISO 6429 color, or equivalent.
+       These terminals allow the application to reset color to an
+       unspecified default value (e.g., with SGR 39 or SGR 49).
+
+       Applications that paint  a  colored  background  over  the
+       whole  screen  do not take advantage of SGR 39 and SGR 49.
+       Some applications are designed to work  with  the  default
+       background,  using  colors  only  for  text.  For example,
+       there are several implementations of the ls program  which
+       use  colors to denote different file types or permissions.
+       These "color ls" programs do not  necessarily  modify  the
+       background  color, typically using only the setaf terminfo
+       capability  to  set  the  foreground  color.   Full-screen
+       applications  that  use default colors can achieve similar
+       visual effects.
+
+       The first function, use_default_colors() tells the  curses
+       library  to  assign terminal default foreground/background
+       colors to color number  -1.  So  init_pair(x,COLOR_RED,-1)
+       will  initialize  pair  x as red on default background and
+       init_pair(x,-1,COLOR_BLUE)  will  initialize  pair  x   as
+       default foreground on blue.
+
+       The  other,  assume_default_colors() is a refinement which
+       tells which colors to paint for color pair 0.  This  func-
+       tion  recognizes  a special color number -1, which denotes
+       the default terminal color.
+
+       The following are equivalent:
+              use_default_colors();
+              assume_default_colors(-1,-1);
+
+       These are ncurses extensions.  For other curses  implemen-
+       tations,  color  number -1 does not mean anything, just as
+       for ncurses before a successful call  of  use_default_col-
+       ors() or assume_default_colors().
+
+       Other  curses  implementations do not allow an application
+       to modify color pair 0.  They assume that  the  background
+       is COLOR_BLACK, but do not ensure that the color pair 0 is
+       painted to match the assumption.  If your application does
+       not use either use_default_colors() or assume_default_col-
+       ors() ncurses will paint a white  foreground  (text)  with
+       black background for color pair 0.
+
+
+
+

RETURN VALUE

+       These functions return the integer ERR upon failure and OK
+       on success.  They will fail if either  the  terminal  does
+       not  support  the orig_pair or orig_colors capability.  If
+       the initialize_pair capability is found,  this  causes  an
+       error as well.
+
+
+
+

NOTES

+       Associated  with  this  extension,  the init_pair function
+       accepts negative arguments to specify  default  foreground
+       or background colors.
+
+       The  use_default_colors()  function  was  added to support
+       ded.  This is a full-screen application which uses  curses
+       to  manage only part of the screen.  The bottom portion of
+       the screen, which is of adjustable size, is left uncolored
+       to  display the results from shell commands.  The top por-
+       tion of the screen colors filenames using  a  scheme  like
+       the  "color  ls" programs.  Attempting to manage the back-
+       ground color of the screen for this application would give
+       unsatisfactory  results  for  a  variety of reasons.  This
+       extension was devised after noting that color  xterm  (and
+       similar  programs)  provides a background color which does
+       not necessarily correspond to  any  of  the  ANSI  colors.
+       While  a special terminfo entry could be constructed using
+       nine colors, there was no mechanism provided within curses
+       to  account for the related orig_pair and back_color_erase
+       capabilities.
+
+       The assume_default_colors() function was added to solve  a
+       different  problem:  support  for applications which would
+       use  environment  variables  and  other  configuration  to
+       bypass  curses'  notion  of the terminal's default colors,
+       setting specific values.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on them be  con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       curs_color(3x), ded(1).
+
+
+
+

AUTHOR

+       Thomas  Dickey  (from  an analysis of the requirements for
+       color xterm for XFree86 3.1.2C, February 1996).
+
+
+
+                                                     default_colors(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/define_key.3x.html b/ncurses/doc/html/man/define_key.3x.html new file mode 100644 index 0000000..0a6b54b --- /dev/null +++ b/ncurses/doc/html/man/define_key.3x.html @@ -0,0 +1,108 @@ + + + + +define_key 3x + + + + +

define_key 3x

+
+
+
+define_key(3x)                                           define_key(3x)
+
+
+
+
+
+

NAME

+       define_key - define a keycode
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int define_key(const char *definition, int keycode);
+
+
+
+

DESCRIPTION

+       This is an extension to the curses library.  It permits an
+       application to define keycodes  with  their  corresponding
+       control  strings,  so that the ncurses library will inter-
+       pret them just as it would the  predefined  codes  in  the
+       terminfo database.
+
+       If  the  given string is null, any existing definition for
+       the keycode is removed.  Similarly, if the  given  keycode
+       is  negative  or  zero,  any existing string for the given
+       definition is removed.
+
+
+
+

RETURN VALUE

+       The keycode  must  be  greater  than  zero,  else  ERR  is
+       returned.
+
+
+
+

PORTABILITY

+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is recommended that any code depending on them be con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       keyok(3x), key_defined(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey.
+
+
+
+                                                         define_key(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form.3x.html b/ncurses/doc/html/man/form.3x.html new file mode 100644 index 0000000..a2135f3 --- /dev/null +++ b/ncurses/doc/html/man/form.3x.html @@ -0,0 +1,258 @@ + + + + +form 3x + + + + +

form 3x

+
+
+
+form(3x)                                                       form(3x)
+
+
+
+
+
+

NAME

+       form - curses extension for programming forms
+
+
+
+

SYNOPSIS

+       #include <form.h>
+
+
+
+

DESCRIPTION

+       The  form library provides terminal-independent facilities
+       for composing form screens  on  character-cell  terminals.
+       The  library  includes:  field  routines, which create and
+       modify form fields; and form routines, which group  fields
+       into forms, display forms on the screen, and handle inter-
+       action with the user.
+
+       The form library uses the curses libraries.   To  use  the
+       form library, link with the options -lform -lcurses.
+
+       Your program should set up the locale, e.g.,
+
+            setlocale(LC_ALL, "");
+
+       so that input/output processing will work.
+
+       A  curses  initialization  routine such as initscr must be
+       called before using any of these functions.
+
+   Current Default Values for Field Attributes
+       The form library  maintains  a  default  value  for  field
+       attributes.   You  can  get or set this default by calling
+       the appropriate set_ or  retrieval  routine  with  a  NULL
+       field pointer.  Changing this default with a set_ function
+       affects future field creations, but does  not  change  the
+       rendering of fields already created.
+
+   Routine Name Index
+       The  following  table lists each form routine and the name
+       of the manual page on which it is described.
+
+       curses Routine Name    Manual Page Name
+       -------------------------------------------------
+       current_field          form_page(3x)
+       data_ahead             form_data(3x)
+       data_behind            form_data(3x)
+       dup_field              form_field_new(3x)
+       dynamic_field_info     form_field_info(3x)
+       field_arg              form_field_validation(3x)
+       field_back             form_field_attributes(3x)
+       field_buffer           form_field_buffer(3x)
+       field_count            form_field(3x)
+       field_fore             form_field_attributes(3x)
+       field_index            form_page(3x)
+       field_info             form_field_info(3x)
+       field_init             form_hook(3x)
+       field_just             form_field_just(3x)
+       field_opts             form_field_opts(3x)
+       field_opts_off         form_field_opts(3x)
+       field_opts_on          form_field_opts(3x)
+       field_pad              form_field_attributes(3x)
+       field_status           form_field_buffer(3x)
+       field_term             form_hook(3x)
+       field_type             form_field_validation(3x)
+
+       field_userptr          form_field_userptr(3x)
+       form_driver            form_driver(3x)
+       form_fields            form_field(3x)
+       form_init              form_hook(3x)
+       form_opts              form_opts(3x)
+       form_opts_off          form_opts(3x)
+       form_opts_on           form_opts(3x)
+       form_page              form_page(3x)
+       form_request_by_name   form_requestname(3x)
+       form_request_name      form_requestname(3x)
+       form_sub               form_win(3x)
+       form_term              form_hook(3x)
+       form_userptr           form_userptr(3x)
+       form_win               form_win(3x)
+       free_field             form_field_new(3x)
+       free_fieldtype         form_fieldtype(3x)
+       free_form              form_new(3x)
+       link_field             form_field_new(3x)
+       link_fieldtype         form_fieldtype(3x)
+       move_field             form_field(3x)
+       new_field              form_field_new(3x)
+       new_fieldtype          form_fieldtype(3x)
+       new_form               form_new(3x)
+       new_page               form_new_page(3x)
+       pos_form_cursor        form_cursor(3x)
+       post_form              form_post(3x)
+       scale_form             form_win(3x)
+       set_current_field      form_page(3x)
+       set_field_back         form_field_attributes(3x)
+       set_field_buffer       form_field_buffer(3x)
+       set_field_fore         form_field_attributes(3x)
+       set_field_init         form_hook(3x)
+       set_field_just         form_field_just(3x)
+       set_field_opts         form_field_opts(3x)
+       set_field_pad          form_field_attributes(3x)
+       set_field_status       form_field_buffer(3x)
+       set_field_term         form_hook(3x)
+       set_field_type         form_field_validation(3x)
+       set_field_userptr      form_field_userptr(3x)
+       set_fieldtype_arg      form_fieldtype(3x)
+       set_fieldtype_choice   form_fieldtype(3x)
+       set_form_fields        form_field(3x)
+       set_form_init          form_hook(3x)
+       set_form_opts          form_field_opts(3x)
+       set_form_page          form_page(3x)
+       set_form_sub           form_win(3x)
+       set_form_term          form_hook(3x)
+       set_form_userptr       form_userptr(3x)
+       set_form_win           form_win(3x)
+       set_max_field          form_field_buffer(3x)
+       set_new_page           form_new_page(3x)
+       unpost_form            form_post(3x)
+
+
+
+

RETURN VALUE

+       Routines that return pointers return NULL  on  error,  and
+       set  errno  to  the  corresponding  error-code returned by
+       functions returning an integer.  Routines that  return  an
+       integer return one of the following error codes:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_CONNECTED
+            The field is already connected to a form.
+
+       E_INVALID_FIELD
+            Contents of a field are not valid.
+
+       E_NOT_CONNECTED
+            No fields are connected to the form.
+
+       E_NOT_POSTED
+            The form has not been posted.
+
+       E_NO_ROOM
+            Form is too large for its window.
+
+       E_POSTED
+            The form is already posted.
+
+       E_REQUEST_DENIED
+            The form driver could not process the request.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_UNKNOWN_COMMAND
+            The form driver code saw an unknown request code.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       files <curses.h> and <eti.h>.
+
+       In  your  library  list,  libform.a should be before libn-
+       curses.a; that is, you want to say `-lform -lncurses', not
+       the  other  way  around (which would give you a link error
+       using most linkers).
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
+       by Eric S. Raymond.
+
+
+
+

SEE ALSO

+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                               form(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_cursor.3x.html b/ncurses/doc/html/man/form_cursor.3x.html new file mode 100644 index 0000000..af34701 --- /dev/null +++ b/ncurses/doc/html/man/form_cursor.3x.html @@ -0,0 +1,118 @@ + + + + +form_cursor 3x + + + + +

form_cursor 3x

+
+
+
+form_cursor(3x)                                         form_cursor(3x)
+
+
+
+
+
+

NAME

+       form_cursor - position a form window cursor
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int pos_form_cursor(FORM *form);
+
+
+
+

DESCRIPTION

+       The  function  pos_form_cursor  restores the cursor to the
+       position required for the forms driver  to  continue  pro-
+       cessing  requests.   This  is useful after curses routines
+       have been called to do screen-painting in  response  to  a
+       form operation.
+
+
+
+

RETURN VALUE

+       This routine returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_NOT_POSTED
+            The form has not been posted.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                        form_cursor(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_data.3x.html b/ncurses/doc/html/man/form_data.3x.html new file mode 100644 index 0000000..0232996 --- /dev/null +++ b/ncurses/doc/html/man/form_data.3x.html @@ -0,0 +1,104 @@ + + + + +form_data 3x + + + + +

form_data 3x

+
+
+
+form_data(3x)                                             form_data(3x)
+
+
+
+
+
+

NAME

+       form_data - test for off-screen data in given forms
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       bool data_ahead(const FORM *form);
+       bool data_behind(const FORM *form);
+
+
+
+

DESCRIPTION

+       The  function data_ahead tests whether there is off-screen
+       data ahead in the given form.   It  returns  TRUE  (1)  or
+       FALSE (0).
+
+       The function data_behind tests whether there is off-screen
+       data behind in the given form.  It  returns  TRUE  (1)  or
+       FALSE (0).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          form_data(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_driver.3x.html b/ncurses/doc/html/man/form_driver.3x.html new file mode 100644 index 0000000..66eb7e6 --- /dev/null +++ b/ncurses/doc/html/man/form_driver.3x.html @@ -0,0 +1,376 @@ + + + + +form_driver 3x + + + + +

form_driver 3x

+
+
+
+form_driver(3x)                                         form_driver(3x)
+
+
+
+
+
+

NAME

+       form_driver - command-processing loop of the form system
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int form_driver(FORM *form, int c);
+
+
+
+

DESCRIPTION

+       Once a form has been posted (displayed), you should funnel
+       input events to it through form_driver.  This routine  has
+       three major input cases:
+
+       -  The  input  is  a  form navigation request.  Navigation
+          request codes are constants defined in <form.h>,  which
+          are distinct from the key- and character codes returned
+          by wgetch.
+
+       -  The input is a printable character.  Printable  charac-
+          ters  (which  must  be  positive,  less  than  256) are
+          checked according to the program's locale settings.
+
+       -  The input is the KEY_MOUSE special key associated  with
+          an mouse event.
+
+       The form driver requests are as follows:
+
+       REQ_NEXT_PAGE
+            Move to the next page.
+
+       REQ_PREV_PAGE
+            Move to the previous page.
+
+       REQ_FIRST_PAGE
+            Move to the first page.
+
+       REQ_LAST_PAGE
+            Move to the last field.
+
+
+       REQ_NEXT_FIELD
+            Move to the next field.
+
+       REQ_PREV_FIELD
+            Move to the previous field.
+
+       REQ_FIRST_FIELD
+            Move to the first field.
+
+       REQ_LAST_FIELD
+            Move to the last field.
+
+       REQ_SNEXT_FIELD
+            Move to the sorted next field.
+
+       REQ_SPREV_FIELD
+            Move to the sorted previous field.
+
+       REQ_SFIRST_FIELD
+            Move to the sorted first field.
+
+       REQ_SLAST_FIELD
+            Move to the sorted last field.
+
+       REQ_LEFT_FIELD
+            Move left to a field.
+
+       REQ_RIGHT_FIELD
+            Move right to a field.
+
+       REQ_UP_FIELD
+            Move up to a field.
+
+       REQ_DOWN_FIELD
+            Move down to a field.
+
+
+       REQ_NEXT_CHAR
+            Move to the next char.
+
+       REQ_PREV_CHAR
+            Move to the previous char.
+
+       REQ_NEXT_LINE
+            Move to the next line.
+
+       REQ_PREV_LINE
+            Move to the previous line.
+
+       REQ_NEXT_WORD
+            Move to the next word.
+
+       REQ_PREV_WORD
+            Move to the previous word.
+
+       REQ_BEG_FIELD
+            Move to the beginning of the field.
+
+       REQ_END_FIELD
+            Move to the end of the field.
+
+       REQ_BEG_LINE
+            Move to the beginning of the line.
+
+       REQ_END_LINE
+            Move to the end of the line.
+
+       REQ_LEFT_CHAR
+            Move left in the field.
+
+       REQ_RIGHT_CHAR
+            Move right in the field.
+
+       REQ_UP_CHAR
+            Move up in the field.
+
+       REQ_DOWN_CHAR
+            Move down in the field.
+
+
+       REQ_NEW_LINE
+            Insert or overlay a new line.
+
+       REQ_INS_CHAR
+            Insert a blank at the cursor.
+
+       REQ_INS_LINE
+            Insert a blank line at the cursor.
+
+       REQ_DEL_CHAR
+            Delete character at the cursor.
+
+       REQ_DEL_PREV
+            Delete character before the cursor.
+
+       REQ_DEL_LINE
+            Delete line at the cursor.
+
+       REQ_DEL_WORD
+            Delete blank-delimited word at the cursor.
+
+       REQ_CLR_EOL
+            Clear to end of line from cursor.
+
+       REQ_CLR_EOF
+            Clear to end of field from cursor.
+
+       REQ_CLR_FIELD
+            Clear the entire field.
+
+       REQ_OVL_MODE
+            Enter overlay mode.
+
+       REQ_INS_MODE
+            Enter insert mode.
+
+
+       REQ_SCR_FLINE
+            Scroll the field forward a line.
+
+       REQ_SCR_BLINE
+            Scroll the field backward a line.
+
+       REQ_SCR_FPAGE
+            Scroll the field forward a page.
+
+       REQ_SCR_BPAGE
+            Scroll the field backward a page.
+
+       REQ_SCR_FHPAGE
+            Scroll the field forward half a page.
+
+       REQ_SCR_BHPAGE
+            Scroll the field backward half a page.
+
+
+       REQ_SCR_FCHAR
+            Scroll the field forward a character.
+
+       REQ_SCR_BCHAR
+            Scroll the field backward a character.
+
+       REQ_SCR_HFLINE
+            Horizontal scroll the field forward a line.
+
+       REQ_SCR_HBLINE
+            Horizontal scroll the field backward a line.
+
+       REQ_SCR_HFHALF
+            Horizontal scroll the field forward half a line.
+
+       REQ_SCR_HBHALF
+            Horizontal scroll the field backward half a line.
+
+
+       REQ_VALIDATION
+            Validate field.
+
+       REQ_NEXT_CHOICE
+            Display next field choice.
+
+       REQ_PREV_CHOICE
+            Display previous field choice.
+
+       If  the  second  argument  is  a  printable character, the
+       driver places it in the current position  in  the  current
+       field.   If  it is one of the forms requests listed above,
+       that request is executed.
+
+   MOUSE HANDLING
+       If the second argument is the KEY_MOUSE special  key,  the
+       associated mouse event is translated into one of the above
+       pre-defined requests.  Currently only clicks in  the  user
+       window  (e.g.  inside the form display area or the decora-
+       tion window) are handled.
+
+       If you click above the display region of the form:
+
+              a REQ_PREV_FIELD is generated for a single click,
+
+              a REQ_PREV_PAGE is generated for a double-click and
+
+              a REQ_FIRST_FIELD is generated for a  triple-click.
+
+       If you click below the display region of the form:
+
+              a REQ_NEXT_FIELD is generated for a single click,
+
+              a REQ_NEXT_PAGE is generated for a double-click and
+
+              a REQ_LAST_FIELD is generated for a triple-click.
+
+       If you click at an field inside the display  area  of  the
+       form:
+
+              -  the form cursor is positioned to that field.
+
+              -  If  you double-click a field, the form cursor is
+                 positioned to that field  and  E_UNKNOWN_COMMAND
+                 is  returned.   This  return  value makes sense,
+                 because a double click  usually  means  that  an
+                 field-specific action should be returned.  It is
+                 exactly the purpose of this return value to sig-
+                 nal  that an application specific command should
+                 be executed.
+
+              -  If  a  translation  into  a  request  was  done,
+                 form_driver  returns the result of this request.
+
+       If you clicked outside the user window or the mouse  event
+       could   not   be   translated   into  a  form  request  an
+       E_REQUEST_DENIED is returned.
+
+   APPLICATION-DEFINED COMMANDS
+       If the second argument is neither printable nor one of the
+       above  pre-defined form requests, the driver assumes it is
+       an application-specific command and returns E_UNKNOWN_COM-
+       MAND.  Application-defined commands should be defined rel-
+       ative to MAX_COMMAND, the  maximum  value  of  these  pre-
+       defined requests.
+
+
+
+

RETURN VALUE

+       form_driver returns one of the following error codes:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NOT_POSTED
+            The form has not been posted.
+
+       E_INVALID_FIELD
+            Contents of field is invalid.
+
+       E_REQUEST_DENIED
+            The form driver could not process the request.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_UNKNOWN_COMMAND
+            The form driver code saw an unknown request code.
+
+
+
+

SEE ALSO

+       curses(3x), form(3x), wgetch(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       files <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                        form_driver(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field.3x.html b/ncurses/doc/html/man/form_field.3x.html new file mode 100644 index 0000000..d743390 --- /dev/null +++ b/ncurses/doc/html/man/form_field.3x.html @@ -0,0 +1,142 @@ + + + + +form_field 3x + + + + +

form_field 3x

+
+
+
+form_field(3x)                                           form_field(3x)
+
+
+
+
+
+

NAME

+       form_field - make and break connections between fields and
+       forms
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_form_fields(FORM *form, FIELD **fields);
+       FIELD **form_fields(const FORM *form);
+       int field_count(const FORM *form);
+       int move_field(FIELD *field, int frow, int fcol);
+
+
+
+

DESCRIPTION

+       The function set_form_fields  changes  the  field  pointer
+       array  of the given form.  The array must be terminated by
+       a NULL.
+
+       The function form_fields returns the field  array  of  the
+       given form.
+
+       The  function  field_count  returns the count of fields in
+       form.
+
+       The function move_field moves the given field (which  must
+       be disconnected) to a specified location on the screen.
+
+
+
+

RETURN VALUES

+       The  function  form_fields returns a pointer (which may be
+       NULL).  It does not set errno.
+
+       The function field_count returns ERR if the form parameter
+       is NULL.
+
+       The functions set_form_fields and move_field return one of
+       the following codes on error:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_CONNECTED
+            The field is already connected to a form.
+
+       E_POSTED
+            The form is already posted.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+       The   SVr4   forms  library  documentation  specifies  the
+       field_count error value as -1 (which is the value of ERR).
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                         form_field(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_attributes.3x.html b/ncurses/doc/html/man/form_field_attributes.3x.html new file mode 100644 index 0000000..54d77d9 --- /dev/null +++ b/ncurses/doc/html/man/form_field_attributes.3x.html @@ -0,0 +1,130 @@ + + + + +form_field_attributes 3x + + + + +

form_field_attributes 3x

+
+
+
+form_field_attributes(3x)                     form_field_attributes(3x)
+
+
+
+
+
+

NAME

+       form_field_attributes  -  color  and attribute control for
+       form fields
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_field_fore(FIELD *field, chtype attr);
+       chtype field_fore(const FIELD *field);
+       int set_field_back(FIELD *field, chtype attr);
+       chtype field_back(const FIELD *field);
+       int set_field_pad(FIELD *field, int pad);
+       int field_pad(const FIELD *field);
+
+
+
+

DESCRIPTION

+       The function set_field_fore sets the foreground  attribute
+       of  field. This is the highlight used to display the field
+       contents.  The function field_fore returns the  foreground
+       attribute.  The default is A_STANDOUT.
+
+       The  function set_field_back sets the background attribute
+       of form. This is the highlight used to display the  extent
+       fields  in  the form.  The function field_back returns the
+       background attribute.  The default is A_NORMAL.
+
+       The function set_field_pad sets the character used to fill
+       the  field.   The  function  field_pad  returns  the given
+       form's pad character.  The default is a blank.
+
+
+
+

RETURN VALUE

+       These routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                              form_field_attributes(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_buffer.3x.html b/ncurses/doc/html/man/form_field_buffer.3x.html new file mode 100644 index 0000000..8e99806 --- /dev/null +++ b/ncurses/doc/html/man/form_field_buffer.3x.html @@ -0,0 +1,158 @@ + + + + +form_field_buffer 3x + + + + +

form_field_buffer 3x

+
+
+
+form_field_buffer(3x)                             form_field_buffer(3x)
+
+
+
+
+
+

NAME

+       form_field_buffer - field buffer control
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int  set_field_buffer(FIELD  *field,  int  buf, const char
+       *value);
+       char *field_buffer(const FIELD *field, int buffer);
+       int set_field_status(FIELD *field, bool status);
+       bool field_status(const FIELD *field);
+       int set_max_field(FIELD *field, int max);
+
+
+
+

DESCRIPTION

+       The function set_field_buffer sets the numbered buffer  of
+       the  given  field  to contain a given string.  Buffer 0 is
+       the displayed value of the field; other  numbered  buffers
+       may be allocated by applications through the nbuf argument
+       of (see form_field_new(3x)) but are not manipulated by the
+       forms  library.   The  function  field_buffer  returns the
+       address of the buffer.  Please note that this  buffer  has
+       always  the  length  of the buffer, that means that it may
+       typically contain trailing spaces. If you entered  leading
+       spaces  the  buffer may also contain them. If you want the
+       raw data, you must write your own routine that copies  the
+       value out of the buffer and removes the leading and trail-
+       ing spaces. Please note also, that  subsequent  operations
+       on  the  form  will  probably  change  the  content of the
+       buffer. So do not use it for  long  term  storage  of  the
+       entered form data.
+
+       The  function  set_field_status sets the associated status
+       flag of field; field_status gets the current  value.   The
+       status  flag  is set to a nonzero value whenever the field
+       changes.
+
+       The function set_max_field sets the  maximum  size  for  a
+       dynamic  field.   An  argument  of 0 turns off any maximum
+       size threshold for that field.
+
+
+
+

RETURN VALUE

+       The field_buffer function returns NULL on error.  It  sets
+       errno according to their success:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       The field_status function returns TRUE or FALSE.
+
+       The remaining routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file
+
+       When  configured for wide-characters, field_buffer returns
+       a pointer to temporary storage (allocated and freed by the
+       library).   The  application  should not attempt to modify
+       the  data.   It  will  be  freed  on  the  next  call   to
+       field_buffer to return the same buffer.  <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                  form_field_buffer(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_info.3x.html b/ncurses/doc/html/man/form_field_info.3x.html new file mode 100644 index 0000000..498fc29 --- /dev/null +++ b/ncurses/doc/html/man/form_field_info.3x.html @@ -0,0 +1,129 @@ + + + + +form_field_info 3x + + + + +

form_field_info 3x

+
+
+
+form_field_info(3x)                                 form_field_info(3x)
+
+
+
+
+
+

NAME

+       form_field_info - retrieve field characteristics
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int field_info(const FIELD *field, int *rows, int *cols,
+                     int *frow, int *fcol, int *nrow, int *nbuf);
+       int dynamic_field_info(const FIELD *field, int *rows,  int
+       *cols, int *max);
+
+
+
+

DESCRIPTION

+       The  function  field_info  returns  the  sizes  and  other
+       attributes passed in to the field at  its  creation  time.
+       The  attributes are: height, width, row of upper-left cor-
+       ner, column of upper-left corner, number off-screen  rows,
+       and number of working buffers.
+
+       The function dynamic_field_info returns the actual size of
+       the field, and its maximum possible size.   If  the  field
+       has  no  size  limit,  the location addressed by the third
+       argument will be set to 0.  A field can be made dynamic by
+       turning off the O_STATIC option with field_opts_off.
+
+
+
+

RETURN VALUE

+       These routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+       A  null  (zero  pointer) is accepted for any of the return
+       values, to ignore that  value.   Not  all  implementations
+       allow this, e.g., Solaris 2.7 does not.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                    form_field_info(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_just.3x.html b/ncurses/doc/html/man/form_field_just.3x.html new file mode 100644 index 0000000..507020f --- /dev/null +++ b/ncurses/doc/html/man/form_field_just.3x.html @@ -0,0 +1,119 @@ + + + + +form_field_just 3x + + + + +

form_field_just 3x

+
+
+
+form_field_just(3x)                                 form_field_just(3x)
+
+
+
+
+
+

NAME

+       form_field_just - retrieve field characteristics
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_field_just(FIELD *field, int justification);
+       int field_just(const FIELD *field);
+
+
+
+

DESCRIPTION

+       The   function   set_field_just   sets  the  justification
+       attribute of a field; field_just returns a field's  justi-
+       fication attribute.  The attribute may be one of NO_JUSTI-
+       FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or  JUSTIFY_CENTER.
+
+
+
+

RETURN VALUE

+       The  function field_just returns one of: NO_JUSTIFICATION,
+       JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
+
+       The function set_field_just returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                    form_field_just(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_new.3x.html b/ncurses/doc/html/man/form_field_new.3x.html new file mode 100644 index 0000000..1a0269a --- /dev/null +++ b/ncurses/doc/html/man/form_field_new.3x.html @@ -0,0 +1,150 @@ + + + + +form_field_new 3x + + + + +

form_field_new 3x

+
+
+
+form_field_new(3x)                                   form_field_new(3x)
+
+
+
+
+
+

NAME

+       form_field_new - create and destroy form fields
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       FIELD *new_field(int height, int width,
+                        int toprow, int leftcol,
+                        int offscreen, int nbuffers);
+       FIELD *dup_field(FIELD *field, int toprow, int leftcol);
+       FIELD *link_field(FIELD *field, int toprow, int leftcol);
+       int free_field(FIELD *field);
+
+
+
+

DESCRIPTION

+       The  function new_field allocates a new field and initial-
+       izes it from the parameters given: height, width,  row  of
+       upper-left  corner,  column  of  upper-left corner, number
+       off-screen rows, and number of additional working buffers.
+
+       The  function  dup_field duplicates a field at a new loca-
+       tion.  Most attributes (including current contents,  size,
+       validation  type, buffer count, growth threshold, justifi-
+       cation, foreground, background,  pad  character,  options,
+       and  user pointer) are copied.  Field status and the field
+       page bit are not copied.
+
+       The function link_field acts like dup_field, but  the  new
+       field  shares  buffers with its parent.  Attribute data is
+       separate.
+
+       The function free_field  de-allocates  storage  associated
+       with a field.
+
+
+
+

RETURN VALUE

+       The function, new_field, dup_field, link_field return NULL
+       on error.  They set errno according to their success:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_SYSTEM_ERROR
+            System error occurred, e.g., malloc failure.
+
+       The function free_field returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_CONNECTED
+            field is connected.
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+       It may be unwise to count on the set of attributes  copied
+       by  dup_field  being  portable; the System V forms library
+       documents are not very explicit about what gets copied and
+       what does not.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                     form_field_new(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_opts.3x.html b/ncurses/doc/html/man/form_field_opts.3x.html new file mode 100644 index 0000000..f9a1321 --- /dev/null +++ b/ncurses/doc/html/man/form_field_opts.3x.html @@ -0,0 +1,166 @@ + + + + +form_field_opts 3x + + + + +

form_field_opts 3x

+
+
+
+form_field_opts(3x)                                 form_field_opts(3x)
+
+
+
+
+
+

NAME

+       form_field_opts - set and get field options
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_field_opts(FIELD *field, Field_Options opts);
+       int field_opts_on(FIELD *field, Field_Options opts);
+       int field_opts_off(FIELD *field, Field_Options opts);
+       Field_Options field_opts(const FIELD *field);
+
+
+
+

DESCRIPTION

+       The  function  set_field_opts  sets  all the given field's
+       option bits (field  option  bits  may  be  logically-OR'ed
+       together).
+
+       The function field_opts_on turns on the given option bits,
+       and leaves others alone.
+
+       The function field_opts_off turns  off  the  given  option
+       bits, and leaves others alone.
+
+       The function field_opts returns the field's current option
+       bits.
+
+       The following options are defined (all are on by default):
+
+       O_VISIBLE
+            The  field is displayed.  If this option is off, dis-
+            play of the field is suppressed.
+
+       O_ACTIVE
+            The field is  visited  during  processing.   If  this
+            option  is  off,  the  field will not be reachable by
+            navigation keys.  Please  notice  that  an  invisible
+            field appears to be inactive also.
+
+       O_PUBLIC
+            The  field contents are displayed as data is entered.
+
+       O_EDIT
+            The field can be edited.
+
+       O_WRAP
+            Words that do not fit on a line are  wrapped  to  the
+            next line.  Words are blank-separated.
+
+       O_BLANK
+            The  field is cleared whenever a character is entered
+            at the first position.
+
+       O_AUTOSKIP
+            Skip to the next field when this one fills.
+
+       O_NULLOK
+            Allow a blank field.
+
+       O_STATIC
+            Field buffers are fixed  to  field's  original  size.
+            Turn this option off to create a dynamic field.
+
+       O_PASSOK
+            Validate field only if modified by user.
+
+
+
+

RETURN VALUE

+       Except  for  field_opts,  each  routine returns one of the
+       following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_CURRENT
+            The field is the current field.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+       NOTES  The header file <form.h> automatically includes the
+              header file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                    form_field_opts(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_userptr.3x.html b/ncurses/doc/html/man/form_field_userptr.3x.html new file mode 100644 index 0000000..c7a6ad4 --- /dev/null +++ b/ncurses/doc/html/man/form_field_userptr.3x.html @@ -0,0 +1,112 @@ + + + + +form_field_userptr 3x + + + + +

form_field_userptr 3x

+
+
+
+form_field_userptr(3x)                           form_field_userptr(3x)
+
+
+
+
+
+

NAME

+       form_field_userptr  -  associate  application  data with a
+       form field
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_field_userptr(FIELD *field, void*userptr);
+       void *field_userptr(const FIELD *field);
+
+
+
+

DESCRIPTION

+       Every form field has a field that  can  be  used  to  hold
+       application-specific  data  (that is, the form-driver code
+       leaves it alone).  These functions get and set that field.
+
+
+
+

RETURN VALUE

+       The function field_userptr returns a pointer (which may be
+       NULL).  It does not set errno.
+
+       The function set_field_userptr returns E_OK (success).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The user pointer is a void pointer.  We chose not to leave
+       it as a char pointer for SVr4 compatibility.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                 form_field_userptr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_field_validation.3x.html b/ncurses/doc/html/man/form_field_validation.3x.html new file mode 100644 index 0000000..9328031 --- /dev/null +++ b/ncurses/doc/html/man/form_field_validation.3x.html @@ -0,0 +1,196 @@ + + + + +form_field_validation 3x + + + + +

form_field_validation 3x

+
+
+
+form_field_validation(3x)                     form_field_validation(3x)
+
+
+
+
+
+

NAME

+       form_field_validation - data type validation for fields
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_field_type(FIELD *field, FIELDTYPE *type, ...);
+       FIELDTYPE *field_type(const FIELD *field);
+       void *field_arg(const FIELD *field);
+
+       FIELDTYPE *TYPE_ALNUM;
+       FIELDTYPE *TYPE_ALPHA;
+       FIELDTYPE *TYPE_ENUM;
+       FIELDTYPE *TYPE_INTEGER;
+       FIELDTYPE *TYPE_NUMERIC;
+       FIELDTYPE *TYPE_REGEXP;
+       FIELDTYPE *TYPE_IPV4;
+
+
+
+

DESCRIPTION

+       The  function  set_field_type  declares  a data type for a
+       given form field.  This is the type checked by  validation
+       functions.  The predefined types are as follows:
+
+       TYPE_ALNUM
+            Alphanumeric  data.  Requires a third int argument, a
+            minimum field width.
+
+       TYPE_ALPHA
+            Character data.  Requires a  third  int  argument,  a
+            minimum field width.
+
+       TYPE_ENUM
+            Accept one of a specified set of strings.  Requires a
+            third (char **) argument pointing to a string list; a
+            fourth  int flag argument to enable case-sensitivity;
+            and a fifth int flag argument  specifying  whether  a
+            partial  match  must be a unique one (if this flag is
+            off, a prefix matches the first of any  set  of  more
+            than  one  list  elements  with  that prefix). Please
+            notice that the string list is  not  copied,  only  a
+            reference to it is stored in the field. So you should
+            avoid using a list that lives in automatic  variables
+            on the stack.
+
+       TYPE_INTEGER
+            Integer  data,  parsable  to  an  integer by atoi(3).
+            Requires a third int argument controlling the  preci-
+            sion,  a  fourth  long  argument constraining minimum
+            value, and a fifth long constraining  maximum  value.
+            If  the  maximum  value  is less than or equal to the
+            minimum value, the range is simply ignored. On return
+            the field buffer is formatted according to the printf
+            format  specification  ".*ld",  where  the   '*'   is
+            replaced  by  the precision argument.  For details of
+            the precision handling see printf's man-page.
+
+       TYPE_NUMERIC
+            Numeric  data  (may  have  a   decimal-point   part).
+            Requires  a third int argument controlling the preci-
+            sion, a fourth double argument  constraining  minimum
+            value, and a fifth double constraining maximum value.
+            If your system supports locales,  the  decimal  point
+            character  to  be  used  must be the one specified by
+            your locale.  If the maximum value is  less  than  or
+            equal  to  the  minimum  value,  the  range is simply
+            ignored. On return  the  field  buffer  is  formatted
+            according  to  the printf format specification ".*f",
+            where the '*' is replaced by the precision  argument.
+            For  details  of  the precision handling see printf's
+            man-page.
+
+       TYPE_REGEXP
+            Regular expression data.  Requires a regular  expres-
+            sion  (char  *)  third argument; the data is valid if
+            the regular expression matches it.   Regular  expres-
+            sions  are  in  the  format  of  regcomp and regexec.
+            Please notice that the regular expression must  match
+            the  whole  field.  If  you have for example an eight
+            character wide field, a regular expression "^[0-9]*$"
+            always  means  that  you have to fill all eight posi-
+            tions with digits. If you want to allow fewer digits,
+            you  may  use  for example "^[0-9]* *$" which is good
+            for trailing spaces (up to an  empty  field),  or  "^
+            *[0-9]*  *$"  which  is good for leading and trailing
+            spaces around the digits.
+
+       TYPE_IPV4
+            An Internet Protocol Version 4 address. This requires
+            no  additional argument. It is checked whether or not
+            the buffer has the form a.b.c.d, where  a,b,c  and  d
+            are numbers between 0 and 255. Trailing blanks in the
+            buffer are ignored. The address itself is  not  vali-
+            dated. Please note that this is an ncurses extension.
+            This field type may not be available in other  curses
+            implementations.
+
+       It  is  possible  to  set  up new programmer-defined field
+       types.  See the form_fieldtype(3x) manual page.
+
+
+
+

RETURN VALUE

+       The functions field_type  and  field_arg  return  NULL  on
+       error. The function set_field_type returns one of the fol-
+       lowing:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                              form_field_validation(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_fieldtype.3x.html b/ncurses/doc/html/man/form_fieldtype.3x.html new file mode 100644 index 0000000..80dab41 --- /dev/null +++ b/ncurses/doc/html/man/form_fieldtype.3x.html @@ -0,0 +1,190 @@ + + + + +form_fieldtype 3x + + + + +

form_fieldtype 3x

+
+
+
+form_fieldtype(3x)                                   form_fieldtype(3x)
+
+
+
+
+
+

NAME

+       form_fieldtype - define validation-field types
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       FIELDTYPE *new_fieldtype(
+           bool (* const field_check)(FIELD *, const void *),
+           bool (* const char_check)(int, const void *));
+       int free_fieldtype(FIELDTYPE *fieldtype);
+       int set_fieldtype_arg(
+           FIELDTYPE *fieldtype,
+           void *(* const make_arg)(va_list *),
+           void *(* const copy_arg)(const void *),
+           void  (* const free_arg)(void *));
+       int set_fieldtype_choice(
+           FIELDTYPE *fieldtype,
+           bool (* const next_choice)(FIELD *, const void *),
+           bool (* const prev_choice)(FIELD *, const void *));
+       FIELDTYPE *link_fieldtype(FIELDTYPE *type1,
+                                 FIELDTYPE *type2);
+
+
+
+

DESCRIPTION

+       The function new_fieldtype creates a new field type usable
+       for data validation.  You supply it  with  field_check,  a
+       predicate  to check the validity of an entered data string
+       whenever the user attempts to leave a field.   The  (FIELD
+       *)  argument  is passed in so the validation predicate can
+       see the field's buffer, sizes and  other  attributes;  the
+       second  argument  is  an  argument-block  structure, about
+       which more below.
+
+       You also supply new_fieldtype with char_check, a  function
+       to  validate input characters as they are entered; it will
+       be passed the character to be checked and a pointer to  an
+       argument-block structure.
+
+       The  function free_fieldtype frees the space allocated for
+       a given validation type.
+
+       The function set_fieldtype_arg associates  three  storage-
+       management  functions  with  a  field  type.  The make_arg
+       function is automatically applied to the list of arguments
+       you  give  set_field_type  when  attaching validation to a
+       field; its job is to bundle these into an allocated  argu-
+       ment-block  object which can later be passed to validation
+       predicated.  The other two hook arguments should copy  and
+       free  argument-block structures.  They will be used by the
+       forms-driver code.  You must supply the make_arg function,
+       the  other two are optional, you may supply NULL for them.
+       In this case it is assumed that make_arg does not allocate
+       memory  but simply loads the argument into a single scalar
+       value.
+
+       The function link_fieldtype creates a new field type  from
+       the  two  given  types.   They are connected by an logical
+       'OR'.
+
+       The   form    driver    requests    REQ_NEXT_CHOICE    and
+       REQ_PREV_CHOICE assume that the possible values of a field
+       form an ordered set, and provide the forms user with a way
+       to  move  through the set.  The set_fieldtype_choice func-
+       tion allows forms  programmers  to  define  successor  and
+       predecessor functions for the field type.  These functions
+       take the field pointer and an argument-block structure  as
+       arguments.
+
+
+
+

RETURN VALUE

+       The  pointer-valued  routines  return NULL on error.  They
+       set errno according to their success:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_SYSTEM_ERROR
+            System error occurred, e.g., malloc failure.
+
+       The  integer-valued  routines  return one of the following
+       codes on error:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_CONNECTED
+            The field is already connected to a form.
+
+       E_CURRENT
+            The field is the current field.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+       All of the (char *) arguments of  these  functions  should
+       actually  be (void *).  The type has been left uncorrected
+       for strict compatibility with System V.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                     form_fieldtype(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_hook.3x.html b/ncurses/doc/html/man/form_hook.3x.html new file mode 100644 index 0000000..f88aa1d --- /dev/null +++ b/ncurses/doc/html/man/form_hook.3x.html @@ -0,0 +1,138 @@ + + + + +form_hook 3x + + + + +

form_hook 3x

+
+
+
+form_hook(3x)                                             form_hook(3x)
+
+
+
+
+
+

NAME

+       form_hook - set hooks for automatic invocation by applica-
+       tions
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_field_init(FORM *form, Form_Hook func);
+       Form_Hook field_init(const FORM *form);
+       int set_field_term(FORM *form, Form_Hook func);
+       Form_Hook field_term(const FORM *form);
+       int set_form_init(FORM *form, Form_Hook func);
+       Form_Hook form_init(const FORM *form);
+       int set_form_term(FORM *form, Form_Hook func);
+       Form_Hook form_term(const FORM *form);
+
+
+
+

DESCRIPTION

+       These functions make it possible to set hook functions  to
+       be called at various points in the automatic processing of
+       input event codes by form_driver.
+
+       The function set_field_init sets a hook to  be  called  at
+       form-post  time  and  each time the selected field changes
+       (after the change).  field_init returns the current  field
+       init hook, if any (NULL if there is no such hook).
+
+       The  function  set_field_term  sets a hook to be called at
+       form-unpost time and each time the selected field  changes
+       (before the change).  field_term returns the current field
+       term hook, if any (NULL if there is no such hook).
+
+       The function set_form_init sets a hook  to  be  called  at
+       form-post  time  and  just  after a page change once it is
+       posted.  form_init returns the current form init hook,  if
+       any (NULL if there is no such hook).
+
+       The  function  set_form_term  sets  a hook to be called at
+       form-unpost time and just before a page change once it  is
+       posted.   form_init returns the current form term hook, if
+       any (NULL if there is no such hook).
+
+
+
+

RETURN VALUE

+       Routines that return pointers return NULL on error.  Other
+       routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          form_hook(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_new.3x.html b/ncurses/doc/html/man/form_new.3x.html new file mode 100644 index 0000000..c313012 --- /dev/null +++ b/ncurses/doc/html/man/form_new.3x.html @@ -0,0 +1,132 @@ + + + + +form_new 3x + + + + +

form_new 3x

+
+
+
+form_new(3x)                                               form_new(3x)
+
+
+
+
+
+

NAME

+       form_new - create and destroy forms
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       FORM *new_form(FIELD **fields);
+       int free_form(FORM *form);
+
+
+
+

DESCRIPTION

+       The  function  new_form  creates a new form connected to a
+       specified field pointer array (which must  be  NULL-termi-
+       nated).
+
+       The  function  free_form  disconnects  form from its field
+       array and frees the storage allocated for the form.
+
+
+
+

RETURN VALUE

+       The function new_form returns  NULL  on  error.   It  sets
+       errno according to the function's success:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_CONNECTED
+            The field is already connected to a form.
+
+       E_SYSTEM_ERROR
+            System error occurred, e.g., malloc failure.
+
+       The function free_form returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_POSTED
+            The form has already been posted.
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                           form_new(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_new_page.3x.html b/ncurses/doc/html/man/form_new_page.3x.html new file mode 100644 index 0000000..8863369 --- /dev/null +++ b/ncurses/doc/html/man/form_new_page.3x.html @@ -0,0 +1,119 @@ + + + + +form_new_page 3x + + + + +

form_new_page 3x

+
+
+
+form_new_page(3x)                                     form_new_page(3x)
+
+
+
+
+
+

NAME

+       form_new_page - form pagination functions
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_new_page(FIELD *field, bool new_page_flag);
+       bool new_page(const FIELD *field);
+
+
+
+

DESCRIPTION

+       The  function  set_new_page  sets or resets a flag marking
+       the given field as the beginning of  a  new  page  on  its
+       form.
+
+       The  function  new_page  is  a  predicate which tests if a
+       given field marks a page beginning on its form.
+
+
+
+

RETURN VALUE

+       The function new_page returns TRUE or FALSE.
+
+       The function set_new_page return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_CONNECTED
+            The given field is already connected to a form.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "form_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                      form_new_page(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_opts.3x.html b/ncurses/doc/html/man/form_opts.3x.html new file mode 100644 index 0000000..53869a5 --- /dev/null +++ b/ncurses/doc/html/man/form_opts.3x.html @@ -0,0 +1,134 @@ + + + + +form_opts 3x + + + + +

form_opts 3x

+
+
+
+form_opts(3x)                                             form_opts(3x)
+
+
+
+
+
+

NAME

+       form_opts - set and get form options
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_form_opts(FORM *form, Field_Options opts);
+       int form_opts_on(FORM *form, Field_Options opts);
+       int form_opts_off(FORM *form, Field_Options opts);
+       Field_Options form_opts(const FORM *form);
+
+
+
+

DESCRIPTION

+       The  function  set_form_opts  sets  all  the  given form's
+       option bits  (form  option  bits  may  be  logically-OR'ed
+       together).
+
+       The  function form_opts_on turns on the given option bits,
+       and leaves others alone.
+
+       The function form_opts_off  turns  off  the  given  option
+       bits, and leaves others alone.
+
+       The  function  form_opts returns the form's current option
+       bits.
+
+       The following options are defined (all are on by default):
+
+       O_NL_OVERLOAD
+            Overload  the  REQ_NEW_LINE  forms  driver request so
+            that calling it at the end of a  field  goes  to  the
+            next field.
+
+       O_BS_OVERLOAD
+            Overload  the  REQ_DEL_PREV  forms  driver request so
+            that calling it at the beginning of a field  goes  to
+            the previous field.
+
+
+
+

RETURN VALUE

+       Except for form_opts, each routine returns one of the fol-
+       lowing:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                          form_opts(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_page.3x.html b/ncurses/doc/html/man/form_page.3x.html new file mode 100644 index 0000000..753075b --- /dev/null +++ b/ncurses/doc/html/man/form_page.3x.html @@ -0,0 +1,139 @@ + + + + +form_page 3x + + + + +

form_page 3x

+
+
+
+form_page(3x)                                             form_page(3x)
+
+
+
+
+
+

NAME

+       form_page - set and get form page number
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_current_field(FORM *form, FIELD *field);
+       FIELD *current_field(const FORM *);
+       int set_form_page(FORM *form, int n);
+       int form_page(const FORM *form);
+       int field_index(const FIELD *field);
+
+
+
+

DESCRIPTION

+       The  function  set_current field sets the current field of
+       the given form; current_field returns the current field of
+       the given form.
+
+       The  function  set_form_page  sets  the form's page number
+       (goes to page n of the form).
+
+       The function form_page returns  the  form's  current  page
+       number.
+
+       The function field_index returns the index of the field in
+       the field array of the form it is connected to. It returns
+       ERR  if  the  argument is the null pointer or the field is
+       not connected.
+
+
+
+

RETURN VALUE

+       Except for form_page, each routine returns one of the fol-
+       lowing:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_INVALID_FIELD
+            Contents of a field are not valid.
+
+       E_REQUEST_DENIED
+            The form driver could not process the request.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          form_page(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_post.3x.html b/ncurses/doc/html/man/form_post.3x.html new file mode 100644 index 0000000..f125a0b --- /dev/null +++ b/ncurses/doc/html/man/form_post.3x.html @@ -0,0 +1,136 @@ + + + + +form_post 3x + + + + +

form_post 3x

+
+
+
+form_post(3x)                                             form_post(3x)
+
+
+
+
+
+

NAME

+       form_post  -  write or erase forms from associated subwin-
+       dows
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int post_form(FORM *form);
+       int unpost_form(FORM *form);
+
+
+
+

DESCRIPTION

+       The function post_form displays a form to  its  associated
+       subwindow.   To trigger physical display of the subwindow,
+       use  refresh  or  some  equivalent  curses  routine   (the
+       implicit  doupdate  triggered  by  an curses input request
+       will do).
+
+       The function unpost_form erases form from  its  associated
+       subwindow.
+
+
+
+

RETURN VALUE

+       These routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NOT_POSTED
+            The form has not been posted.
+
+       E_NOT_CONNECTED
+            No items are connected to the form.
+
+       E_NO_ROOM
+            Form is too large for its window.
+
+       E_POSTED
+            The form has already been posted.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          form_post(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_requestname.3x.html b/ncurses/doc/html/man/form_requestname.3x.html new file mode 100644 index 0000000..6c0c2bd --- /dev/null +++ b/ncurses/doc/html/man/form_requestname.3x.html @@ -0,0 +1,112 @@ + + + + +form_requestname 3x + + + + +

form_requestname 3x

+
+
+
+form_requestname(3x)                               form_requestname(3x)
+
+
+
+
+
+

NAME

+       form_requestname - handle printable form request names
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       const char *form_request_name(int request);
+       int form_request_by_name(const char *name);
+
+
+
+

DESCRIPTION

+       The  function form_request_name returns the printable name
+       of a form request code.
+       The function form_request_by_name searches in the name-ta-
+       ble  for  a  request  with  the given name and returns its
+       request code. Otherwise E_NO_MATCH is returned.
+
+
+
+

RETURN VALUE

+       form_request_name returns NULL on error and sets errno  to
+       E_BAD_ARGUMENT.
+       form_request_by_name returns E_NO_MATCH on error.  It does
+       not set errno.
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is recommended that any code depending on them be con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                   form_requestname(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_userptr.3x.html b/ncurses/doc/html/man/form_userptr.3x.html new file mode 100644 index 0000000..d6a50fd --- /dev/null +++ b/ncurses/doc/html/man/form_userptr.3x.html @@ -0,0 +1,112 @@ + + + + +form_userptr 3x + + + + +

form_userptr 3x

+
+
+
+form_userptr(3x)                                       form_userptr(3x)
+
+
+
+
+
+

NAME

+       form_userptr - associate application data with a form item
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_form_userptr(FORM *form, void *userptr);
+       void* form_userptr(const FORM *form);
+
+
+
+

DESCRIPTION

+       Every form and every form item has a  field  that  can  be
+       used to hold application-specific data (that is, the form-
+       driver code leaves it alone).  These functions get and set
+       the form user pointer field.
+
+
+
+

RETURN VALUE

+       The  function form_userptr returns a pointer (which may be
+       NULL).  It does not set errno.
+
+       The function set_form_userptr returns E_OK (success).
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate the System V forms library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The user pointer is a void pointer.  We chose not to leave
+       it as a char pointer for SVr4 compatibility.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                       form_userptr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/form_win.3x.html b/ncurses/doc/html/man/form_win.3x.html new file mode 100644 index 0000000..6d213df --- /dev/null +++ b/ncurses/doc/html/man/form_win.3x.html @@ -0,0 +1,139 @@ + + + + +form_win 3x + + + + +

form_win 3x

+
+
+
+form_win(3x)                                               form_win(3x)
+
+
+
+
+
+

NAME

+       form_win  - make and break form window and subwindow asso-
+       ciations
+
+
+
+

SYNOPSIS

+       #include <form.h>
+       int set_form_win(FORM *form, WINDOW *win);
+       WINDOW *form_win(const FORM *form);
+       int set_form_sub(FORM *form, WINDOW *sub);
+       WINDOW *form_sub(const FORM *form);
+       int scale_form(const FORM *form, int *rows, int *columns);
+
+
+
+

DESCRIPTION

+       Every  form has an associated pair of curses windows.  The
+       form window displays any title and border associated  with
+       the  window;  the form subwindow displays the items of the
+       form that are currently available for selection.
+
+       The first four functions get and set those windows.  It is
+       not necessary to set either window; by default, the driver
+       code uses stdscr for both.
+
+       In the set_ functions, window argument of NULL is  treated
+       as  though  it  were  stsdcr.   A form argument of NULL is
+       treated as a request to change  the  system  default  form
+       window or subwindow.
+
+       The  function scale_form returns the minimum size required
+       for the subwindow of form.
+
+
+
+

RETURN VALUE

+       Routines that return pointers return NULL on error.   Rou-
+       tines  that  return an integer return one of the following
+       error codes:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_POSTED
+            The form has already been posted.
+
+       E_NOT_CONNECTED
+            No items are connected to the form.
+
+
+
+

SEE ALSO

+       curses(3x), form(3x).
+
+
+
+

NOTES

+       The header file <form.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V forms  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                           form_win(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/index.html b/ncurses/doc/html/man/index.html new file mode 100644 index 0000000..5db3a6d --- /dev/null +++ b/ncurses/doc/html/man/index.html @@ -0,0 +1,66 @@ + + + + +NCURSES - Manual Pages + + + +
+ + + diff --git a/ncurses/doc/html/man/infocmp.1m.html b/ncurses/doc/html/man/infocmp.1m.html new file mode 100644 index 0000000..9e63557 --- /dev/null +++ b/ncurses/doc/html/man/infocmp.1m.html @@ -0,0 +1,444 @@ + + + + +infocmp 1m + + + + +

infocmp 1m

+
+
+
+infocmp(1m)                                                 infocmp(1m)
+
+
+
+
+
+

NAME

+       infocmp - compare or print out terminfo descriptions
+
+
+
+

SYNOPSIS

+       infocmp [-1CEFGILTUVcdegilnpqrtux]
+             [-v n] [-s d| i| l| c] [-R subset]
+             [-w width] [-A directory] [-B directory]
+             [termname...]
+
+
+
+

DESCRIPTION

+       infocmp  can  be  used  to compare a binary terminfo entry
+       with other terminfo entries, rewrite a  terminfo  descrip-
+       tion  to  take  advantage  of  the use= terminfo field, or
+       print out a terminfo  description  from  the  binary  file
+       (term) in a variety of formats.  In all cases, the boolean
+       fields will be printed  first,  followed  by  the  numeric
+       fields, followed by the string fields.
+
+   Default Options
+       If  no options are specified and zero or one termnames are
+       specified, the -I option will be assumed.   If  more  than
+       one  termname is specified, the -d option will be assumed.
+
+   Comparison Options [-d] [-c] [-n]
+       infocmp compares the terminfo  description  of  the  first
+       terminal  termname  with each of the descriptions given by
+       the entries for the  other  terminal's  termnames.   If  a
+       capability  is  defined for only one of the terminals, the
+       value returned will depend on the type of the  capability:
+       F  for  boolean  variables,  -1 for integer variables, and
+       NULL for string variables.
+
+       The -d option produces a list of each capability  that  is
+       different  between  two entries.  This option is useful to
+       show the difference between two entries, created  by  dif-
+       ferent people, for the same or similar terminals.
+
+       The  -c  option produces a list of each capability that is
+       common between two entries.  Capabilities that are not set
+       are  ignored.  This option can be used as a quick check to
+       see if the -u option is worth using.
+
+       The -n option produces a list of each capability  that  is
+       in neither entry.  If no termnames are given, the environ-
+       ment variable TERM will be used for both of the termnames.
+       This  can  be used as a quick check to see if anything was
+       left out of a description.
+
+   Source Listing Options [-I] [-L] [-C] [-r]
+       The -I, -L, and -C options will produce a  source  listing
+       for each terminal named.
+
+      -I   use the terminfo names
+      -L   use the long C variable name listed in <term.h>
+      -C   use the termcap names
+      -r   when using -C, put out all capabilities in termcap form
+
+       If  no  termnames are given, the environment variable TERM
+       will be used for the terminal name.
+
+       The source produced by the -C option may be used  directly
+       as  a termcap entry, but not all parameterized strings can
+       be changed to the termcap format.  infocmp will attempt to
+       convert  most  of  the parameterized information, and any-
+       thing not converted will be plainly marked in  the  output
+       and commented out.  These should be edited by hand.
+
+       All  padding  information  for  strings  will be collected
+       together and placed at the beginning of the  string  where
+       termcap  expects  it.  Mandatory padding (padding informa-
+       tion with a trailing '/') will become optional.
+
+       All termcap variables no longer supported by terminfo, but
+       which are derivable from other terminfo variables, will be
+       output.  Not all terminfo capabilities will be translated;
+       only  those variables which were part of termcap will nor-
+       mally be output.  Specifying the -r option will  take  off
+       this  restriction,  allowing all capabilities to be output
+       in termcap form.
+
+       Note that because padding is collected to the beginning of
+       the  capability,  not all capabilities are output.  Manda-
+       tory padding is not supported.   Because  termcap  strings
+       are  not as flexible, it is not always possible to convert
+       a terminfo string capability into  an  equivalent  termcap
+       format.   A subsequent conversion of the termcap file back
+       into terminfo format will not  necessarily  reproduce  the
+       original terminfo source.
+
+       Some  common  terminfo  parameter sequences, their termcap
+       equivalents, and some terminal types which  commonly  have
+       such sequences, are:
+
+     terminfo                    termcap   Representative Terminals
+     ---------------------------------------------------------------
+     %p1%c                       %.        adm
+     %p1%d                       %d        hp, ANSI standard, vt100
+     %p1%'x'%+%c                 %+x       concept
+     %i                          %iq       ANSI standard, vt100
+     %p1%?%'x'%>%t%p1%'y'%+%;    %>xy      concept
+     %p2 is printed before %p1   %r        hp
+
+   Use= Option [-u]
+       The  -u  option  produces a terminfo source description of
+       the first terminal termname which is relative to  the  sum
+       of  the  descriptions  given  by the entries for the other
+       terminals termnames.  It does this by analyzing  the  dif-
+       ferences   between   the  first  termname  and  the  other
+       termnames and producing a description with use= fields for
+       the  other  terminals.   In this manner, it is possible to
+       retrofit  generic  terminfo  entries  into  a   terminal's
+       description.  Or, if two similar terminals exist, but were
+       coded at different times or by different  people  so  that
+       each description is a full description, using infocmp will
+       show what can be done to change one description to be rel-
+       ative to the other.
+
+       A capability will get printed with an at-sign (@) if it no
+       longer exists in the first termname, but one of the  other
+       termname  entries contains a value for it.  A capability's
+       value gets printed if the value in the first  termname  is
+       not  found in any of the other termname entries, or if the
+       first of the other termname entries that has this capabil-
+       ity  gives  a different value for the capability than that
+       in the first termname.
+
+       The order of the other termname  entries  is  significant.
+       Since  the terminfo compiler tic does a left-to-right scan
+       of the capabilities, specifying two use= entries that con-
+       tain differing entries for the same capabilities will pro-
+       duce different results depending on  the  order  that  the
+       entries  are  given in.  infocmp will flag any such incon-
+       sistencies between the other termname entries as they  are
+       found.
+
+       Alternatively,  specifying a capability after a use= entry
+       that contains that capability will cause the second speci-
+       fication  to  be  ignored.   Using  infocmp  to recreate a
+       description can be a useful check to make sure that every-
+       thing  was  specified  correctly  in  the  original source
+       description.
+
+       Another error  that  does  not  cause  incorrect  compiled
+       files,  but will slow down the compilation time, is speci-
+       fying extra use= fields  that  are  superfluous.   infocmp
+       will  flag  any  other  termname use= fields that were not
+       needed.
+
+   Changing Databases [-A directory] [-B directory]
+       The location of the compiled terminfo  database  is  taken
+       from  the environment variable TERMINFO .  If the variable
+       is not defined, or the terminal is not found in that loca-
+       tion,  the  system  terminfo  database, in /usr/share/ter-
+       minfo, will be used.  The options -A and -B may be used to
+       override  this  location.  The -A option will set TERMINFO
+       for the first termname and the -B option will set TERMINFO
+       for  the  other  termnames.   With this, it is possible to
+       compare descriptions for a terminal  with  the  same  name
+       located  in  two  different databases.  This is useful for
+       comparing descriptions for the same  terminal  created  by
+       different people.
+
+   Other Options
+       -1   causes  the  fields  to be printed out one to a line.
+            Otherwise, the fields will be printed  several  to  a
+            line to a maximum width of 60 characters.
+
+       -a   tells  infocmp  to  retain commented-out capabilities
+            rather than discarding them.  Capabilities  are  com-
+            mented by prefixing them with a period.
+
+       -E   Dump  the  capabilities  of  the  given  terminal  as
+            tables, needed in the C initializer  for  a  TERMTYPE
+            structure  (the  terminal capability structure in the
+            <term.h>).  This option is useful for preparing  ver-
+            sions  of  the  curses  library hardwired for a given
+            terminal type.  The tables are all  declared  static,
+            and  are  named according to the type and the name of
+            the corresponding terminal entry.
+
+            Before ncurses 5.0, the split between the -e  and  -E
+            options  was  not  needed;  but  support for extended
+            names required making the arrays of terminal capabil-
+            ities separate from the TERMTYPE structure.
+
+       -e   Dump  the  capabilities  of the given terminal as a C
+            initializer for a TERMTYPE  structure  (the  terminal
+            capability  structure  in the <term.h>).  This option
+            is  useful  for  preparing  versions  of  the  curses
+            library hardwired for a given terminal type.
+
+       -F   compare  terminfo  files.  This assumes that two fol-
+            lowing  arguments  are  filenames.   The  files   are
+            searched  for  pairwise matches between entries, with
+            two entries considered to match if any of their names
+            do.   The  report  printed  to  standard output lists
+            entries with  no  matches  in  the  other  file,  and
+            entries  with  more than one match.  For entries with
+            exactly one match it includes  a  difference  report.
+            Normally,  to  reduce  the  volume of the report, use
+            references are not resolved before looking  for  dif-
+            ferences, but resolution can be forced by also speci-
+            fying -r.
+
+       -f   Display  complex  terminfo  strings   which   contain
+            if/then/else/endif expressions indented for readabil-
+            ity.
+
+       -G   Display constant literals in decimal form rather than
+            their character equivalents.
+
+       -g   Display  constant  character  literals in quoted form
+            rather than their decimal equivalents.
+
+       -i   Analyze the initialization (is1, is2, is3), and reset
+            (rs1,  rs2,  rs3),  strings  in  the entry.  For each
+            string, the code tries to analyze it into actions  in
+            terms of the other capabilities in the entry, certain
+            X3.64/ISO 6429/ECMA-48 capabilities, and certain  DEC
+            VT-series  private  modes (the set of recognized spe-
+            cial sequences has  been  selected  for  completeness
+            over  the  existing  terminfo database).  Each report
+            line consists of the capability name, followed  by  a
+            colon and space, followed by a printable expansion of
+            the capability string with sections  matching  recog-
+            nized  actions  translated into {}-bracketed descrip-
+            tions.  Here  is  a  list  of  the  DEC/ANSI  special
+            sequences recognized: i.
+
+                  Action        Meaning
+                  -----------------------------------------
+                  RIS           full reset
+                  SC            save cursor
+                  RC            restore cursor
+                  LL            home-down
+                  RSR           reset scroll region
+                  -----------------------------------------
+                  DECSTR        soft reset (VT320)
+                  S7C1T         7-bit controls (VT220)
+                  -----------------------------------------
+                  ISO DEC G0    enable DEC graphics for G0
+                  ISO UK G0     enable UK chars for G0
+                  ISO US G0     enable US chars for G0
+                  ISO DEC G1    enable DEC graphics for G1
+                  ISO UK G1     enable UK chars for G1
+                  ISO US G1     enable US chars for G1
+                  -----------------------------------------
+                  DECPAM        application keypad mode
+                  DECPNM        normal keypad mode
+                  DECANSI       enter ANSI mode
+                  -----------------------------------------
+                  ECMA[+-]AM    keyboard action mode
+                  ECMA[+-]IRM   insert replace mode
+                  ECMA[+-]SRM   send receive mode
+                  ECMA[+-]LNM   linefeed mode
+                  -----------------------------------------
+                  DEC[+-]CKM    application cursor keys
+                  DEC[+-]ANM    set VT52 mode
+                  DEC[+-]COLM   132-column mode
+
+                  DEC[+-]SCLM   smooth scroll
+                  DEC[+-]SCNM   reverse video mode
+                  DEC[+-]OM     origin mode
+                  DEC[+-]AWM    wraparound mode
+                  DEC[+-]ARM    auto-repeat mode
+
+            It  also  recognizes  a  SGR  action corresponding to
+            ANSI/ISO 6429/ECMA Set Graphics Rendition,  with  the
+            values  NORMAL,  BOLD, UNDERLINE, BLINK, and REVERSE.
+            All but NORMAL may be prefixed with `+' (turn on)  or
+            `-' (turn off).
+
+       An SGR0 designates an empty highlight sequence (equivalent
+       to {SGR:NORMAL}).
+
+       -l   Set output format to terminfo.
+
+       -p   Ignore padding specifications when comparing strings.
+
+       -q   Make  the comparison listing shorter by omitting sub-
+            headings, and using "-" for absent capabilities,  "@"
+            for canceled rather than "NULL".
+
+       -Rsubset
+            Restrict  output  to  a given subset.  This option is
+            for use with archaic versions of terminfo like  those
+            on  SVr1,  Ultrix,  or  HP/UX that do not support the
+            full set of SVR4/XSI Curses  terminfo;  and  variants
+            such as AIX that have their own extensions incompati-
+            ble with SVr4/XSI.  Available  terminfo  subsets  are
+            "SVr1",  "Ultrix",  "HP",  and "AIX"; see terminfo(5)
+            for details.  You can also choose  the  subset  "BSD"
+            which  selects only capabilities with termcap equiva-
+            lents recognized by 4.4BSD.
+
+       -s [d|i|l|c]
+            The -s option  sorts  the  fields  within  each  type
+            according to the argument below:
+
+            d    leave  fields  in the order that they are stored
+                 in the terminfo database.
+
+            i    sort by terminfo name.
+
+            l    sort by the long C variable name.
+
+            c    sort by the termcap name.
+
+            If the -s option is not given, the fields printed out
+            will  be  sorted  alphabetically by the terminfo name
+            within each type, except in the case of the -C or the
+            -L options, which cause the sorting to be done by the
+            termcap name or the long  C  variable  name,  respec-
+            tively.
+
+       -T   eliminates  size-restrictions  on the generated text.
+            This is mainly useful for testing and analysis, since
+            the compiled descriptions are limited (e.g., 1023 for
+            termcap, 4096 for terminfo).
+
+       -t   tells  tic  to  discard  commented-out  capabilities.
+            Normally  when  translating from terminfo to termcap,
+            untranslatable capabilities are commented-out.
+
+       -U   tells infocmp to  not  post-process  the  data  after
+            parsing  the  source  file.   This feature helps when
+            comparing the actual contents of  two  source  files,
+            since  it  excludes the inferences that infocmp makes
+            to fill in missing data.
+
+       -V   reports the version of ncurses which was used in this
+            program, and exits.
+
+       -v n prints  out  tracing information on standard error as
+            the program runs.  Higher values of n induce  greater
+            verbosity.
+
+       -w width
+            changes the output to width characters.
+
+       -x   print   information  for  user-defined  capabilities.
+            These are extensions to the terminfo repertoire which
+            can be loaded using the -x option of tic.
+
+
+
+

FILES

+       /usr/share/terminfo Compiled      terminal     description
+                           database.
+
+
+
+

EXTENSIONS

+       The -E, -F, -G, -R, -T, -V, -a, -e, -f, -g, -i, -l, -p, -q
+       and -t options are not supported in SVr4 curses.
+
+       The -r option's notion of `termcap' capabilities is System
+       V Release 4's.  Actual BSD curses  versions  will  have  a
+       more  restricted  set.  To see only the 4.4BSD set, use -r
+       -RBSD.
+
+
+
+

BUGS

+       The -F option of infocmp(1m) should be a toe(1m) mode.
+
+
+
+

SEE ALSO

+       captoinfo(1m),    infotocap(1m),     tic(1m),     toe(1m),
+       curses(3x), terminfo(5).
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+

AUTHOR

+       Eric S. Raymond <esr@snark.thyrsus.com> and
+       Thomas E. Dickey <dickey@invisible-island.net>
+
+
+
+                                                            infocmp(1m)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/infotocap.1m.html b/ncurses/doc/html/man/infotocap.1m.html new file mode 100644 index 0000000..15359d8 --- /dev/null +++ b/ncurses/doc/html/man/infotocap.1m.html @@ -0,0 +1,108 @@ + + + + +infotocap 1m + + + + +

infotocap 1m

+
+
+
+infotocap(1m)                                             infotocap(1m)
+
+
+
+
+
+

NAME

+       infotocap  - convert a terminfo description into a termcap
+       description
+
+
+
+

SYNOPSIS

+       infotocap [-vn width]  [-V] [-1] [-w width] file . . .
+
+
+
+

DESCRIPTION

+       infotocap looks in file for  terminfo  descriptions.   For
+       each one found, an equivalent termcap description is writ-
+       ten to standard output.   Terminfo  use  capabilities  are
+       translated directly to termcap tc capabilities.
+
+       -v   print  out  tracing  information on standard error as
+            the program runs.
+
+       -V   print out the version of the program in use on  stan-
+            dard error and exit.
+
+       -1   cause  the fields to print out one to a line.  Other-
+            wise, the fields will be printed several to a line to
+            a maximum width of 60 characters.
+
+       -w   change the output to width characters.
+
+
+
+

FILES

+       /usr/share/terminfo Compiled      terminal     description
+                           database.
+
+
+
+

NOTES

+       This utility is actually a link  to  tic,  running  in  -C
+       mode.  You can use other tic options such as -f and  -x.
+
+
+
+

SEE ALSO

+       curses(3x), tic(1m), infocmp(1m), terminfo(5)
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                          infotocap(1m)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/key_defined.3x.html b/ncurses/doc/html/man/key_defined.3x.html new file mode 100644 index 0000000..7b1debe --- /dev/null +++ b/ncurses/doc/html/man/key_defined.3x.html @@ -0,0 +1,103 @@ + + + + +key_defined 3x + + + + +

key_defined 3x

+
+
+
+key_defined(3x)                                         key_defined(3x)
+
+
+
+
+
+

NAME

+       key_defined - check if a keycode is defined
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int key_defined(const char *definition);
+
+
+
+

DESCRIPTION

+       This is an extension to the curses library.  It permits an
+       application to determine if a string is currently bound to
+       any keycode.
+
+
+
+

RETURN VALUE

+       If  the  string  is bound to a keycode, its value (greater
+       than zero) is returned.  If no keycode is bound,  zero  is
+       returned.   If  the  string  conflicts with longer strings
+       which are bound to keys, -1 is returned.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on them be  con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       define_key(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey.
+
+
+
+                                                        key_defined(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/keybound.3x.html b/ncurses/doc/html/man/keybound.3x.html new file mode 100644 index 0000000..c62d9da --- /dev/null +++ b/ncurses/doc/html/man/keybound.3x.html @@ -0,0 +1,105 @@ + + + + +keyok 3x + + + + +

keyok 3x

+
+
+
+keyok(3x)                                                     keyok(3x)
+
+
+
+
+
+

NAME

+       keybound - return definition of keycode
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       char * keybound(int keycode, int count);
+
+
+
+

DESCRIPTION

+       This is an extension to the curses library.  It permits an
+       application to determine the string which  is  defined  in
+       the terminfo for specific keycodes.
+
+
+
+

RETURN VALUE

+       The keycode parameter must be greater than zero, else NULL
+       is returned.  If it does not correspond to a defined  key,
+       then  NULL  is  returned.   The count parameter is used to
+       allow the application to iterate through multiple  defini-
+       tions,  counting from zero.  When successful, the function
+       returns a string which must be freed by the caller.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on them be  con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       define_key(3x), keyok(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey.
+
+
+
+                                                              keyok(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/keyok.3x.html b/ncurses/doc/html/man/keyok.3x.html new file mode 100644 index 0000000..2a38610 --- /dev/null +++ b/ncurses/doc/html/man/keyok.3x.html @@ -0,0 +1,105 @@ + + + + +keyok 3x + + + + +

keyok 3x

+
+
+
+keyok(3x)                                                     keyok(3x)
+
+
+
+
+
+

NAME

+       keyok - enable or disable a keycode
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int keyok(int keycode, bool enable);
+
+
+
+

DESCRIPTION

+       This is an extension to the curses library.  It permits an
+       application to disable specific keycodes, rather than  use
+       the  keypad  function  to disable all keycodes.  Keys that
+       have been disabled can be reenabled.
+
+
+
+

RETURN VALUE

+       The keycode  must  be  greater  than  zero,  else  ERR  is
+       returned.   If  it  does  not correspond to a defined key,
+       then ERR is returned.  If the enable  parameter  is  true,
+       then  the  key  must  have  been disabled, and vice versa.
+       Otherwise, the function returns OK.
+
+
+
+

PORTABILITY

+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on them be  con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       define_key(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey.
+
+
+
+                                                              keyok(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/legacy_coding.3x.html b/ncurses/doc/html/man/legacy_coding.3x.html new file mode 100644 index 0000000..9297a7b --- /dev/null +++ b/ncurses/doc/html/man/legacy_coding.3x.html @@ -0,0 +1,118 @@ + + + + +legacy_coding 3x + + + + +

legacy_coding 3x

+
+
+
+legacy_coding(3x)                                     legacy_coding(3x)
+
+
+
+
+
+

NAME

+       use_legacy_coding - use terminal's default colors
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int use_legacy_coding(int level);
+
+
+
+

DESCRIPTION

+       The  use_legacy_coding()  function  is an extension to the
+       curses library.  It allows the caller to change the result
+       of  unctrl, and suppress related checks within the library
+       that would normally cause  nonprinting  characters  to  be
+       rendered in visible form.  This affects only 8-bit charac-
+       ters.
+
+       The level parameter controls the result:
+
+              0    the library functions normally, rendering non-
+                   printing characters as described in unctrl.
+
+              1    the  library ignores isprintf for codes in the
+                   range 160-255.
+
+              2    the library ignores isprintf for codes in  the
+                   range 128-255.  It also modifies the output of
+                   unctrl, showing codes in the range 128-159  as
+                   is.
+
+
+
+

RETURN VALUE

+       If  the  screen  has  not  been  initialized, or the level
+       parameter is out of range, the function returns ERR.  Oth-
+       erwise, it returns the previous level: 0, 1 or 2.
+
+
+
+

PORTABILITY

+       This routine is specific to ncurses.  It was not supported
+       on Version 7, BSD or System V implementations.  It is rec-
+       ommended  that any code depending on ncurses extensions be
+       conditioned using NCURSES_VERSION.
+
+
+
+

SEE ALSO

+       unctrl.
+
+
+
+

AUTHOR

+       Thomas Dickey (to support lynx's font-switching  feature).
+
+
+
+                                                      legacy_coding(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu.3x.html b/ncurses/doc/html/man/menu.3x.html new file mode 100644 index 0000000..4ab9195 --- /dev/null +++ b/ncurses/doc/html/man/menu.3x.html @@ -0,0 +1,241 @@ + + + + +menu 3x + + + + +

menu 3x

+
+
+
+menu(3x)                                                       menu(3x)
+
+
+
+
+
+

NAME

+       menu - curses extension for programming menus
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+
+
+
+

DESCRIPTION

+       The  menu library provides terminal-independent facilities
+       for composing menu systems  on  character-cell  terminals.
+       The library includes: item routines, which create and mod-
+       ify menu items; and menu routines, which group items  into
+       menus, display menus on the screen, and handle interaction
+       with the user.
+
+       The menu library uses the curses libraries, and  a  curses
+       initialization  routine  such  as  initscr  must be called
+       before using any of these  functions.   To  use  the  menu
+       library, link with the options -lmenu -lcurses.
+
+   Current Default Values for Item Attributes
+       The  menu  library  maintains  a  default  value  for item
+       attributes.  You can get or set this  default  by  calling
+       the  appropriate  get_  or  set_  routine with a NULL item
+       pointer.  Changing  this  default  with  a  set_  function
+       affects  future  item  creations,  but does not change the
+       rendering of items already created.
+
+   Routine Name Index
+       The following table lists each menu routine and  the  name
+       of the manual page on which it is described.
+
+       curses Routine Name    Manual Page Name
+       --------------------------------------------
+       current_item           mitem_current(3x)
+       free_item              mitem_new(3x)
+       free_menu              menu_new(3x)
+       item_count             menu_items(3x)
+       item_description       mitem_name(3x)
+       item_index             mitem_current(3x)
+       item_init              menu_hook(3x)
+       item_name              mitem_name(3x)
+       item_opts              mitem_opts(3x)
+       item_opts_off          mitem_opts(3x)
+       item_opts_on           mitem_opts(3x)
+       item_term              menu_hook(3x)
+       item_userptr           mitem_userptr(3x)
+       item_value             mitem_value(3x)
+       item_visible           mitem_visible(3x)
+       menu_back              menu_attributes(3x)
+       menu_driver            menu_driver(3x)
+       menu_fore              menu_attributes(3x)
+       menu_format            menu_format(3x)
+       menu_grey              menu_attributes(3x)
+       menu_init              menu_hook(3x)
+       menu_items             menu_items(3x)
+       menu_mark              menu_mark(3x)
+       menu_opts              menu_opts(3x)
+       menu_opts_off          menu_opts(3x)
+       menu_opts_on           menu_opts(3x)
+       menu_pad               menu_attributes(3x)
+       menu_pattern           menu_pattern(3x)
+
+       menu_request_by_name   menu_requestname(3x)
+       menu_request_name      menu_requestname(3x)
+       menu_spacing           menu_spacing(3x)
+       menu_sub               menu_win(3x)
+       menu_term              menu_hook(3x)
+       menu_userptr           menu_userptr(3x)
+       menu_win               menu_win(3x)
+       new_item               mitem_new(3x)
+       new_menu               menu_new(3x)
+       pos_menu_cursor        menu_cursor(3x)
+       post_menu              menu_post(3x)
+       scale_menu             menu_win(3x)
+       set_current_item       mitem_current(3x)
+       set_item_init          menu_hook(3x)
+       set_item_opts          mitem_opts(3x)
+       set_item_term          menu_hook(3x)
+       set_item_userptr       mitem_userptr(3x)
+       set_item_value         mitem_value(3x)
+       set_menu_back          menu_attributes(3x)
+       set_menu_fore          menu_attributes(3x)
+       set_menu_format        menu_format(3x)
+       set_menu_grey          menu_attributes(3x)
+       set_menu_init          menu_hook(3x)
+       set_menu_items         menu_items(3x)
+       set_menu_mark          menu_mark(3x)
+       set_menu_opts          mitem_opts(3x)
+       set_menu_pad           menu_attributes(3x)
+       set_menu_pattern       menu_pattern(3x)
+       set_menu_spacing       menu_spacing(3x)
+       set_menu_sub           menu_win(3x)
+       set_menu_term          menu_hook(3x)
+       set_menu_userptr       menu_userptr(3x)
+       set_menu_win           menu_win(3x)
+       set_top_row            mitem_current(3x)
+       top_row                mitem_current(3x)
+       unpost_menu            menu_post(3x)
+
+
+
+

RETURN VALUE

+       Routines  that return pointers return NULL on error.  Rou-
+       tines that return an integer return one of  the  following
+       error codes:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NO_MATCH
+            Character failed to match.
+
+       E_NO_ROOM
+            Menu is too large for its window.
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+       E_NOT_POSTED
+            The menu has not been posted.
+
+       E_NOT_SELECTABLE
+            The designated item cannot be selected.
+
+       E_POSTED
+            The menu is already posted.
+
+       E_REQUEST_DENIED
+            The menu driver could not process the request.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_UNKNOWN_COMMAND
+            The menu driver code saw an unknown request code.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "menu_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       files <curses.h> and <eti.h>.
+
+       In  your  library  list,  libmenu.a should be before libn-
+       curses.a; that is, you want to say `-lmenu -lncurses', not
+       the  other  way  around  (which would usually give a link-
+       error).
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
+       by Eric S. Raymond.
+
+
+
+

SEE ALSO

+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                               menu(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_attributes.3x.html b/ncurses/doc/html/man/menu_attributes.3x.html new file mode 100644 index 0000000..d7c2c6d --- /dev/null +++ b/ncurses/doc/html/man/menu_attributes.3x.html @@ -0,0 +1,139 @@ + + + + +menu_attributes 3x + + + + +

menu_attributes 3x

+
+
+
+menu_attributes(3x)                                 menu_attributes(3x)
+
+
+
+
+
+

NAME

+       menu_attributes - color and attribute control for menus
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_fore(MENU *menu, chtype attr);
+       chtype menu_fore(const MENU *menu);
+       int set_menu_back(MENU *menu, chtype attr);
+       chtype menu_back(const MENU *menu);
+       int set_menu_grey(MENU *menu, chtype attr);
+       chtype menu_grey(const MENU *menu);
+       int set_menu_pad(MENU *menu, int pad);
+       int menu_pad(const MENU *menu);
+
+
+
+

DESCRIPTION

+       The  function  set_menu_fore sets the foreground attribute
+       of menu. This is the  highlight  used  for  selected  menu
+       items.   menu_fore  returns the foreground attribute.  The
+       default is A_REVERSE.
+
+       The function set_menu_back sets the  background  attribute
+       of  menu.  This  is the highlight used for selectable (but
+       not  currently  selected)  menu   items.    The   function
+       menu_back  returns  the background attribute.  The default
+       is A_NORMAL.
+
+       The function set_menu_grey  sets  the  grey  attribute  of
+       menu.  This  is  the highlight used for un-selectable menu
+       items in menus that permit more than one  selection.   The
+       function   menu_grey  returns  the  grey  attribute.   The
+       default is A_UNDERLINE.
+
+       The function set_menu_pad sets the character used to  fill
+       the space between the name and description parts of a menu
+       item.  menu_pad returns the given  menu's  pad  character.
+       The default is a blank.
+
+
+
+

RETURN VALUE

+       These routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+
+
+

SEE ALSO

+       curses(3x) and related pages whose names begin "menu_" for
+       detailed descriptions of the entry points.
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                    menu_attributes(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_cursor.3x.html b/ncurses/doc/html/man/menu_cursor.3x.html new file mode 100644 index 0000000..815dcf6 --- /dev/null +++ b/ncurses/doc/html/man/menu_cursor.3x.html @@ -0,0 +1,117 @@ + + + + +menu_cursor 3x + + + + +

menu_cursor 3x

+
+
+
+menu_cursor(3x)                                         menu_cursor(3x)
+
+
+
+
+
+

NAME

+       menu_cursor - position a menu's cursor
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int pos_menu_cursor(const MENU *menu);
+
+
+
+

DESCRIPTION

+       The  function  pos_menu_cursor  restores the cursor to the
+       current position associated with the menu's selected item.
+       This  is  useful after curses routines have been called to
+       do screen-painting in response to a menu select.
+
+
+
+

RETURN VALUE

+       This routine returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_NOT_POSTED
+            The menu has not been posted.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                        menu_cursor(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_driver.3x.html b/ncurses/doc/html/man/menu_driver.3x.html new file mode 100644 index 0000000..c592699 --- /dev/null +++ b/ncurses/doc/html/man/menu_driver.3x.html @@ -0,0 +1,255 @@ + + + + +menu_driver 3x + + + + +

menu_driver 3x

+
+
+
+menu_driver(3x)                                         menu_driver(3x)
+
+
+
+
+
+

NAME

+       menu_driver - command-processing loop of the menu system
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int menu_driver(MENU *menu, int c);
+
+
+
+

DESCRIPTION

+       Once a menu has been posted (displayed), you should funnel
+       input events to it through menu_driver.  This routine  has
+       three major input cases:
+
+       -  The  input  is  a  form navigation request.  Navigation
+          request codes are constants defined in <form.h>,  which
+          are distinct from the key- and character codes returned
+          by wgetch.
+
+       -  The input is a printable character.  Printable  charac-
+          ters  (which  must  be  positive,  less  than  256) are
+          checked according to the program's locale settings.
+
+       -  The input is the KEY_MOUSE special key associated  with
+          an mouse event.
+
+       The menu driver requests are as follows:
+
+       REQ_LEFT_ITEM
+            Move left to an item.
+
+       REQ_RIGHT_ITEM
+            Move right to an item.
+
+       REQ_UP_ITEM
+            Move up to an item.
+
+       REQ_DOWN_ITEM
+            Move down to an item.
+
+       REQ_SCR_ULINE
+            Scroll up a line.
+
+       REQ_SCR_DLINE
+            Scroll down a line.
+
+       REQ_SCR_DPAGE
+            Scroll down a page.
+
+       REQ_SCR_UPAGE
+            Scroll up a page.
+
+       REQ_FIRST_ITEM
+            Move to the first item.
+
+       REQ_LAST_ITEM
+            Move to the last item.
+
+       REQ_NEXT_ITEM
+            Move to the next item.
+
+       REQ_PREV_ITEM
+            Move to the previous item.
+
+       REQ_TOGGLE_ITEM
+            Select/deselect an item.
+
+       REQ_CLEAR_PATTERN
+            Clear the menu pattern buffer.
+
+       REQ_BACK_PATTERN
+            Delete   the  previous  character  from  the  pattern
+            buffer.
+
+       REQ_NEXT_MATCH
+            Move to the next item matching the pattern match.
+
+       REQ_PREV_MATCH
+            Move to the previous item matching the pattern match.
+
+       If  the second argument is a printable character, the code
+       appends it to the pattern buffer and attempts to  move  to
+       the  next  item  matching the new pattern.  If there is no
+       such match, menu_driver returns E_NO_MATCH and deletes the
+       appended character from the buffer.
+
+       If  the  second  argument  is one of the above pre-defined
+       requests, the corresponding action is performed.
+
+   MOUSE HANDLING
+       If the second argument is the KEY_MOUSE special  key,  the
+       associated mouse event is translated into one of the above
+       pre-defined requests.  Currently only clicks in  the  user
+       window  (e.g.  inside the menu display area or the decora-
+       tion window) are handled.
+
+       If you click above the display region of the menu:
+
+              a REQ_SCR_ULINE is generated for a single click,
+
+              a REQ_SCR_UPAGE is generated for a double-click and
+
+              a REQ_FIRST_ITEM is generated for a triple-click.
+
+       If you click below the display region of the menu:
+
+              a REQ_SCR_DLINE is generated for a single click,
+
+              a REQ_SCR_DPAGE is generated for a double-click and
+
+              a REQ_LAST_ITEM is generated for a triple-click.
+
+       If you click at an item inside the  display  area  of  the
+       menu:
+
+              -  the menu cursor is positioned to that item.
+
+              -  If you double-click an item a REQ_TOGGLE_ITEM is
+                 generated  and  E_UNKNOWN_COMMAND  is  returned.
+                 This  return value makes sense, because a double
+                 click usually means that an item-specific action
+                 should  be  returned.  It is exactly the purpose
+                 of this return value to signal that an  applica-
+                 tion specific command should be executed.
+
+              -  If  a  translation  into  a  request  was  done,
+                 menu_driver returns the result of this  request.
+
+       If  you clicked outside the user window or the mouse event
+       could  not  be  translated  into   a   menu   request   an
+       E_REQUEST_DENIED is returned.
+
+   APPLICATION-DEFINED COMMANDS
+       If the second argument is neither printable nor one of the
+       above pre-defined menu requests or  KEY_MOUSE,  the  drive
+       assumes  it is an application-specific command and returns
+       E_UNKNOWN_COMMAND.  Application-defined commands should be
+       defined  relative  to  MAX_COMMAND,  the  maximum value of
+       these pre-defined requests.
+
+
+
+

RETURN VALUE

+       menu_driver return one of the following error codes:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NOT_POSTED
+            The menu has not been posted.
+
+       E_UNKNOWN_COMMAND
+            The menu driver code saw an unknown request code.
+
+       E_NO_MATCH
+            Character failed to match.
+
+       E_REQUEST_DENIED
+            The menu driver could not process the request.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x), wgetch(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       files <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions. The  sup-
+       port for mouse events is ncurses specific.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                        menu_driver(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_format.3x.html b/ncurses/doc/html/man/menu_format.3x.html new file mode 100644 index 0000000..77b73c6 --- /dev/null +++ b/ncurses/doc/html/man/menu_format.3x.html @@ -0,0 +1,133 @@ + + + + +menu_format 3x + + + + +

menu_format 3x

+
+
+
+menu_format(3x)                                         menu_format(3x)
+
+
+
+
+
+

NAME

+       menu_format - set and get menu sizes
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_format(MENU *menu, int rows, int cols);
+       void menu_format(const MENU *menu, int *rows, int *cols);
+
+
+
+

DESCRIPTION

+       The function set_menu_format sets the maximum display size
+       of the given menu.  If this size is too small  to  display
+       all  menu items, the menu will be made scrollable. If this
+       size is larger than the menus subwindow and the  subwindow
+       is  too  small to display all menu items, post_menu() will
+       fail.
+
+       The  default  format  is  16  rows,  1  column.    Calling
+       set_menu_format  with a null menu pointer will change this
+       default.  A zero row or column argument to set_menu_format
+       is  interpreted  as  a  request  not to change the current
+       value.
+
+       The function menu_format  returns  the  maximum-size  con-
+       straints  for the given menu into the storage addressed by
+       rows and cols.
+
+
+
+

RETURN VALUE

+       These routines returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_POSTED
+            The menu is already posted.
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                        menu_format(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_hook.3x.html b/ncurses/doc/html/man/menu_hook.3x.html new file mode 100644 index 0000000..95addf4 --- /dev/null +++ b/ncurses/doc/html/man/menu_hook.3x.html @@ -0,0 +1,138 @@ + + + + +menu_hook 3x + + + + +

menu_hook 3x

+
+
+
+menu_hook(3x)                                             menu_hook(3x)
+
+
+
+
+
+

NAME

+       menu_hook - set hooks for automatic invocation by applica-
+       tions
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_item_init(MENU *menu, Menu_Hook func);
+       Menu_Hook item_init(const MENU *menu);
+       int set_item_term(MENU *menu, Menu_Hook func);
+       Menu_Hook item_term(const MENU *menu);
+       int set_menu_init(MENU *menu, Menu_Hook func);
+       Menu_Hook menu_init(const MENU *menu);
+       int set_menu_term(MENU *menu, Menu_Hook func);
+       Menu_Hook menu_term(const MENU *menu);
+
+
+
+

DESCRIPTION

+       These functions make it possible to set hook functions  to
+       be called at various points in the automatic processing of
+       input event codes by menu_driver.
+
+       The function set_item_init sets a hook  to  be  called  at
+       menu-post  time  and  each  time the selected item changes
+       (after the change).  item_init returns  the  current  item
+       init hook, if any (NULL if there is no such hook).
+
+       The  function  set_item_term  sets  a hook to be called at
+       menu-unpost time and each time the selected  item  changes
+       (before  the  change).  item_term returns the current item
+       term hook, if any (NULL if there is no such hook).
+
+       The function set_menu_init sets a hook  to  be  called  at
+       menu-post  time  and  just  after  the top row on the menu
+       changes once it is posted.  menu_init returns the  current
+       menu init hook, if any (NULL if there is no such hook).
+
+       The  function  set_menu_term  sets  a hook to be called at
+       menu-unpost time and just before the top row on  the  menu
+       changes  once it is posted.  menu_term returns the current
+       menu term hook, if any (NULL if there is no such hook).
+
+
+
+

RETURN VALUE

+       Routines that return pointers return NULL on error.  Other
+       routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          menu_hook(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_items.3x.html b/ncurses/doc/html/man/menu_items.3x.html new file mode 100644 index 0000000..ad609f8 --- /dev/null +++ b/ncurses/doc/html/man/menu_items.3x.html @@ -0,0 +1,138 @@ + + + + +menu_items 3x + + + + +

menu_items 3x

+
+
+
+menu_items(3x)                                           menu_items(3x)
+
+
+
+
+
+

NAME

+       menu_items  - make and break connections between items and
+       menus
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_items(MENU *menu, ITEM **items);
+       ITEM **menu_items(const MENU *menu);
+       int item_count(const MENU *menu);
+
+
+
+

DESCRIPTION

+       The function set_menu_items changes the item pointer array
+       of  the  given  menu.   The  array must be terminated by a
+       NULL.
+
+       The function menu_items returns  the  item  array  of  the
+       given menu.
+
+       The  function  item_count  returns  the  count of items in
+       menu.
+
+
+
+

RETURN VALUES

+       The function menu_items returns a pointer  (which  may  be
+       NULL).  It does not set errno.
+
+       The  function  item_count  returns ERR (the general curses
+       error return value) if its menu parameter is NULL.
+
+       The function set_menu_items returns one of  the  following
+       codes on error:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+       E_POSTED
+            The menu is already posted.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The  SVr4  menu  library   documentation   specifies   the
+       item_count  error value as -1 (which is the value of ERR).
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                         menu_items(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_mark.3x.html b/ncurses/doc/html/man/menu_mark.3x.html new file mode 100644 index 0000000..6929963 --- /dev/null +++ b/ncurses/doc/html/man/menu_mark.3x.html @@ -0,0 +1,131 @@ + + + + +menu_mark 3x + + + + +

menu_mark 3x

+
+
+
+menu_mark(3x)                                             menu_mark(3x)
+
+
+
+
+
+

NAME

+       menu_mark - get and set the menu mark string
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_mark(MENU *menu, const char *mark);
+       const char *menu_mark(const MENU *menu);
+
+
+
+

DESCRIPTION

+       In  order  to make menu selections visible on older termi-
+       nals without highlighting or color  capability,  the  menu
+       library  marks  selected  items  in  a  menu with a prefix
+       string.
+
+       The function set_menu_mark sets the mark  string  for  the
+       given  menu.   Calling set_menu_mark with a null menu item
+       will abolish the mark  string.   Note  that  changing  the
+       length  of  the  mark  string for a menu while the menu is
+       posted is likely to produce unhelpful behavior.
+
+       The default string is "-" (a dash). Calling  set_menu_mark
+       with a non-NULL menu argument will change this default.
+
+       The  function menu_mark returns the menu's mark string (or
+       NULL if there is none).
+
+
+
+

RETURN VALUE

+       The function menu_mark returns a  pointer  (which  may  be
+       NULL).  It does not set errno.
+
+       The  function set_menu_mark may return the following error
+       codes:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          menu_mark(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_new.3x.html b/ncurses/doc/html/man/menu_new.3x.html new file mode 100644 index 0000000..c8fdde7 --- /dev/null +++ b/ncurses/doc/html/man/menu_new.3x.html @@ -0,0 +1,129 @@ + + + + +menu_new 3x + + + + +

menu_new 3x

+
+
+
+menu_new(3x)                                               menu_new(3x)
+
+
+
+
+
+

NAME

+       menu_new - create and destroy menus
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       MENU *new_menu(ITEM **items);
+       int free_menu(MENU *menu);
+
+
+
+

DESCRIPTION

+       The  function  new_menu  creates a new menu connected to a
+       specified item pointer array (which  must  be  NULL-termi-
+       nated).
+
+       The  function  free_menu  disconnects  menu  from its item
+       array and frees the storage allocated for the menu.
+
+
+
+

RETURN VALUE

+       The function new_menu returns  NULL  on  error.   It  sets
+       errno according to the function's failure:
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+       E_SYSTEM_ERROR
+            System error occurred, e.g., malloc failure.
+
+       The function free_menu returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_POSTED
+            The menu has already been posted.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                           menu_new(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_opts.3x.html b/ncurses/doc/html/man/menu_opts.3x.html new file mode 100644 index 0000000..3fb9670 --- /dev/null +++ b/ncurses/doc/html/man/menu_opts.3x.html @@ -0,0 +1,148 @@ + + + + +menu_opts 3x + + + + +

menu_opts 3x

+
+
+
+menu_opts(3x)                                             menu_opts(3x)
+
+
+
+
+
+

NAME

+       menu_opts - set and get menu options
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_opts(MENU *menu, Menu_Options opts);
+       int menu_opts_on(MENU *menu, Menu_Options opts);
+       int menu_opts_off(MENU *menu, Menu_Options opts);
+       Menu_Options menu_opts(const MENU *menu);
+
+
+
+

DESCRIPTION

+       The  function  set_menu_opts  sets  all  the  given menu's
+       option bits  (menu  option  bits  may  be  logically-OR'ed
+       together).
+
+       The  function menu_opts_on turns on the given option bits,
+       and leaves others alone.
+
+       The function menu_opts_off  turns  off  the  given  option
+       bits, and leaves others alone.
+
+       The  function  menu_opts returns the menu's current option
+       bits.
+
+       The following options are defined (all are on by default):
+
+       O_ONEVALUE
+            Only one item can be selected for this menu.
+
+       O_SHOWDESC
+            Display  the  item  descriptions  when  the  menu  is
+            posted.
+
+       O_ROWMAJOR
+            Display the menu in row-major order.
+
+       O_IGNORECASE
+            Ignore the case when pattern-matching.
+
+       O_SHOWMATCH
+            Move the cursor to within the item  name  while  pat-
+            tern-matching.
+
+       O_NONCYCLIC
+            Don't   wrap   around  next-item  and  previous-item,
+            requests to the other end of the menu.
+
+
+
+

RETURN VALUE

+       Except for menu_opts, each routine returns one of the fol-
+       lowing:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_POSTED
+            The menu is already posted.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          menu_opts(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_pattern.3x.html b/ncurses/doc/html/man/menu_pattern.3x.html new file mode 100644 index 0000000..0345c56 --- /dev/null +++ b/ncurses/doc/html/man/menu_pattern.3x.html @@ -0,0 +1,138 @@ + + + + +menu_pattern 3x + + + + +

menu_pattern 3x

+
+
+
+menu_pattern(3x)                                       menu_pattern(3x)
+
+
+
+
+
+

NAME

+       menu_pattern - get and set a menu's pattern buffer
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_pattern(MENU *menu, const char *pattern);
+       char *menu_pattern(const MENU *menu);
+
+
+
+

DESCRIPTION

+       Every  menu  has  an  associated pattern match buffer.  As
+       input events that are printable characters come  in,  they
+       are  appended to this match buffer and tested for a match,
+       as described in menu_driver(3x).
+
+       The function set_menu_pattern sets the pattern buffer  for
+       the  given menu and tries to find the first matching item.
+       If it succeeds, that item becomes  current;  if  not,  the
+       current item does not change.
+
+       The  function  menu_pattern  returns the pattern buffer of
+       the given menu.
+
+
+
+

RETURN VALUE

+       The function menu_pattern returns a pointer, which is NULL
+       if the menu parameter is NULL.  Otherwise, it is a pointer
+       to a string which is empty if no pattern has been set.  It
+       does not set errno.
+
+       The  function  set_menu_pattern  may  return the following
+       error codes:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NOT_CONNECTED
+            No items are connected to menu.
+
+       E_NO_MATCH
+            Character failed to match.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                       menu_pattern(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_post.3x.html b/ncurses/doc/html/man/menu_post.3x.html new file mode 100644 index 0000000..84055be --- /dev/null +++ b/ncurses/doc/html/man/menu_post.3x.html @@ -0,0 +1,138 @@ + + + + +menu_post 3x + + + + +

menu_post 3x

+
+
+
+menu_post(3x)                                             menu_post(3x)
+
+
+
+
+
+

NAME

+       menu_post  -  write or erase menus from associated subwin-
+       dows
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int post_menu(MENU *menu);
+       int unpost_menu(MENU *menu);
+
+
+
+

DESCRIPTION

+       The function post_menu displays a menu to  its  associated
+       subwindow.   To trigger physical display of the subwindow,
+       use  refresh  or  some  equivalent  curses  routine   (the
+       implicit  doupdate  triggered  by  an curses input request
+       will do). post_menu resets the  selection  status  of  all
+       items.
+
+       The  function  unpost_menu erases menu from its associated
+       subwindow.
+
+
+
+

RETURN VALUE

+       These routines return one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_POSTED
+            The menu has already been posted.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NO_ROOM
+            Menu is too large for its window. You should consider
+            to use set_menu_format() to solve the problem.
+
+       E_NOT_POSTED
+            The menu has not been posted.
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          menu_post(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_requestname.3x.html b/ncurses/doc/html/man/menu_requestname.3x.html new file mode 100644 index 0000000..6da9ee9 --- /dev/null +++ b/ncurses/doc/html/man/menu_requestname.3x.html @@ -0,0 +1,112 @@ + + + + +menu_requestname 3x + + + + +

menu_requestname 3x

+
+
+
+menu_requestname(3x)                               menu_requestname(3x)
+
+
+
+
+
+

NAME

+       menu_requestname - handle printable menu request names
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       const char *menu_request_name(int request);
+       int menu_request_by_name(const char *name);
+
+
+
+

DESCRIPTION

+       The  function menu_request_name returns the printable name
+       of a menu request code.
+       The function menu_request_by_name searches in the name-ta-
+       ble  for  a  request  with  the given name and returns its
+       request code.  Otherwise E_NO_MATCH is returned.
+
+
+
+

RETURN VALUE

+       menu_request_name returns NULL on error and sets errno  to
+       E_BAD_ARGUMENT.
+       menu_request_by_name returns E_NO_MATCH on error.  It does
+       not set errno.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is recommended that any code depending on them be con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                   menu_requestname(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_spacing.3x.html b/ncurses/doc/html/man/menu_spacing.3x.html new file mode 100644 index 0000000..736e95c --- /dev/null +++ b/ncurses/doc/html/man/menu_spacing.3x.html @@ -0,0 +1,129 @@ + + + + +menu_spacing 3x + + + + +

menu_spacing 3x

+
+
+
+menu_spacing(3x)                                       menu_spacing(3x)
+
+
+
+
+
+

NAME

+       menu_spacing - Control spacing between menu items.
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_spacing(MENU *menu,
+                            int spc_description,
+                            int spc_rows,
+                            int spc_columns);
+       int menu_spacing(const MENU *menu,
+                        int* spc_description,
+                        int* spc_rows,
+                        int* spc_columns);
+
+
+
+

DESCRIPTION

+       The  function  set_menu_spacing  sets the spacing informa-
+       tions for the menu.  spc_description controls  the  number
+       of spaces between an item name and an item description. It
+       must not be larger than TABSIZE. The menu system  puts  in
+       the  middle  of  this  spacing area the pad character. The
+       remaining parts are filled with spaces.  spc_rows controls
+       the  number of rows that are used for an item. It must not
+       be larger than 3. The menu system inserts the blank  lines
+       between  item rows, these lines will contain the pad char-
+       acter in the appropriate positions.  spc_columns  controls
+       the number of blanks between columns of items. It must not
+       be larger than TABSIZE.  A value of 0 for all the  spacing
+       values  resets  them to the default, which is 1 for all of
+       them.
+       The function menu_spacing passes back the spacing info for
+       the menu. If a pointer is NULL, this specific info is sim-
+       ply not returned.
+
+
+
+

RETURN VALUE

+       Both routines return E_OK on success. set_menu_spacing may
+       return  E_POSTED  if the menu is posted, or E_BAD_ARGUMENT
+       if one of the spacing values is out of range.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is recommended that any code depending on them be con-
+       ditioned using NCURSES_VERSION.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                       menu_spacing(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_userptr.3x.html b/ncurses/doc/html/man/menu_userptr.3x.html new file mode 100644 index 0000000..78341cd --- /dev/null +++ b/ncurses/doc/html/man/menu_userptr.3x.html @@ -0,0 +1,112 @@ + + + + +menu_userptr 3x + + + + +

menu_userptr 3x

+
+
+
+menu_userptr(3x)                                       menu_userptr(3x)
+
+
+
+
+
+

NAME

+       menu_userptr - associate application data with a menu item
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_userptr(MENU *menu, void *userptr);
+       void *menu_userptr(const MENU *menu);
+
+
+
+

DESCRIPTION

+       Every menu and every menu item has a  field  that  can  be
+       used to hold application-specific data (that is, the menu-
+       driver code leaves it alone).  These functions get and set
+       the menu user pointer field.
+
+
+
+

RETURN VALUE

+       menu_userptr  returns  a  pointer (which may be NULL).  It
+       does not set errno.
+
+       set_menu_userptr returns E_OK (success).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The user pointer is a void pointer.  We chose not to leave
+       it as a char pointer for SVr4 compatibility.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                       menu_userptr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/menu_win.3x.html b/ncurses/doc/html/man/menu_win.3x.html new file mode 100644 index 0000000..85511bf --- /dev/null +++ b/ncurses/doc/html/man/menu_win.3x.html @@ -0,0 +1,139 @@ + + + + +menu_win 3x + + + + +

menu_win 3x

+
+
+
+menu_win(3x)                                               menu_win(3x)
+
+
+
+
+
+

NAME

+       menu_win  - make and break menu window and subwindow asso-
+       ciations
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_menu_win(MENU *menu, WINDOW *win);
+       WINDOW *menu_win(const MENU *menu);
+       int set_menu_sub(MENU *menu, WINDOW *sub);
+       WINDOW *menu_sub(const MENU *menu);
+       int scale_menu(const MENU *menu, int *rows, int *columns);
+
+
+
+

DESCRIPTION

+       Every  menu has an associated pair of curses windows.  The
+       menu window displays any title and border associated  with
+       the  window;  the menu subwindow displays the items of the
+       menu that are currently available for selection.
+
+       The first four functions get and set those windows.  It is
+       not necessary to set either window; by default, the driver
+       code uses stdscr for both.
+
+       In the set_ functions, window argument of NULL is  treated
+       as  though  it  were  stsdcr.   A menu argument of NULL is
+       treated as a request to change  the  system  default  menu
+       window or subwindow.
+
+       The  function scale_menu returns the minimum size required
+       for the subwindow of menu.
+
+
+
+

RETURN VALUE

+       Routines that return pointers return NULL on error.   Rou-
+       tines  that  return an integer return one of the following
+       error codes:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_POSTED
+            The menu has already been posted.
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                           menu_win(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_current.3x.html b/ncurses/doc/html/man/mitem_current.3x.html new file mode 100644 index 0000000..9529473 --- /dev/null +++ b/ncurses/doc/html/man/mitem_current.3x.html @@ -0,0 +1,146 @@ + + + + +mitem_current 3x + + + + +

mitem_current 3x

+
+
+
+mitem_current(3x)                                     mitem_current(3x)
+
+
+
+
+
+

NAME

+       mitem_current - set and get current_menu_item
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_current_item(MENU *menu, const ITEM *item);
+       ITEM *current_item(const MENU *menu);
+       int set_top_row(MENU *menu, int row);
+       int top_row(const MENU *menu);
+       int item_index(const ITEM *item);
+
+
+
+

DESCRIPTION

+       The  function  set_current_item sets the current item (the
+       item on  which  the  menu  cursor  is  positioned).   cur-
+       rent_item  returns  a  pointer  to the current item in the
+       given menu.
+
+       The function set_top_row sets the top row of the  menu  to
+       show  the  given  row  (the top row is initially 0, and is
+       reset to this value whenever the O_ROWMAJOR option is tog-
+       gled).   The  item  leftmost on the given row becomes cur-
+       rent.  The function top_row returns the number of the  top
+       menu row being displayed.
+
+       The function item_index returns the (zero-origin) index of
+       item in the menu's item pointer list.
+
+
+
+

RETURN VALUE

+       current_item returns a pointer (which may  be  NULL).   It
+       does not set errno.
+
+       top_row  and  item_index  return  ERR  (the general curses
+       error value) if their menu parameter is NULL.
+
+       set_current_item and set_top_row return one of the follow-
+       ing:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_BAD_STATE
+            Routine was called from an initialization or termina-
+            tion function.
+
+       E_NOT_CONNECTED
+            No items are connected to the menu.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+       The  SVr4 menu library documentation specifies the top_row
+       and index_item error value as -1 (which is  the  value  of
+       ERR).
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                      mitem_current(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_name.3x.html b/ncurses/doc/html/man/mitem_name.3x.html new file mode 100644 index 0000000..90895d3 --- /dev/null +++ b/ncurses/doc/html/man/mitem_name.3x.html @@ -0,0 +1,107 @@ + + + + +mitem_name 3x + + + + +

mitem_name 3x

+
+
+
+mitem_name(3x)                                           mitem_name(3x)
+
+
+
+
+
+

NAME

+       mitem_name - get menu item name and description fields
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       const char *item_name(const ITEM *item);
+       const char *item_description(const ITEM *item);
+
+
+
+

DESCRIPTION

+       The  function item_name returns the name part of the given
+       item.
+       The function item_description returns the description part
+       of the given item.
+
+
+
+

RETURN VALUE

+       These routines return a pointer (which may be NULL).  They
+       do not set errno.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                         mitem_name(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_new.3x.html b/ncurses/doc/html/man/mitem_new.3x.html new file mode 100644 index 0000000..e069b12 --- /dev/null +++ b/ncurses/doc/html/man/mitem_new.3x.html @@ -0,0 +1,134 @@ + + + + +mitem_new 3x + + + + +

mitem_new 3x

+
+
+
+mitem_new(3x)                                             mitem_new(3x)
+
+
+
+
+
+

NAME

+       mitem_new - create and destroy menu items
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       ITEM *new_item(const char *name, const char *description);
+       int free_item(ITEM *item);
+
+
+
+

DESCRIPTION

+       The function new_item allocates a new item and initializes
+       it  from  the name and description pointers. Please notice
+       that the item stores only the pointers  to  the  name  and
+       description. Those pointers must be valid during the life-
+       time of the item. So you should be very careful with names
+       or descriptions allocated on the stack of some routines.
+       The function free_item de-allocates an item. Please notice
+       that it  is  the  responsibility  of  the  application  to
+       release  the memory for the name or the description of the
+       item.
+
+
+
+

RETURN VALUE

+       The function new_item returns  NULL  on  error.   It  sets
+       errno according to the function's failure:
+
+       E_BAD_ARGUMENT
+            Routine  detected  an incorrect or out-of-range argu-
+            ment.
+
+       E_SYSTEM_ERROR
+            System error occurred, e.g., malloc failure.
+
+       The function free_item returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_BAD_ARGUMENT
+            Routine detected an incorrect or  out-of-range  argu-
+            ment.
+
+       E_CONNECTED
+            Item is connected to a menu.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                          mitem_new(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_opts.3x.html b/ncurses/doc/html/man/mitem_opts.3x.html new file mode 100644 index 0000000..459930a --- /dev/null +++ b/ncurses/doc/html/man/mitem_opts.3x.html @@ -0,0 +1,126 @@ + + + + +mitem_opts 3x + + + + +

mitem_opts 3x

+
+
+
+mitem_opts(3x)                                           mitem_opts(3x)
+
+
+
+
+
+

NAME

+       mitem_opts - set and get menu item options
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_item_opts(ITEM *item, Item_Options opts);
+       int item_opts_on(ITEM *item, Item_Options opts);
+       int item_opts_off(ITEM *item, Item_Options opts);
+       Item_Options item_opts(const ITEM *item);
+
+
+
+

DESCRIPTION

+       The  function  set_item_opts  sets  all  the  given item's
+       option bits  (menu  option  bits  may  be  logically-OR'ed
+       together).
+
+       The  function item_opts_on turns on the given option bits,
+       and leaves others alone.
+
+       The function item_opts_off  turns  off  the  given  option
+       bits, and leaves others alone.
+
+       The  function  item_opts returns the item's current option
+       bits.
+
+       There is only one defined option bit  mask,  O_SELECTABLE.
+       When this is on, the item may be selected during menu pro-
+       cessing.  This option defaults to on.
+
+
+
+

RETURN VALUE

+       Except for item_opts, each routine returns one of the fol-
+       lowing:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These routines emulate the System V  menu  library.   They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                         mitem_opts(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_userptr.3x.html b/ncurses/doc/html/man/mitem_userptr.3x.html new file mode 100644 index 0000000..fc7c9c5 --- /dev/null +++ b/ncurses/doc/html/man/mitem_userptr.3x.html @@ -0,0 +1,112 @@ + + + + +mitem_userptr 3x + + + + +

mitem_userptr 3x

+
+
+
+mitem_userptr(3x)                                     mitem_userptr(3x)
+
+
+
+
+
+

NAME

+       mitem_userptr  -  associate  application  data with a menu
+       item
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_item_userptr(ITEM *item, void *userptr);
+       void *item_userptr(const ITEM *item);
+
+
+
+

DESCRIPTION

+       Every menu item has a field  that  can  be  used  to  hold
+       application-specific  data  (that is, the menu-driver code
+       leaves it alone).  These functions get and set that field.
+
+
+
+

RETURN VALUE

+       The  function  item_userptr  returns  a  pointer (possibly
+       NULL).  It does not set errno.
+
+       The set_item_userptr always returns E_OK (success).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+       The user pointer is a void pointer.  We chose not to leave
+       it as a char pointer for SVr4 compatibility.
+
+
+
+

AUTHORS

+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+       curses by Eric S. Raymond.
+
+
+
+                                                      mitem_userptr(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_value.3x.html b/ncurses/doc/html/man/mitem_value.3x.html new file mode 100644 index 0000000..386c8b8 --- /dev/null +++ b/ncurses/doc/html/man/mitem_value.3x.html @@ -0,0 +1,117 @@ + + + + +mitem_value 3x + + + + +

mitem_value 3x

+
+
+
+mitem_value(3x)                                         mitem_value(3x)
+
+
+
+
+
+

NAME

+       mitem_value - set and get menu item values
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       int set_item_value(ITEM *item, bool value);
+       bool item_value(const ITEM *item);
+
+
+
+

DESCRIPTION

+       If  you  turn  off  the menu option O_ONEVALUE (e.g., with
+       set_menu_opts or menu_opts_off;  see  menu_opts(3x)),  the
+       menu becomes multi-valued; that is, more than one item may
+       simultaneously be selected.
+
+       In a multi_valued menu, you  can  used  set_item_value  to
+       select the given menu item (second argument TRUE) or dese-
+       lect it (second argument FALSE).
+
+
+
+

RETURN VALUE

+       The function set_item_value returns one of the following:
+
+       E_OK The routine succeeded.
+
+       E_SYSTEM_ERROR
+            System error occurred (see errno).
+
+       E_REQUEST_DENIED
+            The menu driver could not process the request.
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                        mitem_value(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/mitem_visible.3x.html b/ncurses/doc/html/man/mitem_visible.3x.html new file mode 100644 index 0000000..8d3d016 --- /dev/null +++ b/ncurses/doc/html/man/mitem_visible.3x.html @@ -0,0 +1,100 @@ + + + + +mitem_visible 3x + + + + +

mitem_visible 3x

+
+
+
+mitem_visible(3x)                                     mitem_visible(3x)
+
+
+
+
+
+

NAME

+       mitem_visible - check visibility of a menu item
+
+
+
+

SYNOPSIS

+       #include <menu.h>
+       bool item_visible(const ITEM *item);
+
+
+
+

DESCRIPTION

+       A  menu  item  is  visible  when it is in the portion of a
+       posted menu that is mapped onto the screen (if the menu is
+       scrollable,  in  particular,  this portion will be smaller
+       than the whole menu).
+
+
+
+

SEE ALSO

+       curses(3x), menu(3x).
+
+
+
+

NOTES

+       The header file <menu.h> automatically includes the header
+       file <curses.h>.
+
+
+
+

PORTABILITY

+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions.
+
+
+
+

AUTHORS

+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+       curses by Eric S. Raymond.
+
+
+
+                                                      mitem_visible(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/ncurses.3x.html b/ncurses/doc/html/man/ncurses.3x.html new file mode 100644 index 0000000..8b1dee8 --- /dev/null +++ b/ncurses/doc/html/man/ncurses.3x.html @@ -0,0 +1,1233 @@ + + + + +ncurses 3x + + + + +

ncurses 3x

+
+
+
+ncurses(3x)                                                 ncurses(3x)
+
+
+
+
+
+

NAME

+       ncurses - CRT screen handling and optimization package
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+
+
+

DESCRIPTION

+       The  ncurses  library  routines  give the user a terminal-
+       independent method of updating character screens with rea-
+       sonable   optimization.    This  implementation  is  ``new
+       curses'' (ncurses) and is  the  approved  replacement  for
+       4.4BSD  classic curses, which has been discontinued.  This
+       describes ncurses version 5.6 (patch 20081011).
+
+       The ncurses library emulates  the  curses(3x)  library  of
+       System  V  Release  4  UNIX,  and XPG4 (X/Open Portability
+       Guide) curses (also known as XSI curses).  XSI stands  for
+       X/Open  System  Interfaces Extension.  The ncurses library
+       is freely redistributable  in  source  form.   Differences
+       from  the  SVr4 curses are summarized under the EXTENSIONS
+       and PORTABILITY sections below and described in detail  in
+       the  respective  EXTENSIONS, PORTABILITY and BUGS sections
+       of individual man pages.
+
+       The ncurses library also provides many useful  extensions,
+       i.e.,  features  which  cannot  be implemented by a simple
+       add-on library but which require access to  the  internals
+       of the library.
+
+       A  program  using  these  routines must be linked with the
+       -lncurses option, or (if it has been generated)  with  the
+       debugging  library  -lncurses_g.   (Your system integrator
+       may also have installed these libraries  under  the  names
+       -lcurses and -lcurses_g.)  The ncurses_g library generates
+       trace logs (in a file called 'trace' in the current direc-
+       tory)  that describe curses actions.  See also the section
+       on ALTERNATE CONFIGURATIONS.
+
+       The ncurses package supports: overall screen,  window  and
+       pad manipulation; output to windows and pads; reading ter-
+       minal input; control over terminal and  curses  input  and
+       output  options; environment query routines; color manipu-
+       lation; use of soft label keys; terminfo capabilities; and
+       access to low-level terminal-manipulation routines.
+
+       The  library uses the locale which the calling program has
+       initialized.  That is normally done with setlocale:
+
+             setlocale(LC_ALL, "");
+
+       If the locale is not initialized, the library assumes that
+       characters  are  printable  as in ISO-8859-1, to work with
+       certain legacy programs.  You should initialize the locale
+       and  not  rely on specific details of the library when the
+       locale has not been setup.
+
+       The function initscr or newterm must be called to initial-
+       ize the library before any of the other routines that deal
+       with windows and screens are  used.   The  routine  endwin
+       must be called before exiting.
+
+       To  get  character-at-a-time  input  without echoing (most
+       interactive, screen oriented programs want this), the fol-
+       lowing sequence should be used:
+
+             initscr(); cbreak(); noecho();
+
+       Most programs would additionally use the sequence:
+
+             nonl();
+             intrflush(stdscr, FALSE);
+             keypad(stdscr, TRUE);
+
+       Before  a curses program is run, the tab stops of the ter-
+       minal should be set and  its  initialization  strings,  if
+       defined,  must  be  output.  This can be done by executing
+       the tput init command after the shell environment variable
+       TERM  has  been  exported.  tset(1) is usually responsible
+       for doing this.  [See terminfo(5) for further details.]
+
+       The ncurses library permits manipulation  of  data  struc-
+       tures,  called  windows,  which  can be thought of as two-
+       dimensional arrays of characters representing all or  part
+       of a CRT screen.  A default window called stdscr, which is
+       the size of the terminal screen, is supplied.  Others  may
+       be created with newwin.
+
+       Note  that  curses  does  not  handle overlapping windows,
+       that's done by the panel(3x) library.  This means that you
+       can either use stdscr or divide the screen into tiled win-
+       dows and not using stdscr at all.   Mixing  the  two  will
+       result in unpredictable, and undesired, effects.
+
+       Windows are referred to by variables declared as WINDOW *.
+       These  data  structures  are  manipulated  with   routines
+       described  here and elsewhere in the ncurses manual pages.
+       Among those, the most basic routines are move  and  addch.
+       More  general versions of these routines are included with
+       names beginning with w, allowing the  user  to  specify  a
+       window.   The routines not beginning with w affect stdscr.
+
+       After using routines to manipulate a  window,  refresh  is
+       called,  telling curses to make the user's CRT screen look
+       like stdscr.  The characters in a window are  actually  of
+       type  chtype, (character and attribute data) so that other
+       information about the character may also  be  stored  with
+       each character.
+
+       Special  windows  called  pads  may  also  be manipulated.
+       These are windows which are not constrained to the size of
+       the  screen and whose contents need not be completely dis-
+       played.  See curs_pad(3x) for more information.
+
+       In addition to drawing characters  on  the  screen,  video
+       attributes  and colors may be supported, causing the char-
+       acters to show up in such modes as underlined, in  reverse
+       video,  or in color on terminals that support such display
+       enhancements.  Line drawing characters may be specified to
+       be  output.   On  input,  curses is also able to translate
+       arrow and function keys  that  transmit  escape  sequences
+       into  single  values.   The video attributes, line drawing
+       characters,  and  input  values  use  names,  defined   in
+       <curses.h>, such as A_REVERSE, ACS_HLINE, and KEY_LEFT.
+
+       If the environment variables LINES and COLUMNS are set, or
+       if the program is executing in a window environment,  line
+       and  column  information  in the environment will override
+       information read by terminfo.  This would affect a program
+       running  in an AT&T 630 layer, for example, where the size
+       of a screen is changeable (see ENVIRONMENT).
+
+       If the environment variable TERMINFO is defined, any  pro-
+       gram  using  curses checks for a local terminal definition
+       before checking in the standard place.   For  example,  if
+       TERM is set to att4424, then the compiled terminal defini-
+       tion is found in
+
+             /usr/share/terminfo/a/att4424.
+
+       (The a is copied from the first letter of att4424 to avoid
+       creation  of  huge  directories.)  However, if TERMINFO is
+       set to $HOME/myterms, curses first checks
+
+             $HOME/myterms/a/att4424,
+
+       and if that fails, it then checks
+
+             /usr/share/terminfo/a/att4424.
+
+       This is useful for developing experimental definitions  or
+       when write permission in /usr/share/terminfo is not avail-
+       able.
+
+       The integer  variables  LINES  and  COLS  are  defined  in
+       <curses.h>  and will be filled in by initscr with the size
+       of the screen.  The constants TRUE and FALSE have the val-
+       ues 1 and 0, respectively.
+
+       The  curses  routines  also  define  the WINDOW * variable
+       curscr which is used for certain low-level operations like
+       clearing  and  redrawing a screen containing garbage.  The
+       curscr can be used in only a few routines.
+
+   Routine and Argument Names
+       Many curses routines have two or more versions.  The  rou-
+       tines prefixed with w require a window argument.  The rou-
+       tines prefixed with p require a pad argument.  Those with-
+       out a prefix generally use stdscr.
+
+       The routines prefixed with mv require a y and x coordinate
+       to move to before performing the appropriate action.   The
+       mv  routines  imply  a call to move before the call to the
+       other routine.  The coordinate y always refers to the  row
+       (of  the  window), and x always refers to the column.  The
+       upper left-hand corner is always (0,0), not (1,1).
+
+       The routines prefixed with mvw take both a window argument
+       and  x  and  y coordinates.  The window argument is always
+       specified before the coordinates.
+
+       In each case, win is the window affected, and pad  is  the
+       pad affected; win and pad are always pointers to type WIN-
+       DOW.
+
+       Option setting routines require a Boolean flag bf with the
+       value  TRUE  or FALSE; bf is always of type bool.  Most of
+       the data types used in the library routines, such as  WIN-
+       DOW,  SCREEN,  bool, and chtype are defined in <curses.h>.
+       Types used for the terminfo routines such as TERMINAL  are
+       defined in <term.h>.
+
+       This  manual  page describes functions which may appear in
+       any configuration of the library.  There  are  two  common
+       configurations of the library:
+
+              ncurses
+                   the  "normal"  library,  which  handles  8-bit
+                   characters.  The normal (8-bit) library stores
+                   characters  combined with attributes in chtype
+                   data.
+
+                   Attributes alone (no corresponding  character)
+                   may  be  stored  in  chtype  or the equivalent
+                   attr_t data.  In  either  case,  the  data  is
+                   stored in something like an integer.
+
+                   Each  cell  (row  and  column)  in a WINDOW is
+                   stored as a chtype.
+
+              ncursesw
+                   the so-called "wide"  library,  which  handles
+                   multibyte   characters  (See  the  section  on
+                   ALTERNATE CONFIGURATIONS).  The "wide" library
+                   includes  all  of  the calls from the "normal"
+                   library.  It adds about one third  more  calls
+                   using data types which store multibyte charac-
+                   ters:
+
+                   cchar_t
+                        corresponds to chtype.  However it  is  a
+                        structure,  because  more  data is stored
+                        than can fit into an integer.  The  char-
+                        acters are large enough to require a full
+                        integer value - and  there  may  be  more
+                        than  one  character per cell.  The video
+                        attributes and color are stored in  sepa-
+                        rate fields of the structure.
+
+                        Each cell (row and column) in a WINDOW is
+                        stored as a cchar_t.
+
+                   wchar_t
+                        stores a "wide" character.  Like  chtype,
+                        this may be an integer.
+
+                   wint_t
+                        stores  a wchar_t or WEOF - not the same,
+                        though both may have the same size.
+
+                   The  "wide"  library  provides  new  functions
+                   which  are analogous to functions in the "nor-
+                   mal" library.  There is  a  naming  convention
+                   which  relates  many  of the normal/wide vari-
+                   ants: a "_w" is inserted into the  name.   For
+                   example, waddch becomes wadd_wch.
+
+
+   Routine Name Index
+       The following table lists each curses routine and the name
+       of the manual page on which  it  is  described.   Routines
+       flagged  with  `*'  are ncurses-specific, not described by
+       XPG4 or present in SVr4.
+
+
+              curses Routine Name     Manual Page Name
+              --------------------------------------------
+              COLOR_PAIR              curs_color(3x)
+              PAIR_NUMBER             curs_attr(3x)
+              _nc_tracebits           curs_trace(3x)*
+
+              _traceattr              curs_trace(3x)*
+              _traceattr2             curs_trace(3x)*
+              _tracechar              curs_trace(3x)*
+              _tracechtype            curs_trace(3x)*
+              _tracechtype2           curs_trace(3x)*
+              _tracedump              curs_trace(3x)*
+              _tracef                 curs_trace(3x)*
+              _tracemouse             curs_trace(3x)*
+              add_wch                 curs_add_wch(3x)
+              add_wchnstr             curs_add_wchstr(3x)
+              add_wchstr              curs_add_wchstr(3x)
+              addch                   curs_addch(3x)
+              addchnstr               curs_addchstr(3x)
+              addchstr                curs_addchstr(3x)
+              addnstr                 curs_addstr(3x)
+              addnwstr                curs_addwstr(3x)
+              addstr                  curs_addstr(3x)
+              addwstr                 curs_addwstr(3x)
+              assume_default_colors   default_colors(3x)*
+              attr_get                curs_attr(3x)
+              attr_off                curs_attr(3x)
+              attr_on                 curs_attr(3x)
+              attr_set                curs_attr(3x)
+              attroff                 curs_attr(3x)
+              attron                  curs_attr(3x)
+              attrset                 curs_attr(3x)
+              baudrate                curs_termattrs(3x)
+              beep                    curs_beep(3x)
+              bkgd                    curs_bkgd(3x)
+              bkgdset                 curs_bkgd(3x)
+              bkgrnd                  curs_bkgrnd(3x)
+              bkgrndset               curs_bkgrnd(3x)
+              border                  curs_border(3x)
+              border_set              curs_border_set(3x)
+              box                     curs_border(3x)
+              box_set                 curs_border_set(3x)
+              can_change_color        curs_color(3x)
+              cbreak                  curs_inopts(3x)
+              chgat                   curs_attr(3x)
+              clear                   curs_clear(3x)
+              clearok                 curs_outopts(3x)
+              clrtobot                curs_clear(3x)
+              clrtoeol                curs_clear(3x)
+              color_content           curs_color(3x)
+              color_set               curs_attr(3x)
+              copywin                 curs_overlay(3x)
+              curs_set                curs_kernel(3x)
+              curses_version          curs_extend(3x)*
+              def_prog_mode           curs_kernel(3x)
+              def_shell_mode          curs_kernel(3x)
+              define_key              define_key(3x)*
+              del_curterm             curs_terminfo(3x)
+              delay_output            curs_util(3x)
+              delch                   curs_delch(3x)
+              deleteln                curs_deleteln(3x)
+              delscreen               curs_initscr(3x)
+              delwin                  curs_window(3x)
+              derwin                  curs_window(3x)
+              doupdate                curs_refresh(3x)
+              dupwin                  curs_window(3x)
+              echo                    curs_inopts(3x)
+              echo_wchar              curs_add_wch(3x)
+              echochar                curs_addch(3x)
+              endwin                  curs_initscr(3x)
+              erase                   curs_clear(3x)
+
+              erasechar               curs_termattrs(3x)
+              erasewchar              curs_termattrs(3x)
+              filter                  curs_util(3x)
+              flash                   curs_beep(3x)
+              flushinp                curs_util(3x)
+              get_wch                 curs_get_wch(3x)
+              get_wstr                curs_get_wstr(3x)
+              getattrs                curs_attr(3x)
+              getbegx                 curs_legacy(3x)*
+              getbegy                 curs_legacy(3x)*
+              getbegyx                curs_getyx(3x)
+              getbkgd                 curs_bkgd(3x)
+              getbkgrnd               curs_bkgrnd(3x)
+              getcchar                curs_getcchar(3x)
+              getch                   curs_getch(3x)
+              getcurx                 curs_legacy(3x)*
+              getcury                 curs_legacy(3x)*
+              getmaxx                 curs_legacy(3x)*
+              getmaxy                 curs_legacy(3x)*
+              getmaxyx                curs_getyx(3x)
+              getmouse                curs_mouse(3x)*
+              getn_wstr               curs_get_wstr(3x)
+              getnstr                 curs_getstr(3x)
+              getparx                 curs_legacy(3x)*
+              getpary                 curs_legacy(3x)*
+              getparyx                curs_getyx(3x)
+              getstr                  curs_getstr(3x)
+              getsyx                  curs_kernel(3x)
+              getwin                  curs_util(3x)
+              getyx                   curs_getyx(3x)
+              halfdelay               curs_inopts(3x)
+              has_colors              curs_color(3x)
+              has_ic                  curs_termattrs(3x)
+              has_il                  curs_termattrs(3x)
+              has_key                 curs_getch(3x)*
+              hline                   curs_border(3x)
+              hline_set               curs_border_set(3x)
+              idcok                   curs_outopts(3x)
+              idlok                   curs_outopts(3x)
+              immedok                 curs_outopts(3x)
+              in_wch                  curs_in_wch(3x)
+              in_wchnstr              curs_in_wchstr(3x)
+              in_wchstr               curs_in_wchstr(3x)
+              inch                    curs_inch(3x)
+              inchnstr                curs_inchstr(3x)
+              inchstr                 curs_inchstr(3x)
+              init_color              curs_color(3x)
+              init_pair               curs_color(3x)
+              initscr                 curs_initscr(3x)
+              innstr                  curs_instr(3x)
+              innwstr                 curs_inwstr(3x)
+              ins_nwstr               curs_ins_wstr(3x)
+              ins_wch                 curs_ins_wch(3x)
+              ins_wstr                curs_ins_wstr(3x)
+              insch                   curs_insch(3x)
+              insdelln                curs_deleteln(3x)
+              insertln                curs_deleteln(3x)
+              insnstr                 curs_insstr(3x)
+              insstr                  curs_insstr(3x)
+              instr                   curs_instr(3x)
+              intrflush               curs_inopts(3x)
+              inwstr                  curs_inwstr(3x)
+              is_cleared              curs_opaque(3x)*
+              is_idcok                curs_opaque(3x)*
+              is_idlok                curs_opaque(3x)*
+
+              is_immedok              curs_opaque(3x)*
+              is_keypad               curs_opaque(3x)*
+              is_leaveok              curs_opaque(3x)*
+              is_linetouched          curs_touch(3x)
+              is_nodelay              curs_opaque(3x)*
+              is_notimeout            curs_opaque(3x)*
+              is_scrollok             curs_opaque(3x)*
+              is_syncok               curs_opaque(3x)*
+              is_term_resized         resizeterm(3x)*
+              is_wintouched           curs_touch(3x)
+              isendwin                curs_initscr(3x)
+              key_defined             key_defined(3x)*
+              key_name                curs_util(3x)
+              keybound                keybound(3x)*
+              keyname                 curs_util(3x)
+              keyok                   keyok(3x)*
+              keypad                  curs_inopts(3x)
+              killchar                curs_termattrs(3x)
+              killwchar               curs_termattrs(3x)
+              leaveok                 curs_outopts(3x)
+              longname                curs_termattrs(3x)
+              mcprint                 curs_print(3x)*
+              meta                    curs_inopts(3x)
+              mouse_trafo             curs_mouse(3x)*
+              mouseinterval           curs_mouse(3x)*
+              mousemask               curs_mouse(3x)*
+              move                    curs_move(3x)
+              mvadd_wch               curs_add_wch(3x)
+              mvadd_wchnstr           curs_add_wchstr(3x)
+              mvadd_wchstr            curs_add_wchstr(3x)
+              mvaddch                 curs_addch(3x)
+              mvaddchnstr             curs_addchstr(3x)
+              mvaddchstr              curs_addchstr(3x)
+              mvaddnstr               curs_addstr(3x)
+              mvaddnwstr              curs_addwstr(3x)
+              mvaddstr                curs_addstr(3x)
+              mvaddwstr               curs_addwstr(3x)
+              mvchgat                 curs_attr(3x)
+              mvcur                   curs_terminfo(3x)
+              mvdelch                 curs_delch(3x)
+              mvderwin                curs_window(3x)
+              mvget_wch               curs_get_wch(3x)
+              mvget_wstr              curs_get_wstr(3x)
+              mvgetch                 curs_getch(3x)
+              mvgetn_wstr             curs_get_wstr(3x)
+              mvgetnstr               curs_getstr(3x)
+              mvgetstr                curs_getstr(3x)
+              mvhline                 curs_border(3x)
+              mvhline_set             curs_border_set(3x)
+              mvin_wch                curs_in_wch(3x)
+              mvin_wchnstr            curs_in_wchstr(3x)
+              mvin_wchstr             curs_in_wchstr(3x)
+              mvinch                  curs_inch(3x)
+              mvinchnstr              curs_inchstr(3x)
+              mvinchstr               curs_inchstr(3x)
+              mvinnstr                curs_instr(3x)
+              mvinnwstr               curs_inwstr(3x)
+              mvins_nwstr             curs_ins_wstr(3x)
+              mvins_wch               curs_ins_wch(3x)
+              mvins_wstr              curs_ins_wstr(3x)
+              mvinsch                 curs_insch(3x)
+              mvinsnstr               curs_insstr(3x)
+              mvinsstr                curs_insstr(3x)
+              mvinstr                 curs_instr(3x)
+              mvinwstr                curs_inwstr(3x)
+
+              mvprintw                curs_printw(3x)
+              mvscanw                 curs_scanw(3x)
+              mvvline                 curs_border(3x)
+              mvvline_set             curs_border_set(3x)
+              mvwadd_wch              curs_add_wch(3x)
+              mvwadd_wchnstr          curs_add_wchstr(3x)
+              mvwadd_wchstr           curs_add_wchstr(3x)
+              mvwaddch                curs_addch(3x)
+              mvwaddchnstr            curs_addchstr(3x)
+              mvwaddchstr             curs_addchstr(3x)
+              mvwaddnstr              curs_addstr(3x)
+              mvwaddnwstr             curs_addwstr(3x)
+              mvwaddstr               curs_addstr(3x)
+              mvwaddwstr              curs_addwstr(3x)
+              mvwchgat                curs_attr(3x)
+              mvwdelch                curs_delch(3x)
+              mvwget_wch              curs_get_wch(3x)
+              mvwget_wstr             curs_get_wstr(3x)
+              mvwgetch                curs_getch(3x)
+              mvwgetn_wstr            curs_get_wstr(3x)
+              mvwgetnstr              curs_getstr(3x)
+              mvwgetstr               curs_getstr(3x)
+              mvwhline                curs_border(3x)
+              mvwhline_set            curs_border_set(3x)
+              mvwin                   curs_window(3x)
+              mvwin_wch               curs_in_wch(3x)
+              mvwin_wchnstr           curs_in_wchstr(3x)
+              mvwin_wchstr            curs_in_wchstr(3x)
+              mvwinch                 curs_inch(3x)
+              mvwinchnstr             curs_inchstr(3x)
+              mvwinchstr              curs_inchstr(3x)
+              mvwinnstr               curs_instr(3x)
+              mvwinnwstr              curs_inwstr(3x)
+              mvwins_nwstr            curs_ins_wstr(3x)
+              mvwins_wch              curs_ins_wch(3x)
+              mvwins_wstr             curs_ins_wstr(3x)
+              mvwinsch                curs_insch(3x)
+              mvwinsnstr              curs_insstr(3x)
+              mvwinsstr               curs_insstr(3x)
+              mvwinstr                curs_instr(3x)
+              mvwinwstr               curs_inwstr(3x)
+              mvwprintw               curs_printw(3x)
+              mvwscanw                curs_scanw(3x)
+              mvwvline                curs_border(3x)
+              mvwvline_set            curs_border_set(3x)
+              napms                   curs_kernel(3x)
+              newpad                  curs_pad(3x)
+              newterm                 curs_initscr(3x)
+              newwin                  curs_window(3x)
+              nl                      curs_outopts(3x)
+              nocbreak                curs_inopts(3x)
+              nodelay                 curs_inopts(3x)
+              noecho                  curs_inopts(3x)
+              nofilter                curs_util(3x)*
+              nonl                    curs_outopts(3x)
+              noqiflush               curs_inopts(3x)
+              noraw                   curs_inopts(3x)
+              notimeout               curs_inopts(3x)
+              overlay                 curs_overlay(3x)
+              overwrite               curs_overlay(3x)
+              pair_content            curs_color(3x)
+              pechochar               curs_pad(3x)
+              pnoutrefresh            curs_pad(3x)
+              prefresh                curs_pad(3x)
+              printw                  curs_printw(3x)
+
+              putp                    curs_terminfo(3x)
+              putwin                  curs_util(3x)
+              qiflush                 curs_inopts(3x)
+              raw                     curs_inopts(3x)
+              redrawwin               curs_refresh(3x)
+              refresh                 curs_refresh(3x)
+              reset_prog_mode         curs_kernel(3x)
+              reset_shell_mode        curs_kernel(3x)
+              resetty                 curs_kernel(3x)
+              resizeterm              resizeterm(3x)*
+              restartterm             curs_terminfo(3x)
+              ripoffline              curs_kernel(3x)
+              savetty                 curs_kernel(3x)
+              scanw                   curs_scanw(3x)
+              scr_dump                curs_scr_dump(3x)
+              scr_init                curs_scr_dump(3x)
+              scr_restore             curs_scr_dump(3x)
+              scr_set                 curs_scr_dump(3x)
+              scrl                    curs_scroll(3x)
+              scroll                  curs_scroll(3x)
+              scrollok                curs_outopts(3x)
+              set_curterm             curs_terminfo(3x)
+              set_term                curs_initscr(3x)
+              setcchar                curs_getcchar(3x)
+              setscrreg               curs_outopts(3x)
+              setsyx                  curs_kernel(3x)
+              setterm                 curs_terminfo(3x)
+              setupterm               curs_terminfo(3x)
+              slk_attr                curs_slk(3x)*
+              slk_attr_off            curs_slk(3x)
+              slk_attr_on             curs_slk(3x)
+              slk_attr_set            curs_slk(3x)
+              slk_attroff             curs_slk(3x)
+              slk_attron              curs_slk(3x)
+              slk_attrset             curs_slk(3x)
+              slk_clear               curs_slk(3x)
+              slk_color               curs_slk(3x)
+              slk_init                curs_slk(3x)
+              slk_label               curs_slk(3x)
+              slk_noutrefresh         curs_slk(3x)
+              slk_refresh             curs_slk(3x)
+              slk_restore             curs_slk(3x)
+              slk_set                 curs_slk(3x)
+              slk_touch               curs_slk(3x)
+              standend                curs_attr(3x)
+              standout                curs_attr(3x)
+              start_color             curs_color(3x)
+              subpad                  curs_pad(3x)
+              subwin                  curs_window(3x)
+              syncok                  curs_window(3x)
+              term_attrs              curs_termattrs(3x)
+              termattrs               curs_termattrs(3x)
+              termname                curs_termattrs(3x)
+              tgetent                 curs_termcap(3x)
+              tgetflag                curs_termcap(3x)
+              tgetnum                 curs_termcap(3x)
+              tgetstr                 curs_termcap(3x)
+              tgoto                   curs_termcap(3x)
+              tigetflag               curs_terminfo(3x)
+              tigetnum                curs_terminfo(3x)
+              tigetstr                curs_terminfo(3x)
+              timeout                 curs_inopts(3x)
+              touchline               curs_touch(3x)
+              touchwin                curs_touch(3x)
+              tparm                   curs_terminfo(3x)
+
+              tputs                   curs_termcap(3x)
+              tputs                   curs_terminfo(3x)
+              trace                   curs_trace(3x)*
+              typeahead               curs_inopts(3x)
+              unctrl                  curs_util(3x)
+              unget_wch               curs_get_wch(3x)
+              ungetch                 curs_getch(3x)
+              ungetmouse              curs_mouse(3x)*
+              untouchwin              curs_touch(3x)
+              use_default_colors      default_colors(3x)*
+              use_env                 curs_util(3x)
+              use_extended_names      curs_extend(3x)*
+              use_legacy_coding       legacy_coding(3x)*
+              vid_attr                curs_terminfo(3x)
+              vid_puts                curs_terminfo(3x)
+              vidattr                 curs_terminfo(3x)
+              vidputs                 curs_terminfo(3x)
+              vline                   curs_border(3x)
+              vline_set               curs_border_set(3x)
+              vw_printw               curs_printw(3x)
+              vw_scanw                curs_scanw(3x)
+              vwprintw                curs_printw(3x)
+              vwscanw                 curs_scanw(3x)
+              wadd_wch                curs_add_wch(3x)
+              wadd_wchnstr            curs_add_wchstr(3x)
+              wadd_wchstr             curs_add_wchstr(3x)
+              waddch                  curs_addch(3x)
+              waddchnstr              curs_addchstr(3x)
+              waddchstr               curs_addchstr(3x)
+              waddnstr                curs_addstr(3x)
+              waddnwstr               curs_addwstr(3x)
+              waddstr                 curs_addstr(3x)
+              waddwstr                curs_addwstr(3x)
+              wattr_get               curs_attr(3x)
+              wattr_off               curs_attr(3x)
+              wattr_on                curs_attr(3x)
+              wattr_set               curs_attr(3x)
+              wattroff                curs_attr(3x)
+              wattron                 curs_attr(3x)
+              wattrset                curs_attr(3x)
+              wbkgd                   curs_bkgd(3x)
+              wbkgdset                curs_bkgd(3x)
+              wbkgrnd                 curs_bkgrnd(3x)
+              wbkgrndset              curs_bkgrnd(3x)
+              wborder                 curs_border(3x)
+              wborder_set             curs_border_set(3x)
+              wchgat                  curs_attr(3x)
+              wclear                  curs_clear(3x)
+              wclrtobot               curs_clear(3x)
+              wclrtoeol               curs_clear(3x)
+              wcolor_set              curs_attr(3x)
+              wcursyncup              curs_window(3x)
+              wdelch                  curs_delch(3x)
+              wdeleteln               curs_deleteln(3x)
+              wecho_wchar             curs_add_wch(3x)
+              wechochar               curs_addch(3x)
+              wenclose                curs_mouse(3x)*
+              werase                  curs_clear(3x)
+              wget_wch                curs_get_wch(3x)
+              wget_wstr               curs_get_wstr(3x)
+              wgetbkgrnd              curs_bkgrnd(3x)
+              wgetch                  curs_getch(3x)
+              wgetn_wstr              curs_get_wstr(3x)
+              wgetnstr                curs_getstr(3x)
+              wgetstr                 curs_getstr(3x)
+
+              whline                  curs_border(3x)
+              whline_set              curs_border_set(3x)
+              win_wch                 curs_in_wch(3x)
+              win_wchnstr             curs_in_wchstr(3x)
+              win_wchstr              curs_in_wchstr(3x)
+              winch                   curs_inch(3x)
+              winchnstr               curs_inchstr(3x)
+              winchstr                curs_inchstr(3x)
+              winnstr                 curs_instr(3x)
+              winnwstr                curs_inwstr(3x)
+              wins_nwstr              curs_ins_wstr(3x)
+              wins_wch                curs_ins_wch(3x)
+              wins_wstr               curs_ins_wstr(3x)
+              winsch                  curs_insch(3x)
+              winsdelln               curs_deleteln(3x)
+              winsertln               curs_deleteln(3x)
+              winsnstr                curs_insstr(3x)
+              winsstr                 curs_insstr(3x)
+              winstr                  curs_instr(3x)
+              winwstr                 curs_inwstr(3x)
+              wmouse_trafo            curs_mouse(3x)*
+              wmove                   curs_move(3x)
+              wnoutrefresh            curs_refresh(3x)
+              wprintw                 curs_printw(3x)
+              wredrawln               curs_refresh(3x)
+              wrefresh                curs_refresh(3x)
+              wresize                 wresize(3x)*
+              wscanw                  curs_scanw(3x)
+              wscrl                   curs_scroll(3x)
+              wsetscrreg              curs_outopts(3x)
+              wstandend               curs_attr(3x)
+              wstandout               curs_attr(3x)
+              wsyncdown               curs_window(3x)
+              wsyncup                 curs_window(3x)
+              wtimeout                curs_inopts(3x)
+              wtouchln                curs_touch(3x)
+              wunctrl                 curs_util(3x)
+              wvline                  curs_border(3x)
+              wvline_set              curs_border_set(3x)
+
+
+
+

RETURN VALUE

+       Routines that return an integer return  ERR  upon  failure
+       and  an  integer value other than ERR upon successful com-
+       pletion, unless otherwise noted in  the  routine  descrip-
+       tions.
+
+       All  macros  return  the  value  of  the w version, except
+       setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx.  The
+       return  values  of setscrreg, wsetscrreg, getyx, getbegyx,
+       and getmaxyx are undefined (i.e., these should not be used
+       as the right-hand side of assignment statements).
+
+       Routines that return pointers return NULL on error.
+
+
+
+

ENVIRONMENT

+       The following environment symbols are useful for customiz-
+       ing the runtime behavior of the ncurses library.  The most
+       important ones have been already discussed in detail.
+
+       BAUDRATE
+            The  debugging library checks this environment symbol
+            when the application has redirected output to a file.
+            The  symbol's numeric value is used for the baudrate.
+            If no value is found, ncurses uses 9600.  This allows
+            testers  to construct repeatable test-cases that take
+            into account costs that depend on baudrate.
+
+       CC   When set, change occurrences of the command_character
+            (i.e.,  the  cmdch capability) of the loaded terminfo
+            entries to the value of this symbol.  Very  few  ter-
+            minfo entries provide this feature.
+
+       COLUMNS
+            Specify  the  width  of  the  screen  in  characters.
+            Applications running in a windowing environment  usu-
+            ally  are  able  to obtain the width of the window in
+            which they are executing.   If  neither  the  COLUMNS
+            value  nor  the  terminal's screen size is available,
+            ncurses uses the size which may be specified  in  the
+            terminfo database (i.e., the cols capability).
+
+            It  is  important that your application use a correct
+            size for the screen.  This  is  not  always  possible
+            because  your  application  may  be running on a host
+            which does not honor NAWS (Negotiations About  Window
+            Size),  or  because  you  are  temporarily running as
+            another user.  However, setting COLUMNS and/or  LINES
+            overrides  the  library's  use  of  the  screen  size
+            obtained from the operating system.
+
+            Either COLUMNS or  LINES  symbols  may  be  specified
+            independently.   This  is mainly useful to circumvent
+            legacy misfeatures of  terminal  descriptions,  e.g.,
+            xterm which commonly specifies a 65 line screen.  For
+            best results, lines and cols should not be  specified
+            in a terminal description for terminals which are run
+            as emulations.
+
+            Use the use_env function to disable all use of exter-
+            nal environment (including system calls) to determine
+            the screen size.
+
+       ESCDELAY
+            Specifies the total time, in milliseconds, for  which
+            ncurses  will  await  a  character  sequence, e.g., a
+            function key.  The default value, 1000  milliseconds,
+            is enough for most uses.  However, it is made a vari-
+            able to accommodate unusual applications.
+
+            The most common instance where you may wish to change
+            this  value is to work with slow hosts, e.g., running
+            on a network.  If the  host  cannot  read  characters
+            rapidly  enough,  it  will have the same effect as if
+            the terminal did not send characters rapidly  enough.
+            The library will still see a timeout.
+
+            Note  that xterm mouse events are built up from char-
+            acter sequences received from  the  xterm.   If  your
+            application makes heavy use of multiple-clicking, you
+            may wish to lengthen this default value  because  the
+            timeout  applies to the composed multi-click event as
+            well as the individual clicks.
+
+            In addition to the environment variable, this  imple-
+            mentation  provides  a  global variable with the same
+            name.  Portable applications should not rely upon the
+            presence  of ESCDELAY in either form, but setting the
+            environment variable rather than the global  variable
+            does  not  create problems when compiling an applica-
+            tion.
+
+       HOME Tells ncurses where your home directory is.  That  is
+            where  it  may  read  and  write  auxiliary  terminal
+            descriptions:
+
+            $HOME/.termcap
+            $HOME/.terminfo
+
+       LINES
+            Like COLUMNS, specify the height  of  the  screen  in
+            characters.   See COLUMNS for a detailed description.
+
+       MOUSE_BUTTONS_123
+            This applies only to the OS/2 EMX port.  It specifies
+            the  order  of  buttons on the mouse.  OS/2 numbers a
+            3-button mouse inconsistently from other platforms:
+
+            1 = left
+            2 = right
+            3 = middle.
+
+            This symbol lets you customize the mouse.  The symbol
+            must  be three numeric digits 1-3 in any order, e.g.,
+            123 or 321.  If it is  not  specified,  ncurses  uses
+            132.
+
+       NCURSES_ASSUMED_COLORS
+            Override  the  compiled-in assumption that the termi-
+            nal's  default   colors   are   white-on-black   (see
+            default_colors(3x)).   You may set the foreground and
+            background color values with this  environment  vari-
+            able  by  proving  a 2-element list: foreground,back-
+            ground.  For example, to tell ncurses to  not  assume
+            anything  about  the colors, set this to "-1,-1".  To
+            make it green-on-black, set it to "2,0".   Any  posi-
+            tive value from zero to the terminfo max_colors value
+            is allowed.
+
+       NCURSES_GPM_TERMS
+            This applies only to ncurses configured  to  use  the
+            GPM interface.
+
+            If present, the environment variable is a list of one
+            or more terminal names against which the  TERM  envi-
+            ronment  variable is matched.  Setting it to an empty
+            value disables the GPM interface; using the  built-in
+            support for xterm, etc.
+
+            If  the  environment variable is absent, ncurses will
+            attempt to open GPM if TERM contains "linux".
+
+       NCURSES_NO_HARD_TABS
+            Ncurses may use tabs as part of the  cursor  movement
+            optimization.   In  some  cases, your terminal driver
+            may not handle these properly.  Set this  environment
+            variable to disable the feature.  You can also adjust
+            your stty settings to avoid the problem.
+
+       NCURSES_NO_MAGIC_COOKIES
+            Some  terminals  use  a  magic-cookie  feature  which
+            requires  special  handling  to make highlighting and
+            other video attributes  display  properly.   You  can
+            suppress  the  highlighting entirely for these termi-
+            nals by setting this environment variable.
+
+       NCURSES_NO_PADDING
+            Most of the terminal  descriptions  in  the  terminfo
+            database  are  written for real "hardware" terminals.
+            Many people use terminal emulators  which  run  in  a
+            windowing    environment    and    use   curses-based
+            applications.  Terminal emulators can  duplicate  all
+            of  the important aspects of a hardware terminal, but
+            they do not have the  same  limitations.   The  chief
+            limitation of a hardware terminal from the standpoint
+            of your application is the  management  of  dataflow,
+            i.e.,  timing.   Unless a hardware terminal is inter-
+            faced into a terminal concentrator (which  does  flow
+            control),   it  (or  your  application)  must  manage
+            dataflow, preventing overruns.  The cheapest solution
+            (no  hardware cost) is for your program to do this by
+            pausing  after  operations  that  the  terminal  does
+            slowly, such as clearing the display.
+
+            As  a  result,  many terminal descriptions (including
+            the vt100) have delay times embedded.  You  may  wish
+            to  use  these  descriptions, but not want to pay the
+            performance penalty.
+
+            Set the NCURSES_NO_PADDING symbol to disable all  but
+            mandatory  padding.   Mandatory  padding is used as a
+            part of special control sequences such as flash.
+
+       NCURSES_NO_SETBUF
+            Normally ncurses enables buffered output during  ter-
+            minal  initialization.   This  is  done  (as  in SVr4
+            curses) for performance reasons.   For  testing  pur-
+            poses, both of ncurses and certain applications, this
+            feature    is    made    optional.     Setting    the
+            NCURSES_NO_SETBUF variable disables output buffering,
+            leaving the output  in  the  original  (usually  line
+            buffered) mode.
+
+       NCURSES_NO_UTF8_ACS
+            During initialization, the ncurses library checks for
+            special cases where VT100 line-drawing (and the  cor-
+            responding   alternate  character  set  capabilities)
+            described in the terminfo are known  to  be  missing.
+            Specifically,  when  running  in  a UTF-8 locale, the
+            Linux console emulator and  the  GNU  screen  program
+            ignore  these.   Ncurses  checks the TERM environment
+            variable for these.  For  other  special  cases,  you
+            should  set  this  environment  variable.  Doing this
+            tells ncurses to use Unicode values which  correspond
+            to the VT100 line-drawing glyphs.  That works for the
+            special cases cited, and is likely to work for termi-
+            nal emulators.
+
+            When  setting  this  variable, you should set it to a
+            nonzero value.  Setting it to zero (or to  a  nonnum-
+            ber) disables the special check for Linux and screen.
+
+       NCURSES_TRACE
+            During initialization, the ncurses debugging  library
+            checks  the  NCURSES_TRACE symbol.  If it is defined,
+            to a numeric value, ncurses calls the trace function,
+            using that value as the argument.
+
+            The  argument  values, which are defined in curses.h,
+            provide several types of information.   When  running
+            with  traces enabled, your application will write the
+            file trace to the current directory.
+
+       TERM Denotes your terminal type.  Each  terminal  type  is
+            distinct, though many are similar.
+
+       TERMCAP
+            If the ncurses library has been configured with term-
+            cap support, ncurses  will  check  for  a  terminal's
+            description in termcap form if it is not available in
+            the terminfo database.
+
+            The  TERMCAP  symbol  contains  either   a   terminal
+            description  (with  newlines stripped out), or a file
+            name telling where the  information  denoted  by  the
+            TERM  symbol  exists.   In  either  case,  setting it
+            directs ncurses to ignore the usual  place  for  this
+            information, e.g., /etc/termcap.
+
+       TERMINFO
+            Overrides the directory in which ncurses searches for
+            your terminal description.  This is the simplest, but
+            not  the  only way to change the list of directories.
+            The complete list of directories in order follows:
+
+            -  the last directory to which ncurses wrote, if any,
+               is searched first
+
+            -  the directory specified by the TERMINFO symbol
+
+            -  $HOME/.terminfo
+
+            -  directories listed in the TERMINFO_DIRS symbol
+
+            -  one or more directories whose names are configured
+               and  compiled  into  the  ncurses  library,  e.g.,
+               /usr/share/terminfo
+
+       TERMINFO_DIRS
+            Specifies  a list of directories to search for termi-
+            nal descriptions.  The list is  separated  by  colons
+            (i.e.,  ":") on Unix, semicolons on OS/2 EMX.  All of
+            the terminal descriptions are in terminfo form, which
+            makes  a  subdirectory  named for the first letter of
+            the terminal names therein.
+
+       TERMPATH
+            If TERMCAP does not hold a  file  name  then  ncurses
+            checks  the TERMPATH symbol.  This is a list of file-
+            names separated by spaces or colons  (i.e.,  ":")  on
+            Unix, semicolons on OS/2 EMX.  If the TERMPATH symbol
+            is not set, ncurses looks in the files  /etc/termcap,
+            /usr/share/misc/termcap  and  $HOME/.termcap, in that
+            order.
+
+       The library may be configured to disregard  the  following
+       variables  when  the current user is the superuser (root),
+       or if the application uses setuid or  setgid  permissions:
+       $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
+
+
+
+

ALTERNATE CONFIGURATIONS

+       Several  different  configurations are possible, depending
+       on  the  configure  script  options  used  when   building
+       ncurses.   There  are a few main options whose effects are
+       visible to the applications developer using ncurses:
+
+       --disable-overwrite
+            The standard include for ncurses is as noted in  SYN-
+            OPSIS:
+
+            #include <curses.h>
+
+            This  option is used to avoid filename conflicts when
+            ncurses is not the main implementation of  curses  of
+            the  computer.   If  ncurses  is  installed disabling
+            overwrite, it puts its  headers  in  a  subdirectory,
+            e.g.,
+
+            #include <ncurses/curses.h>
+
+            It  also  omits a symbolic link which would allow you
+            to use -lcurses to build executables.
+
+       --enable-widec
+            The configure script renames the library and (if  the
+            --disable-overwrite  option  is used) puts the header
+            files  in  a  different  subdirectory.   All  of  the
+            library  names  have  a  "w"  appended to them, i.e.,
+            instead of
+
+            -lncurses
+
+            you link with
+
+            -lncursesw
+
+            You must also define _XOPEN_SOURCE_EXTENDED when com-
+            piling  for  the  wide-character  library  to use the
+            extended (wide-character)  functions.   The  curses.h
+            file   which  is  installed  for  the  wide-character
+            library is designed to be compatible with the  normal
+            library's header.  Only the size of the WINDOW struc-
+            ture differs, and very few applications require  more
+            than  a  pointer  to  WINDOWs.   If  the  headers are
+            installed  allowing  overwrite,  the   wide-character
+            library's  headers should be installed last, to allow
+            applications to be built using  either  library  from
+            the same set of headers.
+
+       --with-shared
+
+       --with-normal
+
+       --with-debug
+
+       --with-profile
+            The  shared  and normal (static) library names differ
+            by their  suffixes,  e.g.,  libncurses.so  and  libn-
+            curses.a.   The  debug  and profiling libraries add a
+            "_g" and a "_p" to the root names respectively, e.g.,
+            libncurses_g.a and libncurses_p.a.
+
+       --with-trace
+            The  trace  function  normally  resides  in the debug
+            library, but it is sometimes useful to configure this
+            in  the  shared  library.   Configure  scripts should
+            check for the function's existence rather than assum-
+            ing it is always in the debug library.
+
+
+
+

FILES

+       /usr/share/tabset
+            directory  containing  initialization  files  for the
+            terminal capability database /usr/share/terminfo ter-
+            minal capability database
+
+
+
+

SEE ALSO

+       terminfo(5)  and  related  pages whose names begin "curs_"
+       for detailed routine descriptions.
+
+
+
+

EXTENSIONS

+       The  ncurses  library  can  be  compiled  with  an  option
+       (-DUSE_GETCAP) that falls back to the old-style /etc/term-
+       cap file if the terminal setup code cannot find a terminfo
+       entry  corresponding  to TERM.  Use of this feature is not
+       recommended, as it essentially includes an entire  termcap
+       compiler  in the ncurses startup code, at significant cost
+       in core and startup cycles.
+
+       The ncurses  library  includes  facilities  for  capturing
+       mouse  events on certain terminals (including xterm).  See
+       the curs_mouse(3x) manual page for details.
+
+       The ncurses library includes facilities for responding  to
+       window  resizing  events,  e.g., when running in an xterm.
+       See the resizeterm(3x) and wresize(3x)  manual  pages  for
+       details.   In addition, the library may be configured with
+       a SIGWINCH handler.
+
+       The ncurses library extends the fixed set of function  key
+       capabilities  of  terminals  by  allowing  the application
+       designer to define additional key  sequences  at  runtime.
+       See the define_key(3x) key_defined(3x), and keyok(3x) man-
+       ual pages for details.
+
+       The ncurses library can exploit the capabilities of termi-
+       nals  which  implement the ISO-6429 SGR 39 and SGR 49 con-
+       trols, which allow an application to reset the terminal to
+       its  original  foreground and background colors.  From the
+       users' perspective, the application is able to  draw  col-
+       ored  text  on  a  background  whose color is set indepen-
+       dently, providing better  control  over  color  contrasts.
+       See the default_colors(3x) manual page for details.
+
+       The  ncurses  library  includes  a  function for directing
+       application output to a printer attached to  the  terminal
+       device.  See the curs_print(3x) manual page for details.
+
+
+
+

PORTABILITY

+       The  ncurses  library is intended to be BASE-level confor-
+       mant with XSI Curses.  The EXTENDED XSI Curses functional-
+       ity (including color support) is supported.
+
+       A  small  number of local differences (that is, individual
+       differences between the XSI Curses and ncurses calls)  are
+       described  in  PORTABILITY  sections  of  the  library man
+       pages.
+
+       This implementation also contains several extensions:
+
+            The routine has_key is not part of XPG4,  nor  is  it
+            present  in SVr4.  See the curs_getch(3x) manual page
+            for details.
+
+            The routine slk_attr is not part of XPG4, nor  is  it
+            present  in  SVr4.   See the curs_slk(3x) manual page
+            for details.
+
+            The routines getmouse,  mousemask,  ungetmouse,  mou-
+            seinterval,  and wenclose relating to mouse interfac-
+            ing are not part of XPG4, nor  are  they  present  in
+            SVr4.    See   the  curs_mouse(3x)  manual  page  for
+            details.
+
+            The routine mcprint was not present in  any  previous
+            curses implementation.  See the curs_print(3x) manual
+            page for details.
+
+            The routine wresize is not part of XPG4,  nor  is  it
+            present in SVr4.  See the wresize(3x) manual page for
+            details.
+
+            The WINDOW structure's internal details can be hidden
+            from  application  programs.  See curs_opaque(3x) for
+            the discussion of is_scrollok, etc.
+
+       In historic curses versions, delays embedded in the  capa-
+       bilities cr, ind, cub1, ff and tab activated corresponding
+       delay bits in the UNIX tty driver.   In  this  implementa-
+       tion,  all  padding  is  done  by sending NUL bytes.  This
+       method is slightly more expensive, but narrows the  inter-
+       face  to  the  UNIX kernel significantly and increases the
+       package's portability correspondingly.
+
+
+
+

NOTES

+       The header  file  <curses.h>  automatically  includes  the
+       header files <stdio.h> and <unctrl.h>.
+
+       If  standard  output from a ncurses program is re-directed
+       to something which is not a tty, screen  updates  will  be
+       directed to standard error.  This was an undocumented fea-
+       ture of AT&T System V Release 3 curses.
+
+
+
+

AUTHORS

+       Zeyd M. Ben-Halim, Eric  S.  Raymond,  Thomas  E.  Dickey.
+       Based on pcurses by Pavel Curtis.
+
+
+
+                                                            ncurses(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/panel.3x.html b/ncurses/doc/html/man/panel.3x.html new file mode 100644 index 0000000..a5b5a06 --- /dev/null +++ b/ncurses/doc/html/man/panel.3x.html @@ -0,0 +1,241 @@ + + + + +panel 3x + + + + +

panel 3x

+
+
+
+panel(3x)                                                     panel(3x)
+
+
+
+
+
+

NAME

+       panel - panel stack extension for curses
+
+
+
+

SYNOPSIS

+       #include <panel.h>
+
+       cc [flags] sourcefiles -lpanel -lncurses
+
+       PANEL *new_panel(WINDOW *win)
+       int bottom_panel(PANEL *pan)
+       int top_panel(PANEL *pan)
+       int show_panel(PANEL *pan)
+       void update_panels();
+       int hide_panel(PANEL *pan)
+       WINDOW *panel_window(const PANEL *pan)
+       int replace_panel(PANEL *pan, WINDOW *window)
+       int move_panel(PANEL *pan, int starty, int startx)
+       int panel_hidden(const PANEL *pan)
+       PANEL *panel_above(const PANEL *pan)
+       PANEL *panel_below(const PANEL *pan)
+       int set_panel_userptr(PANEL *pan, const void *ptr)
+       const void *panel_userptr(const PANEL *pan)
+       int del_panel(PANEL *pan)
+
+
+
+

DESCRIPTION

+       Panels  are  curses(3x)  windows with the added feature of
+       depth.  Panel functions allow the use of  stacked  windows
+       and  ensure  the  proper  portions  of each window and the
+       curses stdscr window are hidden or displayed  when  panels
+       are  added,  moved,  modified or removed.  The set of cur-
+       rently visible panels is the stack of panels.  The  stdscr
+       window  is  beneath all panels, and is not considered part
+       of the stack.
+
+       A window is associated with every panel.  The  panel  rou-
+       tines  enable  you to create, move, hide, and show panels,
+       as well as position a panel at any desired location in the
+       stack.
+
+       Panel routines are a functional layer added to curses(3x),
+       make only high-level curses calls, and work anywhere  ter-
+       minfo curses does.
+
+
+
+

FUNCTIONS

+       new_panel(win)
+              allocates   a   PANEL structure, associates it with
+              win, places the panel  on  the  top  of  the  stack
+              (causes   it  to   be   displayed  above  any other
+              panel) and returns a pointer to the new panel.
+
+       update_panels()
+              refreshes the virtual screen to reflect  the  rela-
+              tions between the panels in the stack, but does not
+              call doupdate() to  refresh  the  physical  screen.
+              Use this function and not wrefresh or wnoutrefresh.
+              update_panels() may be called more than once before
+              a  call  to doupdate(), but doupdate() is the func-
+              tion responsible for updating the physical  screen.
+
+       del_panel(pan)
+              removes the given panel from the  stack and deallo-
+              cates the PANEL structure (but not  its  associated
+              window).
+
+       hide_panel(pan)
+              removes  the  given  panel from the panel stack and
+              thus hides it from view. The PANEL structure is not
+              lost, merely removed from the stack.
+
+       panel_hidden(pan)
+              returns  TRUE  if  the panel is in the panel stack,
+              FALSE if it  is  not.   If  the  panel  is  a  null
+              pointer, return ERR.
+
+       show_panel(pan)
+              makes  a  hidden panel visible by placing it on top
+              of the panels in the panel stack. See COMPATIBILITY
+              below.
+
+       top_panel(pan)
+              puts  the  given visible panel on top of all panels
+              in the stack.  See COMPATIBILITY below.
+
+       bottom_panel(pan)
+              puts panel at the bottom of all panels.
+
+       move_panel(pan,starty,startx)
+              moves the given panel window so that its upper-left
+              corner  is  at  starty, startx.  It does not change
+              the position of the panel in the stack.  Be sure to
+              use  this  function,  not  mvwin(), to move a panel
+              window.
+
+       replace_panel(pan,window)
+              replaces the current window of  panel  with  window
+              (useful, for example if you want to resize a panel;
+              if you're using ncurses, you can call replace_panel
+              on  the output of wresize(3x)).  It does not change
+              the position of the panel in the stack.
+
+       panel_above(pan)
+              returns a pointer to the panel above pan.   If  the
+              panel  argument is (PANEL *)0, it returns a pointer
+              to the bottom panel in the stack.
+
+       panel_below(pan)
+              returns a pointer to the panel just below pan.   If
+              the  panel  argument  is  (PANEL  *)0, it returns a
+              pointer to the top panel in the stack.
+
+       set_panel_userptr(pan,ptr)
+              sets the panel's user pointer.
+
+       panel_userptr(pan)
+              returns the user pointer for a given panel.
+
+       panel_window(pan)
+              returns a pointer to the window of the given panel.
+
+
+
+

DIAGNOSTICS

+       Each  routine  that  returns  a pointer returns NULL if an
+       error occurs. Each  routine  that  returns  an  int  value
+       returns OK if it executes successfully and ERR if not.
+
+
+
+

COMPATIBILITY

+       Reasonable  care  has been taken to  ensure  compatibility
+       with  the  native  panel  facility  introduced  in  SVr3.2
+       (inspection   of   the  SVr4  manual  pages  suggests  the
+       programming  interface  is  unchanged).   The  PANEL  data
+       structures  are  merely   similar. The  programmer is cau-
+       tioned not to directly use PANEL fields.
+
+       The functions show_panel() and top_panel()  are  identical
+       in  this  implementation,  and work equally well with dis-
+       played or hidden panels.  In the native System V implemen-
+       tation, show_panel() is intended for making a hidden panel
+       visible (at the top  of  the  stack)  and  top_panel()  is
+       intended  for  making an already-visible panel move to the
+       top of the stack. You are cautioned  to  use  the  correct
+       function   to   ensure  compatibility  with  native  panel
+       libraries.
+
+
+
+

NOTE

+       In your library list, libpanel.a should  be  before  libn-
+       curses.a;  that  is,  you want to say `-lpanel -lncurses',
+       not the other way around (which would usually give a link-
+       error).
+
+
+
+

FILES

+       panel.h interface for the panels library
+
+       libpanel.a the panels library itself
+
+
+
+

SEE ALSO

+       curses(3x)
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+

AUTHOR

+       Originally   written   by   Warren  Tucker  <wht@n4hgf.mt-
+       park.ga.us>, primarily to assist  in  porting  u386mon  to
+       systems  without  a native panels library.  Repackaged for
+       ncurses by Zeyd ben-Halim.
+
+
+
+                                                              panel(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/resizeterm.3x.html b/ncurses/doc/html/man/resizeterm.3x.html new file mode 100644 index 0000000..23b0845 --- /dev/null +++ b/ncurses/doc/html/man/resizeterm.3x.html @@ -0,0 +1,141 @@ + + + + +resizeterm 3x + + + + +

resizeterm 3x

+
+
+
+resizeterm(3x)                                           resizeterm(3x)
+
+
+
+
+
+

NAME

+       is_term_resized,  resize_term,  resizeterm  -  change  the
+       curses terminal size
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       bool is_term_resized(int lines, int columns);
+       int resize_term(int lines, int columns);
+       int resizeterm(int lines, int columns);
+
+
+
+

DESCRIPTION

+       This is an extension to the curses library.   It  provides
+       callers  with  a hook into the ncurses data to resize win-
+       dows, primarily for use by programs running in an X Window
+       terminal  (e.g.,  xterm).  The function resizeterm resizes
+       the standard and current windows to the  specified  dimen-
+       sions,  and  adjusts  other  bookkeeping  data used by the
+       ncurses library that record the window dimensions.
+
+       Most  of  the  work  is  done  by   the   inner   function
+       resize_term.  The outer function resizeterm adds bookkeep-
+       ing for the SIGWINCH handler.  When resizing the  windows,
+       resize_term  blank-fills the areas that are extended.  The
+       calling application should fill in these areas with appro-
+       priate  data.  The resize_term function attempts to resize
+       all windows.  However, due to the  calling  convention  of
+       pads,  it  is  not  possible to resize these without addi-
+       tional interaction with the application.
+
+       A support function is_term_resized  is  provided  so  that
+       applications  can  check if the resize_term function would
+       modify the window structures.  It returns TRUE if the win-
+       dows would be modified, and FALSE otherwise.
+
+
+
+

RETURN VALUE

+       Except  as  notes,  these  function return the integer ERR
+       upon failure and OK on success.  They will fail if  either
+       of the dimensions are less than or equal to zero, or if an
+       error occurs while (re)allocating memory for the  windows.
+
+
+
+

NOTES

+       While these functions are intended to be used to support a
+       signal handler (i.e., for SIGWINCH), care should be  taken
+       to  avoid invoking them in a context where malloc or real-
+       loc may have been interrupted, since it uses  those  func-
+       tions.
+
+       If  ncurses  is configured to supply its own SIGWINCH han-
+       dler, the resizeterm function ungetch's a KEY_RESIZE which
+       will  be  read on the next call to getch.  This is used to
+       alert an application that the screen size has changed, and
+       that  it should repaint special features such as pads that
+       cannot be done automatically.
+
+       If the environment variables LINES  or  COLUMNS  are  set,
+       this  overrides  the  library's  use  of  the  window size
+       obtained from the operating system.  Thus, even if a  SIG-
+       WINCH  is received, no screen size change may be recorded.
+       In that case, no KEY_RESIZE is queued for the next call to
+       getch; an ERR will be returned instead.
+
+
+
+

SEE ALSO

+       wresize(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey (from an equivalent function written in 1988
+       for BSD curses).
+
+
+
+                                                         resizeterm(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/term.5.html b/ncurses/doc/html/man/term.5.html new file mode 100644 index 0000000..50fdc55 --- /dev/null +++ b/ncurses/doc/html/man/term.5.html @@ -0,0 +1,308 @@ + + + + +term 5 + + + + +

term 5

+
+
+
+term(5)                                                         term(5)
+
+
+
+
+
+

NAME

+       term - format of compiled term file.
+
+
+
+

SYNOPSIS

+       term
+
+
+
+

DESCRIPTION

+   STORAGE LOCATION
+       Compiled terminfo descriptions are placed under the direc-
+       tory /usr/share/terminfo.   Two  configurations  are  sup-
+       ported (when building the ncurses libraries):
+
+       directory tree
+            A  two-level  scheme is used to avoid a linear search
+            of a  huge  UNIX  system  directory:  /usr/share/ter-
+            minfo/c/name  where name is the name of the terminal,
+            and c is the first character of name.  Thus, act4 can
+            be  found  in  the  file  /usr/share/terminfo/a/act4.
+            Synonyms for the same  terminal  are  implemented  by
+            multiple links to the same compiled file.
+
+       hashed database
+            Using  Berkeley  database,  two  types of records are
+            stored: the terminfo  data  in  the  same  format  as
+            stored  in  a directory tree with the terminfo's pri-
+            mary name as  a  key,  and  records  containing  only
+            aliases pointing to the primary name.
+
+            If built to write hashed databases, ncurses can still
+            read terminfo  databases  organized  as  a  directory
+            tree,  but  cannot  write  entries into the directory
+            tree.  It can  write  (or  rewrite)  entries  in  the
+            hashed database.
+
+            ncurses  distinguishes  the two cases in the TERMINFO
+            and TERMINFO_DIRS environment variable by assuming  a
+            directory  tree  for  entries  that  correspond to an
+            existing directory, and hashed database otherwise.
+
+   STORAGE FORMAT
+       The format has been chosen so that it will be the same  on
+       all  hardware.   An  8 or more bit byte is assumed, but no
+       assumptions about byte  ordering  or  sign  extension  are
+       made.
+
+       The  compiled  file  is  created with the tic program, and
+       read by the routine setupterm.  The file is  divided  into
+       six parts: the header, terminal names, boolean flags, num-
+       bers, strings, and string table.
+
+       The header section begins the file.  This section contains
+       six  short  integers in the format described below.  These
+       integers are
+
+            (1) the magic number (octal 0432);
+
+            (2) the size, in bytes, of the names section;
+
+            (3) the number of bytes in the boolean section;
+
+            (4) the number of short integers in the numbers  sec-
+            tion;
+
+            (5) the number of offsets  (short  integers)  in  the
+            strings section;
+
+            (6) the size, in bytes, of the string table.
+
+       Short integers are stored in two 8-bit bytes.   The  first
+       byte  contains  the least significant 8 bits of the value,
+       and the second byte contains the most significant 8  bits.
+       (Thus,  the  value  represented is 256*second+first.)  The
+       value -1 is represented by the two bytes 0377, 0377; other
+       negative  values  are  illegal. This value generally means
+       that the corresponding capability  is  missing  from  this
+       terminal.   Note that this format corresponds to the hard-
+       ware  of  the  VAX  and  PDP-11  (that  is,  little-endian
+       machines).  Machines where this does not correspond to the
+       hardware must read the integers as two bytes  and  compute
+       the little-endian value.
+
+       The  terminal  names  section comes next.  It contains the
+       first line of the terminfo description, listing the  vari-
+       ous  names  for the terminal, separated by the `|' charac-
+       ter.  The section is terminated with an ASCII NUL  charac-
+       ter.
+
+       The  boolean flags have one byte for each flag.  This byte
+       is either 0 or 1 as the flag is present  or  absent.   The
+       capabilities are in the same order as the file <term.h>.
+
+       Between the boolean section and the number section, a null
+       byte will be inserted, if necessary, to  ensure  that  the
+       number  section begins on an even byte (this is a relic of
+       the  PDP-11's  word-addressed   architecture,   originally
+       designed  in  to  avoid  IOT traps induced by addressing a
+       word on an odd byte boundary).   All  short  integers  are
+       aligned on a short word boundary.
+
+       The numbers section is similar to the flags section.  Each
+       capability takes up two bytes, and is stored as a  little-
+       endian short integer.  If the value represented is -1, the
+       capability is taken to be missing.
+
+       The strings section is also similar.  Each  capability  is
+       stored  as  a short integer, in the format above.  A value
+       of -1 means the capability  is  missing.   Otherwise,  the
+       value  is  taken  as  an  offset from the beginning of the
+       string table.  Special characters in ^X or \c notation are
+       stored  in their interpreted form, not the printing repre-
+       sentation.  Padding information $<nn> and parameter infor-
+       mation %x are stored intact in uninterpreted form.
+
+       The  final  section  is the string table.  It contains all
+       the values of string capabilities referenced in the string
+       section.  Each string is null terminated.
+
+   EXTENDED STORAGE FORMAT
+       The  previous  section describes the conventional terminfo
+       binary format.  With some minor variations of the  offsets
+       (see  PORTABILITY),  the same binary format is used in all
+       modern UNIX systems.  Each system uses a predefined set of
+       boolean, number or string capabilities.
+
+       The  ncurses  libraries  and applications support extended
+       terminfo binary format, allowing users to define capabili-
+       ties  which are loaded at runtime.  This extension is made
+       possible by using the fact that the other  implementations
+       stop  reading the terminfo data when they have reached the
+       end of the size given in the header.  ncurses  checks  the
+       size,  and  if it exceeds that due to the predefined data,
+       continues to parse according to its own scheme.
+
+       First, it reads the extended header (5 short integers):
+
+            (1)  count of extended boolean capabilities
+
+            (2)  count of extended numeric capabilities
+
+            (3)  count of extended string capabilities
+
+            (4)  size of the extended string table in bytes.
+
+            (5)  last offset of  the  extended  string  table  in
+                 bytes.
+
+       Using  the  counts and sizes, ncurses allocates arrays and
+       reads data for the extended capabilties in the same  order
+       as the header information.
+
+       The extended string table contains values for string capa-
+       bilities.  After the end of these values, it contains  the
+       names  for  each  of  the  extended capabilities in order,
+       e.g., booleans, then numbers and finally strings.
+
+
+
+

PORTABILITY

+       Note that it is possible for setupterm to expect a differ-
+       ent  set  of capabilities than are actually present in the
+       file.  Either the database may  have  been  updated  since
+       setupterm has been recompiled (resulting in extra unrecog-
+       nized entries in the file) or the program  may  have  been
+       recompiled  more  recently  than  the database was updated
+       (resulting in missing  entries).   The  routine  setupterm
+       must  be prepared for both possibilities - this is why the
+       numbers and sizes are included.   Also,  new  capabilities
+       must  always  be added at the end of the lists of boolean,
+       number, and string capabilities.
+
+       Despite the consistent use of  little-endian  for  numbers
+       and  the  otherwise self-describing format, it is not wise
+       to count on portability of binary terminfo entries between
+       commercial  UNIX  versions.  The problem is that there are
+       at least three versions of terminfo (under HP-UX, AIX, and
+       OSF/1)  which  diverged from System V terminfo after SVr1,
+       and have added extension capabilities to the string  table
+       that  (in the binary format) collide with System V and XSI
+       Curses extensions.  See terminfo(5) for  detailed  discus-
+       sion of terminfo source compatibility issues.
+
+
+
+

EXAMPLE

+       As  an  example, here is a hex dump of the description for
+       the Lear-Siegler ADM-3, a  popular  though  rather  stupid
+       early terminal:
+
+       adm3a|lsi adm3a,
+               am,
+               cols#80, lines#24,
+               bel=^G, clear= 32$<1>, cr=^M, cub1=^H, cud1=^J,
+               cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+               home=^^, ind=^J,
+
+       0000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
+       0010  61 7c 6c 73 69 20 61 64  6d 33 61 00 00 01 50 00  a|lsi ad m3a...P.
+       0020  ff ff 18 00 ff ff 00 00  02 00 ff ff ff ff 04 00  ........ ........
+       0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.'...
+       0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..-.....
+       0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0110  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0120  ff ff ff ff ff ff 2f 00  07 00 0d 00 1a 24 3c 31  ....../. .....$<1
+       0130  3e 00 1b 3d 25 70 31 25  7b 33 32 7d 25 2b 25 63  >..=%p1% {32}%+%c
+       0140  25 70 32 25 7b 33 32 7d  25 2b 25 63 00 0a 00 1e  %p2%{32} %+%c....
+       0150  00 08 00 0c 00 0b 00 0a  00                       ........ .
+
+
+
+
+

LIMITS

+       Some  limitations:  total  compiled  entries cannot exceed
+       4096 bytes.  The name field cannot exceed 128 bytes.
+
+
+
+

FILES

+       /usr/share/terminfo/*/*  compiled terminal capability data
+       base
+
+
+
+

SEE ALSO

+       curses(3x), terminfo(5).
+
+
+
+

AUTHORS

+       Thomas E. Dickey
+       extended terminfo format for ncurses 5.0
+       hashed database support for ncurses 5.6
+
+       Eric S. Raymond
+
+
+
+                                                                term(5)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/term.7.html b/ncurses/doc/html/man/term.7.html new file mode 100644 index 0000000..53ea633 --- /dev/null +++ b/ncurses/doc/html/man/term.7.html @@ -0,0 +1,251 @@ + + + + +term 7 + + + + +

term 7

+
+
+
+term(7)                                                         term(7)
+
+
+
+
+
+

NAME

+       term - conventions for naming terminal types
+
+
+
+

DESCRIPTION

+       The  environment variable TERM should normally contain the
+       type name of the terminal, console or display-device  type
+       you  are  using.   This  information  is  critical for all
+       screen-oriented  programs,  including  your   editor   and
+       mailer.
+
+       A  default  TERM  value will be set on a per-line basis by
+       either /etc/inittab (Linux and  System-V-like  UNIXes)  or
+       /etc/ttys  (BSD  UNIXes).  This will nearly always suffice
+       for workstation and microcomputer consoles.
+
+       If you use a dialup line, the type of device  attached  to
+       it  may vary.  Older UNIX systems pre-set a very dumb ter-
+       minal type like `dumb' or `dialup' on dialup lines.  Newer
+       ones may pre-set `vt100', reflecting the prevalence of DEC
+       VT100-compatible terminals  and  personal-computer  emula-
+       tors.
+
+       Modern  telnets  pass  your TERM environment variable from
+       the local side to the remote one.  There can  be  problems
+       if  the  remote terminfo or termcap entry for your type is
+       not compatible with yours, but this situation is rare  and
+       can  almost  always  be  avoided  by  explicitly exporting
+       `vt100' (assuming you are in fact using  a  VT100-superset
+       console, terminal, or terminal emulator.)
+
+       In any case, you are free to override the system TERM set-
+       ting to your taste in your  shell  profile.   The  tset(1)
+       utility  may  be  of  assistance; you can give it a set of
+       rules for deducing or requesting a terminal type based  on
+       the tty device and baud rate.
+
+       Setting your own TERM value may also be useful if you have
+       created a custom  entry  incorporating  options  (such  as
+       visual  bell  or reverse-video) which you wish to override
+       the system default type for your line.
+
+       Terminal type descriptions are stored as files of capabil-
+       ity data underneath /usr/share/terminfo.  To browse a list
+       of all terminal names recognized by the system, do
+
+            toe | more
+
+       from your shell.  These capability files are in  a  binary
+       format optimized for retrieval speed (unlike the old text-
+       based termcap format they replace); to examine  an  entry,
+       you  must  use the infocmp(1m) command.  Invoke it as fol-
+       lows:
+
+            infocmp entry-name
+
+       where entry-name is the name of the type you wish to exam-
+       ine  (and the name of its capability file the subdirectory
+       of /usr/share/terminfo named for its first letter).   This
+       command  dumps  a  capability  file  in  the  text  format
+       described by terminfo(5).
+
+       The first line of  a  terminfo(5)  description  gives  the
+       names by which terminfo knows a terminal, separated by `|'
+       (pipe-bar) characters with the last name field  terminated
+       by  a  comma.   The first name field is the type's primary
+       name, and is the one to use when setting TERM.   The  last
+       name  field  (if  distinct  from  the first) is actually a
+       description of the terminal type (it may  contain  blanks;
+       the others must be single words).  Name fields between the
+       first and last (if present) are aliases for the  terminal,
+       usually historical names retained for compatibility.
+
+       There are some conventions for how to choose terminal pri-
+       mary names that help keep  them  informative  and  unique.
+       Here is a step-by-step guide to naming terminals that also
+       explains how to parse them:
+
+       First, choose a root name.  The root  will  consist  of  a
+       lower-case  letter followed by up to seven lower-case let-
+       ters or digits.  You need to avoid using punctuation char-
+       acters  in  root  names,  because they are used and inter-
+       preted as filenames and shell meta-characters (such as  !,
+       $,  *, ?, etc.) embedded in them may cause odd and unhelp-
+       ful behavior.  The slash (/), or any other character  that
+       may  be  interpreted by anyone's file system (\, $, [, ]),
+       is especially dangerous (terminfo is platform-independent,
+       and  choosing  names with special characters could someday
+       make life difficult for users of a future port).  The  dot
+       (.)  character  is  relatively safe as long as there is at
+       most one per root name; some historical terminfo names use
+       it.
+
+       The  root  name for a terminal or workstation console type
+       should almost always begin with a vendor prefix  (such  as
+       hp  for Hewlett-Packard, wy for Wyse, or att for AT&T ter-
+       minals), or a common name of the terminal line (vt for the
+       VT  series of terminals from DEC, or sun for Sun Microsys-
+       tems workstation consoles, or regent for the  ADDS  Regent
+       series.   You  can list the terminfo tree to see what pre-
+       fixes are already in common use.   The  root  name  prefix
+       should  be  followed  when  appropriate by a model number;
+       thus vt100, hp2621, wy50.
+
+       The root name for a PC-Unix console type should be the  OS
+       name,  i.e.  linux, bsdos, freebsd, netbsd.  It should not
+       be console or any other generic that might cause confusion
+       in  a  multi-platform environment!  If a model number fol-
+       lows, it should indicate either the OS  release  level  or
+       the console driver release level.
+
+       The  root  name  for a terminal emulator (assuming it does
+       not fit one of the standard ANSI or vt100 types) should be
+       the program name or a readily recognizable abbreviation of
+       it (i.e. versaterm, ctrm).
+
+       Following the root name, you may add any reasonable number
+       of hyphen-separated feature suffixes.
+
+       2p   Has two pages of memory.  Likewise 4p, 8p, etc.
+
+       mc   Magic-cookie.   Some  terminals (notably older Wyses)
+            can only support one attribute  without  magic-cookie
+            lossage.   Their  base  entry  is usually paired with
+            another that has this suffix and uses  magic  cookies
+            to support multiple attributes.
+
+       -am  Enable auto-margin (right-margin wraparound).
+
+       -m   Mono mode - suppress color support.
+
+       -na  No  arrow keys - termcap ignores arrow keys which are
+            actually there on the terminal, so the user  can  use
+            the arrow keys locally.
+
+       -nam No auto-margin - suppress am capability.
+
+       -nl  No labels - suppress soft labels.
+
+       -nsl No status line - suppress status line.
+
+       -pp  Has a printer port which is used.
+
+       -rv  Terminal in reverse video mode (black on white).
+
+       -s   Enable status line.
+
+       -vb  Use visible bell (flash) rather than beep.
+
+       -w   Wide; terminal is in 132 column mode.
+
+       Conventionally,   if  your  terminal  type  is  a  variant
+       intended to specify a line height, that suffix  should  go
+       first.  So, for a hypothetical FuBarCo model 2317 terminal
+       in 30-line mode with reverse video,  best  form  would  be
+       fubar-30-rv (rather than, say, `fubar-rv-30').
+
+       Terminal types that are written not as standalone entries,
+       but rather as components to be plugged into other  entries
+       via  use capabilities, are distinguished by using embedded
+       plus signs rather than dashes.
+
+       Commands which use a  terminal  type  to  control  display
+       often  accept  a  -T  option  that accepts a terminal name
+       argument.  Such programs should  fall  back  on  the  TERM
+       environment variable when no -T option is specified.
+
+
+
+

PORTABILITY

+       For  maximum  compatibility  with  older  System V UNIXes,
+       names and aliases should be unique  within  the  first  14
+       characters.
+
+
+
+

FILES

+       /usr/share/terminfo/?/*
+            compiled terminal capability data base
+
+       /etc/inittab
+            tty line initialization (AT&T-like UNIXes)
+
+       /etc/ttys
+            tty line initialization (BSD-like UNIXes)
+
+
+
+

SEE ALSO

+       curses(3x), terminfo(5), term(5).
+
+
+
+                                                                term(7)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/terminfo.5.html b/ncurses/doc/html/man/terminfo.5.html new file mode 100644 index 0000000..1284d02 --- /dev/null +++ b/ncurses/doc/html/man/terminfo.5.html @@ -0,0 +1,2374 @@ + + + + +terminfo 5 File Formats + + + + +

terminfo 5 File Formats

+
+
+
+terminfo(5)                   File Formats                  terminfo(5)
+
+
+
+
+
+

NAME

+       terminfo - terminal capability data base
+
+
+
+

SYNOPSIS

+       /usr/share/terminfo/*/*
+
+
+
+

DESCRIPTION

+       Terminfo  is  a  data  base  describing terminals, used by
+       screen-oriented programs  such  as  nvi(1),  rogue(1)  and
+       libraries  such  as curses(3x).  Terminfo describes termi-
+       nals by giving a set of capabilities which they  have,  by
+       specifying how to perform screen operations, and by speci-
+       fying padding requirements and  initialization  sequences.
+       This describes ncurses version 5.6 (patch 20081011).
+
+       Entries in terminfo consist of a sequence of `,' separated
+       fields (embedded commas may be escaped with a backslash or
+       notated  as \054).  White space after the `,' separator is
+       ignored.  The first entry  for  each  terminal  gives  the
+       names  which  are known for the terminal, separated by `|'
+       characters.  The first  name  given  is  the  most  common
+       abbreviation  for the terminal, the last name given should
+       be a long name fully identifying  the  terminal,  and  all
+       others  are  understood as synonyms for the terminal name.
+       All names but the last should be in lower case and contain
+       no  blanks;  the last name may well contain upper case and
+       blanks for readability.
+
+       Lines beginning with a `#' in the first column are treated
+       as  comments.  While comment lines are legal at any point,
+       the output of captoinfo and infotocap  (aliases  for  tic)
+       will move comments so they occur only between entries.
+
+       Newlines  and  leading  tabs  may  be  used for formatting
+       entries for readability.  These are  removed  from  parsed
+       entries.   The  infocmp -f option relies on this to format
+       if-then-else expressions: the result can be read by tic.
+
+       Terminal names (except for the last, verbose entry) should
+       be chosen using the following conventions.  The particular
+       piece of hardware making up the  terminal  should  have  a
+       root  name, thus ``hp2621''.  This name should not contain
+       hyphens.  Modes that the hardware can be in, or user pref-
+       erences,  should  be indicated by appending a hyphen and a
+       mode suffix.  Thus, a vt100 in 132 column  mode  would  be
+       vt100-w.  The following suffixes should be used where pos-
+       sible:
+
+
+      Suffix                  Meaning                   Example
+      -nn      Number of lines on the screen            aaa-60
+      -np      Number of pages of memory                c100-4p
+      -am      With automargins (usually the default)   vt100-am
+      -m       Mono mode; suppress color                ansi-m
+      -mc      Magic cookie; spaces when highlighting   wy30-mc
+      -na      No arrow keys (leave them in local)      c100-na
+      -nam     Without automatic margins                vt100-nam
+      -nl      No status line                           att4415-nl
+      -ns      No status line                           hp2626-ns
+      -rv      Reverse video                            c100-rv
+      -s       Enable status line                       vt100-s
+
+      -vb      Use visible bell instead of beep         wy370-vb
+      -w       Wide mode (> 80 columns, usually 132)    vt100-w
+
+       For more on terminal naming conventions, see  the  term(7)
+       manual page.
+
+   Capabilities
+       The  following  is  a  complete  table of the capabilities
+       included in a terminfo description block and available  to
+       terminfo-using code.  In each line of the table,
+
+       The  variable  is the name by which the programmer (at the
+       terminfo level) accesses the capability.
+
+       The capname is the short name used  in  the  text  of  the
+       database,  and  is used by a person updating the database.
+       Whenever possible, capnames are chosen to be the  same  as
+       or similar to the ANSI X3.64-1979 standard (now superseded
+       by ECMA-48, which uses identical or very  similar  names).
+       Semantics are also intended to match those of the specifi-
+       cation.
+
+       The termcap code is the old termcap capability name  (some
+       capabilities are new, and have names which termcap did not
+       originate).
+
+       Capability names have no hard length limit, but an  infor-
+       mal  limit  of  5 characters has been adopted to keep them
+       short and to allow the tabs in the  source  file  Caps  to
+       line up nicely.
+
+       Finally,  the  description  field  attempts  to convey the
+       semantics of the capability.  You may find some  codes  in
+       the description field:
+
+       (P)    indicates that padding may be specified
+
+       #[1-9] in  the description field indicates that the string
+              is passed through tparm with parms as given (#i).
+
+       (P*)   indicates that padding may vary  in  proportion  to
+              the number of lines affected
+
+       (#i)   indicates the ith parameter.
+
+
+       These are the boolean capabilities:
+
+
+               Variable          Cap-  TCap      Description
+               Booleans          name  Code
+       auto_left_margin          bw    bw    cub1 wraps from col-
+                                             umn 0 to last column
+       auto_right_margin         am    am    terminal has auto-
+                                             matic margins
+       back_color_erase          bce   ut    screen erased with
+                                             background color
+       can_change                ccc   cc    terminal can re-
+                                             define existing col-
+                                             ors
+       ceol_standout_glitch      xhp   xs    standout not erased
+                                             by overwriting (hp)
+       col_addr_glitch           xhpa  YA    only positive motion
+                                             for hpa/mhpa caps
+
+
+       cpi_changes_res           cpix  YF    changing character
+                                             pitch changes reso-
+                                             lution
+       cr_cancels_micro_mode     crxm  YB    using cr turns off
+                                             micro mode
+       dest_tabs_magic_smso      xt    xt    tabs destructive,
+                                             magic so char
+                                             (t1061)
+       eat_newline_glitch        xenl  xn    newline ignored
+                                             after 80 cols (con-
+                                             cept)
+       erase_overstrike          eo    eo    can erase over-
+                                             strikes with a blank
+       generic_type              gn    gn    generic line type
+       hard_copy                 hc    hc    hardcopy terminal
+       hard_cursor               chts  HC    cursor is hard to
+                                             see
+       has_meta_key              km    km    Has a meta key
+                                             (i.e., sets 8th-bit)
+       has_print_wheel           daisy YC    printer needs opera-
+                                             tor to change char-
+                                             acter set
+       has_status_line           hs    hs    has extra status
+                                             line
+       hue_lightness_saturation  hls   hl    terminal uses only
+                                             HLS color notation
+                                             (Tektronix)
+       insert_null_glitch        in    in    insert mode distin-
+                                             guishes nulls
+       lpi_changes_res           lpix  YG    changing line pitch
+                                             changes resolution
+       memory_above              da    da    display may be
+                                             retained above the
+                                             screen
+       memory_below              db    db    display may be
+                                             retained below the
+                                             screen
+       move_insert_mode          mir   mi    safe to move while
+                                             in insert mode
+       move_standout_mode        msgr  ms    safe to move while
+                                             in standout mode
+       needs_xon_xoff            nxon  nx    padding will not
+                                             work, xon/xoff
+                                             required
+       no_esc_ctlc               xsb   xb    beehive (f1=escape,
+                                             f2=ctrl C)
+       no_pad_char               npc   NP    pad character does
+                                             not exist
+       non_dest_scroll_region    ndscr ND    scrolling region is
+                                             non-destructive
+       non_rev_rmcup             nrrmc NR    smcup does not
+                                             reverse rmcup
+       over_strike               os    os    terminal can over-
+                                             strike
+       prtr_silent               mc5i  5i    printer will not
+                                             echo on screen
+       row_addr_glitch           xvpa  YD    only positive motion
+                                             for vpa/mvpa caps
+       semi_auto_right_margin    sam   YE    printing in last
+                                             column causes cr
+       status_line_esc_ok        eslok es    escape can be used
+                                             on the status line
+       tilde_glitch              hz    hz    cannot print ~'s
+                                             (hazeltine)
+
+
+       transparent_underline     ul    ul    underline character
+                                             overstrikes
+       xon_xoff                  xon   xo    terminal uses
+                                             xon/xoff handshaking
+
+       These are the numeric capabilities:
+
+
+            Variable         Cap-     TCap       Description
+             Numeric         name     Code
+       columns               cols     co     number of columns in
+                                             a line
+       init_tabs             it       it     tabs initially every
+                                             # spaces
+       label_height          lh       lh     rows in each label
+       label_width           lw       lw     columns in each
+                                             label
+       lines                 lines    li     number of lines on
+                                             screen or page
+       lines_of_memory       lm       lm     lines of memory if >
+                                             line. 0 means varies
+       magic_cookie_glitch   xmc      sg     number of blank
+                                             characters left by
+                                             smso or rmso
+       max_attributes        ma       ma     maximum combined
+                                             attributes terminal
+                                             can handle
+       max_colors            colors   Co     maximum number of
+                                             colors on screen
+       max_pairs             pairs    pa     maximum number of
+                                             color-pairs on the
+                                             screen
+       maximum_windows       wnum     MW     maximum number of
+                                             defineable windows
+       no_color_video        ncv      NC     video attributes
+                                             that cannot be used
+                                             with colors
+       num_labels            nlab     Nl     number of labels on
+                                             screen
+       padding_baud_rate     pb       pb     lowest baud rate
+                                             where padding needed
+       virtual_terminal      vt       vt     virtual terminal
+                                             number (CB/unix)
+       width_status_line     wsl      ws     number of columns in
+                                             status line
+
+       The following numeric  capabilities  are  present  in  the
+       SVr4.0  term  structure, but are not yet documented in the
+       man page.  They came in with SVr4's printer support.
+
+
+             Variable         Cap-    TCap       Description
+             Numeric          name    Code
+       bit_image_entwining    bitwin  Yo     number of passes for
+                                             each bit-image row
+       bit_image_type         bitype  Yp     type of bit-image
+                                             device
+       buffer_capacity        bufsz   Ya     numbers of bytes
+                                             buffered before
+                                             printing
+       buttons                btns    BT     number of buttons on
+                                             mouse
+       dot_horz_spacing       spinh   Yc     spacing of dots hor-
+                                             izontally in dots
+                                             per inch
+
+       dot_vert_spacing       spinv   Yb     spacing of pins ver-
+                                             tically in pins per
+                                             inch
+       max_micro_address      maddr   Yd     maximum value in
+                                             micro_..._address
+       max_micro_jump         mjump   Ye     maximum value in
+                                             parm_..._micro
+       micro_col_size         mcs     Yf     character step size
+                                             when in micro mode
+       micro_line_size        mls     Yg     line step size when
+                                             in micro mode
+       number_of_pins         npins   Yh     numbers of pins in
+                                             print-head
+       output_res_char        orc     Yi     horizontal resolu-
+                                             tion in units per
+                                             line
+       output_res_horz_inch   orhi    Yk     horizontal resolu-
+                                             tion in units per
+                                             inch
+       output_res_line        orl     Yj     vertical resolution
+                                             in units per line
+       output_res_vert_inch   orvi    Yl     vertical resolution
+                                             in units per inch
+       print_rate             cps     Ym     print rate in char-
+                                             acters per second
+       wide_char_size         widcs   Yn     character step size
+                                             when in double wide
+                                             mode
+
+       These are the string capabilities:
+
+
+               Variable          Cap-   TCap     Description
+                String           name   Code
+       acs_chars                 acsc   ac   graphics charset
+                                             pairs, based on
+                                             vt100
+       back_tab                  cbt    bt   back tab (P)
+       bell                      bel    bl   audible signal
+                                             (bell) (P)
+       carriage_return           cr     cr   carriage return (P*)
+                                             (P*)
+       change_char_pitch         cpi    ZA   Change number of
+                                             characters per inch
+                                             to #1
+       change_line_pitch         lpi    ZB   Change number of
+                                             lines per inch to #1
+       change_res_horz           chr    ZC   Change horizontal
+                                             resolution to #1
+       change_res_vert           cvr    ZD   Change vertical res-
+                                             olution to #1
+       change_scroll_region      csr    cs   change region to
+                                             line #1 to line #2
+                                             (P)
+       char_padding              rmp    rP   like ip but when in
+                                             insert mode
+       clear_all_tabs            tbc    ct   clear all tab stops
+                                             (P)
+       clear_margins             mgc    MC   clear right and left
+                                             soft margins
+       clear_screen              clear  cl   clear screen and
+                                             home cursor (P*)
+       clr_bol                   el1    cb   Clear to beginning
+                                             of line
+
+
+       clr_eol                   el     ce   clear to end of line
+                                             (P)
+       clr_eos                   ed     cd   clear to end of
+                                             screen (P*)
+       column_address            hpa    ch   horizontal position
+                                             #1, absolute (P)
+       command_character         cmdch  CC   terminal settable
+                                             cmd character in
+                                             prototype !?
+       create_window             cwin   CW   define a window #1
+                                             from #2,#3 to #4,#5
+       cursor_address            cup    cm   move to row #1
+                                             columns #2
+       cursor_down               cud1   do   down one line
+       cursor_home               home   ho   home cursor (if no
+                                             cup)
+       cursor_invisible          civis  vi   make cursor invisi-
+                                             ble
+       cursor_left               cub1   le   move left one space
+       cursor_mem_address        mrcup  CM   memory relative cur-
+                                             sor addressing, move
+                                             to row #1 columns #2
+       cursor_normal             cnorm  ve   make cursor appear
+                                             normal (undo
+                                             civis/cvvis)
+       cursor_right              cuf1   nd   non-destructive
+                                             space (move right
+                                             one space)
+       cursor_to_ll              ll     ll   last line, first
+                                             column (if no cup)
+       cursor_up                 cuu1   up   up one line
+       cursor_visible            cvvis  vs   make cursor very
+                                             visible
+       define_char               defc   ZE   Define a character
+                                             #1, #2 dots wide,
+                                             descender #3
+       delete_character          dch1   dc   delete character
+                                             (P*)
+       delete_line               dl1    dl   delete line (P*)
+       dial_phone                dial   DI   dial number #1
+       dis_status_line           dsl    ds   disable status line
+       display_clock             dclk   DK   display clock
+       down_half_line            hd     hd   half a line down
+       ena_acs                   enacs  eA   enable alternate
+                                             char set
+       enter_alt_charset_mode    smacs  as   start alternate
+                                             character set (P)
+       enter_am_mode             smam   SA   turn on automatic
+                                             margins
+       enter_blink_mode          blink  mb   turn on blinking
+       enter_bold_mode           bold   md   turn on bold (extra
+                                             bright) mode
+       enter_ca_mode             smcup  ti   string to start pro-
+                                             grams using cup
+       enter_delete_mode         smdc   dm   enter delete mode
+       enter_dim_mode            dim    mh   turn on half-bright
+                                             mode
+       enter_doublewide_mode     swidm  ZF   Enter double-wide
+                                             mode
+       enter_draft_quality       sdrfq  ZG   Enter draft-quality
+                                             mode
+       enter_insert_mode         smir   im   enter insert mode
+       enter_italics_mode        sitm   ZH   Enter italic mode
+       enter_leftward_mode       slm    ZI   Start leftward car-
+                                             riage motion
+
+       enter_micro_mode          smicm  ZJ   Start micro-motion
+                                             mode
+       enter_near_letter_quality snlq   ZK   Enter NLQ mode
+       enter_normal_quality      snrmq  ZL   Enter normal-quality
+                                             mode
+       enter_protected_mode      prot   mp   turn on protected
+                                             mode
+       enter_reverse_mode        rev    mr   turn on reverse
+                                             video mode
+       enter_secure_mode         invis  mk   turn on blank mode
+                                             (characters invisi-
+                                             ble)
+       enter_shadow_mode         sshm   ZM   Enter shadow-print
+                                             mode
+       enter_standout_mode       smso   so   begin standout mode
+       enter_subscript_mode      ssubm  ZN   Enter subscript mode
+       enter_superscript_mode    ssupm  ZO   Enter superscript
+                                             mode
+       enter_underline_mode      smul   us   begin underline mode
+       enter_upward_mode         sum    ZP   Start upward car-
+                                             riage motion
+       enter_xon_mode            smxon  SX   turn on xon/xoff
+                                             handshaking
+       erase_chars               ech    ec   erase #1 characters
+                                             (P)
+       exit_alt_charset_mode     rmacs  ae   end alternate char-
+                                             acter set (P)
+       exit_am_mode              rmam   RA   turn off automatic
+                                             margins
+       exit_attribute_mode       sgr0   me   turn off all
+                                             attributes
+       exit_ca_mode              rmcup  te   strings to end pro-
+                                             grams using cup
+       exit_delete_mode          rmdc   ed   end delete mode
+       exit_doublewide_mode      rwidm  ZQ   End double-wide mode
+       exit_insert_mode          rmir   ei   exit insert mode
+       exit_italics_mode         ritm   ZR   End italic mode
+       exit_leftward_mode        rlm    ZS   End left-motion mode
+       exit_micro_mode           rmicm  ZT   End micro-motion
+                                             mode
+       exit_shadow_mode          rshm   ZU   End shadow-print
+                                             mode
+       exit_standout_mode        rmso   se   exit standout mode
+       exit_subscript_mode       rsubm  ZV   End subscript mode
+       exit_superscript_mode     rsupm  ZW   End superscript mode
+       exit_underline_mode       rmul   ue   exit underline mode
+       exit_upward_mode          rum    ZX   End reverse charac-
+                                             ter motion
+       exit_xon_mode             rmxon  RX   turn off xon/xoff
+                                             handshaking
+       fixed_pause               pause  PA   pause for 2-3 sec-
+                                             onds
+       flash_hook                hook   fh   flash switch hook
+       flash_screen              flash  vb   visible bell (may
+                                             not move cursor)
+       form_feed                 ff     ff   hardcopy terminal
+                                             page eject (P*)
+       from_status_line          fsl    fs   return from status
+                                             line
+       goto_window               wingo  WG   go to window #1
+       hangup                    hup    HU   hang-up phone
+       init_1string              is1    i1   initialization
+                                             string
+       init_2string              is2    is   initialization
+                                             string
+
+       init_3string              is3    i3   initialization
+                                             string
+       init_file                 if     if   name of initializa-
+                                             tion file
+       init_prog                 iprog  iP   path name of program
+                                             for initialization
+       initialize_color          initc  Ic   initialize color #1
+                                             to (#2,#3,#4)
+       initialize_pair           initp  Ip   Initialize color
+                                             pair #1 to
+                                             fg=(#2,#3,#4),
+                                             bg=(#5,#6,#7)
+       insert_character          ich1   ic   insert character (P)
+       insert_line               il1    al   insert line (P*)
+       insert_padding            ip     ip   insert padding after
+                                             inserted character
+       key_a1                    ka1    K1   upper left of keypad
+       key_a3                    ka3    K3   upper right of key-
+                                             pad
+       key_b2                    kb2    K2   center of keypad
+       key_backspace             kbs    kb   backspace key
+       key_beg                   kbeg   @1   begin key
+       key_btab                  kcbt   kB   back-tab key
+       key_c1                    kc1    K4   lower left of keypad
+       key_c3                    kc3    K5   lower right of key-
+                                             pad
+       key_cancel                kcan   @2   cancel key
+       key_catab                 ktbc   ka   clear-all-tabs key
+       key_clear                 kclr   kC   clear-screen or
+                                             erase key
+       key_close                 kclo   @3   close key
+       key_command               kcmd   @4   command key
+       key_copy                  kcpy   @5   copy key
+       key_create                kcrt   @6   create key
+       key_ctab                  kctab  kt   clear-tab key
+       key_dc                    kdch1  kD   delete-character key
+       key_dl                    kdl1   kL   delete-line key
+       key_down                  kcud1  kd   down-arrow key
+       key_eic                   krmir  kM   sent by rmir or smir
+                                             in insert mode
+       key_end                   kend   @7   end key
+       key_enter                 kent   @8   enter/send key
+       key_eol                   kel    kE   clear-to-end-of-line
+                                             key
+       key_eos                   ked    kS   clear-to-end-of-
+                                             screen key
+       key_exit                  kext   @9   exit key
+       key_f0                    kf0    k0   F0 function key
+       key_f1                    kf1    k1   F1 function key
+       key_f10                   kf10   k;   F10 function key
+       key_f11                   kf11   F1   F11 function key
+       key_f12                   kf12   F2   F12 function key
+       key_f13                   kf13   F3   F13 function key
+       key_f14                   kf14   F4   F14 function key
+       key_f15                   kf15   F5   F15 function key
+       key_f16                   kf16   F6   F16 function key
+       key_f17                   kf17   F7   F17 function key
+       key_f18                   kf18   F8   F18 function key
+       key_f19                   kf19   F9   F19 function key
+       key_f2                    kf2    k2   F2 function key
+       key_f20                   kf20   FA   F20 function key
+       key_f21                   kf21   FB   F21 function key
+       key_f22                   kf22   FC   F22 function key
+       key_f23                   kf23   FD   F23 function key
+       key_f24                   kf24   FE   F24 function key
+
+       key_f25                   kf25   FF   F25 function key
+       key_f26                   kf26   FG   F26 function key
+       key_f27                   kf27   FH   F27 function key
+       key_f28                   kf28   FI   F28 function key
+       key_f29                   kf29   FJ   F29 function key
+       key_f3                    kf3    k3   F3 function key
+       key_f30                   kf30   FK   F30 function key
+       key_f31                   kf31   FL   F31 function key
+       key_f32                   kf32   FM   F32 function key
+       key_f33                   kf33   FN   F33 function key
+       key_f34                   kf34   FO   F34 function key
+       key_f35                   kf35   FP   F35 function key
+       key_f36                   kf36   FQ   F36 function key
+       key_f37                   kf37   FR   F37 function key
+       key_f38                   kf38   FS   F38 function key
+       key_f39                   kf39   FT   F39 function key
+       key_f4                    kf4    k4   F4 function key
+       key_f40                   kf40   FU   F40 function key
+       key_f41                   kf41   FV   F41 function key
+       key_f42                   kf42   FW   F42 function key
+       key_f43                   kf43   FX   F43 function key
+       key_f44                   kf44   FY   F44 function key
+       key_f45                   kf45   FZ   F45 function key
+       key_f46                   kf46   Fa   F46 function key
+       key_f47                   kf47   Fb   F47 function key
+       key_f48                   kf48   Fc   F48 function key
+       key_f49                   kf49   Fd   F49 function key
+       key_f5                    kf5    k5   F5 function key
+       key_f50                   kf50   Fe   F50 function key
+       key_f51                   kf51   Ff   F51 function key
+       key_f52                   kf52   Fg   F52 function key
+       key_f53                   kf53   Fh   F53 function key
+       key_f54                   kf54   Fi   F54 function key
+       key_f55                   kf55   Fj   F55 function key
+       key_f56                   kf56   Fk   F56 function key
+       key_f57                   kf57   Fl   F57 function key
+       key_f58                   kf58   Fm   F58 function key
+       key_f59                   kf59   Fn   F59 function key
+       key_f6                    kf6    k6   F6 function key
+       key_f60                   kf60   Fo   F60 function key
+       key_f61                   kf61   Fp   F61 function key
+       key_f62                   kf62   Fq   F62 function key
+       key_f63                   kf63   Fr   F63 function key
+       key_f7                    kf7    k7   F7 function key
+       key_f8                    kf8    k8   F8 function key
+       key_f9                    kf9    k9   F9 function key
+       key_find                  kfnd   @0   find key
+       key_help                  khlp   %1   help key
+       key_home                  khome  kh   home key
+       key_ic                    kich1  kI   insert-character key
+       key_il                    kil1   kA   insert-line key
+       key_left                  kcub1  kl   left-arrow key
+       key_ll                    kll    kH   lower-left key (home
+                                             down)
+       key_mark                  kmrk   %2   mark key
+       key_message               kmsg   %3   message key
+       key_move                  kmov   %4   move key
+       key_next                  knxt   %5   next key
+       key_npage                 knp    kN   next-page key
+       key_open                  kopn   %6   open key
+       key_options               kopt   %7   options key
+       key_ppage                 kpp    kP   previous-page key
+       key_previous              kprv   %8   previous key
+       key_print                 kprt   %9   print key
+       key_redo                  krdo   %0   redo key
+
+       key_reference             kref   &1   reference key
+       key_refresh               krfr   &2   refresh key
+       key_replace               krpl   &3   replace key
+       key_restart               krst   &4   restart key
+       key_resume                kres   &5   resume key
+       key_right                 kcuf1  kr   right-arrow key
+       key_save                  ksav   &6   save key
+       key_sbeg                  kBEG   &9   shifted begin key
+       key_scancel               kCAN   &0   shifted cancel key
+       key_scommand              kCMD   *1   shifted command key
+       key_scopy                 kCPY   *2   shifted copy key
+       key_screate               kCRT   *3   shifted create key
+       key_sdc                   kDC    *4   shifted delete-char-
+                                             acter key
+       key_sdl                   kDL    *5   shifted delete-line
+                                             key
+       key_select                kslt   *6   select key
+       key_send                  kEND   *7   shifted end key
+       key_seol                  kEOL   *8   shifted clear-to-
+                                             end-of-line key
+       key_sexit                 kEXT   *9   shifted exit key
+       key_sf                    kind   kF   scroll-forward key
+       key_sfind                 kFND   *0   shifted find key
+       key_shelp                 kHLP   #1   shifted help key
+       key_shome                 kHOM   #2   shifted home key
+       key_sic                   kIC    #3   shifted insert-char-
+                                             acter key
+       key_sleft                 kLFT   #4   shifted left-arrow
+                                             key
+       key_smessage              kMSG   %a   shifted message key
+       key_smove                 kMOV   %b   shifted move key
+       key_snext                 kNXT   %c   shifted next key
+       key_soptions              kOPT   %d   shifted options key
+       key_sprevious             kPRV   %e   shifted previous key
+       key_sprint                kPRT   %f   shifted print key
+       key_sr                    kri    kR   scroll-backward key
+       key_sredo                 kRDO   %g   shifted redo key
+       key_sreplace              kRPL   %h   shifted replace key
+       key_sright                kRIT   %i   shifted right-arrow
+                                             key
+       key_srsume                kRES   %j   shifted resume key
+       key_ssave                 kSAV   !1   shifted save key
+       key_ssuspend              kSPD   !2   shifted suspend key
+       key_stab                  khts   kT   set-tab key
+       key_sundo                 kUND   !3   shifted undo key
+       key_suspend               kspd   &7   suspend key
+       key_undo                  kund   &8   undo key
+       key_up                    kcuu1  ku   up-arrow key
+       keypad_local              rmkx   ke   leave 'key-
+                                             board_transmit' mode
+       keypad_xmit               smkx   ks   enter 'key-
+                                             board_transmit' mode
+       lab_f0                    lf0    l0   label on function
+                                             key f0 if not f0
+       lab_f1                    lf1    l1   label on function
+                                             key f1 if not f1
+       lab_f10                   lf10   la   label on function
+                                             key f10 if not f10
+       lab_f2                    lf2    l2   label on function
+                                             key f2 if not f2
+       lab_f3                    lf3    l3   label on function
+                                             key f3 if not f3
+       lab_f4                    lf4    l4   label on function
+                                             key f4 if not f4
+
+
+       lab_f5                    lf5    l5   label on function
+                                             key f5 if not f5
+       lab_f6                    lf6    l6   label on function
+                                             key f6 if not f6
+       lab_f7                    lf7    l7   label on function
+                                             key f7 if not f7
+       lab_f8                    lf8    l8   label on function
+                                             key f8 if not f8
+       lab_f9                    lf9    l9   label on function
+                                             key f9 if not f9
+       label_format              fln    Lf   label format
+       label_off                 rmln   LF   turn off soft labels
+       label_on                  smln   LO   turn on soft labels
+       meta_off                  rmm    mo   turn off meta mode
+       meta_on                   smm    mm   turn on meta mode
+                                             (8th-bit on)
+       micro_column_address      mhpa   ZY   Like column_address
+                                             in micro mode
+       micro_down                mcud1  ZZ   Like cursor_down in
+                                             micro mode
+       micro_left                mcub1  Za   Like cursor_left in
+                                             micro mode
+       micro_right               mcuf1  Zb   Like cursor_right in
+                                             micro mode
+       micro_row_address         mvpa   Zc   Like row_address #1
+                                             in micro mode
+       micro_up                  mcuu1  Zd   Like cursor_up in
+                                             micro mode
+       newline                   nel    nw   newline (behave like
+                                             cr followed by lf)
+       order_of_pins             porder Ze   Match software bits
+                                             to print-head pins
+       orig_colors               oc     oc   Set all color pairs
+                                             to the original ones
+       orig_pair                 op     op   Set default pair to
+                                             its original value
+       pad_char                  pad    pc   padding char
+                                             (instead of null)
+       parm_dch                  dch    DC   delete #1 characters
+                                             (P*)
+       parm_delete_line          dl     DL   delete #1 lines (P*)
+       parm_down_cursor          cud    DO   down #1 lines (P*)
+       parm_down_micro           mcud   Zf   Like parm_down_cur-
+                                             sor in micro mode
+       parm_ich                  ich    IC   insert #1 characters
+                                             (P*)
+       parm_index                indn   SF   scroll forward #1
+                                             lines (P)
+       parm_insert_line          il     AL   insert #1 lines (P*)
+       parm_left_cursor          cub    LE   move #1 characters
+                                             to the left (P)
+       parm_left_micro           mcub   Zg   Like parm_left_cur-
+                                             sor in micro mode
+       parm_right_cursor         cuf    RI   move #1 characters
+                                             to the right (P*)
+       parm_right_micro          mcuf   Zh   Like parm_right_cur-
+                                             sor in micro mode
+       parm_rindex               rin    SR   scroll back #1 lines
+                                             (P)
+       parm_up_cursor            cuu    UP   up #1 lines (P*)
+       parm_up_micro             mcuu   Zi   Like parm_up_cursor
+                                             in micro mode
+       pkey_key                  pfkey  pk   program function key
+                                             #1 to type string #2
+
+
+       pkey_local                pfloc  pl   program function key
+                                             #1 to execute string
+                                             #2
+       pkey_xmit                 pfx    px   program function key
+                                             #1 to transmit
+                                             string #2
+       plab_norm                 pln    pn   program label #1 to
+                                             show string #2
+       print_screen              mc0    ps   print contents of
+                                             screen
+       prtr_non                  mc5p   pO   turn on printer for
+                                             #1 bytes
+       prtr_off                  mc4    pf   turn off printer
+       prtr_on                   mc5    po   turn on printer
+       pulse                     pulse  PU   select pulse dialing
+       quick_dial                qdial  QD   dial number #1 with-
+                                             out checking
+       remove_clock              rmclk  RC   remove clock
+       repeat_char               rep    rp   repeat char #1 #2
+                                             times (P*)
+       req_for_input             rfi    RF   send next input char
+                                             (for ptys)
+       reset_1string             rs1    r1   reset string
+       reset_2string             rs2    r2   reset string
+       reset_3string             rs3    r3   reset string
+       reset_file                rf     rf   name of reset file
+       restore_cursor            rc     rc   restore cursor to
+                                             position of last
+                                             save_cursor
+       row_address               vpa    cv   vertical position #1
+                                             absolute (P)
+       save_cursor               sc     sc   save current cursor
+                                             position (P)
+       scroll_forward            ind    sf   scroll text up (P)
+       scroll_reverse            ri     sr   scroll text down (P)
+       select_char_set           scs    Zj   Select character
+                                             set, #1
+       set_attributes            sgr    sa   define video
+                                             attributes #1-#9
+                                             (PG9)
+       set_background            setb   Sb   Set background color
+                                             #1
+       set_bottom_margin         smgb   Zk   Set bottom margin at
+                                             current line
+       set_bottom_margin_parm    smgbp  Zl   Set bottom margin at
+                                             line #1 or (if smgtp
+                                             is not given) #2
+                                             lines from bottom
+       set_clock                 sclk   SC   set clock, #1 hrs #2
+                                             mins #3 secs
+       set_color_pair            scp    sp   Set current color
+                                             pair to #1
+       set_foreground            setf   Sf   Set foreground color
+                                             #1
+       set_left_margin           smgl   ML   set left soft margin
+                                             at current column.
+                                             See smgl. (ML is not
+                                             in BSD termcap).
+       set_left_margin_parm      smglp  Zm   Set left (right)
+                                             margin at column #1
+       set_right_margin          smgr   MR   set right soft mar-
+                                             gin at current col-
+                                             umn
+       set_right_margin_parm     smgrp  Zn   Set right margin at
+                                             column #1
+
+       set_tab                   hts    st   set a tab in every
+                                             row, current columns
+       set_top_margin            smgt   Zo   Set top margin at
+                                             current line
+       set_top_margin_parm       smgtp  Zp   Set top (bottom)
+                                             margin at row #1
+       set_window                wind   wi   current window is
+                                             lines #1-#2 cols
+                                             #3-#4
+       start_bit_image           sbim   Zq   Start printing bit
+                                             image graphics
+       start_char_set_def        scsd   Zr   Start character set
+                                             definition #1, with
+                                             #2 characters in the
+                                             set
+       stop_bit_image            rbim   Zs   Stop printing bit
+                                             image graphics
+       stop_char_set_def         rcsd   Zt   End definition of
+                                             character set #1
+       subscript_characters      subcs  Zu   List of subscript-
+                                             able characters
+       superscript_characters    supcs  Zv   List of superscript-
+                                             able characters
+       tab                       ht     ta   tab to next 8-space
+                                             hardware tab stop
+       these_cause_cr            docr   Zw   Printing any of
+                                             these characters
+                                             causes CR
+       to_status_line            tsl    ts   move to status line,
+                                             column #1
+       tone                      tone   TO   select touch tone
+                                             dialing
+       underline_char            uc     uc   underline char and
+                                             move past it
+       up_half_line              hu     hu   half a line up
+       user0                     u0     u0   User string #0
+       user1                     u1     u1   User string #1
+       user2                     u2     u2   User string #2
+       user3                     u3     u3   User string #3
+       user4                     u4     u4   User string #4
+       user5                     u5     u5   User string #5
+       user6                     u6     u6   User string #6
+       user7                     u7     u7   User string #7
+       user8                     u8     u8   User string #8
+       user9                     u9     u9   User string #9
+       wait_tone                 wait   WA   wait for dial-tone
+       xoff_character            xoffc  XF   XOFF character
+       xon_character             xonc   XN   XON character
+       zero_motion               zerom  Zx   No motion for subse-
+                                             quent character
+
+       The  following  string  capabilities  are  present  in the
+       SVr4.0 term structure, but were originally not  documented
+       in the man page.
+
+
+               Variable          Cap-     TCap    Description
+                String           name     Code
+       alt_scancode_esc          scesa    S8   Alternate escape
+                                               for scancode emu-
+                                               lation
+       bit_image_carriage_return bicr     Yv   Move to beginning
+                                               of same row
+       bit_image_newline         binel    Zz   Move to next row
+                                               of the bit image
+
+       bit_image_repeat          birep    Xy   Repeat bit image
+                                               cell #1 #2 times
+       char_set_names            csnm     Zy   Produce #1'th item
+                                               from list of char-
+                                               acter set names
+       code_set_init             csin     ci   Init sequence for
+                                               multiple codesets
+       color_names               colornm  Yw   Give name for
+                                               color #1
+       define_bit_image_region   defbi    Yx   Define rectan-
+                                               gualar bit image
+                                               region
+       device_type               devt     dv   Indicate lan-
+                                               guage/codeset sup-
+                                               port
+       display_pc_char           dispc    S1   Display PC charac-
+                                               ter #1
+       end_bit_image_region      endbi    Yy   End a bit-image
+                                               region
+       enter_pc_charset_mode     smpch    S2   Enter PC character
+                                               display mode
+       enter_scancode_mode       smsc     S4   Enter PC scancode
+                                               mode
+       exit_pc_charset_mode      rmpch    S3   Exit PC character
+                                               display mode
+       exit_scancode_mode        rmsc     S5   Exit PC scancode
+                                               mode
+       get_mouse                 getm     Gm   Curses should get
+                                               button events,
+                                               parameter #1 not
+                                               documented.
+       key_mouse                 kmous    Km   Mouse event has
+                                               occurred
+       mouse_info                minfo    Mi   Mouse status
+                                               information
+       pc_term_options           pctrm    S6   PC terminal
+                                               options
+       pkey_plab                 pfxl     xl   Program function
+                                               key #1 to type
+                                               string #2 and show
+                                               string #3
+       req_mouse_pos             reqmp    RQ   Request mouse
+                                               position
+       scancode_escape           scesc    S7   Escape for scan-
+                                               code emulation
+       set0_des_seq              s0ds     s0   Shift to codeset 0
+                                               (EUC set 0, ASCII)
+       set1_des_seq              s1ds     s1   Shift to codeset 1
+       set2_des_seq              s2ds     s2   Shift to codeset 2
+       set3_des_seq              s3ds     s3   Shift to codeset 3
+       set_a_background          setab    AB   Set background
+                                               color to #1, using
+                                               ANSI escape
+       set_a_foreground          setaf    AF   Set foreground
+                                               color to #1, using
+                                               ANSI escape
+       set_color_band            setcolor Yz   Change to ribbon
+                                               color #1
+       set_lr_margin             smglr    ML   Set both left and
+                                               right margins to
+                                               #1, #2.  (ML is
+                                               not in BSD term-
+                                               cap).
+       set_page_length           slines   YZ   Set page length to
+                                               #1 lines
+
+       set_tb_margin             smgtb    MT   Sets both top and
+                                               bottom margins to
+                                               #1, #2
+
+        The XSI Curses  standard  added  these.   They  are  some
+        post-4.1  versions  of System V curses, e.g., Solaris 2.5
+        and IRIX 6.x.  The ncurses termcap  names  for  them  are
+        invented; according to the XSI Curses standard, they have
+        no termcap names.  If your compiled terminfo entries  use
+        these,  they  may  not be binary-compatible with System V
+        terminfo entries after SVr4.1; beware!
+
+
+                Variable         Cap-   TCap     Description
+                 String          name   Code
+        enter_horizontal_hl_mode ehhlm  Xh   Enter horizontal
+                                             highlight mode
+        enter_left_hl_mode       elhlm  Xl   Enter left highlight
+                                             mode
+        enter_low_hl_mode        elohlm Xo   Enter low highlight
+                                             mode
+        enter_right_hl_mode      erhlm  Xr   Enter right high-
+                                             light mode
+        enter_top_hl_mode        ethlm  Xt   Enter top highlight
+                                             mode
+        enter_vertical_hl_mode   evhlm  Xv   Enter vertical high-
+                                             light mode
+        set_a_attributes         sgr1   sA   Define second set of
+                                             video attributes
+                                             #1-#6
+        set_pglen_inch           slengthsL   YI Set page length
+                                             to #1 hundredth of
+                                             an inch
+
+   A Sample Entry
+       The following entry, describing an ANSI-standard terminal,
+       is  representative  of  what a terminfo entry for a modern
+       terminal typically looks like.
+
+     ansi|ansi/pc-term compatible with color,
+             mc5i,
+             colors#8, ncv#3, pairs#64,
+             cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+             cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
+             ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%p1%dG, ht=\E[I,
+             ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, .indn=\E[%p1%dT,
+             kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
+             kcuf1=\E[C, kcuu1=\E[A, kf1=\E[M, kf10=\E[V,
+             kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P,
+             kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
+             kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
+             op=\E[37;40m, rep=%p1%c\E[%p2%{1}%-%db,
+             rin=\E[%p1%dT, s0ds=\E(B, s1ds=\E)B, s2ds=\E*B,
+             s3ds=\E+B, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+             setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+             setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+             sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
+             sgr0=\E[0;10m, tbc=\E[2g, u6=\E[%d;%dR, u7=\E[6n,
+             u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%p1%dd,
+
+       Entries may continue onto multiple lines by placing  white
+       space  at  the  beginning  of  each line except the first.
+       Comments may be included on lines  beginning  with  ``#''.
+       Capabilities in terminfo are of three types: Boolean capa-
+       bilities which indicate that the terminal has some partic-
+       ular  feature, numeric capabilities giving the size of the
+       terminal or the size  of  particular  delays,  and  string
+       capabilities,  which  give a sequence which can be used to
+       perform particular terminal operations.
+
+
+   Types of Capabilities
+       All capabilities have names.  For instance, the fact  that
+       ANSI-standard  terminals  have automatic margins (i.e., an
+       automatic return and line-feed when the end of a  line  is
+       reached)  is  indicated  by  the capability am.  Hence the
+       description of ansi includes am.  Numeric capabilities are
+       followed  by  the character `#' and then a positive value.
+       Thus cols, which indicates the number of columns the  ter-
+       minal  has,  gives  the  value  `80' for ansi.  Values for
+       numeric capabilities may be specified in decimal, octal or
+       hexadecimal,  using the C programming language conventions
+       (e.g., 255, 0377 and 0xff or 0xFF).
+
+       Finally, string valued capabilities, such as el (clear  to
+       end of line sequence) are given by the two-character code,
+       an `=', and then a string ending  at  the  next  following
+       `,'.
+
+       A  number  of  escape sequences are provided in the string
+       valued capabilities for easy encoding of characters there.
+       Both  \E  and  \e map to an ESCAPE character, ^x maps to a
+       control-x for any appropriate x, and the sequences  \n  \l
+       \r  \t  \b  \f  \s give a newline, line-feed, return, tab,
+       backspace, form-feed, and space.  Other escapes include \^
+       for  ^, \\ for \, \, for comma, \: for :, and \0 for null.
+       (\0 will produce \200, which does not terminate  a  string
+       but behaves as a null character on most terminals, provid-
+       ing CS7 is specified.  See stty(1).)  Finally,  characters
+       may be given as three octal digits after a \.
+
+       A  delay  in  milliseconds may appear anywhere in a string
+       capability, enclosed in $<..> brackets, as in  el=\EK$<5>,
+       and  padding  characters  are supplied by tputs to provide
+       this delay.  The delay must be a number with at  most  one
+       decimal place of precision; it may be followed by suffixes
+       `*' or '/' or both.  A  `*'  indicates  that  the  padding
+       required  is  proportional to the number of lines affected
+       by the  operation,  and  the  amount  given  is  the  per-
+       affected-unit  padding  required.   (In the case of insert
+       character,  the  factor  is  still  the  number  of  lines
+       affected.)   Normally,  padding  is advisory if the device
+       has the xon capability; it is used  for  cost  computation
+       but  does not trigger delays.  A `/' suffix indicates that
+       the padding is mandatory and forces a delay of  the  given
+       number  of  milliseconds  even on devices for which xon is
+       present to indicate flow control.
+
+       Sometimes individual capabilities must be  commented  out.
+       To  do this, put a period before the capability name.  For
+       example, see the second ind in the example above.
+
+
+   Fetching Compiled Descriptions
+       If the environment variable TERMINFO is set, it is  inter-
+       preted  as the pathname of a directory containing the com-
+       piled description you are working on.  Only that directory
+       is searched.
+
+       If  TERMINFO  is  not set, the ncurses version of the ter-
+       minfo reader code  will  instead  look  in  the  directory
+       $HOME/.terminfo  for  a compiled description.  If it fails
+       to find one  there,  and  the  environment  variable  TER-
+       MINFO_DIRS  is set, it will interpret the contents of that
+       variable as a list of colon- separated directories  to  be
+       searched  (an  empty  entry is interpreted as a command to
+       search /usr/share/terminfo).  If no description  is  found
+       in  any of the TERMINFO_DIRS directories, the fetch fails.
+
+       If neither TERMINFO nor TERMINFO_DIRS  is  set,  the  last
+       place   tried  will  be  the  system  terminfo  directory,
+       /usr/share/terminfo.
+
+       (Neither the  $HOME/.terminfo  lookups  nor  TERMINFO_DIRS
+       extensions   are  supported  under  stock  System  V  ter-
+       minfo/curses.)
+
+
+   Preparing Descriptions
+       We now outline how to prepare descriptions  of  terminals.
+       The  most  effective way to prepare a terminal description
+       is by imitating the description of a similar  terminal  in
+       terminfo  and  to  build up a description gradually, using
+       partial descriptions with vi or some other screen-oriented
+       program  to  check that they are correct.  Be aware that a
+       very unusual terminal may expose deficiencies in the abil-
+       ity  of  the  terminfo  file to describe it or bugs in the
+       screen-handling code of the test program.
+
+       To get the padding for insert line right (if the  terminal
+       manufacturer did not document it) a severe test is to edit
+       a large file at 9600 baud, delete 16 or so lines from  the
+       middle  of  the screen, then hit the `u' key several times
+       quickly.  If the terminal messes up, more padding is  usu-
+       ally  needed.  A similar test can be used for insert char-
+       acter.
+
+
+   Basic Capabilities
+       The number of columns on each line  for  the  terminal  is
+       given  by the cols numeric capability.  If the terminal is
+       a CRT, then the number of lines on the screen is given  by
+       the lines capability.  If the terminal wraps around to the
+       beginning of the next line when it reaches the right  mar-
+       gin, then it should have the am capability.  If the termi-
+       nal can clear its screen, leaving the cursor in  the  home
+       position,  then this is given by the clear string capabil-
+       ity.  If the terminal overstrikes (rather than clearing  a
+       position  when  a character is struck over) then it should
+       have the os capability.  If the  terminal  is  a  printing
+       terminal,  with no soft copy unit, give it both hc and os.
+       (os applies to storage scope terminals, such as  TEKTRONIX
+       4010  series, as well as hard copy and APL terminals.)  If
+       there is a code to move the cursor to the left edge of the
+       current row, give this as cr.  (Normally this will be car-
+       riage return, control M.)  If there is a code  to  produce
+       an audible signal (bell, beep, etc) give this as bel.
+
+       If  there is a code to move the cursor one position to the
+       left (such as backspace) that capability should  be  given
+       as  cub1.   Similarly, codes to move to the right, up, and
+       down should be given as cuf1, cuu1, and cud1.  These local
+       cursor  motions  should not alter the text they pass over,
+       for example, you would not normally use  `cuf1= '  because
+       the space would erase the character moved over.
+
+       A  very  important  point  here  is  that the local cursor
+       motions encoded in terminfo are undefined at the left  and
+       top  edges  of  a  CRT  terminal.   Programs  should never
+       attempt to backspace around the left edge,  unless  bw  is
+       given, and never attempt to go up locally off the top.  In
+       order to scroll text up, a program will go to  the  bottom
+       left corner of the screen and send the ind (index) string.
+
+       To scroll text down, a program goes to the top left corner
+       of  the  screen  and  sends the ri (reverse index) string.
+       The strings ind and ri are undefined  when  not  on  their
+       respective corners of the screen.
+
+       Parameterized versions of the scrolling sequences are indn
+       and rin which have the same semantics as ind and ri except
+       that  they take one parameter, and scroll that many lines.
+       They are also undefined except at the appropriate edge  of
+       the screen.
+
+       The  am  capability tells whether the cursor sticks at the
+       right edge of the screen when text  is  output,  but  this
+       does not necessarily apply to a cuf1 from the last column.
+       The only local motion which is defined from the left  edge
+       is  if  bw  is  given, then a cub1 from the left edge will
+       move to the right edge of the previous row.  If bw is  not
+       given,  the effect is undefined.  This is useful for draw-
+       ing a box around the edge of the screen, for example.   If
+       the  terminal has switch selectable automatic margins, the
+       terminfo file usually assumes that this is on;  i.e.,  am.
+       If  the  terminal  has  a command which moves to the first
+       column of the next line, that command can be given as  nel
+       (newline).   It  does not matter if the command clears the
+       remainder of the current line, so if the terminal  has  no
+       cr  and lf it may still be possible to craft a working nel
+       out of one or both of them.
+
+       These  capabilities  suffice  to  describe  hard-copy  and
+       "glass-tty"  terminals.   Thus  the  model  33 teletype is
+       described as
+
+       33|tty33|tty|model 33 teletype,
+            bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
+
+       while the Lear Siegler ADM-3 is described as
+
+       adm3|3|lsi adm3,
+            am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
+            ind=^J, lines#24,
+
+
+   Parameterized Strings
+       Cursor addressing and other strings  requiring  parameters
+       in  the  terminal  are described by a parameterized string
+       capability, with printf(3) like escapes  %x  in  it.   For
+       example,  to  address  the  cursor,  the cup capability is
+       given, using two parameters: the row and column to address
+       to.  (Rows and columns are numbered from zero and refer to
+       the physical screen visible to the user, not to any unseen
+       memory.)   If  the  terminal  has  memory  relative cursor
+       addressing, that can be indicated by mrcup.
+
+       The parameter mechanism uses a stack and special  %  codes
+       to  manipulate  it.  Typically a sequence will push one of
+       the parameters onto the stack and then print  it  in  some
+       format.   Print  (e.g.,  "%d")  is  a special case.  Other
+       operations, including "%t"  pop  their  operand  from  the
+       stack.  It is noted that more complex operations are often
+       necessary, e.g., in the sgr string.
+
+       The % encodings have the following meanings:
+
+
+       %%   outputs `%'
+
+       %[[:]flags][width[.precision]][doxXs]
+            as in printf, flags are [-+#] and space.  Use  a  `:'
+            to  allow the next character to be a `-' flag, avoid-
+            ing interpreting "%-" as an operator.
+
+       %c   print pop() like %c in printf
+
+       %s   print pop() like %s in printf
+
+       %p[1-9]
+            push i'th parameter
+
+       %P[a-z]
+            set dynamic variable [a-z] to pop()
+
+       %g[a-z]
+            get dynamic variable [a-z] and push it
+
+       %P[A-Z]
+            set static variable [a-z] to pop()
+
+       %g[A-Z]
+            get static variable [a-z] and push it
+
+            The terms  "static"  and  "dynamic"  are  misleading.
+            Historically,  these are simply two different sets of
+            variables, whose values are not reset  between  calls
+            to  tparm.   However,  that fact is not documented in
+            other implementations.  Relying on it will  adversely
+            impact portability to other implementations.
+
+       %'c' char constant c
+
+       %{nn}
+            integer constant nn
+
+       %l   push strlen(pop)
+
+       %+ %- %* %/ %m
+            arithmetic (%m is mod): push(pop() op pop())
+
+       %& %| %^
+            bit operations (AND, OR and exclusive-OR): push(pop()
+            op pop())
+
+       %= %> %<
+            logical operations: push(pop() op pop())
+
+       %A, %O
+            logical AND and OR operations (for conditionals)
+
+       %! %~
+            unary  operations  (logical  and   bit   complement):
+            push(op pop())
+
+       %i   add 1 to first two parameters (for ANSI terminals)
+
+       %? expr %t thenpart %e elsepart %;
+            This  forms  an  if-then-else.   The  %e  elsepart is
+            optional.  Usually the %? expr part  pushes  a  value
+            onto  the stack, and %t pops it from the stack, test-
+            ing if it is nonzero (true).  If it is zero  (false),
+            control passes to the %e (else) part.
+
+            It is possible to form else-if's a la Algol 68:
+            %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
+
+            where ci are conditions, bi are bodies.
+
+            Use the -f option of tic or infocmp to see the struc-
+            ture  of  if-the-else's.  Some strings, e.g., sgr can
+            be very complicated when written on one line.  The -f
+            option  splits  the  string into lines with the parts
+            indented.
+
+       Binary operations are in postfix form with the operands in
+       the  usual  order.   That  is,  to  get  x-5 one would use
+       "%gx%{5}%-".  %P and %g variables  are  persistent  across
+       escape-string evaluations.
+
+       Consider the HP2645, which, to get to row 3 and column 12,
+       needs to be sent \E&a12c03Y  padded  for  6  milliseconds.
+       Note  that  the  order of the rows and columns is inverted
+       here, and that the row and column are printed as two  dig-
+       its.  Thus its cup capability is "cup=6\E&%p2%2dc%p1%2dY".
+
+       The Microterm ACT-IV needs the current row and column sent
+       preceded  by  a ^T, with the row and column simply encoded
+       in binary, "cup=^T%p1%c%p2%c".  Terminals which  use  "%c"
+       need  to  be  able  to backspace the cursor (cub1), and to
+       move the cursor up one line on the screen (cuu1).  This is
+       necessary  because it is not always safe to transmit \n ^D
+       and \r, as the system may change or  discard  them.   (The
+       library  routines  dealing  with terminfo set tty modes so
+       that tabs are never expanded, so \t is safe to send.  This
+       turns out to be essential for the Ann Arbor 4080.)
+
+       A final example is the LSI ADM-3a, which uses row and col-
+       umn  offset  by  a  blank  character,  thus  "cup=\E=%p1%'
+       '%+%c%p2%'  '%+%c".   After sending `\E=', this pushes the
+       first parameter, pushes the ASCII value for a space  (32),
+       adds  them  (pushing  the sum on the stack in place of the
+       two previous values) and outputs that value as  a  charac-
+       ter.   Then  the  same  is  done for the second parameter.
+       More complex arithmetic is possible using the stack.
+
+
+   Cursor Motions
+       If the terminal has a fast way to home the cursor (to very
+       upper  left  corner  of  screen) then this can be given as
+       home; similarly a fast way of getting to the  lower  left-
+       hand  corner can be given as ll; this may involve going up
+       with cuu1 from the home position,  but  a  program  should
+       never  do this itself (unless ll does) because it can make
+       no assumption about the effect of moving up from the  home
+       position.   Note  that  the  home  position is the same as
+       addressing to (0,0): to the top left corner of the screen,
+       not  of  memory.   (Thus, the \EH sequence on HP terminals
+       cannot be used for home.)
+
+       If the terminal has row or column absolute cursor address-
+       ing,  these  can be given as single parameter capabilities
+       hpa (horizontal position absolute) and vpa (vertical posi-
+       tion absolute).  Sometimes these are shorter than the more
+       general two parameter sequence (as with  the  hp2645)  and
+       can   be   used  in  preference  to  cup.   If  there  are
+       parameterized local motions (e.g., move n  spaces  to  the
+       right) these can be given as cud, cub, cuf, and cuu with a
+       single parameter  indicating  how  many  spaces  to  move.
+       These  are  primarily useful if the terminal does not have
+       cup, such as the TEKTRONIX 4025.
+
+       If the terminal needs to be in a special mode when running
+       a program that uses these capabilities, the codes to enter
+       and exit this mode can be given as smcup and rmcup.   This
+       arises,  for example, from terminals like the Concept with
+       more than one page of memory.  If the  terminal  has  only
+       memory  relative cursor addressing and not screen relative
+       cursor addressing, a one screen-sized window must be fixed
+       into  the terminal for cursor addressing to work properly.
+       This is also used for the TEKTRONIX 4025, where smcup sets
+       the  command character to be the one used by terminfo.  If
+       the smcup sequence will not restore the  screen  after  an
+       rmcup sequence is output (to the state prior to outputting
+       rmcup), specify nrrmc.
+
+
+   Area Clears
+       If the terminal can clear from the current position to the
+       end  of  the  line,  leaving  the cursor where it is, this
+       should be given as el.  If the terminal can clear from the
+       beginning  of  the line to the current position inclusive,
+       leaving the cursor where it is, this should  be  given  as
+       el1.   If the terminal can clear from the current position
+       to the end of the display, then this should  be  given  as
+       ed.   Ed  is only defined from the first column of a line.
+       (Thus, it can be simulated by a request to delete a  large
+       number of lines, if a true ed is not available.)
+
+
+   Insert/delete line and vertical motions
+       If  the terminal can open a new blank line before the line
+       where the cursor is, this should be given as il1; this  is
+       done  only  from the first position of a line.  The cursor
+       must then appear on the newly blank line.  If the terminal
+       can  delete  the  line  which  the cursor is on, then this
+       should be given as dl1; this is done only from  the  first
+       position  on  the line to be deleted.  Versions of il1 and
+       dl1 which take a single parameter  and  insert  or  delete
+       that many lines can be given as il and dl.
+
+       If  the terminal has a settable scrolling region (like the
+       vt100) the command to set this can be described  with  the
+       csr  capability,  which  takes two parameters: the top and
+       bottom lines of the scrolling region.  The cursor position
+       is, alas, undefined after using this command.
+
+       It  is possible to get the effect of insert or delete line
+       using csr on a properly chosen region; the sc and rc (save
+       and  restore  cursor)  commands may be useful for ensuring
+       that your synthesized insert/delete string does  not  move
+       the  cursor.  (Note that the ncurses(3x) library does this
+       synthesis  automatically,  so   you   need   not   compose
+       insert/delete strings for an entry with csr).
+
+       Yet another way to construct insert and delete might be to
+       use a combination of index with  the  memory-lock  feature
+       found  on some terminals (like the HP-700/90 series, which
+       however also has insert/delete).
+
+       Inserting lines at the top or bottom  of  the  screen  can
+       also  be  done using ri or ind on many terminals without a
+       true insert/delete line, and is often faster even on  ter-
+       minals with those features.
+
+       The  boolean  non_dest_scroll_region should be set if each
+       scrolling window is effectively a view port on  a  screen-
+       sized  canvas.   To  test  for  this  capability, create a
+       scrolling region in the middle of the screen, write  some-
+       thing  to  the  bottom line, move the cursor to the top of
+       the region, and do ri followed by dl1 or ind.  If the data
+       scrolled  off  the  bottom  of  the  region  by the ri re-
+       appears, then scrolling is non-destructive.  System V  and
+       XSI  Curses  expect that ind, ri, indn, and rin will simu-
+       late destructive scrolling; their  documentation  cautions
+       you  not  to  define csr unless this is true.  This curses
+       implementation is more liberal and will do explicit erases
+       after scrolling if ndstr is defined.
+
+       If the terminal has the ability to define a window as part
+       of memory, which all commands affect, it should  be  given
+       as the parameterized string wind.  The four parameters are
+       the starting and ending lines in memory and  the  starting
+       and ending columns in memory, in that order.
+
+       If  the terminal can retain display memory above, then the
+       da capability should be given; if display  memory  can  be
+       retained  below,  then db should be given.  These indicate
+       that deleting a line  or  scrolling  may  bring  non-blank
+       lines  up  from  below  or that scrolling back with ri may
+       bring down non-blank lines.
+
+
+   Insert/Delete Character
+       There are two basic kinds of  intelligent  terminals  with
+       respect  to insert/delete character which can be described
+       using terminfo.  The most common  insert/delete  character
+       operations  affect only the characters on the current line
+       and shift characters off the  end  of  the  line  rigidly.
+       Other  terminals,  such  as the Concept 100 and the Perkin
+       Elmer Owl, make a distinction between  typed  and  untyped
+       blanks  on  the  screen, shifting upon an insert or delete
+       only to an untyped blank on the  screen  which  is  either
+       eliminated,  or  expanded  to two untyped blanks.  You can
+       determine the kind of terminal you have  by  clearing  the
+       screen  and  then typing text separated by cursor motions.
+       Type "abc    def" using local cursor motions (not  spaces)
+       between the "abc" and the "def".  Then position the cursor
+       before the "abc" and put the terminal in insert mode.   If
+       typing  characters  causes  the  rest of the line to shift
+       rigidly and characters to fall off the end, then your ter-
+       minal  does  not  distinguish  between  blanks and untyped
+       positions.  If the "abc" shifts over to  the  "def"  which
+       then  move together around the end of the current line and
+       onto the next as you insert, you have the second  type  of
+       terminal,  and should give the capability in, which stands
+       for "insert null".  While these are two logically separate
+       attributes  (one  line  versus multi-line insert mode, and
+       special treatment of untyped spaces) we have seen no  ter-
+       minals whose insert mode cannot be described with the sin-
+       gle attribute.
+
+       Terminfo can describe both terminals which have an  insert
+       mode, and terminals which send a simple sequence to open a
+       blank position on the current  line.   Give  as  smir  the
+       sequence  to  get  into  insert  mode.   Give  as rmir the
+       sequence to leave insert  mode.   Now  give  as  ich1  any
+       sequence  needed  to  be  sent  just  before  sending  the
+       character to be inserted.   Most  terminals  with  a  true
+       insert  mode  will  not  give ich1; terminals which send a
+       sequence to open a screen position should give it here.
+
+       If your terminal has both, insert mode is usually  prefer-
+       able  to  ich1.   Technically,  you  should  not give both
+       unless the terminal actually requires both to be  used  in
+       combination.   Accordingly,  some  non-curses applications
+       get confused if both are present; the symptom  is  doubled
+       characters in an update using insert.  This requirement is
+       now rare; most ich sequences do not require previous smir,
+       and most smir insert modes do not require ich1 before each
+       character.  Therefore, the  new  curses  actually  assumes
+       this  is the case and uses either rmir/smir or ich/ich1 as
+       appropriate (but not both).  If you have to write an entry
+       to  be  used under new curses for a terminal old enough to
+       need both, include the rmir/smir sequences in ich1.
+
+       If post insert padding is needed, give this as a number of
+       milliseconds  in ip (a string option).  Any other sequence
+       which may need to be sent after  an  insert  of  a  single
+       character may also be given in ip.  If your terminal needs
+       both to be placed into an `insert mode' and a special code
+       to  precede  each  inserted character, then both smir/rmir
+       and ich1 can be given, and both will  be  used.   The  ich
+       capability, with one parameter, n, will repeat the effects
+       of ich1 n times.
+
+       If padding is necessary between characters typed while not
+       in  insert  mode,  give  this  as a number of milliseconds
+       padding in rmp.
+
+       It is occasionally  necessary  to  move  around  while  in
+       insert  mode  to delete characters on the same line (e.g.,
+       if there is a tab after the insertion position).  If  your
+       terminal  allows  motion while in insert mode you can give
+       the capability mir to speed up  inserting  in  this  case.
+       Omitting  mir  will  affect  only  speed.   Some terminals
+       (notably Datamedia's) must not have mir because of the way
+       their insert mode works.
+
+       Finally,  you  can specify dch1 to delete a single charac-
+       ter, dch with one parameter, n, to  delete  n  characters,
+       and  delete mode by giving smdc and rmdc to enter and exit
+       delete mode (any mode the terminal needs to be  placed  in
+       for dch1 to work).
+
+       A  command to erase n characters (equivalent to outputting
+       n blanks without moving the cursor) can be  given  as  ech
+       with one parameter.
+
+
+   Highlighting, Underlining, and Visible Bells
+       If  your  terminal  has  one  or  more  kinds  of  display
+       attributes, these can be represented in a number  of  dif-
+       ferent ways.  You should choose one display form as stand-
+       out mode, representing a good, high contrast, easy-on-the-
+       eyes,  format  for  highlighting  error messages and other
+       attention getters.  (If you have a choice,  reverse  video
+       plus  half-bright  is  good, or reverse video alone.)  The
+       sequences to enter and exit standout  mode  are  given  as
+       smso  and  rmso, respectively.  If the code to change into
+       or out of standout mode  leaves  one  or  even  two  blank
+       spaces  on the screen, as the TVI 912 and Teleray 1061 do,
+       then xmc should be given to tell how many spaces are left.
+
+       Codes  to  begin  underlining  and  end underlining can be
+       given as smul and rmul respectively.  If the terminal  has
+       a  code  to  underline  the current character and move the
+       cursor one space to the right, such as the Microterm Mime,
+       this can be given as uc.
+
+       Other  capabilities  to  enter  various highlighting modes
+       include blink (blinking) bold (bold or extra  bright)  dim
+       (dim  or  half-bright)  invis (blanking or invisible text)
+       prot (protected) rev (reverse video) sgr0  (turn  off  all
+       attribute  modes)  smacs  (enter  alternate  character set
+       mode) and  rmacs  (exit  alternate  character  set  mode).
+       Turning  on  any of these modes singly may or may not turn
+       off other modes.
+
+       If there is a sequence to set  arbitrary  combinations  of
+       modes,  this should be given as sgr (set attributes), tak-
+       ing 9 parameters.  Each parameter is either 0 or  nonzero,
+       as the corresponding attribute is on or off.  The 9 param-
+       eters are, in order: standout, underline, reverse,  blink,
+       dim,  bold,  blank, protect, alternate character set.  Not
+       all modes need be supported by sgr, only those  for  which
+       corresponding separate attribute commands exist.
+
+       For example, the DEC vt220 supports most of the modes:
+
+
+           tparm parameter   attribute    escape sequence
+
+           none              none         \E[0m
+           p1                standout     \E[0;1;7m
+           p2                underline    \E[0;4m
+           p3                reverse      \E[0;7m
+           p4                blink        \E[0;5m
+           p5                dim          not available
+           p6                bold         \E[0;1m
+           p7                invis        \E[0;8m
+           p8                protect      not used
+           p9                altcharset   ^O (off) ^N (on)
+
+       We  begin each escape sequence by turning off any existing
+       modes, since there is no quick way  to  determine  whether
+       they are active.  Standout is set up to be the combination
+       of reverse and bold.  The vt220  terminal  has  a  protect
+       mode,  though  it  is  not commonly used in sgr because it
+       protects characters on the screen  from  the  host's  era-
+       sures.   The  altcharset mode also is different in that it
+       is either ^O or ^N, depending on whether it is off or  on.
+       If  all  modes  are  turned  on, the resulting sequence is
+       \E[0;1;4;5;7;8m^N.
+
+       Some sequences are common to different modes.   For  exam-
+       ple,  ;7  is output when either p1 or p3 is true, that is,
+       if either standout or reverse modes are turned on.
+
+       Writing out the above sequences, along with  their  depen-
+       dencies yields
+
+
+         sequence    when to output     terminfo translation
+
+         \E[0       always              \E[0
+         ;1         if p1 or p6         %?%p1%p6%|%t;1%;
+         ;4         if p2               %?%p2%|%t;4%;
+         ;5         if p4               %?%p4%|%t;5%;
+
+         ;7         if p1 or p3         %?%p1%p3%|%t;7%;
+         ;8         if p7               %?%p7%|%t;8%;
+         m          always              m
+         ^N or ^O   if p9 ^N, else ^O   %?%p9%t^N%e^O%;
+
+       Putting this all together into the sgr sequence gives:
+
+           sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
+               %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+
+       Remember  that  if  you specify sgr, you must also specify
+       sgr0.  Also, some implementations rely on sgr being  given
+       if  sgr0  is, Not all terminfo entries necessarily have an
+       sgr string, however.  Many terminfo  entries  are  derived
+       from  termcap  entries which have no sgr string.  The only
+       drawback to adding an sgr  string  is  that  termcap  also
+       assumes  that  sgr0  does not exit alternate character set
+       mode.
+
+       Terminals with the ``magic cookie'' glitch  (xmc)  deposit
+       special   ``cookies''   when   they  receive  mode-setting
+       sequences, which affect the display algorithm rather  than
+       having  extra  bits  for  each character.  Some terminals,
+       such as the HP 2621,  automatically  leave  standout  mode
+       when  they  move to a new line or the cursor is addressed.
+       Programs using standout mode  should  exit  standout  mode
+       before  moving the cursor or sending a newline, unless the
+       msgr capability, asserting that it  is  safe  to  move  in
+       standout mode, is present.
+
+       If  the terminal has a way of flashing the screen to indi-
+       cate an error quietly (a bell replacement) then  this  can
+       be given as flash; it must not move the cursor.
+
+       If  the  cursor  needs to be made more visible than normal
+       when it is not on the bottom line (to make, for example, a
+       non-blinking  underline  into  an  easier to find block or
+       blinking underline) give this sequence as cvvis.  If there
+       is  a  way  to  make the cursor completely invisible, give
+       that as civis.  The capability cnorm should be given which
+       undoes the effects of both of these modes.
+
+       If your terminal correctly generates underlined characters
+       (with no special codes needed) even  though  it  does  not
+       overstrike,  then you should give the capability ul.  If a
+       character overstriking another leaves both  characters  on
+       the screen, specify the capability os.  If overstrikes are
+       erasable with a blank, then this should  be  indicated  by
+       giving eo.
+
+
+   Keypad and Function Keys
+       If the terminal has a keypad that transmits codes when the
+       keys are pressed, this information  can  be  given.   Note
+       that it is not possible to handle terminals where the key-
+       pad only works in local (this applies, for example, to the
+       unshifted  HP  2621  keys).   If  the keypad can be set to
+       transmit or not transmit, give these  codes  as  smkx  and
+       rmkx.  Otherwise the keypad is assumed to always transmit.
+       The codes sent by the left arrow, right arrow,  up  arrow,
+       down  arrow,  and  home keys can be given as kcub1, kcuf1,
+       kcuu1, kcud1, and khome respectively.  If there are  func-
+       tion  keys  such  as f0, f1, ..., f10, the codes they send
+       can be given as kf0, kf1, ..., kf10.  If these  keys  have
+       labels  other  than the default f0 through f10, the labels
+       can  be  given  as  lf0,  lf1,  ...,  lf10.    The   codes
+       transmitted  by  certain  other special keys can be given:
+       kll (home down), kbs (backspace), ktbc (clear  all  tabs),
+       kctab  (clear  the  tab  stop in this column), kclr (clear
+       screen or  erase  key),  kdch1  (delete  character),  kdl1
+       (delete line), krmir (exit insert mode), kel (clear to end
+       of line), ked (clear to  end  of  screen),  kich1  (insert
+       character  or  enter insert mode), kil1 (insert line), knp
+       (next  page),  kpp  (previous  page),  kind  (scroll  for-
+       ward/down), kri (scroll backward/up), khts (set a tab stop
+       in this column).  In addition, if the keypad has a 3 by  3
+       array  of  keys  including  the four arrow keys, the other
+       five keys can be given as ka1, ka3,  kb2,  kc1,  and  kc3.
+       These  keys are useful when the effects of a 3 by 3 direc-
+       tional pad are needed.
+
+       Strings to program function keys can be  given  as  pfkey,
+       pfloc,  and pfx.  A string to program screen labels should
+       be specified as pln.  Each  of  these  strings  takes  two
+       parameters:  the function key number to program (from 0 to
+       10) and the string to program it with.  Function key  num-
+       bers  out  of  this  range may program undefined keys in a
+       terminal dependent manner.   The  difference  between  the
+       capabilities  is  that pfkey causes pressing the given key
+       to be the same as the user typing the given string;  pfloc
+       causes the string to be executed by the terminal in local;
+       and pfx causes the string to be transmitted  to  the  com-
+       puter.
+
+       The capabilities nlab, lw and lh define the number of pro-
+       grammable screen labels and their width  and  height.   If
+       there  are  commands  to  turn the labels on and off, give
+       them in smln and rmln.  smln is normally output after  one
+       or more pln sequences to make sure that the change becomes
+       visible.
+
+
+   Tabs and Initialization
+       If the terminal has hardware tabs, the command to  advance
+       to  the  next tab stop can be given as ht (usually control
+       I).  A ``back-tab'' command which moves  leftward  to  the
+       preceding tab stop can be given as cbt.  By convention, if
+       the teletype modes indicate that tabs are  being  expanded
+       by  the  computer  rather than being sent to the terminal,
+       programs should not  use  ht  or  cbt  even  if  they  are
+       present,  since  the user may not have the tab stops prop-
+       erly set.  If the terminal has  hardware  tabs  which  are
+       initially  set every n spaces when the terminal is powered
+       up, the numeric parameter it is given, showing the  number
+       of  spaces  the tabs are set to.  This is normally used by
+       the tset command to determine whether to set the mode  for
+       hardware  tab expansion, and whether to set the tab stops.
+       If the terminal has tab stops that can be  saved  in  non-
+       volatile  memory, the terminfo description can assume that
+       they are properly set.
+
+       Other capabilities include is1, is2, and is3,  initializa-
+       tion  strings  for the terminal, iprog, the path name of a
+       program to be run to initialize the terminal, and if,  the
+       name  of  a  file  containing long initialization strings.
+       These strings are expected to set the terminal into  modes
+       consistent  with  the  rest  of  the terminfo description.
+       They are normally sent to the terminal, by the init option
+       of  the  tput  program,  each time the user logs in.  They
+       will be printed in the following order:
+
+              run the program
+                     iprog
+
+              output is1 is2
+
+              set the margins using
+                     mgc, smgl and smgr
+
+              set tabs using
+                     tbc and hts
+
+              print the file
+                     if
+
+              and finally
+                     output is3.
+
+       Most initialization is done with  is2.   Special  terminal
+       modes can be set up without duplicating strings by putting
+       the common sequences in is2 and special cases in  is1  and
+       is3.
+
+       A set of sequences that does a harder reset from a totally
+       unknown state can be given as rs1, rs2, rf and rs3, analo-
+       gous  to  is1  ,  is2  ,  if  and is3 respectively.  These
+       strings are output by the reset  program,  which  is  used
+       when  the terminal gets into a wedged state.  Commands are
+       normally placed in rs1, rs2 rs3 and rf only if  they  pro-
+       duce  annoying effects on the screen and are not necessary
+       when logging in.  For example,  the  command  to  set  the
+       vt100  into  80-column mode would normally be part of is2,
+       but it causes an annoying glitch of the screen and is  not
+       normally  needed  since the terminal is usually already in
+       80 column mode.
+
+       The reset program writes strings including iprog, etc., in
+       the  same  order  as  the  init  program, using rs1, etc.,
+       instead of is1, etc.  If any of rs1, rs2, rs3, or rf reset
+       capability  strings  are  missing, the reset program falls
+       back  upon  the  corresponding  initialization  capability
+       string.
+
+       If there are commands to set and clear tab stops, they can
+       be given as tbc (clear all tab stops) and hts (set  a  tab
+       stop  in the current column of every row).  If a more com-
+       plex sequence is needed  to  set  the  tabs  than  can  be
+       described  by  this,  the sequence can be placed in is2 or
+       if.
+
+   Delays and Padding
+       Many older and slower  terminals  do  not  support  either
+       XON/XOFF or DTR handshaking, including hard copy terminals
+       and some very archaic CRTs (including,  for  example,  DEC
+       VT100s).   These may require padding characters after cer-
+       tain cursor motions and screen changes.
+
+       If the terminal uses xon/xoff handshaking for flow control
+       (that  is, it automatically emits ^S back to the host when
+       its input buffers are close to full), set xon.  This capa-
+       bility  suppresses  the emission of padding.  You can also
+       set it for memory-mapped console devices effectively  that
+       do  not  have  a  speed limit.  Padding information should
+       still be included so that routines can make  better  deci-
+       sions about relative costs, but actual pad characters will
+       not be transmitted.
+
+       If pb (padding baud rate) is given, padding is  suppressed
+       at  baud rates below the value of pb.  If the entry has no
+       padding baud rate, then whether padding is emitted or  not
+       is completely controlled by xon.
+
+       If  the terminal requires other than a null (zero) charac-
+       ter as a pad, then this can be given  as  pad.   Only  the
+       first character of the pad string is used.
+
+
+   Status Lines
+       Some  terminals  have  an extra `status line' which is not
+       normally used by software (and thus  not  counted  in  the
+       terminal's lines capability).
+
+       The  simplest  case  is  a  status  line  which is cursor-
+       addressable but not part of the main scrolling  region  on
+       the  screen;  the  Heathkit  H19 has a status line of this
+       kind, as would a 24-line VT100 with  a  23-line  scrolling
+       region  set up on initialization.  This situation is indi-
+       cated by the hs capability.
+
+       Some terminals with status lines need special sequences to
+       access  the  status  line.   These  may  be expressed as a
+       string with single parameter tsl which takes the cursor to
+       a  given zero-origin column on the status line.  The capa-
+       bility fsl must return to the main-screen cursor positions
+       before  the  last  tsl.   You may need to embed the string
+       values of sc (save cursor) and rc (restore cursor) in  tsl
+       and fsl to accomplish this.
+
+       The  status  line is normally assumed to be the same width
+       as the width of the terminal.  If this is untrue, you  can
+       specify it with the numeric capability wsl.
+
+       A  command to erase or blank the status line may be speci-
+       fied as dsl.
+
+       The  boolean  capability  eslok  specifies   that   escape
+       sequences, tabs, etc., work ordinarily in the status line.
+
+       The ncurses implementation does not yet use any  of  these
+       capabilities.   They are documented here in case they ever
+       become important.
+
+
+   Line Graphics
+       Many terminals have alternate character  sets  useful  for
+       forms-drawing.   Terminfo  and curses build in support for
+       the drawing characters supported by the VT100,  with  some
+       characters  from  the  AT&T  4410v1 added.  This alternate
+       character set may be specified by the acsc capability.
+
+
+                Glyph             ACS            Ascii      VT100
+                 Name             Name           Default    Name
+       UK pound sign              ACS_STERLING   f          }
+       arrow pointing down        ACS_DARROW     v          .
+       arrow pointing left        ACS_LARROW     <          ,
+       arrow pointing right       ACS_RARROW     >          +
+       arrow pointing up          ACS_UARROW     ^          -
+       board of squares           ACS_BOARD      #          h
+       bullet                     ACS_BULLET     o          ~
+       checker board (stipple)    ACS_CKBOARD    :          a
+       degree symbol              ACS_DEGREE     \          f
+       diamond                    ACS_DIAMOND    +          `
+       greater-than-or-equal-to   ACS_GEQUAL     >          z
+       greek pi                   ACS_PI         *          {
+       horizontal line            ACS_HLINE      -          q
+       lantern symbol             ACS_LANTERN    #          i
+       large plus or crossover    ACS_PLUS       +          n
+       less-than-or-equal-to      ACS_LEQUAL     <          y
+
+       lower left corner          ACS_LLCORNER   +          m
+       lower right corner         ACS_LRCORNER   +          j
+       not-equal                  ACS_NEQUAL     !          |
+       plus/minus                 ACS_PLMINUS    #          g
+       scan line 1                ACS_S1         ~          o
+       scan line 3                ACS_S3         -          p
+       scan line 7                ACS_S7         -          r
+       scan line 9                ACS_S9         _          s
+       solid square block         ACS_BLOCK      #          0
+       tee pointing down          ACS_TTEE       +          w
+       tee pointing left          ACS_RTEE       +          u
+       tee pointing right         ACS_LTEE       +          t
+       tee pointing up            ACS_BTEE       +          v
+       upper left corner          ACS_ULCORNER   +          l
+       upper right corner         ACS_URCORNER   +          k
+       vertical line              ACS_VLINE      |          x
+
+       The best way to define a new device's graphics set  is  to
+       add  a  column  to a copy of this table for your terminal,
+       giving  the  character   which   (when   emitted   between
+       smacs/rmacs  switches) will be rendered as the correspond-
+       ing graphic.  Then read off the VT100/your terminal  char-
+       acter  pairs  right  to left in sequence; these become the
+       ACSC string.
+
+
+   Color Handling
+       Most color terminals are either `Tektronix-like'  or  `HP-
+       like'.   Tektronix-like terminals have a predefined set of
+       N colors (where N usually 8), and can  set  character-cell
+       foreground and background characters independently, mixing
+       them into N * N color-pairs.  On  HP-like  terminals,  the
+       use must set each color pair up separately (foreground and
+       background are  not  independently  settable).   Up  to  M
+       color-pairs  may  be  set  up  from  2*M different colors.
+       ANSI-compatible terminals are Tektronix-like.
+
+       Some basic color capabilities are independent of the color
+       method.  The numeric capabilities colors and pairs specify
+       the maximum numbers of colors and color-pairs that can  be
+       displayed  simultaneously.   The op (original pair) string
+       resets foreground and background colors to  their  default
+       values  for the terminal.  The oc string resets all colors
+       or color-pairs to their default values for  the  terminal.
+       Some  terminals  (including  many  PC  terminal emulators)
+       erase screen  areas  with  the  current  background  color
+       rather  than the power-up default background; these should
+       have the boolean capability bce.
+
+       To change the current foreground or background color on  a
+       Tektronix-type  terminal,  use setaf (set ANSI foreground)
+       and setab (set ANSI background) or setf  (set  foreground)
+       and  setb (set background).  These take one parameter, the
+       color  number.   The  SVr4  documentation  describes  only
+       setaf/setab;  the  XPG4  draft  says that "If the terminal
+       supports ANSI escape sequences to set background and fore-
+       ground,  they  should be coded as setaf and setab, respec-
+       tively.  If the terminal supports other  escape  sequences
+       to  set background and foreground, they should be coded as
+       setf and setb, respectively.  The vidputs()  function  and
+       the  refresh  functions  use  setaf  and setab if they are
+       defined."
+
+       The setaf/setab and setf/setb capabilities take  a  single
+       numeric argument each.  Argument values 0-7 of setaf/setab
+       are portably defined as follows (the middle column is  the
+       symbolic #define available in the header for the curses or
+       ncurses libraries).  The terminal hardware is free to  map
+       these  as  it  likes,  but  the RGB values indicate normal
+       locations in color space.
+
+
+             Color       #define       Value       RGB
+             black     COLOR_BLACK       0     0, 0, 0
+             red       COLOR_RED         1     max,0,0
+             green     COLOR_GREEN       2     0,max,0
+             yellow    COLOR_YELLOW      3     max,max,0
+             blue      COLOR_BLUE        4     0,0,max
+             magenta   COLOR_MAGENTA     5     max,0,max
+             cyan      COLOR_CYAN        6     0,max,max
+             white     COLOR_WHITE       7     max,max,max
+
+       The argument values of setf/setb  historically  correspond
+       to a different mapping, i.e.,
+
+             Color       #define       Value       RGB
+             black     COLOR_BLACK       0     0, 0, 0
+             blue      COLOR_BLUE        1     0,0,max
+             green     COLOR_GREEN       2     0,max,0
+             cyan      COLOR_CYAN        3     0,max,max
+             red       COLOR_RED         4     max,0,0
+             magenta   COLOR_MAGENTA     5     max,0,max
+             yellow    COLOR_YELLOW      6     max,max,0
+             white     COLOR_WHITE       7     max,max,max
+       It is important to not confuse the two sets of color capa-
+       bilities; otherwise red/blue will be interchanged  on  the
+       display.
+
+       On  an  HP-like terminal, use scp with a color-pair number
+       parameter to set which color pair is current.
+
+       On a Tektronix-like terminal, the capability  ccc  may  be
+       present  to  indicate that colors can be modified.  If so,
+       the initc capability will take a color number (0 to colors
+       -  1)and  three  more parameters which describe the color.
+       These three parameters default to being interpreted as RGB
+       (Red,  Green, Blue) values.  If the boolean capability hls
+       is present, they are instead as HLS (Hue, Lightness, Satu-
+       ration) indices.  The ranges are terminal-dependent.
+
+       On  an  HP-like  terminal, initp may give a capability for
+       changing a color-pair value.  It will take  seven  parame-
+       ters;  a  color-pair  number (0 to max_pairs - 1), and two
+       triples describing first background  and  then  foreground
+       colors.   These  parameters  must be (Red, Green, Blue) or
+       (Hue, Lightness, Saturation) depending on hls.
+
+       On some color terminals, colors collide  with  highlights.
+       You can register these collisions with the ncv capability.
+       This is a bit-mask of attributes not to be used when  col-
+       ors  are  enabled.  The correspondence with the attributes
+       understood by curses is as follows:
+
+
+                      Attribute      Bit   Decimal
+                      A_STANDOUT     0     1
+                      A_UNDERLINE    1     2
+                      A_REVERSE      2     4
+                      A_BLINK        3     8
+                      A_DIM          4     16
+                      A_BOLD         5     32
+                      A_INVIS        6     64
+                      A_PROTECT      7     128
+                      A_ALTCHARSET   8     256
+
+       For example,  on  many  IBM  PC  consoles,  the  underline
+       attribute  collides  with the foreground color blue and is
+       not available in color mode.  These  should  have  an  ncv
+       capability of 2.
+
+       SVr4  curses  does nothing with ncv, ncurses recognizes it
+       and optimizes the output in favor of colors.
+
+
+   Miscellaneous
+       If the terminal requires other than a null (zero)  charac-
+       ter  as  a  pad,  then this can be given as pad.  Only the
+       first character of the pad string is used.  If the  termi-
+       nal does not have a pad character, specify npc.  Note that
+       ncurses implements  the  termcap-compatible  PC  variable;
+       though  the  application  may  set this value to something
+       other than a null, ncurses will test  npc  first  and  use
+       napms if the terminal has no pad character.
+
+       If  the terminal can move up or down half a line, this can
+       be indicated with hu  (half-line  up)  and  hd  (half-line
+       down).  This is primarily useful for superscripts and sub-
+       scripts on hard-copy terminals.  If a  hard-copy  terminal
+       can  eject  to  the next page (form feed), give this as ff
+       (usually control L).
+
+       If there is a command to repeat a given character a  given
+       number  of times (to save time transmitting a large number
+       of identical characters) this can be  indicated  with  the
+       parameterized  string  rep.   The  first  parameter is the
+       character to be repeated and the second is the  number  of
+       times  to repeat it.  Thus, tparm(repeat_char, 'x', 10) is
+       the same as `xxxxxxxxxx'.
+
+       If the terminal has a settable command character, such  as
+       the  TEKTRONIX  4025, this can be indicated with cmdch.  A
+       prototype command character is chosen which is used in all
+       capabilities.   This character is given in the cmdch capa-
+       bility to identify it.  The following convention  is  sup-
+       ported  on  some  UNIX  systems:  The environment is to be
+       searched for a CC variable, and if found, all  occurrences
+       of the prototype character are replaced with the character
+       in the environment variable.
+
+       Terminal descriptions that do  not  represent  a  specific
+       kind of known terminal, such as switch, dialup, patch, and
+       network, should include the  gn  (generic)  capability  so
+       that  programs  can  complain that they do not know how to
+       talk to the terminal.  (This capability does not apply  to
+       virtual   terminal   descriptions  for  which  the  escape
+       sequences are known.)
+
+       If the terminal has a ``meta key'' which acts as  a  shift
+       key,  setting  the  8th  bit of any character transmitted,
+       this fact can be indicated with km.   Otherwise,  software
+       will assume that the 8th bit is parity and it will usually
+       be cleared.  If strings exist to turn this  ``meta  mode''
+       on and off, they can be given as smm and rmm.
+
+       If  the terminal has more lines of memory than will fit on
+       the screen at once, the number of lines of memory  can  be
+       indicated  with  lm.   A  value of lm#0 indicates that the
+       number of lines is not fixed, but that there is still more
+       memory than fits on the screen.
+
+       If the terminal is one of those supported by the UNIX vir-
+       tual terminal protocol, the terminal number can  be  given
+       as vt.
+
+       Media copy strings which control an auxiliary printer con-
+       nected to the terminal can be given as mc0: print the con-
+       tents  of  the screen, mc4: turn off the printer, and mc5:
+       turn on the printer.  When the printer  is  on,  all  text
+       sent  to  the terminal will be sent to the printer.  It is
+       undefined whether the text is also displayed on the termi-
+       nal screen when the printer is on.  A variation mc5p takes
+       one parameter, and leaves the printer on for as many char-
+       acters  as  the  value  of  the  parameter, then turns the
+       printer off.  The parameter should not  exceed  255.   All
+       text,  including  mc4,  is  transparently  passed  to  the
+       printer while an mc5p is in effect.
+
+
+   Glitches and Braindamage
+       Hazeltine terminals, which do not allow `~' characters  to
+       be displayed should indicate hz.
+
+       Terminals which ignore a line-feed immediately after an am
+       wrap, such as the Concept and vt100, should indicate xenl.
+
+       If  el  is  required  to  get  rid of standout (instead of
+       merely writing normal text on top of it),  xhp  should  be
+       given.
+
+       Teleray  terminals,  where  tabs turn all characters moved
+       over to blanks, should  indicate  xt  (destructive  tabs).
+       Note:    the    variable    indicating    this    is   now
+       `dest_tabs_magic_smso'; in older  versions,  it  was  tel-
+       eray_glitch.  This glitch is also taken to mean that it is
+       not possible to position the cursor on top  of  a  ``magic
+       cookie'', that to erase standout mode it is instead neces-
+       sary to use delete and insert line.  The ncurses implemen-
+       tation ignores this glitch.
+
+       The  Beehive Superbee, which is unable to correctly trans-
+       mit the escape or control C characters, has xsb,  indicat-
+       ing  that the f1 key is used for escape and f2 for control
+       C.  (Only certain Superbees have this  problem,  depending
+       on  the  ROM.)  Note that in older terminfo versions, this
+       capability  was  called  `beehive_glitch';   it   is   now
+       `no_esc_ctl_c'.
+
+       Other  specific  terminal  problems  may  be  corrected by
+       adding more capabilities of the form xx.
+
+
+   Similar Terminals
+       If there are two very similar terminals, one (the variant)
+       can  be  defined  as  being just like the other (the base)
+       with certain exceptions.  In the definition of  the  vari-
+       ant,  the string capability use can be given with the name
+       of the base terminal.  The capabilities given  before  use
+       override  those  in  the base type named by use.  If there
+       are multiple use capabilities, they are merged in  reverse
+       order.   That is, the rightmost use reference is processed
+       first, then the one to its left, and so forth.   Capabili-
+       ties  given explicitly in the entry override those brought
+       in by use references.
+
+       A capability can be canceled by placing xx@ to the left of
+       the  use  reference that imports it, where xx is the capa-
+       bility.  For example, the entry
+
+                   2621-nl, smkx@, rmkx@, use=2621,
+
+       defines a 2621-nl that does not  have  the  smkx  or  rmkx
+       capabilities,  and hence does not turn on the function key
+       labels when in visual mode.  This is useful for  different
+       modes for a terminal, or for different user preferences.
+
+
+   Pitfalls of Long Entries
+       Long  terminfo  entries  are  unlikely to be a problem; to
+       date, no entry has even  approached  terminfo's  4096-byte
+       string-table maximum.  Unfortunately, the termcap transla-
+       tions are much more strictly limited (to 1023 bytes), thus
+       termcap  translations  of  long terminfo entries can cause
+       problems.
+
+       The man pages for 4.3BSD and older versions  of  tgetent()
+       instruct  the  user to allocate a 1024-byte buffer for the
+       termcap entry.  The  entry  gets  null-terminated  by  the
+       termcap library, so that makes the maximum safe length for
+       a termcap entry 1k-1 (1023) bytes.  Depending on what  the
+       application  and  the termcap library being used does, and
+       where in the termcap file the terminal type that tgetent()
+       is searching for is, several bad things can happen.
+
+       Some  termcap libraries print a warning message or exit if
+       they find an entry that's longer than 1023  bytes;  others
+       do  not;  others truncate the entries to 1023 bytes.  Some
+       application programs allocate more than the recommended 1K
+       for the termcap entry; others do not.
+
+       Each termcap entry has two important sizes associated with
+       it: before "tc" expansion, and after "tc" expansion.  "tc"
+       is  the  capability that tacks on another termcap entry to
+       the end of the current one, to add  on  its  capabilities.
+       If  a termcap entry does not use the "tc" capability, then
+       of course the two lengths are the same.
+
+       The "before tc expansion" length  is  the  most  important
+       one,  because it affects more than just users of that par-
+       ticular terminal.  This is the length of the entry  as  it
+       exists in /etc/termcap, minus the backslash-newline pairs,
+       which tgetent() strips out while reading it.  Some termcap
+       libraries  strip  off  the final newline, too (GNU termcap
+       does not).  Now suppose:
+
+       *    a termcap entry before expansion is  more  than  1023
+            bytes long,
+
+       *    and the application has only allocated a 1k buffer,
+
+       *    and  the  termcap library (like the one in BSD/OS 1.1
+            and GNU) reads the whole entry into  the  buffer,  no
+            matter  what its length, to see if it is the entry it
+            wants,
+
+       *    and tgetent() is searching for a terminal  type  that
+            either is the long entry, appears in the termcap file
+            after the long entry, or does not appear in the  file
+            at  all  (so  that  tgetent() has to search the whole
+            termcap file).
+
+       Then tgetent() will overwrite memory, perhaps  its  stack,
+       and  probably core dump the program.  Programs like telnet
+       are particularly vulnerable;  modern  telnets  pass  along
+       values  like the terminal type automatically.  The results
+       are almost as undesirable with  a  termcap  library,  like
+       SunOS  4.1.3  and Ultrix 4.4, that prints warning messages
+       when it reads an overly long termcap entry.  If a  termcap
+       library  truncates  long  entries,  like  OSF/1 3.0, it is
+       immune to dying here but will return  incorrect  data  for
+       the terminal.
+
+       The "after tc expansion" length will have a similar effect
+       to the above, but only for people who actually set TERM to
+       that  terminal type, since tgetent() only does "tc" expan-
+       sion once it is found the terminal  type  it  was  looking
+       for, not while searching.
+
+       In summary, a termcap entry that is longer than 1023 bytes
+       can cause, on various combinations  of  termcap  libraries
+       and  applications,  a  core  dump,  warnings, or incorrect
+       operation.  If it is too long even before "tc"  expansion,
+       it will have this effect even for users of some other ter-
+       minal types and users whose TERM variable does not have  a
+       termcap entry.
+
+       When in -C (translate to termcap) mode, the ncurses imple-
+       mentation of tic(1m) issues warning messages when the pre-
+       tc  length  of  a termcap translation is too long.  The -c
+       (check) option also checks resolved (after  tc  expansion)
+       lengths.
+
+   Binary Compatibility
+       It  is not wise to count on portability of binary terminfo
+       entries between commercial UNIX versions.  The problem  is
+       that  there  are  at least two versions of terminfo (under
+       HP-UX and AIX) which diverged from System V terminfo after
+       SVr1,  and have added extension capabilities to the string
+       table that (in the binary format) collide  with  System  V
+       and XSI Curses extensions.
+
+
+
+

EXTENSIONS

+       Some  SVr4  curses  implementations,  and  all previous to
+       SVr4, do not interpret the %A and %O operators in  parame-
+       ter strings.
+
+       SVr4/XPG4  do  not  specify whether msgr licenses movement
+       while in an alternate-character-set mode (such modes  may,
+       among  other  things,  map CR and NL to characters that do
+       not trigger local motions).   The  ncurses  implementation
+       ignores  msgr  in ALTCHARSET mode.  This raises the possi-
+       bility that an XPG4  implementation  making  the  opposite
+       interpretation  may need terminfo entries made for ncurses
+       to have msgr turned off.
+
+       The ncurses library handles insert-character  and  insert-
+       character modes in a slightly non-standard way to get bet-
+       ter update efficiency.  See  the  Insert/Delete  Character
+       subsection above.
+
+       The   parameter   substitutions  for  set_clock  and  dis-
+       play_clock are not documented in SVr4 or  the  XSI  Curses
+       standard.  They are deduced from the documentation for the
+       AT&T 505 terminal.
+
+       Be careful assigning the kmous  capability.   The  ncurses
+       wants  to  interpret it as KEY_MOUSE, for use by terminals
+       and emulators like xterm that  can  return  mouse-tracking
+       information in the keyboard-input stream.
+
+       Different  commercial ports of terminfo and curses support
+       different subsets of the XSI Curses standard and (in  some
+       cases) different extension sets.  Here is a summary, accu-
+       rate as of October 1995:
+
+       SVR4, Solaris, ncurses -- These support all SVr4 capabili-
+       ties.
+
+       SGI  --  Supports  the  SVr4  set,  adds  one undocumented
+       extended string capability (set_pglen).
+
+       SVr1, Ultrix -- These support a restricted subset of  ter-
+       minfo  capabilities.   The booleans end with xon_xoff; the
+       numerics with  width_status_line;  and  the  strings  with
+       prtr_non.
+
+       HP/UX  --  Supports  the  SVr1  subset,  plus the SVr[234]
+       numerics num_labels, label_height, label_width, plus func-
+       tion  keys  11  through  63, plus plab_norm, label_on, and
+       label_off, plus some incompatible extensions in the string
+       table.
+
+       AIX  --  Supports  the  SVr1 subset, plus function keys 11
+       through 63, plus a number  of  incompatible  string  table
+       extensions.
+
+       OSF  -- Supports both the SVr4 set and the AIX extensions.
+
+
+
+

FILES

+       /usr/share/terminfo/?/*  files     containing     terminal
+                                descriptions
+
+
+
+

SEE ALSO

+       tic(1m), infocmp(1m), curses(3x), printf(3), term(5).
+
+
+
+

AUTHORS

+       Zeyd  M.  Ben-Halim,  Eric  S.  Raymond, Thomas E. Dickey.
+       Based on pcurses by Pavel Curtis.
+
+
+
+                                                            terminfo(5)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/tic.1m.html b/ncurses/doc/html/man/tic.1m.html new file mode 100644 index 0000000..b3103ad --- /dev/null +++ b/ncurses/doc/html/man/tic.1m.html @@ -0,0 +1,324 @@ + + + + +tic 1m + + + + +

tic 1m

+
+
+
+tic(1m)                                                         tic(1m)
+
+
+
+
+
+

NAME

+       tic - the terminfo entry-description compiler
+
+
+
+

SYNOPSIS

+       tic  [-1CGILNTUVacfgrstx]  [-e names] [-o dir] [-R subset]
+       [-v[n]] [-w[n]] file
+
+
+
+

DESCRIPTION

+       The command tic translates a  terminfo  file  from  source
+       format  into compiled format.  The compiled format is nec-
+       essary for use with the library routines in ncurses(3x).
+
+       The results are normally placed  in  the  system  terminfo
+       directory  /usr/share/terminfo.   There  are  two  ways to
+       change this behavior.
+
+       First, you may override the system default by setting  the
+       variable  TERMINFO  in  your  shell environment to a valid
+       (existing) directory name.
+
+       Secondly, if tic cannot get access to  /usr/share/terminfo
+       or  your  TERMINFO  directory,  it looks for the directory
+       $HOME/.terminfo; if that directory exists,  the  entry  is
+       placed there.
+
+       Libraries that read terminfo entries are expected to check
+       for a TERMINFO directory first, look at $HOME/.terminfo if
+       TERMINFO  is  not set, and finally look in /usr/share/ter-
+       minfo.
+
+       -1     restricts the output to a single column
+
+       -a     tells  tic  to  retain  commented-out  capabilities
+              rather than discarding them.  Capabilities are com-
+              mented by prefixing them with a period.  This  sets
+              the  -x option, because it treats the commented-out
+              entries as user-defined names.  If  the  source  is
+              termcap,  accept  the 2-character names required by
+              version 6.  Otherwise these are ignored.
+
+       -C     Force source translation to termcap format.   Note:
+              this  differs  from the -C option of infocmp(1m) in
+              that it does not merely translate capability names,
+              but  also  translates  terminfo  strings to termcap
+              format.  Capabilities that are not translatable are
+              left  in  the  entry under their terminfo names but
+              commented out with two preceding dots.
+
+       -c     tells tic to only check file for errors,  including
+              syntax  problems and bad use links.  If you specify
+              -C (-I) with this option, the code will print warn-
+              ings about entries which, after use resolution, are
+              more than 1023 (4096) bytes long.  Due to  a  fixed
+              buffer  length  in  older  termcap libraries (and a
+              documented limit in terminfo),  these  entries  may
+              cause core dumps.
+
+       -e names
+              Limit  writes  and  translations  to  the following
+              comma-separated list of terminals.  If any name  or
+              alias of a terminal matches one of the names in the
+              list, the entry will be written  or  translated  as
+              normal.   Otherwise no output will be generated for
+              it.  The option value is interpreted as a file con-
+              taining  the  list  if  it  contains a '/'.  (Note:
+              depending on how tic was compiled, this option  may
+              require -I or -C.)
+
+       -f     Display  complex  terminfo  strings  which  contain
+              if/then/else/endif expressions indented  for  read-
+              ability.
+
+       -G     Display  constant  literals  in decimal form rather
+              than their character equivalents.
+
+       -g     Display constant character literals in quoted  form
+              rather than their decimal equivalents.
+
+       -I     Force source translation to terminfo format.
+
+       -L     Force  source  translation to terminfo format using
+              the long C variable names listed in <term.h>
+
+       -N     Disable smart defaults.  Normally, when translating
+              from termcap to terminfo, the compiler makes a num-
+              ber of assumptions about  the  defaults  of  string
+              capabilities  reset1_string,  carriage_return, cur-
+              sor_left, cursor_down,  scroll_forward,  tab,  new-
+              line,  key_backspace,  key_left, and key_down, then
+              attempts to use obsolete  termcap  capabilities  to
+              deduce correct values.  It also normally suppresses
+              output of obsolete termcap capabilities such as bs.
+              This  option forces a more literal translation that
+              also preserves the obsolete capabilities.
+
+       -odir  Write compiled entries to given  directory.   Over-
+              rides the TERMINFO environment variable.
+
+       -Rsubset
+              Restrict  output to a given subset.  This option is
+              for use with  archaic  versions  of  terminfo  like
+              those on SVr1, Ultrix, or HP/UX that do not support
+              the full set of SVR4/XSI Curses terminfo; and  out-
+              right broken ports like AIX 3.x that have their own
+              extensions incompatible with  SVr4/XSI.   Available
+              subsets  are  "SVr1",  "Ultrix",  "HP",  "BSD"  and
+              "AIX"; see terminfo(5) for details.
+
+       -r     Force entry resolution (so there are  no  remaining
+              tc  capabilities)  even  when  doing translation to
+              termcap format.  This may  be  needed  if  you  are
+              preparing  a  termcap  file  for  a termcap library
+              (such as GNU termcap through  version  1.3  or  BSD
+              termcap through 4.3BSD) that does not handle multi-
+              ple tc capabilities per entry.
+
+       -s     Summarize the compile by showing the directory into
+              which  entries  are  written,  and  the  number  of
+              entries which are compiled.
+
+       -T     eliminates size-restrictions on the generated text.
+              This  is  mainly  useful  for testing and analysis,
+              since the compiled descriptions are limited  (e.g.,
+              1023 for termcap, 4096 for terminfo).
+
+       -t     tells  tic  to  discard commented-out capabilities.
+              Normally when translating from terminfo to termcap,
+              untranslatable capabilities are commented-out.
+
+       -U   tells  tic to not post-process the data after parsing
+            the source file.  Normally, it infers data  which  is
+            commonly  missing in older terminfo data, or in term-
+            caps.
+
+       -V   reports the version of ncurses which was used in this
+            program, and exits.
+
+       -vn  specifies  that  (verbose) output be written to stan-
+            dard error trace information showing tic's  progress.
+            The  optional  parameter  n is a number from 1 to 10,
+            inclusive, indicating the desired level of detail  of
+            information.   If  n is omitted, the default level is
+            1.  If n is specified and greater than 1,  the  level
+            of detail is increased.
+
+       -wn  specifies  the width of the output.  The parameter is
+            optional.  If it is omitted, it defaults to 60.
+
+       -x   Treat unknown capabilities as user-defined.  That is,
+            if  you  supply  a capability name which tic does not
+            recognize, it will infer its type (boolean, number or
+            string)  from  the  syntax and make an extended table
+            entry  for  that.   User-defined  capability  strings
+            whose  name begins with ``k'' are treated as function
+            keys.
+
+       file contains one or more terminfo  terminal  descriptions
+            in source format [see terminfo(5)].  Each description
+            in the file describes the capabilities of a  particu-
+            lar terminal.
+
+       The debug flag levels are as follows:
+
+       1      Names of files created and linked
+
+       2      Information related to the ``use'' facility
+
+       3      Statistics from the hashing algorithm
+
+       5      String-table memory allocations
+
+       7      Entries into the string-table
+
+       8      List of tokens encountered by scanner
+
+       9      All values computed in construction of the hash ta-
+              ble
+
+       If the debug level n is not given, it is taken to be  one.
+
+       All but one of the capabilities recognized by tic are doc-
+       umented in terminfo(5).  The exception is the use capabil-
+       ity.
+
+       When  a  use=entry-name  field is discovered in a terminal
+       entry currently being compiled, tic reads  in  the  binary
+       from  /usr/share/terminfo to complete the entry.  (Entries
+       created from file will be used first.  If the  environment
+       variable  TERMINFO  is  set,  that  directory  is searched
+       instead of /usr/share/terminfo.)  tic duplicates the capa-
+       bilities  in  entry-name  for  the current entry, with the
+       exception  of  those  capabilities  that  explicitly   are
+       defined in the current entry.
+
+       When    an   entry,   e.g.,   entry_name_1,   contains   a
+       use=entry_name_2  field,  any  canceled  capabilities   in
+       entry_name_2  must also appear in entry_name_1 before use=
+       for these capabilities to be canceled in entry_name_1.
+
+       If the environment variable TERMINFO is set, the  compiled
+       results are placed there instead of /usr/share/terminfo.
+
+       Total compiled entries cannot exceed 4096 bytes.  The name
+       field cannot exceed 512 bytes.  Terminal  names  exceeding
+       the  maximum  alias  length (32 characters on systems with
+       long filenames, 14 characters otherwise) will be truncated
+       to  the maximum alias length and a warning message will be
+       printed.
+
+
+
+

COMPATIBILITY

+       There is some evidence that historic  tic  implementations
+       treated  description  fields with no whitespace in them as
+       additional aliases or short names.  This tic does  not  do
+       that,  but  it  does  warn  when description fields may be
+       treated that way and check them for dangerous  characters.
+
+
+
+

EXTENSIONS

+       Unlike the stock SVr4 tic command, this implementation can
+       actually compile termcap sources.   In  fact,  entries  in
+       terminfo  and  termcap  syntax  can  be  mixed in a single
+       source file.  See terminfo(5)  for  the  list  of  termcap
+       names taken to be equivalent to terminfo names.
+
+       The  SVr4  manual  pages  are  not clear on the resolution
+       rules for use capabilities.  This  implementation  of  tic
+       will find use targets anywhere in the source file, or any-
+       where in the file tree rooted at TERMINFO (if TERMINFO  is
+       defined),  or  in the user's $HOME/.terminfo directory (if
+       it exists), or (finally) anywhere  in  the  system's  file
+       tree of compiled entries.
+
+       The  error  messages from this tic have the same format as
+       GNU C error messages, and can be  parsed  by  GNU  Emacs's
+       compile facility.
+
+       The  -C,  -G,  -I, -N, -R, -T, -V, -a, -e, -f, -g, -o, -r,
+       -s, -t and -x options are not supported under  SVr4.   The
+       SVr4 -c mode does not report bad use links.
+
+       System  V does not compile entries to or read entries from
+       your $HOME/.terminfo directory unless TERMINFO is  explic-
+       itly set to it.
+
+
+
+

FILES

+       /usr/share/terminfo/?/*
+            Compiled terminal description database.
+
+
+
+

SEE ALSO

+       infocmp(1m),    captoinfo(1m),   infotocap(1m),   toe(1m),
+       curses(3x), terminfo(5).
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                                tic(1m)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/toe.1m.html b/ncurses/doc/html/man/toe.1m.html new file mode 100644 index 0000000..7f4372f --- /dev/null +++ b/ncurses/doc/html/man/toe.1m.html @@ -0,0 +1,126 @@ + + + + +toe 1m + + + + +

toe 1m

+
+
+
+toe(1m)                                                         toe(1m)
+
+
+
+
+
+

NAME

+       toe - table of (terminfo) entries
+
+
+
+

SYNOPSIS

+       toe [-v[n]] [-ahuUV] file...
+
+
+
+

DESCRIPTION

+       With no options, toe lists all available terminal types by
+       primary name with descriptions.   File  arguments  specify
+       the  directories  to  be scanned; if no such arguments are
+       given, your default terminfo directory is scanned.  If you
+       also  specify  the  -h  option, a directory header will be
+       issued as each directory is entered.
+
+       There are other options intended for use by terminfo  file
+       maintainers:
+
+       -a     report  on  all  of  the  terminal  databases which
+              ncurses would search, rather than  only  the  first
+              one that it finds.
+
+       -u file
+              says  to  write  a  report  to the standard output,
+              listing dependencies in the given  terminfo/termcap
+              source  file.  The report condenses the `use' rela-
+              tion: each line consists of the primary name  of  a
+              terminal  that  has use capabilities, followed by a
+              colon, followed by the whitespace-separated primary
+              names  of  all  terminals  which occur in those use
+              capabilities, followed by a newline
+
+       -U file
+              says to write a  report  to  the  standard  output,
+              listing  reverse  dependencies  in  the  given ter-
+              minfo/termcap source file.  The report reverses the
+              `use'  relation:  each line consists of the primary
+              name of a terminal that occurs in use capabilities,
+              followed  by  a  colon, followed by the whitespace-
+              separated primary  names  of  all  terminals  which
+              depend on it, followed by a newline.
+
+       -vn    specifies that (verbose) output be written to stan-
+              dard error, showing toe's progress.   The  optional
+              parameter  n  is a number from 1 to 10, interpreted
+              as for tic(1m).
+
+       -V     reports the version of ncurses which  was  used  in
+              this program, and exits.
+
+
+
+

FILES

+       /usr/share/terminfo/?/*
+            Compiled terminal description database.
+
+
+
+

SEE ALSO

+       tic(1m),    infocmp(1m),   captoinfo(1m),   infotocap(1m),
+       curses(3x), terminfo(5).
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                                toe(1m)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/tput.1.html b/ncurses/doc/html/man/tput.1.html new file mode 100644 index 0000000..2d31aa5 --- /dev/null +++ b/ncurses/doc/html/man/tput.1.html @@ -0,0 +1,343 @@ + + + + +tput 1 + + + + +

tput 1

+
+
+
+tput(1)                                                         tput(1)
+
+
+
+
+
+

NAME

+       tput,  reset  -  initialize  a  terminal or query terminfo
+       database
+
+
+
+

SYNOPSIS

+       tput [-Ttype] capname [parms ... ]
+       tput [-Ttype] init
+       tput [-Ttype] reset
+       tput [-Ttype] longname
+       tput -S  <<
+       tput -V
+
+
+
+

DESCRIPTION

+       The tput utility uses the terminfo database  to  make  the
+       values  of terminal-dependent capabilities and information
+       available to the shell (see sh(1)), to initialize or reset
+       the  terminal,  or  return  the long name of the requested
+       terminal type.  The result depends upon  the  capability's
+       type:
+
+              string
+                   tput writes the string to the standard output.
+                   No trailing newline is supplied.
+
+              integer
+                   tput writes the decimal value to the  standard
+                   output, with a trailing newline.
+
+              boolean
+                   tput  simply sets the exit code (0 for TRUE if
+                   the terminal has the capability, 1  for  FALSE
+                   if  it  does  not),  and writes nothing to the
+                   standard output.
+
+       Before using a value returned on the standard output,  the
+       application  should  test  the  exit  code  (e.g., $?, see
+       sh(1)) to be sure it is 0.  (See the EXIT CODES and  DIAG-
+       NOSTICS  sections.)   For  a complete list of capabilities
+       and the capname associated with each, see terminfo(5).
+
+       -Ttype indicates the  type  of  terminal.   Normally  this
+              option is unnecessary, because the default is taken
+              from the environment variable TERM.  If -T is spec-
+              ified,  then  the shell variables LINES and COLUMNS
+              will be ignored,and the operating system  will  not
+              be queried for the actual screen size.
+
+       capname
+              indicates   the   capability   from   the  terminfo
+              database.  When termcap support is compiled in, the
+              termcap name for the capability is also accepted.
+
+       parms  If  the  capability  is a string that takes parame-
+              ters, the arguments parms will be instantiated into
+              the string.
+
+              Most  parameters  are numbers.  Only a few terminfo
+              capabilities require string parameters; tput uses a
+              table to decide which to pass as strings.  Normally
+              tput uses tparm (3x) to perform  the  substitution.
+              If no parameters are given for the capability, tput
+              writes   the   string   without   performing    the
+              substitution.
+
+       -S     allows  more  than one capability per invocation of
+              tput.  The capabilities must be passed to tput from
+              the standard input instead of from the command line
+              (see example).  Only one  capname  is  allowed  per
+              line.   The  -S option changes the meaning of the 0
+              and 1 boolean and string exit codes (see  the  EXIT
+              CODES section).
+
+              Again, tput uses a table and the presence of param-
+              eters in its input to decide whether to  use  tparm
+              (3x), and how to interpret the parameters.
+
+       -V     reports  the  version  of ncurses which was used in
+              this program, and exits.
+
+       init   If the terminfo database is present  and  an  entry
+              for the user's terminal exists (see -Ttype, above),
+              the following will occur:
+
+              (1)    if present,  the  terminal's  initialization
+                     strings  will  be  output as detailed in the
+                     terminfo(5) section on Tabs and  Initializa-
+                     tion,
+
+              (2)    any  delays (e.g., newline) specified in the
+                     entry will be set in the tty driver,
+
+              (3)    tabs expansion will  be  turned  on  or  off
+                     according to the specification in the entry,
+                     and
+
+              (4)    if tabs are not expanded, standard tabs will
+                     be set (every 8 spaces).
+
+              If an entry does not contain the information needed
+              for any of the four above activities, that activity
+              will silently be skipped.
+
+       reset  Instead  of putting out initialization strings, the
+              terminal's reset strings will be output if  present
+              (rs1,  rs2, rs3, rf).  If the reset strings are not
+              present, but initialization strings are,  the  ini-
+              tialization  strings  will  be  output.  Otherwise,
+              reset acts identically to init.
+
+       longname
+              If the terminfo database is present  and  an  entry
+              for  the user's terminal exists (see -Ttype above),
+              then the long name of the terminal will be put out.
+              The long name is the last name in the first line of
+              the terminal's description in the terminfo database
+              [see term(5)].
+
+       If  tput  is  invoked  by a link named reset, this has the
+       same effect as tput reset.  See tset for comparison, which
+       has similar behavior.
+
+
+
+

EXAMPLES

+       tput init
+            Initialize the terminal according to the type of ter-
+            minal in the environmental variable TERM.  This  com-
+            mand  should be included in everyone's .profile after
+            the environmental variable TERM has been exported, as
+            illustrated on the profile(5) manual page.
+
+       tput -T5620 reset
+            Reset  an  AT&T 5620 terminal, overriding the type of
+            terminal in the environmental variable TERM.
+
+       tput cup 0 0
+            Send the sequence to move the cursor to row 0, column
+            0 (the upper left corner of the screen, usually known
+            as the "home" cursor position).
+
+       tput clear
+            Echo the clear-screen sequence for the current termi-
+            nal.
+
+       tput cols
+            Print the number of columns for the current terminal.
+
+       tput -T450 cols
+            Print the number of columns for the 450 terminal.
+
+       bold=`tput smso` offbold=`tput rmso`
+            Set the shell variables bold, to begin stand-out mode
+            sequence, and offbold, to end standout mode sequence,
+            for the current terminal.  This might be followed  by
+            a  prompt:  echo  "${bold}Please  type  in your name:
+            ${offbold}\c"
+
+       tput hc
+            Set exit code to indicate if the current terminal  is
+            a hard copy terminal.
+
+       tput cup 23 4
+            Send  the sequence to move the cursor to row 23, col-
+            umn 4.
+
+       tput cup
+            Send the terminfo string for cursor-movement, with no
+            parameters substituted.
+
+       tput longname
+            Print  the  long  name from the terminfo database for
+            the type of terminal specified in  the  environmental
+            variable TERM.
+
+            tput -S <<!
+            > clear
+            > cup 10 10
+            > bold
+            > !
+
+            This  example shows tput processing several capabili-
+            ties in one invocation.  It clears the screen,  moves
+            the  cursor  to  position  10,  10  and turns on bold
+            (extra bright) mode.  The list is  terminated  by  an
+            exclamation mark (!) on a line by itself.
+
+
+
+

FILES

+       /usr/share/terminfo
+              compiled terminal description database
+
+       /usr/share/tabset/*
+              tab settings for some terminals, in a format appro-
+              priate  to  be  output  to  the  terminal   (escape
+              sequences  that  set  margins  and  tabs); for more
+              information, see the "Tabs and Initialization" sec-
+              tion of terminfo(5)
+
+
+
+

EXIT CODES

+       If the -S option is used, tput checks for errors from each
+       line, and if any errors are found, will set the exit  code
+       to  4  plus the number of lines with errors.  If no errors
+       are found, the exit code is 0.   No  indication  of  which
+       line failed can be given so exit code 1 will never appear.
+       Exit codes 2, 3, and 4 retain their usual  interpretation.
+       If the -S option is not used, the exit code depends on the
+       type of capname:
+
+            boolean
+                   a value of 0 is set for TRUE and 1 for  FALSE.
+
+            string a  value of 0 is set if the capname is defined
+                   for this terminal type (the value  of  capname
+                   is  returned on standard output); a value of 1
+                   is set if capname is not defined for this ter-
+                   minal  type  (nothing  is  written to standard
+                   output).
+
+            integer
+                   a value of 0 is always  set,  whether  or  not
+                   capname is defined for this terminal type.  To
+                   determine if capname is defined for this  ter-
+                   minal type, the user must test the value writ-
+                   ten to standard output.  A value of  -1  means
+                   that  capname is not defined for this terminal
+                   type.
+
+            other  reset or init may fail to find  their  respec-
+                   tive  files.   In  that case, the exit code is
+                   set to 4 + errno.
+
+       Any other exit code indicates an error; see  the  DIAGNOS-
+       TICS section.
+
+
+
+

DIAGNOSTICS

+       tput prints the following error messages and sets the cor-
+       responding exit codes.
+
+
+       exit code   error message
+       ---------------------------------------------------------------------
+       0           (capname is a numeric variable that is not specified  in
+                   the  terminfo(5)  database  for this terminal type, e.g.
+                   tput -T450 lines and tput -T2621 xmc)
+       1           no error message is printed, see the EXIT CODES section.
+       2           usage error
+       3           unknown terminal type or no terminfo database
+       4           unknown terminfo capability capname
+       >4          error occurred in -S
+       ---------------------------------------------------------------------
+
+
+
+

PORTABILITY

+       The longname and -S options, and  the  parameter-substitu-
+       tion  features  used in the cup example, are not supported
+       in BSD curses or in AT&T/USL curses before SVr4.
+
+       X/Open documents only the operands  for  clear,  init  and
+       reset.   In this implementation, clear is part of the cap-
+       name support.  Other implementations of tput on SVr4-based
+       systems such as Solaris, IRIX64 and HPUX as well as others
+       such  as  AIX  and  Tru64  provide  support  for   capname
+       operands.  A few platforms such as FreeBSD and NetBSD rec-
+       ognize termcap names rather than terminfo capability names
+       in their respective tput commands.
+
+
+
+

SEE ALSO

+       clear(1), stty(1), tabs(1), terminfo(5).
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                                tput(1)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/tset.1.html b/ncurses/doc/html/man/tset.1.html new file mode 100644 index 0000000..951fd0c --- /dev/null +++ b/ncurses/doc/html/man/tset.1.html @@ -0,0 +1,333 @@ + + + + +tset 1 + + + + +

tset 1

+
+
+
+tset(1)                                                         tset(1)
+
+
+
+
+
+

NAME

+       tset, reset - terminal initialization
+
+
+
+

SYNOPSIS

+       tset  [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping]
+       [terminal]
+       reset [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping]
+       [terminal]
+
+
+
+

DESCRIPTION

+       Tset  initializes  terminals.   Tset  first determines the
+       type of terminal that you are using.   This  determination
+       is done as follows, using the first terminal type found.
+
+       1. The terminal argument specified on the command line.
+
+       2. The value of the TERM environmental variable.
+
+       3.  (BSD  systems only.) The terminal type associated with
+       the standard error output device in  the  /etc/ttys  file.
+       (On Linux and System-V-like UNIXes, getty does this job by
+       setting TERM  according  to  the  type  passed  to  it  by
+       /etc/inittab.)
+
+       4. The default terminal type, ``unknown''.
+
+       If  the  terminal  type  was not specified on the command-
+       line, the -m option mappings are  then  applied  (see  the
+       section  TERMINAL  TYPE  MAPPING  for  more  information).
+       Then, if the terminal type begins  with  a  question  mark
+       (``?''), the user is prompted for confirmation of the ter-
+       minal type.  An empty  response  confirms  the  type,  or,
+       another  type  can be entered to specify a new type.  Once
+       the terminal type has been determined, the terminfo  entry
+       for  the  terminal  is retrieved.  If no terminfo entry is
+       found for the type, the user is prompted for another  ter-
+       minal type.
+
+       Once  the  terminfo  entry  is retrieved, the window size,
+       backspace, interrupt and line kill characters (among  many
+       other things) are set and the terminal and tab initializa-
+       tion strings  are  sent  to  the  standard  error  output.
+       Finally,  if the erase, interrupt and line kill characters
+       have changed, or are not  set  to  their  default  values,
+       their  values  are displayed to the standard error output.
+       Use the -c or -w option to select only the  window  sizing
+       versus  the  other  initialization.   If neither option is
+       given, both are assumed.
+
+       When invoked as reset, tset sets cooked  and  echo  modes,
+       turns  off cbreak and raw modes, turns on newline transla-
+       tion and resets any  unset  special  characters  to  their
+       default  values  before  doing the terminal initialization
+       described above.  This is  useful  after  a  program  dies
+       leaving  a  terminal  in an abnormal state.  Note, you may
+       have to type
+
+           <LF>reset<LF>
+
+       (the line-feed character is normally control-J) to get the
+       terminal to work, as carriage-return may no longer work in
+       the abnormal state.  Also, the  terminal  will  often  not
+       echo the command.
+
+       The options are as follows:
+
+       -c   Set  control  characters and modes.  -e Set the erase
+            character to ch.
+
+       -I   Do  not  send  the  terminal  or  tab  initialization
+            strings to the terminal.
+
+       -i   Set the interrupt character to ch.
+
+       -k   Set the line kill character to ch.
+
+       -m   Specify  a  mapping  from  a port type to a terminal.
+            See the section TERMINAL TYPE MAPPING for more infor-
+            mation.
+
+       -Q   Do  not  display  any values for the erase, interrupt
+            and line kill characters.  Normally tset displays the
+            values  for  control characters which differ from the
+            system's default values.
+
+       -q   The terminal type is displayed to the  standard  out-
+            put,  and the terminal is not initialized in any way.
+            The option `-' by itself is equivalent but archaic.
+
+       -r   Print the terminal type to the standard error output.
+
+       -s   Print  the  sequence  of shell commands to initialize
+            the environment variable TERM to the standard output.
+            See  the section SETTING THE ENVIRONMENT for details.
+
+       -V   reports the version of ncurses which was used in this
+            program, and exits.
+
+       -w   Resize  the  window  to  match  the  size deduced via
+            setupterm.   Normally  this  has  no  effect,  unless
+            setupterm is not able to detect the window size.
+
+       The arguments for the -e, -i, and -k options may either be
+       entered as actual characters or by using the  `hat'  nota-
+       tion, i.e. control-h may be specified as ``^H'' or ``^h''.
+
+
+
+

SETTING THE ENVIRONMENT

+       It is often desirable  to  enter  the  terminal  type  and
+       information  about  the  terminal's  capabilities into the
+       shell's environment.  This is done using the -s option.
+
+       When the -s option is specified, the commands to enter the
+       information  into  the  shell's environment are written to
+       the standard output.  If the SHELL environmental  variable
+       ends in ``csh'', the commands are for csh, otherwise, they
+       are for sh.  Note, the csh  commands  set  and  unset  the
+       shell  variable  noglob,  leaving it unset.  The following
+       line in the .login or .profile files will  initialize  the
+       environment correctly:
+
+           eval `tset -s options ... `
+
+
+
+

TERMINAL TYPE MAPPING

+       When the terminal is not hardwired into the system (or the
+       current system information is incorrect) the terminal type
+       derived  from the /etc/ttys file or the TERM environmental
+       variable is often something generic like network,  dialup,
+       or  unknown.   When tset is used in a startup script it is
+       often desirable to provide information about the  type  of
+       terminal used on such ports.
+
+       The  purpose  of  the -m option is to map from some set of
+       conditions to a terminal type, that is, to tell tset  ``If
+       I'm  on this port at a particular speed, guess that I'm on
+       that kind of terminal''.
+
+       The argument to the -m option consists of an optional port
+       type, an optional operator, an optional baud rate specifi-
+       cation, an optional colon (``:'') character and a terminal
+       type.   The port type is a string (delimited by either the
+       operator or the colon character).  The operator may be any
+       combination of ``>'', ``<'', ``@'', and ``!''; ``>'' means
+       greater than, ``<'' means less than, ``@'' means equal  to
+       and ``!'' inverts the sense of the test.  The baud rate is
+       specified as a number and is compared with  the  speed  of
+       the  standard  error  output  (which should be the control
+       terminal).  The terminal type is a string.
+
+       If the terminal type is not specified on the command line,
+       the  -m mappings are applied to the terminal type.  If the
+       port type and baud rate match the  mapping,  the  terminal
+       type  specified  in the mapping replaces the current type.
+       If more than one mapping is specified, the first  applica-
+       ble mapping is used.
+
+       For    example,    consider    the    following   mapping:
+       dialup>9600:vt100.  The port type is dialup , the operator
+       is  >, the baud rate specification is 9600, and the termi-
+       nal type is vt100.  The result of this mapping is to spec-
+       ify that if the terminal type is dialup, and the baud rate
+       is greater than 9600 baud, a terminal type of  vt100  will
+       be used.
+
+       If no baud rate is specified, the terminal type will match
+       any baud rate.  If no port type is specified, the terminal
+       type   will   match   any  port  type.   For  example,  -m
+       dialup:vt100  -m  :?xterm  will  cause  any  dialup  port,
+       regardless of baud rate, to match the terminal type vt100,
+       and any non-dialup port type to match  the  terminal  type
+       ?xterm.   Note,  because of the leading question mark, the
+       user will be queried on a default port as to whether  they
+       are actually using an xterm terminal.
+
+       No  whitespace  characters  are permitted in the -m option
+       argument.  Also, to avoid problems  with  meta-characters,
+       it  is  suggested  that  the  entire -m option argument be
+       placed within single quote characters, and that csh  users
+       insert  a  backslash character (``\'') before any exclama-
+       tion marks (``!'').
+
+
+
+

HISTORY

+       The tset command appeared in BSD 3.0.  The ncurses  imple-
+       mentation  was lightly adapted from the 4.4BSD sources for
+       a terminfo environment by Eric S. Raymond <esr@snark.thyr-
+       sus.com>.
+
+
+
+

COMPATIBILITY

+       The  tset  utility has been provided for backward-compati-
+       bility with BSD environments (under  most  modern  UNIXes,
+       /etc/inittab  and  getty(1) can set TERM appropriately for
+       each dial-up line; this  obviates  what  was  tset's  most
+       important  use).   This implementation behaves like 4.4BSD
+       tset, with a few exceptions specified here.
+
+       The -S option of BSD tset no longer works;  it  prints  an
+       error message to stderr and dies.  The -s option only sets
+       TERM, not TERMCAP.  Both these  changes  are  because  the
+       TERMCAP  variable  is  no longer supported under terminfo-
+       based ncurses, which makes tset -S useless (we made it die
+       noisily rather than silently induce lossage).
+
+       There  was  an  undocumented  4.4BSD feature that invoking
+       tset via a link named `TSET` (or via any other name begin-
+       ning  with  an  upper-case letter) set the terminal to use
+       upper-case only.  This feature has been omitted.
+
+       The -A, -E, -h, -u and -v options were  deleted  from  the
+       tset  utility  in 4.4BSD.  None of them were documented in
+       4.3BSD and all are of limited utility at  best.   The  -a,
+       -d, and -p options are similarly not documented or useful,
+       but were retained as they appear to be in widespread  use.
+       It  is  strongly recommended that any usage of these three
+       options be changed to use the -m option instead.   The  -n
+       option  remains, but has no effect.  The -adnp options are
+       therefore omitted from the usage summary above.
+
+       It is still permissible to specify  the  -e,  -i,  and  -k
+       options  without arguments, although it is strongly recom-
+       mended that such usage be fixed to explicitly specify  the
+       character.
+
+       As  of  4.4BSD,  executing tset as reset no longer implies
+       the -Q option.  Also, the interaction between the - option
+       and the terminal argument in some historic implementations
+       of tset has been removed.
+
+
+
+

ENVIRONMENT

+       The tset command uses these environment variables:
+
+       SHELL
+            tells tset whether to initialize TERM using sh or csh
+            syntax.
+
+       TERM Denotes  your  terminal  type.  Each terminal type is
+            distinct, though many are similar.
+
+       TERMCAP
+            may denote the location of a termcap database.  If it
+            is not an absolute pathname, e.g., begins with a `/',
+            tset removes the variable from the environment before
+            looking for the terminal description.
+
+
+
+

FILES

+       /etc/ttys
+            system  port  name  to terminal type mapping database
+            (BSD versions only).
+
+       /usr/share/terminfo
+            terminal capability database
+
+
+
+

SEE ALSO

+       csh(1), sh(1), stty(1),  curs_terminfo(3x),  tty(4),  ter-
+       minfo(5), ttys(5), environ(7)
+
+       This describes ncurses version 5.6 (patch 20081011).
+
+
+
+                                                                tset(1)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/man/wresize.3x.html b/ncurses/doc/html/man/wresize.3x.html new file mode 100644 index 0000000..3e4ed35 --- /dev/null +++ b/ncurses/doc/html/man/wresize.3x.html @@ -0,0 +1,108 @@ + + + + +wresize 3x + + + + +

wresize 3x

+
+
+
+wresize(3x)                                                 wresize(3x)
+
+
+
+
+
+

NAME

+       wresize - resize a curses window
+
+
+
+

SYNOPSIS

+       #include <curses.h>
+
+       int wresize(WINDOW *win, int lines, int columns);
+
+
+
+

DESCRIPTION

+       The  wresize  function  reallocates storage for an ncurses
+       window to adjust its dimensions to the  specified  values.
+       If either dimension is larger than the current values, the
+       window's data is filled with blanks that have the  current
+       background  rendition  (as  set  by wbkgndset) merged into
+       them.
+
+
+
+

RETURN VALUE

+       The function returns the integer ERR upon failure  and  OK
+       on success.  It will fail if either of the dimensions less
+       than or equal  to  zero,  or  if  an  error  occurs  while
+       (re)allocating memory for the window.
+
+
+
+

NOTES

+       The only restriction placed on the dimensions is that they
+       be greater than zero.  The dimensions are not compared  to
+       curses   screen   dimensions  to  simplify  the  logic  of
+       resizeterm.  The caller  must  ensure  that  the  window's
+       dimensions fit within the actual screen dimensions.
+
+
+
+

SEE ALSO

+       resizeterm(3x).
+
+
+
+

AUTHOR

+       Thomas Dickey (from an equivalent function written in 1988
+       for BSD curses).
+
+
+
+                                                            wresize(3x)
+
+
+
+Man(1) output converted with +man2html +
+ + diff --git a/ncurses/doc/html/ncurses-intro.html b/ncurses/doc/html/ncurses-intro.html new file mode 100644 index 0000000..451e7ab --- /dev/null +++ b/ncurses/doc/html/ncurses-intro.html @@ -0,0 +1,2722 @@ + + + + +Writing Programs with NCURSES + + + + + +

Writing Programs with NCURSES

+ +
+by Eric S. Raymond and Zeyd M. Ben-Halim
+updates since release 1.9.9e by Thomas Dickey +
+ +

Contents

+ + +
+

Introduction

+ +This document is an introduction to programming with curses. It is +not an exhaustive reference for the curses Application Programming Interface +(API); that role is filled by the curses manual pages. Rather, it +is intended to help C programmers ease into using the package.

+ +This document is aimed at C applications programmers not yet specifically +familiar with ncurses. If you are already an experienced curses +programmer, you should nevertheless read the sections on +Mouse Interfacing, Debugging, +Compatibility with Older Versions, +and Hints, Tips, and Tricks. These will bring you up +to speed on the special features and quirks of the ncurses +implementation. If you are not so experienced, keep reading.

+ +The curses package is a subroutine library for +terminal-independent screen-painting and input-event handling which +presents a high level screen model to the programmer, hiding differences +between terminal types and doing automatic optimization of output to change +one screen full of text into another. Curses uses terminfo, which +is a database format that can describe the capabilities of thousands of +different terminals.

+ +The curses API may seem something of an archaism on UNIX desktops +increasingly dominated by X, Motif, and Tcl/Tk. Nevertheless, UNIX still +supports tty lines and X supports xterm(1); the curses +API has the advantage of (a) back-portability to character-cell terminals, +and (b) simplicity. For an application that does not require bit-mapped +graphics and multiple fonts, an interface implementation using curses +will typically be a great deal simpler and less expensive than one using an +X toolkit. + +

A Brief History of Curses

+ +Historically, the first ancestor of curses was the routines written to +provide screen-handling for the game rogue; these used the +already-existing termcap database facility for describing terminal +capabilities. These routines were abstracted into a documented library and +first released with the early BSD UNIX versions.

+ +System III UNIX from Bell Labs featured a rewritten and much-improved +curses library. It introduced the terminfo format. Terminfo is based +on Berkeley's termcap database, but contains a number of improvements and +extensions. Parameterized capabilities strings were introduced, making it +possible to describe multiple video attributes, and colors and to handle far +more unusual terminals than possible with termcap. In the later AT&T +System V releases, curses evolved to use more facilities and offer +more capabilities, going far beyond BSD curses in power and flexibility. + +

Scope of This Document

+ +This document describes ncurses, a free implementation of +the System V curses API with some clearly marked extensions. +It includes the following System V curses features: +
    +
  • Support for multiple screen highlights (BSD curses could only +handle one `standout' highlight, usually reverse-video). +
  • Support for line- and box-drawing using forms characters. +
  • Recognition of function keys on input. +
  • Color support. +
  • Support for pads (windows of larger than screen size on which the +screen or a subwindow defines a viewport). +
+ +Also, this package makes use of the insert and delete line and character +features of terminals so equipped, and determines how to optimally use these +features with no help from the programmer. It allows arbitrary combinations of +video attributes to be displayed, even on terminals that leave ``magic +cookies'' on the screen to mark changes in attributes.

+ +The ncurses package can also capture and use event reports from a +mouse in some environments (notably, xterm under the X window system). This +document includes tips for using the mouse.

+ +The ncurses package was originated by Pavel Curtis. The original +maintainer of this package is +Zeyd Ben-Halim +<zmbenhal@netcom.com>. +Eric S. Raymond +<esr@snark.thyrsus.com> +wrote many of the new features in versions after 1.8.1 +and wrote most of this introduction. +Jürgen Pfeifer +wrote all of the menu and forms code as well as the +Ada95 binding. +Ongoing work is being done by +Thomas Dickey (maintainer). +Contact the current maintainers at +bug-ncurses@gnu.org. +

+ +This document also describes the panels extension library, +similarly modeled on the SVr4 panels facility. This library allows you to +associate backing store with each of a stack or deck of overlapping windows, +and provides operations for moving windows around in the stack that change +their visibility in the natural way (handling window overlaps).

+ +Finally, this document describes in detail the menus and forms extension libraries, also cloned from System V, +which support easy construction and sequences of menus and fill-in +forms. + + +

Terminology

+ +In this document, the following terminology is used with reasonable +consistency: + +
+
window +
+A data structure describing a sub-rectangle of the screen (possibly the +entire screen). You can write to a window as though it were a miniature +screen, scrolling independently of other windows on the physical screen. +
screens +
+A subset of windows which are as large as the terminal screen, i.e., they start +at the upper left hand corner and encompass the lower right hand corner. One +of these, stdscr, is automatically provided for the programmer. +
terminal screen +
+The package's idea of what the terminal display currently looks like, i.e., +what the user sees now. This is a special screen. +
+ +

The Curses Library

+ +

An Overview of Curses

+ +

Compiling Programs using Curses

+ +In order to use the library, it is necessary to have certain types and +variables defined. Therefore, the programmer must have a line: + +
+	  #include <curses.h>
+
+ +at the top of the program source. The screen package uses the Standard I/O +library, so <curses.h> includes +<stdio.h>. <curses.h> also includes +<termios.h>, <termio.h>, or +<sgtty.h> depending on your system. It is redundant (but +harmless) for the programmer to do these includes, too. In linking with +curses you need to have -lncurses in your LDFLAGS or on the +command line. There is no need for any other libraries. + +

Updating the Screen

+ +In order to update the screen optimally, it is necessary for the routines to +know what the screen currently looks like and what the programmer wants it to +look like next. For this purpose, a data type (structure) named WINDOW is +defined which describes a window image to the routines, including its starting +position on the screen (the (y, x) coordinates of the upper left hand corner) +and its size. One of these (called curscr, for current screen) is a +screen image of what the terminal currently looks like. Another screen (called +stdscr, for standard screen) is provided by default to make changes +on.

+ +A window is a purely internal representation. It is used to build and store a +potential image of a portion of the terminal. It doesn't bear any necessary +relation to what is really on the terminal screen; it's more like a +scratchpad or write buffer.

+ +To make the section of physical screen corresponding to a window reflect the +contents of the window structure, the routine refresh() (or +wrefresh() if the window is not stdscr) is called.

+ +A given physical screen section may be within the scope of any number of +overlapping windows. Also, changes can be made to windows in any order, +without regard to motion efficiency. Then, at will, the programmer can +effectively say ``make it look like this,'' and let the package implementation +determine the most efficient way to repaint the screen. + +

Standard Windows and Function Naming Conventions

+ +As hinted above, the routines can use several windows, but two are +automatically given: curscr, which knows what the terminal looks like, +and stdscr, which is what the programmer wants the terminal to look +like next. The user should never actually access curscr directly. +Changes should be made to through the API, and then the routine +refresh() (or wrefresh()) called.

+ +Many functions are defined to use stdscr as a default screen. For +example, to add a character to stdscr, one calls addch() with +the desired character as argument. To write to a different window. use the +routine waddch() (for `w'indow-specific addch()) is provided. This +convention of prepending function names with a `w' when they are to be +applied to specific windows is consistent. The only routines which do not +follow it are those for which a window must always be specified.

+ +In order to move the current (y, x) coordinates from one point to another, the +routines move() and wmove() are provided. However, it is +often desirable to first move and then perform some I/O operation. In order to +avoid clumsiness, most I/O routines can be preceded by the prefix 'mv' and +the desired (y, x) coordinates prepended to the arguments to the function. For +example, the calls + +

+	  move(y, x);
+	  addch(ch);
+
+ +can be replaced by + +
+	  mvaddch(y, x, ch);
+
+ +and + +
+	  wmove(win, y, x);
+	  waddch(win, ch);
+
+ +can be replaced by + +
+	  mvwaddch(win, y, x, ch);
+
+ +Note that the window description pointer (win) comes before the added (y, x) +coordinates. If a function requires a window pointer, it is always the first +parameter passed. + +

Variables

+ +The curses library sets some variables describing the terminal +capabilities. + +
+      type   name      description
+      ------------------------------------------------------------------
+      int    LINES     number of lines on the terminal
+      int    COLS      number of columns on the terminal
+
+ +The curses.h also introduces some #define constants and types +of general usefulness: + +
+
bool +
boolean type, actually a `char' (e.g., bool doneit;) +
TRUE +
boolean `true' flag (1). +
FALSE +
boolean `false' flag (0). +
ERR +
error flag returned by routines on a failure (-1). +
OK +
error flag returned by routines when things go right. +
+ +

Using the Library

+ +Now we describe how to actually use the screen package. In it, we assume all +updating, reading, etc. is applied to stdscr. These instructions will +work on any window, providing you change the function names and parameters as +mentioned above.

+ +Here is a sample program to motivate the discussion: + +

+#include <curses.h>
+#include <signal.h>
+
+static void finish(int sig);
+
+int
+main(int argc, char *argv[])
+{
+    int num = 0;
+
+    /* initialize your non-curses data structures here */
+
+    (void) signal(SIGINT, finish);      /* arrange interrupts to terminate */
+
+    (void) initscr();      /* initialize the curses library */
+    keypad(stdscr, TRUE);  /* enable keyboard mapping */
+    (void) nonl();         /* tell curses not to do NL->CR/NL on output */
+    (void) cbreak();       /* take input chars one at a time, no wait for \n */
+    (void) echo();         /* echo input - in color */
+
+    if (has_colors())
+    {
+        start_color();
+
+        /*
+         * Simple color assignment, often all we need.  Color pair 0 cannot
+	 * be redefined.  This example uses the same value for the color
+	 * pair as for the foreground color, though of course that is not
+	 * necessary:
+         */
+        init_pair(1, COLOR_RED,     COLOR_BLACK);
+        init_pair(2, COLOR_GREEN,   COLOR_BLACK);
+        init_pair(3, COLOR_YELLOW,  COLOR_BLACK);
+        init_pair(4, COLOR_BLUE,    COLOR_BLACK);
+        init_pair(5, COLOR_CYAN,    COLOR_BLACK);
+        init_pair(6, COLOR_MAGENTA, COLOR_BLACK);
+        init_pair(7, COLOR_WHITE,   COLOR_BLACK);
+    }
+
+    for (;;)
+    {
+        int c = getch();     /* refresh, accept single keystroke of input */
+	attrset(COLOR_PAIR(num % 8));
+	num++;
+
+        /* process the command keystroke */
+    }
+
+    finish(0);               /* we're done */
+}
+
+static void finish(int sig)
+{
+    endwin();
+
+    /* do your non-curses wrapup here */
+
+    exit(0);
+}
+
+ +

Starting up

+ +In order to use the screen package, the routines must know about terminal +characteristics, and the space for curscr and stdscr must be +allocated. These function initscr() does both these things. Since it +must allocate space for the windows, it can overflow memory when attempting to +do so. On the rare occasions this happens, initscr() will terminate +the program with an error message. initscr() must always be called +before any of the routines which affect windows are used. If it is not, the +program will core dump as soon as either curscr or stdscr are +referenced. However, it is usually best to wait to call it until after you are +sure you will need it, like after checking for startup errors. Terminal status +changing routines like nl() and cbreak() should be called +after initscr().

+ +Once the screen windows have been allocated, you can set them up for +your program. If you want to, say, allow a screen to scroll, use +scrollok(). If you want the cursor to be left in place after +the last change, use leaveok(). If this isn't done, +refresh() will move the cursor to the window's current (y, x) +coordinates after updating it.

+ +You can create new windows of your own using the functions newwin(), +derwin(), and subwin(). The routine delwin() will +allow you to get rid of old windows. All the options described above can be +applied to any window. + +

Output

+ +Now that we have set things up, we will want to actually update the terminal. +The basic functions used to change what will go on a window are +addch() and move(). addch() adds a character at the +current (y, x) coordinates. move() changes the current (y, x) +coordinates to whatever you want them to be. It returns ERR if you +try to move off the window. As mentioned above, you can combine the two into +mvaddch() to do both things at once.

+ +The other output functions, such as addstr() and printw(), +all call addch() to add characters to the window.

+ +After you have put on the window what you want there, when you want the portion +of the terminal covered by the window to be made to look like it, you must call +refresh(). In order to optimize finding changes, refresh() +assumes that any part of the window not changed since the last +refresh() of that window has not been changed on the terminal, i.e., +that you have not refreshed a portion of the terminal with an overlapping +window. If this is not the case, the routine touchwin() is provided +to make it look like the entire window has been changed, thus making +refresh() check the whole subsection of the terminal for changes.

+ +If you call wrefresh() with curscr as its argument, it will +make the screen look like curscr thinks it looks like. This is useful +for implementing a command which would redraw the screen in case it get messed +up. + +

Input

+ +The complementary function to addch() is getch() which, if +echo is set, will call addch() to echo the character. Since the +screen package needs to know what is on the terminal at all times, if +characters are to be echoed, the tty must be in raw or cbreak mode. Since +initially the terminal has echoing enabled and is in ordinary ``cooked'' mode, +one or the other has to changed before calling getch(); otherwise, +the program's output will be unpredictable.

+ +When you need to accept line-oriented input in a window, the functions +wgetstr() and friends are available. There is even a wscanw() +function that can do scanf()(3)-style multi-field parsing on window +input. These pseudo-line-oriented functions turn on echoing while they +execute.

+ +The example code above uses the call keypad(stdscr, TRUE) to enable +support for function-key mapping. With this feature, the getch() code +watches the input stream for character sequences that correspond to arrow and +function keys. These sequences are returned as pseudo-character values. The +#define values returned are listed in the curses.h The +mapping from sequences to #define values is determined by +key_ capabilities in the terminal's terminfo entry. + +

Using Forms Characters

+ +The addch() function (and some others, including box() and +border()) can accept some pseudo-character arguments which are specially +defined by ncurses. These are #define values set up in +the curses.h header; see there for a complete list (look for +the prefix ACS_).

+ +The most useful of the ACS defines are the forms-drawing characters. You can +use these to draw boxes and simple graphs on the screen. If the terminal +does not have such characters, curses.h will map them to a +recognizable (though ugly) set of ASCII defaults. + +

Character Attributes and Color

+ +The ncurses package supports screen highlights including standout, +reverse-video, underline, and blink. It also supports color, which is treated +as another kind of highlight.

+ +Highlights are encoded, internally, as high bits of the pseudo-character type +(chtype) that curses.h uses to represent the contents of a +screen cell. See the curses.h header file for a complete list of +highlight mask values (look for the prefix A_).

+ +There are two ways to make highlights. One is to logical-or the value of the +highlights you want into the character argument of an addch() call, +or any other output call that takes a chtype argument.

+ +The other is to set the current-highlight value. This is logical-or'ed with +any highlight you specify the first way. You do this with the functions +attron(), attroff(), and attrset(); see the manual +pages for details. + +Color is a special kind of highlight. The package actually thinks in terms +of color pairs, combinations of foreground and background colors. The sample +code above sets up eight color pairs, all of the guaranteed-available colors +on black. Note that each color pair is, in effect, given the name of its +foreground color. Any other range of eight non-conflicting values could +have been used as the first arguments of the init_pair() values.

+ +Once you've done an init_pair() that creates color-pair N, you can +use COLOR_PAIR(N) as a highlight that invokes that particular +color combination. Note that COLOR_PAIR(N), for constant N, +is itself a compile-time constant and can be used in initializers. + +

Mouse Interfacing

+ +The ncurses library also provides a mouse interface. + +
+NOTE: this facility is specific to ncurses, it is not part of either +the XSI Curses standard, nor of System V Release 4, nor BSD curses. +System V Release 4 curses contains code with similar interface definitions, +however it is not documented. Other than by disassembling the library, we +have no way to determine exactly how that mouse code works. +Thus, we recommend that you wrap mouse-related code in an #ifdef using the +feature macro NCURSES_MOUSE_VERSION so it will not be compiled and linked +on non-ncurses systems. +
+ +Presently, mouse event reporting works in the following environments: +
    +
  • xterm and similar programs such as rxvt. +
  • Linux console, when configured with gpm(1), Alessandro +Rubini's mouse server. +
  • FreeBSD sysmouse (console) +
  • OS/2 EMX +
+

+The mouse interface is very simple. To activate it, you use the function +mousemask(), passing it as first argument a bit-mask that specifies +what kinds of events you want your program to be able to see. It will +return the bit-mask of events that actually become visible, which may differ +from the argument if the mouse device is not capable of reporting some of +the event types you specify.

+ +Once the mouse is active, your application's command loop should watch +for a return value of KEY_MOUSE from wgetch(). When +you see this, a mouse event report has been queued. To pick it off +the queue, use the function getmouse() (you must do this before +the next wgetch(), otherwise another mouse event might come +in and make the first one inaccessible).

+ +Each call to getmouse() fills a structure (the address of which you'll +pass it) with mouse event data. The event data includes zero-origin, +screen-relative character-cell coordinates of the mouse pointer. It also +includes an event mask. Bits in this mask will be set, corresponding +to the event type being reported.

+ +The mouse structure contains two additional fields which may be +significant in the future as ncurses interfaces to new kinds of +pointing device. In addition to x and y coordinates, there is a slot +for a z coordinate; this might be useful with touch-screens that can +return a pressure or duration parameter. There is also a device ID +field, which could be used to distinguish between multiple pointing +devices.

+ +The class of visible events may be changed at any time via mousemask(). +Events that can be reported include presses, releases, single-, double- and +triple-clicks (you can set the maximum button-down time for clicks). If +you don't make clicks visible, they will be reported as press-release +pairs. In some environments, the event mask may include bits reporting +the state of shift, alt, and ctrl keys on the keyboard during the event.

+ +A function to check whether a mouse event fell within a given window is +also supplied. You can use this to see whether a given window should +consider a mouse event relevant to it.

+ +Because mouse event reporting will not be available in all +environments, it would be unwise to build ncurses +applications that require the use of a mouse. Rather, you should +use the mouse as a shortcut for point-and-shoot commands your application +would normally accept from the keyboard. Two of the test games in the +ncurses distribution (bs and knight) contain +code that illustrates how this can be done.

+ +See the manual page curs_mouse(3X) for full details of the +mouse-interface functions. + +

Finishing Up

+ +In order to clean up after the ncurses routines, the routine +endwin() is provided. It restores tty modes to what they were when +initscr() was first called, and moves the cursor down to the +lower-left corner. Thus, anytime after the call to initscr, endwin() +should be called before exiting. + +

Function Descriptions

+ +We describe the detailed behavior of some important curses functions here, as a +supplement to the manual page descriptions. + +

Initialization and Wrapup

+ +
+
initscr() +
The first function called should almost always be initscr(). +This will determine the terminal type and +initialize curses data structures. initscr() also arranges that +the first call to refresh() will clear the screen. If an error +occurs a message is written to standard error and the program +exits. Otherwise it returns a pointer to stdscr. A few functions may be +called before initscr (slk_init(), filter(), +ripoffline(), use_env(), and, if you are using multiple +terminals, newterm().) +
endwin() +
Your program should always call endwin() before exiting or +shelling out of the program. This function will restore tty modes, +move the cursor to the lower left corner of the screen, reset the +terminal into the proper non-visual mode. Calling refresh() +or doupdate() after a temporary escape from the program will +restore the ncurses screen from before the escape. +
newterm(type, ofp, ifp) +
A program which outputs to more than one terminal should use +newterm() instead of initscr(). newterm() should +be called once for each terminal. It returns a variable of type +SCREEN * which should be saved as a reference to that +terminal. +(NOTE: a SCREEN variable is not a screen in the sense we +are describing in this introduction, but a collection of +parameters used to assist in optimizing the display.) +The arguments are the type of the terminal (a string) and +FILE pointers for the output and input of the terminal. If +type is NULL then the environment variable $TERM is used. +endwin() should called once at wrapup time for each terminal +opened using this function. +
set_term(new) +
This function is used to switch to a different terminal previously +opened by newterm(). The screen reference for the new terminal +is passed as the parameter. The previous terminal is returned by the +function. All other calls affect only the current terminal. +
delscreen(sp) +
The inverse of newterm(); deallocates the data structures +associated with a given SCREEN reference. +
+ +

Causing Output to the Terminal

+ +
+
refresh() and wrefresh(win) +
These functions must be called to actually get any output on +the terminal, as other routines merely manipulate data +structures. wrefresh() copies the named window to the physical +terminal screen, taking into account what is already +there in order to do optimizations. refresh() does a +refresh of stdscr. Unless leaveok() has been +enabled, the physical cursor of the terminal is left at the +location of the window's cursor. +
doupdate() and wnoutrefresh(win) +
These two functions allow multiple updates with more efficiency +than wrefresh. To use them, it is important to understand how curses +works. In addition to all the window structures, curses keeps two +data structures representing the terminal screen: a physical screen, +describing what is actually on the screen, and a virtual screen, +describing what the programmer wants to have on the screen. wrefresh +works by first copying the named window to the virtual screen +(wnoutrefresh()), and then calling the routine to update the +screen (doupdate()). If the programmer wishes to output +several windows at once, a series of calls to wrefresh will result +in alternating calls to wnoutrefresh() and doupdate(), +causing several bursts of output to the screen. By calling +wnoutrefresh() for each window, it is then possible to call +doupdate() once, resulting in only one burst of output, with +fewer total characters transmitted (this also avoids a visually annoying +flicker at each update). +
+ +

Low-Level Capability Access

+ +
+
setupterm(term, filenum, errret) +
This routine is called to initialize a terminal's description, without setting +up the curses screen structures or changing the tty-driver mode bits. +term is the character string representing the name of the terminal +being used. filenum is the UNIX file descriptor of the terminal to +be used for output. errret is a pointer to an integer, in which a +success or failure indication is returned. The values returned can be 1 (all +is well), 0 (no such terminal), or -1 (some problem locating the terminfo +database).

+ +The value of term can be given as NULL, which will cause the value of +TERM in the environment to be used. The errret pointer can +also be given as NULL, meaning no error code is wanted. If errret is +defaulted, and something goes wrong, setupterm() will print an +appropriate error message and exit, rather than returning. Thus, a simple +program can call setupterm(0, 1, 0) and not worry about initialization +errors.

+ +After the call to setupterm(), the global variable cur_term is +set to point to the current structure of terminal capabilities. By calling +setupterm() for each terminal, and saving and restoring +cur_term, it is possible for a program to use two or more terminals at +once. Setupterm() also stores the names section of the terminal +description in the global character array ttytype[]. Subsequent calls +to setupterm() will overwrite this array, so you'll have to save it +yourself if need be. +

+ +

Debugging

+ + +
+NOTE: These functions are not part of the standard curses API! +
+ +
+
trace() +
+This function can be used to explicitly set a trace level. If the +trace level is nonzero, execution of your program will generate a file +called `trace' in the current working directory containing a report on +the library's actions. Higher trace levels enable more detailed (and +verbose) reporting -- see comments attached to TRACE_ defines +in the curses.h file for details. (It is also possible to set +a trace level by assigning a trace level value to the environment variable +NCURSES_TRACE). +
_tracef() +
+This function can be used to output your own debugging information. It is only +available only if you link with -lncurses_g. It can be used the same way as +printf(), only it outputs a newline after the end of arguments. +The output goes to a file called trace in the current directory. +
+ +Trace logs can be difficult to interpret due to the sheer volume of +data dumped in them. There is a script called tracemunch +included with the ncurses distribution that can alleviate +this problem somewhat; it compacts long sequences of similar operations into +more succinct single-line pseudo-operations. These pseudo-ops can be +distinguished by the fact that they are named in capital letters. + +

Hints, Tips, and Tricks

+ +The ncurses manual pages are a complete reference for this library. +In the remainder of this document, we discuss various useful methods that +may not be obvious from the manual page descriptions. + +

Some Notes of Caution

+ +If you find yourself thinking you need to use noraw() or +nocbreak(), think again and move carefully. It's probably +better design to use getstr() or one of its relatives to +simulate cooked mode. The noraw() and nocbreak() +functions try to restore cooked mode, but they may end up clobbering +some control bits set before you started your application. Also, they +have always been poorly documented, and are likely to hurt your +application's usability with other curses libraries.

+ +Bear in mind that refresh() is a synonym for wrefresh(stdscr). +Don't try to mix use of stdscr with use of windows declared +by newwin(); a refresh() call will blow them off the +screen. The right way to handle this is to use subwin(), or +not touch stdscr at all and tile your screen with declared +windows which you then wnoutrefresh() somewhere in your program +event loop, with a single doupdate() call to trigger actual +repainting.

+ +You are much less likely to run into problems if you design your screen +layouts to use tiled rather than overlapping windows. Historically, +curses support for overlapping windows has been weak, fragile, and poorly +documented. The ncurses library is not yet an exception to this +rule.

+ +There is a panels library included in the ncurses +distribution that does a pretty good job of strengthening the +overlapping-windows facilities.

+ +Try to avoid using the global variables LINES and COLS. Use +getmaxyx() on the stdscr context instead. Reason: +your code may be ported to run in an environment with window resizes, +in which case several screens could be open with different sizes. + +

Temporarily Leaving NCURSES Mode

+ +Sometimes you will want to write a program that spends most of its time in +screen mode, but occasionally returns to ordinary `cooked' mode. A common +reason for this is to support shell-out. This behavior is simple to arrange +in ncurses.

+ +To leave ncurses mode, call endwin() as you would if you +were intending to terminate the program. This will take the screen back to +cooked mode; you can do your shell-out. When you want to return to +ncurses mode, simply call refresh() or doupdate(). +This will repaint the screen.

+ +There is a boolean function, isendwin(), which code can use to +test whether ncurses screen mode is active. It returns TRUE +in the interval between an endwin() call and the following +refresh(), FALSE otherwise.

+ +Here is some sample code for shellout: + +

+    addstr("Shelling out...");
+    def_prog_mode();           /* save current tty modes */
+    endwin();                  /* restore original tty modes */
+    system("sh");              /* run shell */
+    addstr("returned.\n");     /* prepare return message */
+    refresh();                 /* restore save modes, repaint screen */
+
+ +

Using NCURSES under XTERM

+ +A resize operation in X sends SIGWINCH to the application running +under xterm. + +The easiest way to handle SIGWINCH +is to do an endwin, +followed by an refresh and a screen repaint you code +yourself. +The refresh will pick up the new screen size from the +xterm's environment.

+ +That is the standard way, of course (it even works with some vendor's curses +implementations). +Its drawback is that it clears the screen to reinitialize the display, and does +not resize subwindows which must be shrunk. +Ncurses provides an extension which works better, the +resizeterm function. That function ensures that all windows +are limited to the new screen dimensions, and pads stdscr +with blanks if the screen is larger.

+ +The ncurses library provides a SIGWINCH signal handler, +which pushes a KEY_RESIZE via the wgetch() calls. +When ncurses returns that code, +it calls resizeterm +to update the size of the standard screen's window, repainting that +(filling with blanks or truncating as needed). +It also resizes other windows, +but its effect may be less satisfactory because it cannot +know how you want the screen re-painted. +You will usually have to write special-purpose code to handle +KEY_RESIZE yourself. + +

Handling Multiple Terminal Screens

+ +The initscr() function actually calls a function named +newterm() to do most of its work. If you are writing a program that +opens multiple terminals, use newterm() directly.

+ +For each call, you will have to specify a terminal type and a pair of file +pointers; each call will return a screen reference, and stdscr will be +set to the last one allocated. You will switch between screens with the +set_term call. Note that you will also have to call +def_shell_mode and def_prog_mode on each tty yourself. + +

Testing for Terminal Capabilities

+ +Sometimes you may want to write programs that test for the presence of various +capabilities before deciding whether to go into ncurses mode. An easy +way to do this is to call setupterm(), then use the functions +tigetflag(), tigetnum(), and tigetstr() to do your +testing.

+ +A particularly useful case of this often comes up when you want to +test whether a given terminal type should be treated as `smart' +(cursor-addressable) or `stupid'. The right way to test this is to see +if the return value of tigetstr("cup") is non-NULL. Alternatively, +you can include the term.h file and test the value of the +macro cursor_address. + +

Tuning for Speed

+ +Use the addchstr() family of functions for fast +screen-painting of text when you know the text doesn't contain any +control characters. Try to make attribute changes infrequent on your +screens. Don't use the immedok() option! + +

Special Features of NCURSES

+ +The wresize() function allows you to resize a window in place. +The associated resizeterm() function simplifies the construction +of SIGWINCH handlers, for resizing all windows.

+ +The define_key() function allows you +to define at runtime function-key control sequences which are not in the +terminal description. +The keyok() function allows you to temporarily +enable or disable interpretation of any function-key control sequence.

+ +The use_default_colors() function allows you to construct +applications which can use the terminal's default foreground and +background colors as an additional "default" color. +Several terminal emulators support this feature, which is based on ISO 6429.

+ +Ncurses supports up 16 colors, unlike SVr4 curses which defines only 8. +While most terminals which provide color allow only 8 colors, about +a quarter (including XFree86 xterm) support 16 colors. + +

Compatibility with Older Versions

+ +Despite our best efforts, there are some differences between ncurses +and the (undocumented!) behavior of older curses implementations. These arise +from ambiguities or omissions in the documentation of the API. + +

Refresh of Overlapping Windows

+ +If you define two windows A and B that overlap, and then alternately scribble +on and refresh them, the changes made to the overlapping region under historic +curses versions were often not documented precisely.

+ +To understand why this is a problem, remember that screen updates are +calculated between two representations of the entire display. The +documentation says that when you refresh a window, it is first copied to the +virtual screen, and then changes are calculated to update the physical screen +(and applied to the terminal). But "copied to" is not very specific, and +subtle differences in how copying works can produce different behaviors in the +case where two overlapping windows are each being refreshed at unpredictable +intervals.

+ +What happens to the overlapping region depends on what wnoutrefresh() +does with its argument -- what portions of the argument window it copies to the +virtual screen. Some implementations do "change copy", copying down only +locations in the window that have changed (or been marked changed with +wtouchln() and friends). Some implementations do "entire copy", +copying all window locations to the virtual screen whether or not +they have changed.

+ +The ncurses library itself has not always been consistent on this +score. Due to a bug, versions 1.8.7 to 1.9.8a did entire copy. Versions +1.8.6 and older, and versions 1.9.9 and newer, do change copy.

+ +For most commercial curses implementations, it is not documented and not known +for sure (at least not to the ncurses maintainers) whether they do +change copy or entire copy. We know that System V release 3 curses has logic +in it that looks like an attempt to do change copy, but the surrounding logic +and data representations are sufficiently complex, and our knowledge +sufficiently indirect, that it's hard to know whether this is reliable. + +It is not clear what the SVr4 documentation and XSI standard intend. The XSI +Curses standard barely mentions wnoutrefresh(); the SVr4 documents seem to be +describing entire-copy, but it is possible with some effort and straining to +read them the other way.

+ +It might therefore be unwise to rely on either behavior in programs that might +have to be linked with other curses implementations. Instead, you can do an +explicit touchwin() before the wnoutrefresh() call to +guarantee an entire-contents copy anywhere.

+ +The really clean way to handle this is to use the panels library. If, +when you want a screen update, you do update_panels(), it will +do all the necessary wnoutrefresh() calls for whatever panel +stacking order you have defined. Then you can do one doupdate() +and there will be a single burst of physical I/O that will do +all your updates. + +

Background Erase

+ +If you have been using a very old versions of ncurses (1.8.7 or +older) you may be surprised by the behavior of the erase functions. In older +versions, erased areas of a window were filled with a blank modified by the +window's current attribute (as set by wattrset(), wattron(), +wattroff() and friends).

+ +In newer versions, this is not so. Instead, the attribute of erased blanks +is normal unless and until it is modified by the functions bkgdset() +or wbkgdset().

+ +This change in behavior conforms ncurses to System V Release 4 and +the XSI Curses standard. + +

XSI Curses Conformance

+ +The ncurses library is intended to be base-level conformant with the +XSI Curses standard from X/Open. Many extended-level features (in fact, almost +all features not directly concerned with wide characters and +internationalization) are also supported.

+ +One effect of XSI conformance is the change in behavior described under +"Background Erase -- Compatibility with Old Versions".

+ +Also, ncurses meets the XSI requirement that every macro +entry point have a corresponding function which may be linked (and +will be prototype-checked) if the macro definition is disabled with +#undef. + +

The Panels Library

+ +The ncurses library by itself provides good support for screen +displays in which the windows are tiled (non-overlapping). In the more +general case that windows may overlap, you have to use a series of +wnoutrefresh() calls followed by a doupdate(), and be +careful about the order you do the window refreshes in. It has to be +bottom-upwards, otherwise parts of windows that should be obscured will +show through.

+ +When your interface design is such that windows may dive deeper into the +visibility stack or pop to the top at runtime, the resulting book-keeping +can be tedious and difficult to get right. Hence the panels library.

+ +The panel library first appeared in AT&T System V. The +version documented here is the panel code distributed +with ncurses. + +

Compiling With the Panels Library

+ +Your panels-using modules must import the panels library declarations with + +
+	  #include <panel.h>
+
+ +and must be linked explicitly with the panels library using an +-lpanel argument. Note that they must also link the +ncurses library with -lncurses. Many linkers +are two-pass and will accept either order, but it is still good practice +to put -lpanel first and -lncurses second. + +

Overview of Panels

+ +A panel object is a window that is implicitly treated as part of a +deck including all other panel objects. The deck has an implicit +bottom-to-top visibility order. The panels library includes an update +function (analogous to refresh()) that displays all panels in the +deck in the proper order to resolve overlaps. The standard window, +stdscr, is considered below all panels.

+ +Details on the panels functions are available in the man pages. We'll just +hit the highlights here.

+ +You create a panel from a window by calling new_panel() on a +window pointer. It then becomes the top of the deck. The panel's window +is available as the value of panel_window() called with the +panel pointer as argument.

+ +You can delete a panel (removing it from the deck) with del_panel. +This will not deallocate the associated window; you have to do that yourself. + +You can replace a panel's window with a different window by calling +replace_window. The new window may be of different size; +the panel code will re-compute all overlaps. This operation doesn't +change the panel's position in the deck.

+ +To move a panel's window, use move_panel(). The +mvwin() function on the panel's window isn't sufficient because it +doesn't update the panels library's representation of where the windows are. +This operation leaves the panel's depth, contents, and size unchanged.

+ +Two functions (top_panel(), bottom_panel()) are +provided for rearranging the deck. The first pops its argument window to the +top of the deck; the second sends it to the bottom. Either operation leaves +the panel's screen location, contents, and size unchanged.

+ +The function update_panels() does all the +wnoutrefresh() calls needed to prepare for +doupdate() (which you must call yourself, afterwards).

+ +Typically, you will want to call update_panels() and +doupdate() just before accepting command input, once in each cycle +of interaction with the user. If you call update_panels() after +each and every panel write, you'll generate a lot of unnecessary refresh +activity and screen flicker. + +

Panels, Input, and the Standard Screen

+ +You shouldn't mix wnoutrefresh() or wrefresh() +operations with panels code; this will work only if the argument window +is either in the top panel or unobscured by any other panels.

+ +The stsdcr window is a special case. It is considered below all +panels. Because changes to panels may obscure parts of stdscr, +though, you should call update_panels() before +doupdate() even when you only change stdscr.

+ +Note that wgetch automatically calls wrefresh. +Therefore, before requesting input from a panel window, you need to be sure +that the panel is totally unobscured.

+ +There is presently no way to display changes to one obscured panel without +repainting all panels. + +

Hiding Panels

+ +It's possible to remove a panel from the deck temporarily; use +hide_panel for this. Use show_panel() to render it +visible again. The predicate function panel_hidden +tests whether or not a panel is hidden.

+ +The panel_update code ignores hidden panels. You cannot do +top_panel() or bottom_panel on a hidden panel(). +Other panels operations are applicable. + +

Miscellaneous Other Facilities

+ +It's possible to navigate the deck using the functions +panel_above() and panel_below. Handed a panel +pointer, they return the panel above or below that panel. Handed +NULL, they return the bottom-most or top-most panel.

+ +Every panel has an associated user pointer, not used by the panel code, to +which you can attach application data. See the man page documentation +of set_panel_userptr() and panel_userptr for +details. + +

The Menu Library

+ +A menu is a screen display that assists the user to choose some subset +of a given set of items. The menu library is a curses +extension that supports easy programming of menu hierarchies with a +uniform but flexible interface.

+ +The menu library first appeared in AT&T System V. The +version documented here is the menu code distributed +with ncurses. + +

Compiling With the menu Library

+ +Your menu-using modules must import the menu library declarations with + +
+	  #include <menu.h>
+
+ +and must be linked explicitly with the menus library using an +-lmenu argument. Note that they must also link the +ncurses library with -lncurses. Many linkers +are two-pass and will accept either order, but it is still good practice +to put -lmenu first and -lncurses second. + +

Overview of Menus

+ +The menus created by this library consist of collections of +items including a name string part and a description string +part. To make menus, you create groups of these items and connect +them with menu frame objects.

+ +The menu can then by posted, that is written to an +associated window. Actually, each menu has two associated windows; a +containing window in which the programmer can scribble titles or +borders, and a subwindow in which the menu items proper are displayed. +If this subwindow is too small to display all the items, it will be a +scrollable viewport on the collection of items.

+ +A menu may also be unposted (that is, undisplayed), and finally +freed to make the storage associated with it and its items available for +re-use.

+ +The general flow of control of a menu program looks like this: + +

    +
  1. Initialize curses. +
  2. Create the menu items, using new_item(). +
  3. Create the menu using new_menu(). +
  4. Post the menu using post_menu(). +
  5. Refresh the screen. +
  6. Process user requests via an input loop. +
  7. Unpost the menu using unpost_menu(). +
  8. Free the menu, using free_menu(). +
  9. Free the items using free_item(). +
  10. Terminate curses. +
+ +

Selecting items

+ +Menus may be multi-valued or (the default) single-valued (see the manual +page menu_opts(3x) to see how to change the default). +Both types always have a current item.

+ +From a single-valued menu you can read the selected value simply by looking +at the current item. From a multi-valued menu, you get the selected set +by looping through the items applying the item_value() +predicate function. Your menu-processing code can use the function +set_item_value() to flag the items in the select set.

+ +Menu items can be made unselectable using set_item_opts() +or item_opts_off() with the O_SELECTABLE +argument. This is the only option so far defined for menus, but it +is good practice to code as though other option bits might be on. + +

Menu Display

+ +The menu library calculates a minimum display size for your window, based +on the following variables: + +
    +
  • The number and maximum length of the menu items +
  • Whether the O_ROWMAJOR option is enabled +
  • Whether display of descriptions is enabled +
  • Whatever menu format may have been set by the programmer +
  • The length of the menu mark string used for highlighting selected items +
+ +The function set_menu_format() allows you to set the +maximum size of the viewport or menu page that will be used +to display menu items. You can retrieve any format associated with a +menu with menu_format(). The default format is rows=16, +columns=1.

+ +The actual menu page may be smaller than the format size. This depends +on the item number and size and whether O_ROWMAJOR is on. This option +(on by default) causes menu items to be displayed in a `raster-scan' +pattern, so that if more than one item will fit horizontally the first +couple of items are side-by-side in the top row. The alternative is +column-major display, which tries to put the first several items in +the first column.

+ +As mentioned above, a menu format not large enough to allow all items to fit +on-screen will result in a menu display that is vertically scrollable.

+You can scroll it with requests to the menu driver, which will be described +in the section on menu input handling.

+ +Each menu has a mark string used to visually tag selected items; +see the menu_mark(3x) manual page for details. The mark +string length also influences the menu page size.

+ +The function scale_menu() returns the minimum display size +that the menu code computes from all these factors. + +There are other menu display attributes including a select attribute, +an attribute for selectable items, an attribute for unselectable items, +and a pad character used to separate item name text from description +text. These have reasonable defaults which the library allows you to +change (see the menu_attribs(3x) manual page. + +

Menu Windows

+ +Each menu has, as mentioned previously, a pair of associated windows. +Both these windows are painted when the menu is posted and erased when +the menu is unposted.

+ +The outer or frame window is not otherwise touched by the menu +routines. It exists so the programmer can associate a title, a +border, or perhaps help text with the menu and have it properly +refreshed or erased at post/unpost time. The inner window or +subwindow is where the current menu page is displayed.

+ +By default, both windows are stdscr. You can set them with the +functions in menu_win(3x).

+ +When you call post_menu(), you write the menu to its +subwindow. When you call unpost_menu(), you erase the +subwindow, However, neither of these actually modifies the screen. To +do that, call wrefresh() or some equivalent. + +

Processing Menu Input

+ +The main loop of your menu-processing code should call +menu_driver() repeatedly. The first argument of this routine +is a menu pointer; the second is a menu command code. You should write an +input-fetching routine that maps input characters to menu command codes, and +pass its output to menu_driver(). The menu command codes are +fully documented in menu_driver(3x).

+ +The simplest group of command codes is REQ_NEXT_ITEM, +REQ_PREV_ITEM, REQ_FIRST_ITEM, +REQ_LAST_ITEM, REQ_UP_ITEM, +REQ_DOWN_ITEM, REQ_LEFT_ITEM, +REQ_RIGHT_ITEM. These change the currently selected +item. These requests may cause scrolling of the menu page if it only +partially displayed.

+ +There are explicit requests for scrolling which also change the +current item (because the select location does not change, but the +item there does). These are REQ_SCR_DLINE, +REQ_SCR_ULINE, REQ_SCR_DPAGE, and +REQ_SCR_UPAGE.

+ +The REQ_TOGGLE_ITEM selects or deselects the current item. +It is for use in multi-valued menus; if you use it with O_ONEVALUE +on, you'll get an error return (E_REQUEST_DENIED).

+ +Each menu has an associated pattern buffer. The +menu_driver() logic tries to accumulate printable ASCII +characters passed in in that buffer; when it matches a prefix of an +item name, that item (or the next matching item) is selected. If +appending a character yields no new match, that character is deleted +from the pattern buffer, and menu_driver() returns +E_NO_MATCH.

+ +Some requests change the pattern buffer directly: +REQ_CLEAR_PATTERN, REQ_BACK_PATTERN, +REQ_NEXT_MATCH, REQ_PREV_MATCH. The latter +two are useful when pattern buffer input matches more than one item +in a multi-valued menu.

+ +Each successful scroll or item navigation request clears the pattern +buffer. It is also possible to set the pattern buffer explicitly +with set_menu_pattern().

+ +Finally, menu driver requests above the constant MAX_COMMAND +are considered application-specific commands. The menu_driver() +code ignores them and returns E_UNKNOWN_COMMAND. + +

Miscellaneous Other Features

+ +Various menu options can affect the processing and visual appearance +and input processing of menus. See menu_opts(3x) for +details.

+ +It is possible to change the current item from application code; this +is useful if you want to write your own navigation requests. It is +also possible to explicitly set the top row of the menu display. See +mitem_current(3x). + +If your application needs to change the menu subwindow cursor for +any reason, pos_menu_cursor() will restore it to the +correct location for continuing menu driver processing.

+ +It is possible to set hooks to be called at menu initialization and +wrapup time, and whenever the selected item changes. See +menu_hook(3x).

+ +Each item, and each menu, has an associated user pointer on which you +can hang application data. See mitem_userptr(3x) and +menu_userptr(3x). + +

The Forms Library

+ +The form library is a curses extension that supports easy +programming of on-screen forms for data entry and program control.

+ +The form library first appeared in AT&T System V. The +version documented here is the form code distributed +with ncurses. + +

Compiling With the form Library

+ +Your form-using modules must import the form library declarations with + +
+	  #include <form.h>
+
+ +and must be linked explicitly with the forms library using an +-lform argument. Note that they must also link the +ncurses library with -lncurses. Many linkers +are two-pass and will accept either order, but it is still good practice +to put -lform first and -lncurses second. + +

Overview of Forms

+ +A form is a collection of fields; each field may be either a label +(explanatory text) or a data-entry location. Long forms may be +segmented into pages; each entry to a new page clears the screen.

+To make forms, you create groups of fields and connect them with form +frame objects; the form library makes this relatively simple.

+ +Once defined, a form can be posted, that is written to an +associated window. Actually, each form has two associated windows; a +containing window in which the programmer can scribble titles or +borders, and a subwindow in which the form fields proper are displayed.

+ +As the form user fills out the posted form, navigation and editing +keys support movement between fields, editing keys support modifying +field, and plain text adds to or changes data in a current field. The +form library allows you (the forms designer) to bind each navigation +and editing key to any keystroke accepted by curses + +Fields may have validation conditions on them, so that they check input +data for type and value. The form library supplies a rich set of +pre-defined field types, and makes it relatively easy to define new ones.

+ +Once its transaction is completed (or aborted), a form may be +unposted (that is, undisplayed), and finally freed to make +the storage associated with it and its items available for re-use.

+ +The general flow of control of a form program looks like this: + +

    +
  1. Initialize curses. +
  2. Create the form fields, using new_field(). +
  3. Create the form using new_form(). +
  4. Post the form using post_form(). +
  5. Refresh the screen. +
  6. Process user requests via an input loop. +
  7. Unpost the form using unpost_form(). +
  8. Free the form, using free_form(). +
  9. Free the fields using free_field(). +
  10. Terminate curses. +
+ +Note that this looks much like a menu program; the form library handles +tasks which are in many ways similar, and its interface was obviously +designed to resemble that of the menu library +wherever possible.

+ +In forms programs, however, the `process user requests' is somewhat more +complicated than for menus. Besides menu-like navigation operations, +the menu driver loop has to support field editing and data validation. + +

Creating and Freeing Fields and Forms

+ +The basic function for creating fields is new_field(): + +
+FIELD *new_field(int height, int width,   /* new field size */
+                 int top, int left,       /* upper left corner */
+                 int offscreen,           /* number of offscreen rows */
+                 int nbuf);               /* number of working buffers */
+
+ +Menu items always occupy a single row, but forms fields may have +multiple rows. So new_field() requires you to specify a +width and height (the first two arguments, which mist both be greater +than zero).

+ +You must also specify the location of the field's upper left corner on +the screen (the third and fourth arguments, which must be zero or +greater). Note that these coordinates are relative to the form +subwindow, which will coincide with stdscr by default but +need not be stdscr if you've done an explicit +set_form_win() call.

+ +The fifth argument allows you to specify a number of off-screen rows. If +this is zero, the entire field will always be displayed. If it is +nonzero, the form will be scrollable, with only one screen-full (initially +the top part) displayed at any given time. If you make a field dynamic +and grow it so it will no longer fit on the screen, the form will become +scrollable even if the offscreen argument was initially zero.

+ +The forms library allocates one working buffer per field; the size of +each buffer is ((height + offscreen)*width + 1, one character +for each position in the field plus a NUL terminator. The sixth +argument is the number of additional data buffers to allocate for the +field; your application can use them for its own purposes. + +

+FIELD *dup_field(FIELD *field,            /* field to copy */
+                 int top, int left);      /* location of new copy */
+
+ +The function dup_field() duplicates an existing field at a +new location. Size and buffering information are copied; some +attribute flags and status bits are not (see the +form_field_new(3X) for details). + +
+FIELD *link_field(FIELD *field,           /* field to copy */
+                  int top, int left);     /* location of new copy */
+
+ +The function link_field() also duplicates an existing field +at a new location. The difference from dup_field() is that +it arranges for the new field's buffer to be shared with the old one.

+ +Besides the obvious use in making a field editable from two different +form pages, linked fields give you a way to hack in dynamic labels. If +you declare several fields linked to an original, and then make them +inactive, changes from the original will still be propagated to the +linked fields.

+ +As with duplicated fields, linked fields have attribute bits separate +from the original.

+ +As you might guess, all these field-allocations return NULL if +the field allocation is not possible due to an out-of-memory error or +out-of-bounds arguments.

+ +To connect fields to a form, use + +

+FORM *new_form(FIELD **fields);
+
+ +This function expects to see a NULL-terminated array of field pointers. +Said fields are connected to a newly-allocated form object; its address +is returned (or else NULL if the allocation fails).

+ +Note that new_field() does not copy the pointer array +into private storage; if you modify the contents of the pointer array +during forms processing, all manner of bizarre things might happen. Also +note that any given field may only be connected to one form.

+ +The functions free_field() and free_form are available +to free field and form objects. It is an error to attempt to free a field +connected to a form, but not vice-versa; thus, you will generally free +your form objects first. + +

Fetching and Changing Field Attributes

+ +Each form field has a number of location and size attributes +associated with it. There are other field attributes used to control +display and editing of the field. Some (for example, the O_STATIC bit) +involve sufficient complications to be covered in sections of their own +later on. We cover the functions used to get and set several basic +attributes here.

+ +When a field is created, the attributes not specified by the +new_field function are copied from an invisible system +default field. In attribute-setting and -fetching functions, the +argument NULL is taken to mean this field. Changes to it persist +as defaults until your forms application terminates. + +

Fetching Size and Location Data

+ +You can retrieve field sizes and locations through: + +
+int field_info(FIELD *field,              /* field from which to fetch */
+               int *height, *int width,   /* field size */
+               int *top, int *left,       /* upper left corner */
+               int *offscreen,            /* number of offscreen rows */
+               int *nbuf);                /* number of working buffers */
+
+ +This function is a sort of inverse of new_field(); instead of +setting size and location attributes of a new field, it fetches them +from an existing one. + +

Changing the Field Location

+ +It is possible to move a field's location on the screen: + +
+int move_field(FIELD *field,              /* field to alter */
+               int top, int left);        /* new upper-left corner */
+
+ +You can, of course. query the current location through field_info(). + +

The Justification Attribute

+ +One-line fields may be unjustified, justified right, justified left, +or centered. Here is how you manipulate this attribute: + +
+int set_field_just(FIELD *field,          /* field to alter */
+                   int justmode);         /* mode to set */
+
+int field_just(FIELD *field);             /* fetch mode of field */
+
+ +The mode values accepted and returned by this functions are +preprocessor macros NO_JUSTIFICATION, JUSTIFY_RIGHT, +JUSTIFY_LEFT, or JUSTIFY_CENTER. + +

Field Display Attributes

+ +For each field, you can set a foreground attribute for entered +characters, a background attribute for the entire field, and a pad +character for the unfilled portion of the field. You can also +control pagination of the form.

+ +This group of four field attributes controls the visual appearance +of the field on the screen, without affecting in any way the data +in the field buffer. + +

+int set_field_fore(FIELD *field,          /* field to alter */
+                   chtype attr);          /* attribute to set */
+
+chtype field_fore(FIELD *field);          /* field to query */
+
+int set_field_back(FIELD *field,          /* field to alter */
+                   chtype attr);          /* attribute to set */
+
+chtype field_back(FIELD *field);          /* field to query */
+
+int set_field_pad(FIELD *field,           /* field to alter */
+                 int pad);                /* pad character to set */
+
+chtype field_pad(FIELD *field);
+
+int set_new_page(FIELD *field,            /* field to alter */
+                 int flag);               /* TRUE to force new page */
+
+chtype new_page(FIELD *field);            /* field to query */
+
+ +The attributes set and returned by the first four functions are normal +curses(3x) display attribute values (A_STANDOUT, +A_BOLD, A_REVERSE etc). + +The page bit of a field controls whether it is displayed at the start of +a new form screen. + +

Field Option Bits

+ +There is also a large collection of field option bits you can set to control +various aspects of forms processing. You can manipulate them with these +functions: + +
+int set_field_opts(FIELD *field,          /* field to alter */
+                   int attr);             /* attribute to set */
+
+int field_opts_on(FIELD *field,           /* field to alter */
+                  int attr);              /* attributes to turn on */
+
+int field_opts_off(FIELD *field,          /* field to alter */
+                   int attr);             /* attributes to turn off */
+
+int field_opts(FIELD *field);             /* field to query */
+
+ +By default, all options are on. Here are the available option bits: +
+
O_VISIBLE +
Controls whether the field is visible on the screen. Can be used +during form processing to hide or pop up fields depending on the value +of parent fields. +
O_ACTIVE +
Controls whether the field is active during forms processing (i.e. +visited by form navigation keys). Can be used to make labels or derived +fields with buffer values alterable by the forms application, not the user. +
O_PUBLIC +
Controls whether data is displayed during field entry. If this option is +turned off on a field, the library will accept and edit data in that field, +but it will not be displayed and the visible field cursor will not move. +You can turn off the O_PUBLIC bit to define password fields. +
O_EDIT +
Controls whether the field's data can be modified. When this option is +off, all editing requests except REQ_PREV_CHOICE and +REQ_NEXT_CHOICE will fail. Such read-only fields may be useful for +help messages. +
O_WRAP +
Controls word-wrapping in multi-line fields. Normally, when any +character of a (blank-separated) word reaches the end of the current line, the +entire word is wrapped to the next line (assuming there is one). When this +option is off, the word will be split across the line break. +
O_BLANK +
Controls field blanking. When this option is on, entering a character at +the first field position erases the entire field (except for the just-entered +character). +
O_AUTOSKIP +
Controls automatic skip to next field when this one fills. Normally, +when the forms user tries to type more data into a field than will fit, +the editing location jumps to next field. When this option is off, the +user's cursor will hang at the end of the field. This option is ignored +in dynamic fields that have not reached their size limit. +
O_NULLOK +
Controls whether validation is applied to +blank fields. Normally, it is not; the user can leave a field blank +without invoking the usual validation check on exit. If this option is +off on a field, exit from it will invoke a validation check. +
O_PASSOK +
Controls whether validation occurs on every exit, or only after +the field is modified. Normally the latter is true. Setting O_PASSOK +may be useful if your field's validation function may change during +forms processing. +
O_STATIC +
Controls whether the field is fixed to its initial dimensions. If you +turn this off, the field becomes dynamic and will +stretch to fit entered data. +
+ +A field's options cannot be changed while the field is currently selected. +However, options may be changed on posted fields that are not current.

+ +The option values are bit-masks and can be composed with logical-or in +the obvious way. + +

Field Status

+ +Every field has a status flag, which is set to FALSE when the field is +created and TRUE when the value in field buffer 0 changes. This flag can +be queried and set directly: + +
+int set_field_status(FIELD *field,      /* field to alter */
+                   int status);         /* mode to set */
+
+int field_status(FIELD *field);         /* fetch mode of field */
+
+ +Setting this flag under program control can be useful if you use the same +form repeatedly, looking for modified fields each time.

+ +Calling field_status() on a field not currently selected +for input will return a correct value. Calling field_status() on a +field that is currently selected for input may not necessarily give a +correct field status value, because entered data isn't necessarily copied to +buffer zero before the exit validation check. + +To guarantee that the returned status value reflects reality, call +field_status() either (1) in the field's exit validation check +routine, (2) from the field's or form's initialization or termination +hooks, or (3) just after a REQ_VALIDATION request has been +processed by the forms driver. + +

Field User Pointer

+ +Each field structure contains one character pointer slot that is not used +by the forms library. It is intended to be used by applications to store +private per-field data. You can manipulate it with: + +
+int set_field_userptr(FIELD *field,       /* field to alter */
+                   char *userptr);        /* mode to set */
+
+char *field_userptr(FIELD *field);        /* fetch mode of field */
+
+ +(Properly, this user pointer field ought to have (void *) type. +The (char *) type is retained for System V compatibility.)

+ +It is valid to set the user pointer of the default field (with a +set_field_userptr() call passed a NULL field pointer.) +When a new field is created, the default-field user pointer is copied +to initialize the new field's user pointer. + +

Variable-Sized Fields

+ +Normally, a field is fixed at the size specified for it at creation +time. If, however, you turn off its O_STATIC bit, it becomes +dynamic and will automatically resize itself to accommodate +data as it is entered. If the field has extra buffers associated with it, +they will grow right along with the main input buffer.

+ +A one-line dynamic field will have a fixed height (1) but variable +width, scrolling horizontally to display data within the field area as +originally dimensioned and located. A multi-line dynamic field will +have a fixed width, but variable height (number of rows), scrolling +vertically to display data within the field area as originally +dimensioned and located.

+ +Normally, a dynamic field is allowed to grow without limit. But it is +possible to set an upper limit on the size of a dynamic field. You do +it with this function: + +

+int set_max_field(FIELD *field,     /* field to alter (may not be NULL) */
+                   int max_size);   /* upper limit on field size */
+
+ +If the field is one-line, max_size is taken to be a column size +limit; if it is multi-line, it is taken to be a line size limit. To disable +any limit, use an argument of zero. The growth limit can be changed whether +or not the O_STATIC bit is on, but has no effect until it is.

+ +The following properties of a field change when it becomes dynamic: + +

    +
  • If there is no growth limit, there is no final position of the field; +therefore O_AUTOSKIP and O_NL_OVERLOAD are ignored. +
  • Field justification will be ignored (though whatever justification is +set up will be retained internally and can be queried). +
  • The dup_field() and link_field() calls copy +dynamic-buffer sizes. If the O_STATIC option is set on one of a +collection of links, buffer resizing will occur only when the field is +edited through that link. +
  • The call field_info() will retrieve the original static size of +the field; use dynamic_field_info() to get the actual dynamic size. +
+ +

Field Validation

+ +By default, a field will accept any data that will fit in its input buffer. +However, it is possible to attach a validation type to a field. If you do +this, any attempt to leave the field while it contains data that doesn't +match the validation type will fail. Some validation types also have a +character-validity check for each time a character is entered in the field.

+ +A field's validation check (if any) is not called when +set_field_buffer() modifies the input buffer, nor when that buffer +is changed through a linked field.

+ +The form library provides a rich set of pre-defined validation +types, and gives you the capability to define custom ones of your own. You +can examine and change field validation attributes with the following +functions: + +

+int set_field_type(FIELD *field,          /* field to alter */
+                   FIELDTYPE *ftype,      /* type to associate */
+                   ...);                  /* additional arguments*/
+
+FIELDTYPE *field_type(FIELD *field);      /* field to query */
+
+ +The validation type of a field is considered an attribute of the field. As +with other field attributes, Also, doing set_field_type() with a +NULL field default will change the system default for validation of +newly-created fields.

+ +Here are the pre-defined validation types: + +

TYPE_ALPHA

+ +This field type accepts alphabetic data; no blanks, no digits, no special +characters (this is checked at character-entry time). It is set up with: + +
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ALPHA,            /* type to associate */
+                   int width);            /* maximum width of field */
+
+ +The width argument sets a minimum width of data. Typically +you'll want to set this to the field width; if it's greater than the +field width, the validation check will always fail. A minimum width +of zero makes field completion optional. + +

TYPE_ALNUM

+ +This field type accepts alphabetic data and digits; no blanks, no special +characters (this is checked at character-entry time). It is set up with: + +
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ALNUM,            /* type to associate */
+                   int width);            /* maximum width of field */
+
+ +The width argument sets a minimum width of data. As with +TYPE_ALPHA, typically you'll want to set this to the field width; if it's +greater than the field width, the validation check will always fail. A +minimum width of zero makes field completion optional. + +

TYPE_ENUM

+ +This type allows you to restrict a field's values to be among a specified +set of string values (for example, the two-letter postal codes for U.S. +states). It is set up with: + +
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ENUM,             /* type to associate */
+                   char **valuelist;      /* list of possible values */
+                   int checkcase;         /* case-sensitive? */
+                   int checkunique);      /* must specify uniquely? */
+
+ +The valuelist parameter must point at a NULL-terminated list of +valid strings. The checkcase argument, if true, makes comparison +with the string case-sensitive.

+ +When the user exits a TYPE_ENUM field, the validation procedure tries to +complete the data in the buffer to a valid entry. If a complete choice string +has been entered, it is of course valid. But it is also possible to enter a +prefix of a valid string and have it completed for you.

+ +By default, if you enter such a prefix and it matches more than one value +in the string list, the prefix will be completed to the first matching +value. But the checkunique argument, if true, requires prefix +matches to be unique in order to be valid.

+ +The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests +can be particularly useful with these fields. + +

TYPE_INTEGER

+ +This field type accepts an integer. It is set up as follows: + +
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_INTEGER,          /* type to associate */
+                   int padding,           /* # places to zero-pad to */
+                   int vmin, int vmax);   /* valid range */
+
+ +Valid characters consist of an optional leading minus and digits. +The range check is performed on exit. If the range maximum is less +than or equal to the minimum, the range is ignored.

+ +If the value passes its range check, it is padded with as many leading +zero digits as necessary to meet the padding argument.

+ +A TYPE_INTEGER value buffer can conveniently be interpreted +with the C library function atoi(3). + +

TYPE_NUMERIC

+ +This field type accepts a decimal number. It is set up as follows: + +
+int set_field_type(FIELD *field,              /* field to alter */
+                   TYPE_NUMERIC,              /* type to associate */
+                   int padding,               /* # places of precision */
+                   double vmin, double vmax); /* valid range */
+
+ +Valid characters consist of an optional leading minus and digits. possibly +including a decimal point. If your system supports locale's, the decimal point +character used must be the one defined by your locale. The range check is +performed on exit. If the range maximum is less than or equal to the minimum, +the range is ignored.

+ +If the value passes its range check, it is padded with as many trailing +zero digits as necessary to meet the padding argument.

+ +A TYPE_NUMERIC value buffer can conveniently be interpreted +with the C library function atof(3). + +

TYPE_REGEXP

+ +This field type accepts data matching a regular expression. It is set up +as follows: + +
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_REGEXP,           /* type to associate */
+                   char *regexp);         /* expression to match */
+
+ +The syntax for regular expressions is that of regcomp(3). +The check for regular-expression match is performed on exit. + +

Direct Field Buffer Manipulation

+ +The chief attribute of a field is its buffer contents. When a form has +been completed, your application usually needs to know the state of each +field buffer. You can find this out with: + +
+char *field_buffer(FIELD *field,          /* field to query */
+                   int bufindex);         /* number of buffer to query */
+
+ +Normally, the state of the zero-numbered buffer for each field is set by +the user's editing actions on that field. It's sometimes useful to be able +to set the value of the zero-numbered (or some other) buffer from your +application: + +
+int set_field_buffer(FIELD *field,        /* field to alter */
+                   int bufindex,          /* number of buffer to alter */
+                   char *value);          /* string value to set */
+
+ +If the field is not large enough and cannot be resized to a sufficiently +large size to contain the specified value, the value will be truncated +to fit.

+ +Calling field_buffer() with a null field pointer will raise an +error. Calling field_buffer() on a field not currently selected +for input will return a correct value. Calling field_buffer() on a +field that is currently selected for input may not necessarily give a +correct field buffer value, because entered data isn't necessarily copied to +buffer zero before the exit validation check. + +To guarantee that the returned buffer value reflects on-screen reality, +call field_buffer() either (1) in the field's exit validation +check routine, (2) from the field's or form's initialization or termination +hooks, or (3) just after a REQ_VALIDATION request has been processed +by the forms driver. + +

Attributes of Forms

+ +As with field attributes, form attributes inherit a default from a +system default form structure. These defaults can be queried or set by +of these functions using a form-pointer argument of NULL.

+ +The principal attribute of a form is its field list. You can query +and change this list with: + +

+int set_form_fields(FORM *form,           /* form to alter */
+                    FIELD **fields);      /* fields to connect */
+
+char *form_fields(FORM *form);            /* fetch fields of form */
+
+int field_count(FORM *form);              /* count connect fields */
+
+ +The second argument of set_form_fields() may be a +NULL-terminated field pointer array like the one required by +new_form(). In that case, the old fields of the form are +disconnected but not freed (and eligible to be connected to other +forms), then the new fields are connected.

+ +It may also be null, in which case the old fields are disconnected +(and not freed) but no new ones are connected.

+ +The field_count() function simply counts the number of fields +connected to a given from. It returns -1 if the form-pointer argument +is NULL. + +

Control of Form Display

+ +In the overview section, you saw that to display a form you normally +start by defining its size (and fields), posting it, and refreshing +the screen. There is an hidden step before posting, which is the +association of the form with a frame window (actually, a pair of +windows) within which it will be displayed. By default, the forms +library associates every form with the full-screen window +stdscr.

+ +By making this step explicit, you can associate a form with a declared +frame window on your screen display. This can be useful if you want to +adapt the form display to different screen sizes, dynamically tile +forms on the screen, or use a form as part of an interface layout +managed by panels.

+ +The two windows associated with each form have the same functions as +their analogues in the menu library. Both these +windows are painted when the form is posted and erased when the form +is unposted.

+ +The outer or frame window is not otherwise touched by the form +routines. It exists so the programmer can associate a title, a +border, or perhaps help text with the form and have it properly +refreshed or erased at post/unpost time. The inner window or subwindow +is where the current form page is actually displayed.

+ +In order to declare your own frame window for a form, you'll need to +know the size of the form's bounding rectangle. You can get this +information with: + +

+int scale_form(FORM *form,                /* form to query */
+               int *rows,                 /* form rows */
+               int *cols);                /* form cols */
+
+ +The form dimensions are passed back in the locations pointed to by +the arguments. Once you have this information, you can use it to +declare of windows, then use one of these functions: + +
+int set_form_win(FORM *form,              /* form to alter */
+                 WINDOW *win);            /* frame window to connect */
+
+WINDOW *form_win(FORM *form);             /* fetch frame window of form */
+
+int set_form_sub(FORM *form,              /* form to alter */
+                 WINDOW *win);            /* form subwindow to connect */
+
+WINDOW *form_sub(FORM *form);             /* fetch form subwindow of form */
+
+ +Note that curses operations, including refresh(), on the form, +should be done on the frame window, not the form subwindow.

+ +It is possible to check from your application whether all of a +scrollable field is actually displayed within the menu subwindow. Use +these functions: + +

+int data_ahead(FORM *form);               /* form to be queried */
+
+int data_behind(FORM *form);              /* form to be queried */
+
+ +The function data_ahead() returns TRUE if (a) the current +field is one-line and has undisplayed data off to the right, (b) the current +field is multi-line and there is data off-screen below it.

+ +The function data_behind() returns TRUE if the first (upper +left hand) character position is off-screen (not being displayed).

+ +Finally, there is a function to restore the form window's cursor to the +value expected by the forms driver: + +

+int pos_form_cursor(FORM *)               /* form to be queried */
+
+ +If your application changes the form window cursor, call this function before +handing control back to the forms driver in order to re-synchronize it. + +

Input Processing in the Forms Driver

+ +The function form_driver() handles virtualized input requests +for form navigation, editing, and validation requests, just as +menu_driver does for menus (see the section on menu input handling). + +
+int form_driver(FORM *form,               /* form to pass input to */
+                int request);             /* form request code */
+
+ +Your input virtualization function needs to take input and then convert it +to either an alphanumeric character (which is treated as data to be +entered in the currently-selected field), or a forms processing request.

+ +The forms driver provides hooks (through input-validation and +field-termination functions) with which your application code can check +that the input taken by the driver matched what was expected. + +

Page Navigation Requests

+ +These requests cause page-level moves through the form, +triggering display of a new form screen. + +
+
REQ_NEXT_PAGE +
Move to the next form page. +
REQ_PREV_PAGE +
Move to the previous form page. +
REQ_FIRST_PAGE +
Move to the first form page. +
REQ_LAST_PAGE +
Move to the last form page. +
+ +These requests treat the list as cyclic; that is, REQ_NEXT_PAGE +from the last page goes to the first, and REQ_PREV_PAGE from +the first page goes to the last. + +

Inter-Field Navigation Requests

+ +These requests handle navigation between fields on the same page. + +
+
REQ_NEXT_FIELD +
Move to next field. +
REQ_PREV_FIELD +
Move to previous field. +
REQ_FIRST_FIELD +
Move to the first field. +
REQ_LAST_FIELD +
Move to the last field. +
REQ_SNEXT_FIELD +
Move to sorted next field. +
REQ_SPREV_FIELD +
Move to sorted previous field. +
REQ_SFIRST_FIELD +
Move to the sorted first field. +
REQ_SLAST_FIELD +
Move to the sorted last field. +
REQ_LEFT_FIELD +
Move left to field. +
REQ_RIGHT_FIELD +
Move right to field. +
REQ_UP_FIELD +
Move up to field. +
REQ_DOWN_FIELD +
Move down to field. +
+ +These requests treat the list of fields on a page as cyclic; that is, +REQ_NEXT_FIELD from the last field goes to the first, and +REQ_PREV_FIELD from the first field goes to the last. The +order of the fields for these (and the REQ_FIRST_FIELD and +REQ_LAST_FIELD requests) is simply the order of the field +pointers in the form array (as set up by new_form() or +set_form_fields()

+ +It is also possible to traverse the fields as if they had been sorted in +screen-position order, so the sequence goes left-to-right and top-to-bottom. +To do this, use the second group of four sorted-movement requests.

+ +Finally, it is possible to move between fields using visual directions up, +down, right, and left. To accomplish this, use the third group of four +requests. Note, however, that the position of a form for purposes of these +requests is its upper-left corner.

+ +For example, suppose you have a multi-line field B, and two +single-line fields A and C on the same line with B, with A to the left +of B and C to the right of B. A REQ_MOVE_RIGHT from A will +go to B only if A, B, and C all share the same first line; +otherwise it will skip over B to C. + +

Intra-Field Navigation Requests

+ +These requests drive movement of the edit cursor within the currently +selected field. + +
+
REQ_NEXT_CHAR +
Move to next character. +
REQ_PREV_CHAR +
Move to previous character. +
REQ_NEXT_LINE +
Move to next line. +
REQ_PREV_LINE +
Move to previous line. +
REQ_NEXT_WORD +
Move to next word. +
REQ_PREV_WORD +
Move to previous word. +
REQ_BEG_FIELD +
Move to beginning of field. +
REQ_END_FIELD +
Move to end of field. +
REQ_BEG_LINE +
Move to beginning of line. +
REQ_END_LINE +
Move to end of line. +
REQ_LEFT_CHAR +
Move left in field. +
REQ_RIGHT_CHAR +
Move right in field. +
REQ_UP_CHAR +
Move up in field. +
REQ_DOWN_CHAR +
Move down in field. +
+ +Each word is separated from the previous and next characters +by whitespace. The commands to move to beginning and end of line or field +look for the first or last non-pad character in their ranges. + +

Scrolling Requests

+ +Fields that are dynamic and have grown and fields explicitly created +with offscreen rows are scrollable. One-line fields scroll horizontally; +multi-line fields scroll vertically. Most scrolling is triggered by +editing and intra-field movement (the library scrolls the field to keep the +cursor visible). It is possible to explicitly request scrolling with the +following requests: + +
+
REQ_SCR_FLINE +
Scroll vertically forward a line. +
REQ_SCR_BLINE +
Scroll vertically backward a line. +
REQ_SCR_FPAGE +
Scroll vertically forward a page. +
REQ_SCR_BPAGE +
Scroll vertically backward a page. +
REQ_SCR_FHPAGE +
Scroll vertically forward half a page. +
REQ_SCR_BHPAGE +
Scroll vertically backward half a page. +
REQ_SCR_FCHAR +
Scroll horizontally forward a character. +
REQ_SCR_BCHAR +
Scroll horizontally backward a character. +
REQ_SCR_HFLINE +
Scroll horizontally one field width forward. +
REQ_SCR_HBLINE +
Scroll horizontally one field width backward. +
REQ_SCR_HFHALF +
Scroll horizontally one half field width forward. +
REQ_SCR_HBHALF +
Scroll horizontally one half field width backward. +
+ +For scrolling purposes, a page of a field is the height +of its visible part. + +

Editing Requests

+ +When you pass the forms driver an ASCII character, it is treated as a +request to add the character to the field's data buffer. Whether this +is an insertion or a replacement depends on the field's edit mode +(insertion is the default.

+ +The following requests support editing the field and changing the edit +mode: + +

+
REQ_INS_MODE +
Set insertion mode. +
REQ_OVL_MODE +
Set overlay mode. +
REQ_NEW_LINE +
New line request (see below for explanation). +
REQ_INS_CHAR +
Insert space at character location. +
REQ_INS_LINE +
Insert blank line at character location. +
REQ_DEL_CHAR +
Delete character at cursor. +
REQ_DEL_PREV +
Delete previous word at cursor. +
REQ_DEL_LINE +
Delete line at cursor. +
REQ_DEL_WORD +
Delete word at cursor. +
REQ_CLR_EOL +
Clear to end of line. +
REQ_CLR_EOF +
Clear to end of field. +
REQ_CLEAR_FIELD +
Clear entire field. +
+ +The behavior of the REQ_NEW_LINE and REQ_DEL_PREV requests +is complicated and partly controlled by a pair of forms options. +The special cases are triggered when the cursor is at the beginning of +a field, or on the last line of the field.

+ +First, we consider REQ_NEW_LINE:

+ +The normal behavior of REQ_NEW_LINE in insert mode is to break the +current line at the position of the edit cursor, inserting the portion of +the current line after the cursor as a new line following the current +and moving the cursor to the beginning of that new line (you may think +of this as inserting a newline in the field buffer).

+ +The normal behavior of REQ_NEW_LINE in overlay mode is to clear the +current line from the position of the edit cursor to end of line. +The cursor is then moved to the beginning of the next line.

+ +However, REQ_NEW_LINE at the beginning of a field, or on the +last line of a field, instead does a REQ_NEXT_FIELD. +O_NL_OVERLOAD option is off, this special action is +disabled.

+ +Now, let us consider REQ_DEL_PREV:

+ +The normal behavior of REQ_DEL_PREV is to delete the previous +character. If insert mode is on, and the cursor is at the start of a +line, and the text on that line will fit on the previous one, it +instead appends the contents of the current line to the previous one +and deletes the current line (you may think of this as deleting a +newline from the field buffer).

+ +However, REQ_DEL_PREV at the beginning of a field is instead +treated as a REQ_PREV_FIELD.

If the +O_BS_OVERLOAD option is off, this special action is +disabled and the forms driver just returns E_REQUEST_DENIED.

+ +See Form Options for discussion of how to set +and clear the overload options. + +

Order Requests

+ +If the type of your field is ordered, and has associated functions +for getting the next and previous values of the type from a given value, +there are requests that can fetch that value into the field buffer: + +
+
REQ_NEXT_CHOICE +
Place the successor value of the current value in the buffer. +
REQ_PREV_CHOICE +
Place the predecessor value of the current value in the buffer. +
+ +Of the built-in field types, only TYPE_ENUM has built-in successor +and predecessor functions. When you define a field type of your own +(see Custom Validation Types), you can associate +our own ordering functions. + +

Application Commands

+ +Form requests are represented as integers above the curses value +greater than KEY_MAX and less than or equal to the constant +MAX_COMMAND. If your input-virtualization routine returns a +value above MAX_COMMAND, the forms driver will ignore it. + +

Field Change Hooks

+ +It is possible to set function hooks to be executed whenever the +current field or form changes. Here are the functions that support this: + +
+typedef void	(*HOOK)();       /* pointer to function returning void */
+
+int set_form_init(FORM *form,    /* form to alter */
+                  HOOK hook);    /* initialization hook */
+
+HOOK form_init(FORM *form);      /* form to query */
+
+int set_form_term(FORM *form,    /* form to alter */
+                  HOOK hook);    /* termination hook */
+
+HOOK form_term(FORM *form);      /* form to query */
+
+int set_field_init(FORM *form,   /* form to alter */
+                  HOOK hook);    /* initialization hook */
+
+HOOK field_init(FORM *form);     /* form to query */
+
+int set_field_term(FORM *form,   /* form to alter */
+                  HOOK hook);    /* termination hook */
+
+HOOK field_term(FORM *form);     /* form to query */
+
+ +These functions allow you to either set or query four different hooks. +In each of the set functions, the second argument should be the +address of a hook function. These functions differ only in the timing +of the hook call. + +
+
form_init +
This hook is called when the form is posted; also, just after +each page change operation. +
field_init +
This hook is called when the form is posted; also, just after +each field change +
field_term +
This hook is called just after field validation; that is, just before +the field is altered. It is also called when the form is unposted. +
form_term +
This hook is called when the form is unposted; also, just before +each page change operation. +
+ +Calls to these hooks may be triggered +
    +
  1. When user editing requests are processed by the forms driver +
  2. When the current page is changed by set_current_field() call +
  3. When the current field is changed by a set_form_page() call +
+ +See Field Change Commands for discussion of the latter +two cases.

+ +You can set a default hook for all fields by passing one of the set functions +a NULL first argument.

+ +You can disable any of these hooks by (re)setting them to NULL, the default +value. + +

Field Change Commands

+ +Normally, navigation through the form will be driven by the user's +input requests. But sometimes it is useful to be able to move the +focus for editing and viewing under control of your application, or +ask which field it currently is in. The following functions help you +accomplish this: + +
+int set_current_field(FORM *form,         /* form to alter */
+                      FIELD *field);      /* field to shift to */
+
+FIELD *current_field(FORM *form);         /* form to query */
+
+int field_index(FORM *form,               /* form to query */
+                FIELD *field);            /* field to get index of */
+
+ +The function field_index() returns the index of the given field +in the given form's field array (the array passed to new_form() or +set_form_fields()).

+ +The initial current field of a form is the first active field on the +first page. The function set_form_fields() resets this.

+ +It is also possible to move around by pages. + +

+int set_form_page(FORM *form,             /* form to alter */
+                  int page);              /* page to go to (0-origin) */
+
+int form_page(FORM *form);                /* return form's current page */
+
+ +The initial page of a newly-created form is 0. The function +set_form_fields() resets this. + +

Form Options

+ +Like fields, forms may have control option bits. They can be changed +or queried with these functions: + +
+int set_form_opts(FORM *form,             /* form to alter */
+                  int attr);              /* attribute to set */
+
+int form_opts_on(FORM *form,              /* form to alter */
+                 int attr);               /* attributes to turn on */
+
+int form_opts_off(FORM *form,             /* form to alter */
+                  int attr);              /* attributes to turn off */
+
+int form_opts(FORM *form);                /* form to query */
+
+ +By default, all options are on. Here are the available option bits: + +
+
O_NL_OVERLOAD +
Enable overloading of REQ_NEW_LINE as described in Editing Requests. The value of this option is +ignored on dynamic fields that have not reached their size limit; +these have no last line, so the circumstances for triggering a +REQ_NEXT_FIELD never arise. +
O_BS_OVERLOAD +
Enable overloading of REQ_DEL_PREV as described in +Editing Requests. +
+ +The option values are bit-masks and can be composed with logical-or in +the obvious way. + +

Custom Validation Types

+ +The form library gives you the capability to define custom +validation types of your own. Further, the optional additional arguments +of set_field_type effectively allow you to parameterize validation +types. Most of the complications in the validation-type interface have to +do with the handling of the additional arguments within custom validation +functions. + +

Union Types

+ +The simplest way to create a custom data type is to compose it from two +preexisting ones: + +
+FIELD *link_fieldtype(FIELDTYPE *type1,
+                      FIELDTYPE *type2);
+
+ +This function creates a field type that will accept any of the values +legal for either of its argument field types (which may be either +predefined or programmer-defined). + +If a set_field_type() call later requires arguments, the new +composite type expects all arguments for the first type, than all arguments +for the second. Order functions (see Order Requests) +associated with the component types will work on the composite; what it does +is check the validation function for the first type, then for the second, to +figure what type the buffer contents should be treated as. + +

New Field Types

+ +To create a field type from scratch, you need to specify one or both of the +following things: + +
    +
  • A character-validation function, to check each character as it is entered. +
  • A field-validation function to be applied on exit from the field. +
+ +Here's how you do that: +
+typedef int	(*HOOK)();       /* pointer to function returning int */
+
+FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */
+                         HOOK c_validate) /* character validator */
+
+
+int free_fieldtype(FIELDTYPE *ftype);     /* type to free */
+
+ +At least one of the arguments of new_fieldtype() must be +non-NULL. The forms driver will automatically call the new type's +validation functions at appropriate points in processing a field of +the new type.

+ +The function free_fieldtype() deallocates the argument +fieldtype, freeing all storage associated with it.

+ +Normally, a field validator is called when the user attempts to +leave the field. Its first argument is a field pointer, from which it +can get to field buffer 0 and test it. If the function returns TRUE, +the operation succeeds; if it returns FALSE, the edit cursor stays in +the field.

+ +A character validator gets the character passed in as a first argument. +It too should return TRUE if the character is valid, FALSE otherwise. + +

Validation Function Arguments

+ +Your field- and character- validation functions will be passed a +second argument as well. This second argument is the address of a +structure (which we'll call a pile) built from any of the +field-type-specific arguments passed to set_field_type(). If +no such arguments are defined for the field type, this pile pointer +argument will be NULL.

+ +In order to arrange for such arguments to be passed to your validation +functions, you must associate a small set of storage-management functions +with the type. The forms driver will use these to synthesize a pile +from the trailing arguments of each set_field_type() argument, and +a pointer to the pile will be passed to the validation functions.

+ +Here is how you make the association: + +

+typedef char	*(*PTRHOOK)();    /* pointer to function returning (char *) */
+typedef void	(*VOIDHOOK)();    /* pointer to function returning void */
+
+int set_fieldtype_arg(FIELDTYPE *type,    /* type to alter */
+                      PTRHOOK make_str,   /* make structure from args */
+                      PTRHOOK copy_str,   /* make copy of structure */
+                      VOIDHOOK free_str); /* free structure storage */
+
+ +Here is how the storage-management hooks are used: + +
+
make_str +
This function is called by set_field_type(). It gets one +argument, a va_list of the type-specific arguments passed to +set_field_type(). It is expected to return a pile pointer to a data +structure that encapsulates those arguments. +
copy_str +
This function is called by form library functions that allocate new +field instances. It is expected to take a pile pointer, copy the pile +to allocated storage, and return the address of the pile copy. +
free_str +
This function is called by field- and type-deallocation routines in the +library. It takes a pile pointer argument, and is expected to free the +storage of that pile. +
+ +The make_str and copy_str functions may return NULL to +signal allocation failure. The library routines will that call them will +return error indication when this happens. Thus, your validation functions +should never see a NULL file pointer and need not check specially for it. + +

Order Functions For Custom Types

+ +Some custom field types are simply ordered in the same well-defined way +that TYPE_ENUM is. For such types, it is possible to define +successor and predecessor functions to support the REQ_NEXT_CHOICE +and REQ_PREV_CHOICE requests. Here's how: + +
+typedef int	(*INTHOOK)();     /* pointer to function returning int */
+
+int set_fieldtype_arg(FIELDTYPE *type,    /* type to alter */
+                      INTHOOK succ,       /* get successor value */
+                      INTHOOK pred);      /* get predecessor value */
+
+ +The successor and predecessor arguments will each be passed two arguments; +a field pointer, and a pile pointer (as for the validation functions). They +are expected to use the function field_buffer() to read the +current value, and set_field_buffer() on buffer 0 to set the next +or previous value. Either hook may return TRUE to indicate success (a +legal next or previous value was set) or FALSE to indicate failure. + +

Avoiding Problems

+ +The interface for defining custom types is complicated and tricky. +Rather than attempting to create a custom type entirely from scratch, +you should start by studying the library source code for whichever of +the pre-defined types seems to be closest to what you want.

+ +Use that code as a model, and evolve it towards what you really want. +You will avoid many problems and annoyances that way. The code +in the ncurses library has been specifically exempted from +the package copyright to support this.

+ +If your custom type defines order functions, have do something intuitive +with a blank field. A useful convention is to make the successor of a +blank field the types minimum value, and its predecessor the maximum. + + diff --git a/ncurses/doc/ncurses-intro.doc b/ncurses/doc/ncurses-intro.doc new file mode 100644 index 0000000..85179d1 --- /dev/null +++ b/ncurses/doc/ncurses-intro.doc @@ -0,0 +1,2501 @@ + Writing Programs with NCURSES + + by Eric S. Raymond and Zeyd M. Ben-Halim + updates since release 1.9.9e by Thomas Dickey + + Contents + + * Introduction + + A Brief History of Curses + + Scope of This Document + + Terminology + * The Curses Library + + An Overview of Curses + o Compiling Programs using Curses + o Updating the Screen + o Standard Windows and Function Naming Conventions + o Variables + + Using the Library + o Starting up + o Output + o Input + o Using Forms Characters + o Character Attributes and Color + o Mouse Interfacing + o Finishing Up + + Function Descriptions + o Initialization and Wrapup + o Causing Output to the Terminal + o Low-Level Capability Access + o Debugging + + Hints, Tips, and Tricks + o Some Notes of Caution + o Temporarily Leaving ncurses Mode + o Using ncurses under xterm + o Handling Multiple Terminal Screens + o Testing for Terminal Capabilities + o Tuning for Speed + o Special Features of ncurses + + Compatibility with Older Versions + o Refresh of Overlapping Windows + o Background Erase + + XSI Curses Conformance + * The Panels Library + + Compiling With the Panels Library + + Overview of Panels + + Panels, Input, and the Standard Screen + + Hiding Panels + + Miscellaneous Other Facilities + * The Menu Library + + Compiling with the menu Library + + Overview of Menus + + Selecting items + + Menu Display + + Menu Windows + + Processing Menu Input + + Miscellaneous Other Features + * The Forms Library + + Compiling with the forms Library + + Overview of Forms + + Creating and Freeing Fields and Forms + + Fetching and Changing Field Attributes + o Fetching Size and Location Data + o Changing the Field Location + o The Justification Attribute + o Field Display Attributes + o Field Option Bits + o Field Status + o Field User Pointer + + Variable-Sized Fields + + Field Validation + o TYPE_ALPHA + o TYPE_ALNUM + o TYPE_ENUM + o TYPE_INTEGER + o TYPE_NUMERIC + o TYPE_REGEXP + + Direct Field Buffer Manipulation + + Attributes of Forms + + Control of Form Display + + Input Processing in the Forms Driver + o Page Navigation Requests + o Inter-Field Navigation Requests + o Intra-Field Navigation Requests + o Scrolling Requests + o Field Editing Requests + o Order Requests + o Application Commands + + Field Change Hooks + + Field Change Commands + + Form Options + + Custom Validation Types + o Union Types + o New Field Types + o Validation Function Arguments + o Order Functions For Custom Types + o Avoiding Problems + _________________________________________________________________ + + Introduction + + This document is an introduction to programming with curses. It is not + an exhaustive reference for the curses Application Programming + Interface (API); that role is filled by the curses manual pages. + Rather, it is intended to help C programmers ease into using the + package. + + This document is aimed at C applications programmers not yet + specifically familiar with ncurses. If you are already an experienced + curses programmer, you should nevertheless read the sections on Mouse + Interfacing, Debugging, Compatibility with Older Versions, and Hints, + Tips, and Tricks. These will bring you up to speed on the special + features and quirks of the ncurses implementation. If you are not so + experienced, keep reading. + + The curses package is a subroutine library for terminal-independent + screen-painting and input-event handling which presents a high level + screen model to the programmer, hiding differences between terminal + types and doing automatic optimization of output to change one screen + full of text into another. Curses uses terminfo, which is a database + format that can describe the capabilities of thousands of different + terminals. + + The curses API may seem something of an archaism on UNIX desktops + increasingly dominated by X, Motif, and Tcl/Tk. Nevertheless, UNIX + still supports tty lines and X supports xterm(1); the curses API has + the advantage of (a) back-portability to character-cell terminals, and + (b) simplicity. For an application that does not require bit-mapped + graphics and multiple fonts, an interface implementation using curses + will typically be a great deal simpler and less expensive than one + using an X toolkit. + +A Brief History of Curses + + Historically, the first ancestor of curses was the routines written to + provide screen-handling for the game rogue; these used the + already-existing termcap database facility for describing terminal + capabilities. These routines were abstracted into a documented library + and first released with the early BSD UNIX versions. + + System III UNIX from Bell Labs featured a rewritten and much-improved + curses library. It introduced the terminfo format. Terminfo is based + on Berkeley's termcap database, but contains a number of improvements + and extensions. Parameterized capabilities strings were introduced, + making it possible to describe multiple video attributes, and colors + and to handle far more unusual terminals than possible with termcap. + In the later AT&T System V releases, curses evolved to use more + facilities and offer more capabilities, going far beyond BSD curses in + power and flexibility. + +Scope of This Document + + This document describes ncurses, a free implementation of the System V + curses API with some clearly marked extensions. It includes the + following System V curses features: + * Support for multiple screen highlights (BSD curses could only + handle one `standout' highlight, usually reverse-video). + * Support for line- and box-drawing using forms characters. + * Recognition of function keys on input. + * Color support. + * Support for pads (windows of larger than screen size on which the + screen or a subwindow defines a viewport). + + Also, this package makes use of the insert and delete line and + character features of terminals so equipped, and determines how to + optimally use these features with no help from the programmer. It + allows arbitrary combinations of video attributes to be displayed, + even on terminals that leave ``magic cookies'' on the screen to mark + changes in attributes. + + The ncurses package can also capture and use event reports from a + mouse in some environments (notably, xterm under the X window system). + This document includes tips for using the mouse. + + The ncurses package was originated by Pavel Curtis. The original + maintainer of this package is Zeyd Ben-Halim . + Eric S. Raymond wrote many of the new features + in versions after 1.8.1 and wrote most of this introduction. Juergen + Pfeifer wrote all of the menu and forms code as well as the Ada95 + binding. Ongoing work is being done by Thomas Dickey (maintainer). + Contact the current maintainers at bug-ncurses@gnu.org. + + This document also describes the panels extension library, similarly + modeled on the SVr4 panels facility. This library allows you to + associate backing store with each of a stack or deck of overlapping + windows, and provides operations for moving windows around in the + stack that change their visibility in the natural way (handling window + overlaps). + + Finally, this document describes in detail the menus and forms + extension libraries, also cloned from System V, which support easy + construction and sequences of menus and fill-in forms. + +Terminology + + In this document, the following terminology is used with reasonable + consistency: + + window + A data structure describing a sub-rectangle of the screen + (possibly the entire screen). You can write to a window as + though it were a miniature screen, scrolling independently of + other windows on the physical screen. + + screens + A subset of windows which are as large as the terminal screen, + i.e., they start at the upper left hand corner and encompass + the lower right hand corner. One of these, stdscr, is + automatically provided for the programmer. + + terminal screen + The package's idea of what the terminal display currently looks + like, i.e., what the user sees now. This is a special screen. + + The Curses Library + +An Overview of Curses + + Compiling Programs using Curses + + In order to use the library, it is necessary to have certain types and + variables defined. Therefore, the programmer must have a line: + #include + + at the top of the program source. The screen package uses the Standard + I/O library, so includes . also + includes , , or depending on your + system. It is redundant (but harmless) for the programmer to do these + includes, too. In linking with curses you need to have -lncurses in + your LDFLAGS or on the command line. There is no need for any other + libraries. + + Updating the Screen + + In order to update the screen optimally, it is necessary for the + routines to know what the screen currently looks like and what the + programmer wants it to look like next. For this purpose, a data type + (structure) named WINDOW is defined which describes a window image to + the routines, including its starting position on the screen (the (y, + x) coordinates of the upper left hand corner) and its size. One of + these (called curscr, for current screen) is a screen image of what + the terminal currently looks like. Another screen (called stdscr, for + standard screen) is provided by default to make changes on. + + A window is a purely internal representation. It is used to build and + store a potential image of a portion of the terminal. It doesn't bear + any necessary relation to what is really on the terminal screen; it's + more like a scratchpad or write buffer. + + To make the section of physical screen corresponding to a window + reflect the contents of the window structure, the routine refresh() + (or wrefresh() if the window is not stdscr) is called. + + A given physical screen section may be within the scope of any number + of overlapping windows. Also, changes can be made to windows in any + order, without regard to motion efficiency. Then, at will, the + programmer can effectively say ``make it look like this,'' and let the + package implementation determine the most efficient way to repaint the + screen. + + Standard Windows and Function Naming Conventions + + As hinted above, the routines can use several windows, but two are + automatically given: curscr, which knows what the terminal looks like, + and stdscr, which is what the programmer wants the terminal to look + like next. The user should never actually access curscr directly. + Changes should be made to through the API, and then the routine + refresh() (or wrefresh()) called. + + Many functions are defined to use stdscr as a default screen. For + example, to add a character to stdscr, one calls addch() with the + desired character as argument. To write to a different window. use the + routine waddch() (for `w'indow-specific addch()) is provided. This + convention of prepending function names with a `w' when they are to be + applied to specific windows is consistent. The only routines which do + not follow it are those for which a window must always be specified. + + In order to move the current (y, x) coordinates from one point to + another, the routines move() and wmove() are provided. However, it is + often desirable to first move and then perform some I/O operation. In + order to avoid clumsiness, most I/O routines can be preceded by the + prefix 'mv' and the desired (y, x) coordinates prepended to the + arguments to the function. For example, the calls + move(y, x); + addch(ch); + + can be replaced by + mvaddch(y, x, ch); + + and + wmove(win, y, x); + waddch(win, ch); + + can be replaced by + mvwaddch(win, y, x, ch); + + Note that the window description pointer (win) comes before the added + (y, x) coordinates. If a function requires a window pointer, it is + always the first parameter passed. + + Variables + + The curses library sets some variables describing the terminal + capabilities. + type name description + ------------------------------------------------------------------ + int LINES number of lines on the terminal + int COLS number of columns on the terminal + + The curses.h also introduces some #define constants and types of + general usefulness: + + bool + boolean type, actually a `char' (e.g., bool doneit;) + + TRUE + boolean `true' flag (1). + + FALSE + boolean `false' flag (0). + + ERR + error flag returned by routines on a failure (-1). + + OK + error flag returned by routines when things go right. + +Using the Library + + Now we describe how to actually use the screen package. In it, we + assume all updating, reading, etc. is applied to stdscr. These + instructions will work on any window, providing you change the + function names and parameters as mentioned above. + + Here is a sample program to motivate the discussion: +#include +#include + +static void finish(int sig); + +int +main(int argc, char *argv[]) +{ + int num = 0; + + /* initialize your non-curses data structures here */ + + (void) signal(SIGINT, finish); /* arrange interrupts to terminate */ + + (void) initscr(); /* initialize the curses library */ + keypad(stdscr, TRUE); /* enable keyboard mapping */ + (void) nonl(); /* tell curses not to do NL->CR/NL on output */ + (void) cbreak(); /* take input chars one at a time, no wait for \n */ + (void) echo(); /* echo input - in color */ + + if (has_colors()) + { + start_color(); + + /* + * Simple color assignment, often all we need. Color pair 0 cannot + * be redefined. This example uses the same value for the color + * pair as for the foreground color, though of course that is not + * necessary: + */ + init_pair(1, COLOR_RED, COLOR_BLACK); + init_pair(2, COLOR_GREEN, COLOR_BLACK); + init_pair(3, COLOR_YELLOW, COLOR_BLACK); + init_pair(4, COLOR_BLUE, COLOR_BLACK); + init_pair(5, COLOR_CYAN, COLOR_BLACK); + init_pair(6, COLOR_MAGENTA, COLOR_BLACK); + init_pair(7, COLOR_WHITE, COLOR_BLACK); + } + + for (;;) + { + int c = getch(); /* refresh, accept single keystroke of input */ + attrset(COLOR_PAIR(num % 8)); + num++; + + /* process the command keystroke */ + } + + finish(0); /* we're done */ +} + +static void finish(int sig) +{ + endwin(); + + /* do your non-curses wrapup here */ + + exit(0); +} + + Starting up + + In order to use the screen package, the routines must know about + terminal characteristics, and the space for curscr and stdscr must be + allocated. These function initscr() does both these things. Since it + must allocate space for the windows, it can overflow memory when + attempting to do so. On the rare occasions this happens, initscr() + will terminate the program with an error message. initscr() must + always be called before any of the routines which affect windows are + used. If it is not, the program will core dump as soon as either + curscr or stdscr are referenced. However, it is usually best to wait + to call it until after you are sure you will need it, like after + checking for startup errors. Terminal status changing routines like + nl() and cbreak() should be called after initscr(). + + Once the screen windows have been allocated, you can set them up for + your program. If you want to, say, allow a screen to scroll, use + scrollok(). If you want the cursor to be left in place after the last + change, use leaveok(). If this isn't done, refresh() will move the + cursor to the window's current (y, x) coordinates after updating it. + + You can create new windows of your own using the functions newwin(), + derwin(), and subwin(). The routine delwin() will allow you to get rid + of old windows. All the options described above can be applied to any + window. + + Output + + Now that we have set things up, we will want to actually update the + terminal. The basic functions used to change what will go on a window + are addch() and move(). addch() adds a character at the current (y, x) + coordinates. move() changes the current (y, x) coordinates to whatever + you want them to be. It returns ERR if you try to move off the window. + As mentioned above, you can combine the two into mvaddch() to do both + things at once. + + The other output functions, such as addstr() and printw(), all call + addch() to add characters to the window. + + After you have put on the window what you want there, when you want + the portion of the terminal covered by the window to be made to look + like it, you must call refresh(). In order to optimize finding + changes, refresh() assumes that any part of the window not changed + since the last refresh() of that window has not been changed on the + terminal, i.e., that you have not refreshed a portion of the terminal + with an overlapping window. If this is not the case, the routine + touchwin() is provided to make it look like the entire window has been + changed, thus making refresh() check the whole subsection of the + terminal for changes. + + If you call wrefresh() with curscr as its argument, it will make the + screen look like curscr thinks it looks like. This is useful for + implementing a command which would redraw the screen in case it get + messed up. + + Input + + The complementary function to addch() is getch() which, if echo is + set, will call addch() to echo the character. Since the screen package + needs to know what is on the terminal at all times, if characters are + to be echoed, the tty must be in raw or cbreak mode. Since initially + the terminal has echoing enabled and is in ordinary ``cooked'' mode, + one or the other has to changed before calling getch(); otherwise, the + program's output will be unpredictable. + + When you need to accept line-oriented input in a window, the functions + wgetstr() and friends are available. There is even a wscanw() function + that can do scanf()(3)-style multi-field parsing on window input. + These pseudo-line-oriented functions turn on echoing while they + execute. + + The example code above uses the call keypad(stdscr, TRUE) to enable + support for function-key mapping. With this feature, the getch() code + watches the input stream for character sequences that correspond to + arrow and function keys. These sequences are returned as + pseudo-character values. The #define values returned are listed in the + curses.h The mapping from sequences to #define values is determined by + key_ capabilities in the terminal's terminfo entry. + + Using Forms Characters + + The addch() function (and some others, including box() and border()) + can accept some pseudo-character arguments which are specially defined + by ncurses. These are #define values set up in the curses.h header; + see there for a complete list (look for the prefix ACS_). + + The most useful of the ACS defines are the forms-drawing characters. + You can use these to draw boxes and simple graphs on the screen. If + the terminal does not have such characters, curses.h will map them to + a recognizable (though ugly) set of ASCII defaults. + + Character Attributes and Color + + The ncurses package supports screen highlights including standout, + reverse-video, underline, and blink. It also supports color, which is + treated as another kind of highlight. + + Highlights are encoded, internally, as high bits of the + pseudo-character type (chtype) that curses.h uses to represent the + contents of a screen cell. See the curses.h header file for a complete + list of highlight mask values (look for the prefix A_). + + There are two ways to make highlights. One is to logical-or the value + of the highlights you want into the character argument of an addch() + call, or any other output call that takes a chtype argument. + + The other is to set the current-highlight value. This is logical-or'ed + with any highlight you specify the first way. You do this with the + functions attron(), attroff(), and attrset(); see the manual pages for + details. Color is a special kind of highlight. The package actually + thinks in terms of color pairs, combinations of foreground and + background colors. The sample code above sets up eight color pairs, + all of the guaranteed-available colors on black. Note that each color + pair is, in effect, given the name of its foreground color. Any other + range of eight non-conflicting values could have been used as the + first arguments of the init_pair() values. + + Once you've done an init_pair() that creates color-pair N, you can use + COLOR_PAIR(N) as a highlight that invokes that particular color + combination. Note that COLOR_PAIR(N), for constant N, is itself a + compile-time constant and can be used in initializers. + + Mouse Interfacing + + The ncurses library also provides a mouse interface. + + NOTE: this facility is specific to ncurses, it is not part of + either the XSI Curses standard, nor of System V Release 4, nor BSD + curses. System V Release 4 curses contains code with similar + interface definitions, however it is not documented. Other than by + disassembling the library, we have no way to determine exactly how + that mouse code works. Thus, we recommend that you wrap + mouse-related code in an #ifdef using the feature macro + NCURSES_MOUSE_VERSION so it will not be compiled and linked on + non-ncurses systems. + + Presently, mouse event reporting works in the following environments: + * xterm and similar programs such as rxvt. + * Linux console, when configured with gpm(1), Alessandro Rubini's + mouse server. + * FreeBSD sysmouse (console) + * OS/2 EMX + + The mouse interface is very simple. To activate it, you use the + function mousemask(), passing it as first argument a bit-mask that + specifies what kinds of events you want your program to be able to + see. It will return the bit-mask of events that actually become + visible, which may differ from the argument if the mouse device is not + capable of reporting some of the event types you specify. + + Once the mouse is active, your application's command loop should watch + for a return value of KEY_MOUSE from wgetch(). When you see this, a + mouse event report has been queued. To pick it off the queue, use the + function getmouse() (you must do this before the next wgetch(), + otherwise another mouse event might come in and make the first one + inaccessible). + + Each call to getmouse() fills a structure (the address of which you'll + pass it) with mouse event data. The event data includes zero-origin, + screen-relative character-cell coordinates of the mouse pointer. It + also includes an event mask. Bits in this mask will be set, + corresponding to the event type being reported. + + The mouse structure contains two additional fields which may be + significant in the future as ncurses interfaces to new kinds of + pointing device. In addition to x and y coordinates, there is a slot + for a z coordinate; this might be useful with touch-screens that can + return a pressure or duration parameter. There is also a device ID + field, which could be used to distinguish between multiple pointing + devices. + + The class of visible events may be changed at any time via + mousemask(). Events that can be reported include presses, releases, + single-, double- and triple-clicks (you can set the maximum + button-down time for clicks). If you don't make clicks visible, they + will be reported as press-release pairs. In some environments, the + event mask may include bits reporting the state of shift, alt, and + ctrl keys on the keyboard during the event. + + A function to check whether a mouse event fell within a given window + is also supplied. You can use this to see whether a given window + should consider a mouse event relevant to it. + + Because mouse event reporting will not be available in all + environments, it would be unwise to build ncurses applications that + require the use of a mouse. Rather, you should use the mouse as a + shortcut for point-and-shoot commands your application would normally + accept from the keyboard. Two of the test games in the ncurses + distribution (bs and knight) contain code that illustrates how this + can be done. + + See the manual page curs_mouse(3X) for full details of the + mouse-interface functions. + + Finishing Up + + In order to clean up after the ncurses routines, the routine endwin() + is provided. It restores tty modes to what they were when initscr() + was first called, and moves the cursor down to the lower-left corner. + Thus, anytime after the call to initscr, endwin() should be called + before exiting. + +Function Descriptions + + We describe the detailed behavior of some important curses functions + here, as a supplement to the manual page descriptions. + + Initialization and Wrapup + + initscr() + The first function called should almost always be initscr(). + This will determine the terminal type and initialize curses + data structures. initscr() also arranges that the first call to + refresh() will clear the screen. If an error occurs a message + is written to standard error and the program exits. Otherwise + it returns a pointer to stdscr. A few functions may be called + before initscr (slk_init(), filter(), ripoffline(), use_env(), + and, if you are using multiple terminals, newterm().) + + endwin() + Your program should always call endwin() before exiting or + shelling out of the program. This function will restore tty + modes, move the cursor to the lower left corner of the screen, + reset the terminal into the proper non-visual mode. Calling + refresh() or doupdate() after a temporary escape from the + program will restore the ncurses screen from before the escape. + + newterm(type, ofp, ifp) + A program which outputs to more than one terminal should use + newterm() instead of initscr(). newterm() should be called once + for each terminal. It returns a variable of type SCREEN * which + should be saved as a reference to that terminal. (NOTE: a + SCREEN variable is not a screen in the sense we are describing + in this introduction, but a collection of parameters used to + assist in optimizing the display.) The arguments are the type + of the terminal (a string) and FILE pointers for the output and + input of the terminal. If type is NULL then the environment + variable $TERM is used. endwin() should called once at wrapup + time for each terminal opened using this function. + + set_term(new) + This function is used to switch to a different terminal + previously opened by newterm(). The screen reference for the + new terminal is passed as the parameter. The previous terminal + is returned by the function. All other calls affect only the + current terminal. + + delscreen(sp) + The inverse of newterm(); deallocates the data structures + associated with a given SCREEN reference. + + Causing Output to the Terminal + + refresh() and wrefresh(win) + These functions must be called to actually get any output on + the terminal, as other routines merely manipulate data + structures. wrefresh() copies the named window to the physical + terminal screen, taking into account what is already there in + order to do optimizations. refresh() does a refresh of stdscr. + Unless leaveok() has been enabled, the physical cursor of the + terminal is left at the location of the window's cursor. + + doupdate() and wnoutrefresh(win) + These two functions allow multiple updates with more efficiency + than wrefresh. To use them, it is important to understand how + curses works. In addition to all the window structures, curses + keeps two data structures representing the terminal screen: a + physical screen, describing what is actually on the screen, and + a virtual screen, describing what the programmer wants to have + on the screen. wrefresh works by first copying the named window + to the virtual screen (wnoutrefresh()), and then calling the + routine to update the screen (doupdate()). If the programmer + wishes to output several windows at once, a series of calls to + wrefresh will result in alternating calls to wnoutrefresh() and + doupdate(), causing several bursts of output to the screen. By + calling wnoutrefresh() for each window, it is then possible to + call doupdate() once, resulting in only one burst of output, + with fewer total characters transmitted (this also avoids a + visually annoying flicker at each update). + + Low-Level Capability Access + + setupterm(term, filenum, errret) + This routine is called to initialize a terminal's description, + without setting up the curses screen structures or changing the + tty-driver mode bits. term is the character string representing + the name of the terminal being used. filenum is the UNIX file + descriptor of the terminal to be used for output. errret is a + pointer to an integer, in which a success or failure indication + is returned. The values returned can be 1 (all is well), 0 (no + such terminal), or -1 (some problem locating the terminfo + database). + + The value of term can be given as NULL, which will cause the + value of TERM in the environment to be used. The errret pointer + can also be given as NULL, meaning no error code is wanted. If + errret is defaulted, and something goes wrong, setupterm() will + print an appropriate error message and exit, rather than + returning. Thus, a simple program can call setupterm(0, 1, 0) + and not worry about initialization errors. + + After the call to setupterm(), the global variable cur_term is + set to point to the current structure of terminal capabilities. + By calling setupterm() for each terminal, and saving and + restoring cur_term, it is possible for a program to use two or + more terminals at once. Setupterm() also stores the names + section of the terminal description in the global character + array ttytype[]. Subsequent calls to setupterm() will overwrite + this array, so you'll have to save it yourself if need be. + + Debugging + + NOTE: These functions are not part of the standard curses API! + + trace() + This function can be used to explicitly set a trace level. If + the trace level is nonzero, execution of your program will + generate a file called `trace' in the current working directory + containing a report on the library's actions. Higher trace + levels enable more detailed (and verbose) reporting -- see + comments attached to TRACE_ defines in the curses.h file for + details. (It is also possible to set a trace level by assigning + a trace level value to the environment variable NCURSES_TRACE). + + _tracef() + This function can be used to output your own debugging + information. It is only available only if you link with + -lncurses_g. It can be used the same way as printf(), only it + outputs a newline after the end of arguments. The output goes + to a file called trace in the current directory. + + Trace logs can be difficult to interpret due to the sheer volume of + data dumped in them. There is a script called tracemunch included with + the ncurses distribution that can alleviate this problem somewhat; it + compacts long sequences of similar operations into more succinct + single-line pseudo-operations. These pseudo-ops can be distinguished + by the fact that they are named in capital letters. + +Hints, Tips, and Tricks + + The ncurses manual pages are a complete reference for this library. In + the remainder of this document, we discuss various useful methods that + may not be obvious from the manual page descriptions. + + Some Notes of Caution + + If you find yourself thinking you need to use noraw() or nocbreak(), + think again and move carefully. It's probably better design to use + getstr() or one of its relatives to simulate cooked mode. The noraw() + and nocbreak() functions try to restore cooked mode, but they may end + up clobbering some control bits set before you started your + application. Also, they have always been poorly documented, and are + likely to hurt your application's usability with other curses + libraries. + + Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't + try to mix use of stdscr with use of windows declared by newwin(); a + refresh() call will blow them off the screen. The right way to handle + this is to use subwin(), or not touch stdscr at all and tile your + screen with declared windows which you then wnoutrefresh() somewhere + in your program event loop, with a single doupdate() call to trigger + actual repainting. + + You are much less likely to run into problems if you design your + screen layouts to use tiled rather than overlapping windows. + Historically, curses support for overlapping windows has been weak, + fragile, and poorly documented. The ncurses library is not yet an + exception to this rule. + + There is a panels library included in the ncurses distribution that + does a pretty good job of strengthening the overlapping-windows + facilities. + + Try to avoid using the global variables LINES and COLS. Use getmaxyx() + on the stdscr context instead. Reason: your code may be ported to run + in an environment with window resizes, in which case several screens + could be open with different sizes. + + Temporarily Leaving NCURSES Mode + + Sometimes you will want to write a program that spends most of its + time in screen mode, but occasionally returns to ordinary `cooked' + mode. A common reason for this is to support shell-out. This behavior + is simple to arrange in ncurses. + + To leave ncurses mode, call endwin() as you would if you were + intending to terminate the program. This will take the screen back to + cooked mode; you can do your shell-out. When you want to return to + ncurses mode, simply call refresh() or doupdate(). This will repaint + the screen. + + There is a boolean function, isendwin(), which code can use to test + whether ncurses screen mode is active. It returns TRUE in the interval + between an endwin() call and the following refresh(), FALSE otherwise. + + Here is some sample code for shellout: + addstr("Shelling out..."); + def_prog_mode(); /* save current tty modes */ + endwin(); /* restore original tty modes */ + system("sh"); /* run shell */ + addstr("returned.\n"); /* prepare return message */ + refresh(); /* restore save modes, repaint screen */ + + Using NCURSES under XTERM + + A resize operation in X sends SIGWINCH to the application running + under xterm. The easiest way to handle SIGWINCH is to do an endwin, + followed by an refresh and a screen repaint you code yourself. The + refresh will pick up the new screen size from the xterm's environment. + + That is the standard way, of course (it even works with some vendor's + curses implementations). Its drawback is that it clears the screen to + reinitialize the display, and does not resize subwindows which must be + shrunk. Ncurses provides an extension which works better, the + resizeterm function. That function ensures that all windows are + limited to the new screen dimensions, and pads stdscr with blanks if + the screen is larger. + + The ncurses library provides a SIGWINCH signal handler, which pushes a + KEY_RESIZE via the wgetch() calls. When ncurses returns that code, it + calls resizeterm to update the size of the standard screen's window, + repainting that (filling with blanks or truncating as needed). It also + resizes other windows, but its effect may be less satisfactory because + it cannot know how you want the screen re-painted. You will usually + have to write special-purpose code to handle KEY_RESIZE yourself. + + Handling Multiple Terminal Screens + + The initscr() function actually calls a function named newterm() to do + most of its work. If you are writing a program that opens multiple + terminals, use newterm() directly. + + For each call, you will have to specify a terminal type and a pair of + file pointers; each call will return a screen reference, and stdscr + will be set to the last one allocated. You will switch between screens + with the set_term call. Note that you will also have to call + def_shell_mode and def_prog_mode on each tty yourself. + + Testing for Terminal Capabilities + + Sometimes you may want to write programs that test for the presence of + various capabilities before deciding whether to go into ncurses mode. + An easy way to do this is to call setupterm(), then use the functions + tigetflag(), tigetnum(), and tigetstr() to do your testing. + + A particularly useful case of this often comes up when you want to + test whether a given terminal type should be treated as `smart' + (cursor-addressable) or `stupid'. The right way to test this is to see + if the return value of tigetstr("cup") is non-NULL. Alternatively, you + can include the term.h file and test the value of the macro + cursor_address. + + Tuning for Speed + + Use the addchstr() family of functions for fast screen-painting of + text when you know the text doesn't contain any control characters. + Try to make attribute changes infrequent on your screens. Don't use + the immedok() option! + + Special Features of NCURSES + + The wresize() function allows you to resize a window in place. The + associated resizeterm() function simplifies the construction of + SIGWINCH handlers, for resizing all windows. + + The define_key() function allows you to define at runtime function-key + control sequences which are not in the terminal description. The + keyok() function allows you to temporarily enable or disable + interpretation of any function-key control sequence. + + The use_default_colors() function allows you to construct applications + which can use the terminal's default foreground and background colors + as an additional "default" color. Several terminal emulators support + this feature, which is based on ISO 6429. + + Ncurses supports up 16 colors, unlike SVr4 curses which defines only + 8. While most terminals which provide color allow only 8 colors, about + a quarter (including XFree86 xterm) support 16 colors. + +Compatibility with Older Versions + + Despite our best efforts, there are some differences between ncurses + and the (undocumented!) behavior of older curses implementations. + These arise from ambiguities or omissions in the documentation of the + API. + + Refresh of Overlapping Windows + + If you define two windows A and B that overlap, and then alternately + scribble on and refresh them, the changes made to the overlapping + region under historic curses versions were often not documented + precisely. + + To understand why this is a problem, remember that screen updates are + calculated between two representations of the entire display. The + documentation says that when you refresh a window, it is first copied + to the virtual screen, and then changes are calculated to update the + physical screen (and applied to the terminal). But "copied to" is not + very specific, and subtle differences in how copying works can produce + different behaviors in the case where two overlapping windows are each + being refreshed at unpredictable intervals. + + What happens to the overlapping region depends on what wnoutrefresh() + does with its argument -- what portions of the argument window it + copies to the virtual screen. Some implementations do "change copy", + copying down only locations in the window that have changed (or been + marked changed with wtouchln() and friends). Some implementations do + "entire copy", copying all window locations to the virtual screen + whether or not they have changed. + + The ncurses library itself has not always been consistent on this + score. Due to a bug, versions 1.8.7 to 1.9.8a did entire copy. + Versions 1.8.6 and older, and versions 1.9.9 and newer, do change + copy. + + For most commercial curses implementations, it is not documented and + not known for sure (at least not to the ncurses maintainers) whether + they do change copy or entire copy. We know that System V release 3 + curses has logic in it that looks like an attempt to do change copy, + but the surrounding logic and data representations are sufficiently + complex, and our knowledge sufficiently indirect, that it's hard to + know whether this is reliable. It is not clear what the SVr4 + documentation and XSI standard intend. The XSI Curses standard barely + mentions wnoutrefresh(); the SVr4 documents seem to be describing + entire-copy, but it is possible with some effort and straining to read + them the other way. + + It might therefore be unwise to rely on either behavior in programs + that might have to be linked with other curses implementations. + Instead, you can do an explicit touchwin() before the wnoutrefresh() + call to guarantee an entire-contents copy anywhere. + + The really clean way to handle this is to use the panels library. If, + when you want a screen update, you do update_panels(), it will do all + the necessary wnoutrefresh() calls for whatever panel stacking order + you have defined. Then you can do one doupdate() and there will be a + single burst of physical I/O that will do all your updates. + + Background Erase + + If you have been using a very old versions of ncurses (1.8.7 or older) + you may be surprised by the behavior of the erase functions. In older + versions, erased areas of a window were filled with a blank modified + by the window's current attribute (as set by wattrset(), wattron(), + wattroff() and friends). + + In newer versions, this is not so. Instead, the attribute of erased + blanks is normal unless and until it is modified by the functions + bkgdset() or wbkgdset(). + + This change in behavior conforms ncurses to System V Release 4 and the + XSI Curses standard. + +XSI Curses Conformance + + The ncurses library is intended to be base-level conformant with the + XSI Curses standard from X/Open. Many extended-level features (in + fact, almost all features not directly concerned with wide characters + and internationalization) are also supported. + + One effect of XSI conformance is the change in behavior described + under "Background Erase -- Compatibility with Old Versions". + + Also, ncurses meets the XSI requirement that every macro entry point + have a corresponding function which may be linked (and will be + prototype-checked) if the macro definition is disabled with #undef. + + The Panels Library + + The ncurses library by itself provides good support for screen + displays in which the windows are tiled (non-overlapping). In the more + general case that windows may overlap, you have to use a series of + wnoutrefresh() calls followed by a doupdate(), and be careful about + the order you do the window refreshes in. It has to be bottom-upwards, + otherwise parts of windows that should be obscured will show through. + + When your interface design is such that windows may dive deeper into + the visibility stack or pop to the top at runtime, the resulting + book-keeping can be tedious and difficult to get right. Hence the + panels library. + + The panel library first appeared in AT&T System V. The version + documented here is the panel code distributed with ncurses. + +Compiling With the Panels Library + + Your panels-using modules must import the panels library declarations + with + #include + + and must be linked explicitly with the panels library using an -lpanel + argument. Note that they must also link the ncurses library with + -lncurses. Many linkers are two-pass and will accept either order, but + it is still good practice to put -lpanel first and -lncurses second. + +Overview of Panels + + A panel object is a window that is implicitly treated as part of a + deck including all other panel objects. The deck has an implicit + bottom-to-top visibility order. The panels library includes an update + function (analogous to refresh()) that displays all panels in the deck + in the proper order to resolve overlaps. The standard window, stdscr, + is considered below all panels. + + Details on the panels functions are available in the man pages. We'll + just hit the highlights here. + + You create a panel from a window by calling new_panel() on a window + pointer. It then becomes the top of the deck. The panel's window is + available as the value of panel_window() called with the panel pointer + as argument. + + You can delete a panel (removing it from the deck) with del_panel. + This will not deallocate the associated window; you have to do that + yourself. You can replace a panel's window with a different window by + calling replace_window. The new window may be of different size; the + panel code will re-compute all overlaps. This operation doesn't change + the panel's position in the deck. + + To move a panel's window, use move_panel(). The mvwin() function on + the panel's window isn't sufficient because it doesn't update the + panels library's representation of where the windows are. This + operation leaves the panel's depth, contents, and size unchanged. + + Two functions (top_panel(), bottom_panel()) are provided for + rearranging the deck. The first pops its argument window to the top of + the deck; the second sends it to the bottom. Either operation leaves + the panel's screen location, contents, and size unchanged. + + The function update_panels() does all the wnoutrefresh() calls needed + to prepare for doupdate() (which you must call yourself, afterwards). + + Typically, you will want to call update_panels() and doupdate() just + before accepting command input, once in each cycle of interaction with + the user. If you call update_panels() after each and every panel + write, you'll generate a lot of unnecessary refresh activity and + screen flicker. + +Panels, Input, and the Standard Screen + + You shouldn't mix wnoutrefresh() or wrefresh() operations with panels + code; this will work only if the argument window is either in the top + panel or unobscured by any other panels. + + The stsdcr window is a special case. It is considered below all + panels. Because changes to panels may obscure parts of stdscr, though, + you should call update_panels() before doupdate() even when you only + change stdscr. + + Note that wgetch automatically calls wrefresh. Therefore, before + requesting input from a panel window, you need to be sure that the + panel is totally unobscured. + + There is presently no way to display changes to one obscured panel + without repainting all panels. + +Hiding Panels + + It's possible to remove a panel from the deck temporarily; use + hide_panel for this. Use show_panel() to render it visible again. The + predicate function panel_hidden tests whether or not a panel is + hidden. + + The panel_update code ignores hidden panels. You cannot do top_panel() + or bottom_panel on a hidden panel(). Other panels operations are + applicable. + +Miscellaneous Other Facilities + + It's possible to navigate the deck using the functions panel_above() + and panel_below. Handed a panel pointer, they return the panel above + or below that panel. Handed NULL, they return the bottom-most or + top-most panel. + + Every panel has an associated user pointer, not used by the panel + code, to which you can attach application data. See the man page + documentation of set_panel_userptr() and panel_userptr for details. + + The Menu Library + + A menu is a screen display that assists the user to choose some subset + of a given set of items. The menu library is a curses extension that + supports easy programming of menu hierarchies with a uniform but + flexible interface. + + The menu library first appeared in AT&T System V. The version + documented here is the menu code distributed with ncurses. + +Compiling With the menu Library + + Your menu-using modules must import the menu library declarations with + #include + + and must be linked explicitly with the menus library using an -lmenu + argument. Note that they must also link the ncurses library with + -lncurses. Many linkers are two-pass and will accept either order, but + it is still good practice to put -lmenu first and -lncurses second. + +Overview of Menus + + The menus created by this library consist of collections of items + including a name string part and a description string part. To make + menus, you create groups of these items and connect them with menu + frame objects. + + The menu can then by posted, that is written to an associated window. + Actually, each menu has two associated windows; a containing window in + which the programmer can scribble titles or borders, and a subwindow + in which the menu items proper are displayed. If this subwindow is too + small to display all the items, it will be a scrollable viewport on + the collection of items. + + A menu may also be unposted (that is, undisplayed), and finally freed + to make the storage associated with it and its items available for + re-use. + + The general flow of control of a menu program looks like this: + 1. Initialize curses. + 2. Create the menu items, using new_item(). + 3. Create the menu using new_menu(). + 4. Post the menu using post_menu(). + 5. Refresh the screen. + 6. Process user requests via an input loop. + 7. Unpost the menu using unpost_menu(). + 8. Free the menu, using free_menu(). + 9. Free the items using free_item(). + 10. Terminate curses. + +Selecting items + + Menus may be multi-valued or (the default) single-valued (see the + manual page menu_opts(3x) to see how to change the default). Both + types always have a current item. + + From a single-valued menu you can read the selected value simply by + looking at the current item. From a multi-valued menu, you get the + selected set by looping through the items applying the item_value() + predicate function. Your menu-processing code can use the function + set_item_value() to flag the items in the select set. + + Menu items can be made unselectable using set_item_opts() or + item_opts_off() with the O_SELECTABLE argument. This is the only + option so far defined for menus, but it is good practice to code as + though other option bits might be on. + +Menu Display + + The menu library calculates a minimum display size for your window, + based on the following variables: + * The number and maximum length of the menu items + * Whether the O_ROWMAJOR option is enabled + * Whether display of descriptions is enabled + * Whatever menu format may have been set by the programmer + * The length of the menu mark string used for highlighting selected + items + + The function set_menu_format() allows you to set the maximum size of + the viewport or menu page that will be used to display menu items. You + can retrieve any format associated with a menu with menu_format(). The + default format is rows=16, columns=1. + + The actual menu page may be smaller than the format size. This depends + on the item number and size and whether O_ROWMAJOR is on. This option + (on by default) causes menu items to be displayed in a `raster-scan' + pattern, so that if more than one item will fit horizontally the first + couple of items are side-by-side in the top row. The alternative is + column-major display, which tries to put the first several items in + the first column. + + As mentioned above, a menu format not large enough to allow all items + to fit on-screen will result in a menu display that is vertically + scrollable. + + You can scroll it with requests to the menu driver, which will be + described in the section on menu input handling. + + Each menu has a mark string used to visually tag selected items; see + the menu_mark(3x) manual page for details. The mark string length also + influences the menu page size. + + The function scale_menu() returns the minimum display size that the + menu code computes from all these factors. There are other menu + display attributes including a select attribute, an attribute for + selectable items, an attribute for unselectable items, and a pad + character used to separate item name text from description text. These + have reasonable defaults which the library allows you to change (see + the menu_attribs(3x) manual page. + +Menu Windows + + Each menu has, as mentioned previously, a pair of associated windows. + Both these windows are painted when the menu is posted and erased when + the menu is unposted. + + The outer or frame window is not otherwise touched by the menu + routines. It exists so the programmer can associate a title, a border, + or perhaps help text with the menu and have it properly refreshed or + erased at post/unpost time. The inner window or subwindow is where the + current menu page is displayed. + + By default, both windows are stdscr. You can set them with the + functions in menu_win(3x). + + When you call post_menu(), you write the menu to its subwindow. When + you call unpost_menu(), you erase the subwindow, However, neither of + these actually modifies the screen. To do that, call wrefresh() or + some equivalent. + +Processing Menu Input + + The main loop of your menu-processing code should call menu_driver() + repeatedly. The first argument of this routine is a menu pointer; the + second is a menu command code. You should write an input-fetching + routine that maps input characters to menu command codes, and pass its + output to menu_driver(). The menu command codes are fully documented + in menu_driver(3x). + + The simplest group of command codes is REQ_NEXT_ITEM, REQ_PREV_ITEM, + REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_UP_ITEM, REQ_DOWN_ITEM, + REQ_LEFT_ITEM, REQ_RIGHT_ITEM. These change the currently selected + item. These requests may cause scrolling of the menu page if it only + partially displayed. + + There are explicit requests for scrolling which also change the + current item (because the select location does not change, but the + item there does). These are REQ_SCR_DLINE, REQ_SCR_ULINE, + REQ_SCR_DPAGE, and REQ_SCR_UPAGE. + + The REQ_TOGGLE_ITEM selects or deselects the current item. It is for + use in multi-valued menus; if you use it with O_ONEVALUE on, you'll + get an error return (E_REQUEST_DENIED). + + Each menu has an associated pattern buffer. The menu_driver() logic + tries to accumulate printable ASCII characters passed in in that + buffer; when it matches a prefix of an item name, that item (or the + next matching item) is selected. If appending a character yields no + new match, that character is deleted from the pattern buffer, and + menu_driver() returns E_NO_MATCH. + + Some requests change the pattern buffer directly: REQ_CLEAR_PATTERN, + REQ_BACK_PATTERN, REQ_NEXT_MATCH, REQ_PREV_MATCH. The latter two are + useful when pattern buffer input matches more than one item in a + multi-valued menu. + + Each successful scroll or item navigation request clears the pattern + buffer. It is also possible to set the pattern buffer explicitly with + set_menu_pattern(). + + Finally, menu driver requests above the constant MAX_COMMAND are + considered application-specific commands. The menu_driver() code + ignores them and returns E_UNKNOWN_COMMAND. + +Miscellaneous Other Features + + Various menu options can affect the processing and visual appearance + and input processing of menus. See menu_opts(3x) for details. + + It is possible to change the current item from application code; this + is useful if you want to write your own navigation requests. It is + also possible to explicitly set the top row of the menu display. See + mitem_current(3x). If your application needs to change the menu + subwindow cursor for any reason, pos_menu_cursor() will restore it to + the correct location for continuing menu driver processing. + + It is possible to set hooks to be called at menu initialization and + wrapup time, and whenever the selected item changes. See + menu_hook(3x). + + Each item, and each menu, has an associated user pointer on which you + can hang application data. See mitem_userptr(3x) and menu_userptr(3x). + + The Forms Library + + The form library is a curses extension that supports easy programming + of on-screen forms for data entry and program control. + + The form library first appeared in AT&T System V. The version + documented here is the form code distributed with ncurses. + +Compiling With the form Library + + Your form-using modules must import the form library declarations with + #include + + and must be linked explicitly with the forms library using an -lform + argument. Note that they must also link the ncurses library with + -lncurses. Many linkers are two-pass and will accept either order, but + it is still good practice to put -lform first and -lncurses second. + +Overview of Forms + + A form is a collection of fields; each field may be either a label + (explanatory text) or a data-entry location. Long forms may be + segmented into pages; each entry to a new page clears the screen. + + To make forms, you create groups of fields and connect them with form + frame objects; the form library makes this relatively simple. + + Once defined, a form can be posted, that is written to an associated + window. Actually, each form has two associated windows; a containing + window in which the programmer can scribble titles or borders, and a + subwindow in which the form fields proper are displayed. + + As the form user fills out the posted form, navigation and editing + keys support movement between fields, editing keys support modifying + field, and plain text adds to or changes data in a current field. The + form library allows you (the forms designer) to bind each navigation + and editing key to any keystroke accepted by curses Fields may have + validation conditions on them, so that they check input data for type + and value. The form library supplies a rich set of pre-defined field + types, and makes it relatively easy to define new ones. + + Once its transaction is completed (or aborted), a form may be unposted + (that is, undisplayed), and finally freed to make the storage + associated with it and its items available for re-use. + + The general flow of control of a form program looks like this: + 1. Initialize curses. + 2. Create the form fields, using new_field(). + 3. Create the form using new_form(). + 4. Post the form using post_form(). + 5. Refresh the screen. + 6. Process user requests via an input loop. + 7. Unpost the form using unpost_form(). + 8. Free the form, using free_form(). + 9. Free the fields using free_field(). + 10. Terminate curses. + + Note that this looks much like a menu program; the form library + handles tasks which are in many ways similar, and its interface was + obviously designed to resemble that of the menu library wherever + possible. + + In forms programs, however, the `process user requests' is somewhat + more complicated than for menus. Besides menu-like navigation + operations, the menu driver loop has to support field editing and data + validation. + +Creating and Freeing Fields and Forms + + The basic function for creating fields is new_field(): +FIELD *new_field(int height, int width, /* new field size */ + int top, int left, /* upper left corner */ + int offscreen, /* number of offscreen rows */ + int nbuf); /* number of working buffers */ + + Menu items always occupy a single row, but forms fields may have + multiple rows. So new_field() requires you to specify a width and + height (the first two arguments, which mist both be greater than + zero). + + You must also specify the location of the field's upper left corner on + the screen (the third and fourth arguments, which must be zero or + greater). Note that these coordinates are relative to the form + subwindow, which will coincide with stdscr by default but need not be + stdscr if you've done an explicit set_form_win() call. + + The fifth argument allows you to specify a number of off-screen rows. + If this is zero, the entire field will always be displayed. If it is + nonzero, the form will be scrollable, with only one screen-full + (initially the top part) displayed at any given time. If you make a + field dynamic and grow it so it will no longer fit on the screen, the + form will become scrollable even if the offscreen argument was + initially zero. + + The forms library allocates one working buffer per field; the size of + each buffer is ((height + offscreen)*width + 1, one character for each + position in the field plus a NUL terminator. The sixth argument is the + number of additional data buffers to allocate for the field; your + application can use them for its own purposes. +FIELD *dup_field(FIELD *field, /* field to copy */ + int top, int left); /* location of new copy */ + + The function dup_field() duplicates an existing field at a new + location. Size and buffering information are copied; some attribute + flags and status bits are not (see the form_field_new(3X) for + details). +FIELD *link_field(FIELD *field, /* field to copy */ + int top, int left); /* location of new copy */ + + The function link_field() also duplicates an existing field at a new + location. The difference from dup_field() is that it arranges for the + new field's buffer to be shared with the old one. + + Besides the obvious use in making a field editable from two different + form pages, linked fields give you a way to hack in dynamic labels. If + you declare several fields linked to an original, and then make them + inactive, changes from the original will still be propagated to the + linked fields. + + As with duplicated fields, linked fields have attribute bits separate + from the original. + + As you might guess, all these field-allocations return NULL if the + field allocation is not possible due to an out-of-memory error or + out-of-bounds arguments. + + To connect fields to a form, use +FORM *new_form(FIELD **fields); + + This function expects to see a NULL-terminated array of field + pointers. Said fields are connected to a newly-allocated form object; + its address is returned (or else NULL if the allocation fails). + + Note that new_field() does not copy the pointer array into private + storage; if you modify the contents of the pointer array during forms + processing, all manner of bizarre things might happen. Also note that + any given field may only be connected to one form. + + The functions free_field() and free_form are available to free field + and form objects. It is an error to attempt to free a field connected + to a form, but not vice-versa; thus, you will generally free your form + objects first. + +Fetching and Changing Field Attributes + + Each form field has a number of location and size attributes + associated with it. There are other field attributes used to control + display and editing of the field. Some (for example, the O_STATIC bit) + involve sufficient complications to be covered in sections of their + own later on. We cover the functions used to get and set several basic + attributes here. + + When a field is created, the attributes not specified by the new_field + function are copied from an invisible system default field. In + attribute-setting and -fetching functions, the argument NULL is taken + to mean this field. Changes to it persist as defaults until your forms + application terminates. + + Fetching Size and Location Data + + You can retrieve field sizes and locations through: +int field_info(FIELD *field, /* field from which to fetch */ + int *height, *int width, /* field size */ + int *top, int *left, /* upper left corner */ + int *offscreen, /* number of offscreen rows */ + int *nbuf); /* number of working buffers */ + + This function is a sort of inverse of new_field(); instead of setting + size and location attributes of a new field, it fetches them from an + existing one. + + Changing the Field Location + + It is possible to move a field's location on the screen: +int move_field(FIELD *field, /* field to alter */ + int top, int left); /* new upper-left corner */ + + You can, of course. query the current location through field_info(). + + The Justification Attribute + + One-line fields may be unjustified, justified right, justified left, + or centered. Here is how you manipulate this attribute: +int set_field_just(FIELD *field, /* field to alter */ + int justmode); /* mode to set */ + +int field_just(FIELD *field); /* fetch mode of field */ + + The mode values accepted and returned by this functions are + preprocessor macros NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or + JUSTIFY_CENTER. + + Field Display Attributes + + For each field, you can set a foreground attribute for entered + characters, a background attribute for the entire field, and a pad + character for the unfilled portion of the field. You can also control + pagination of the form. + + This group of four field attributes controls the visual appearance of + the field on the screen, without affecting in any way the data in the + field buffer. +int set_field_fore(FIELD *field, /* field to alter */ + chtype attr); /* attribute to set */ + +chtype field_fore(FIELD *field); /* field to query */ + +int set_field_back(FIELD *field, /* field to alter */ + chtype attr); /* attribute to set */ + +chtype field_back(FIELD *field); /* field to query */ + +int set_field_pad(FIELD *field, /* field to alter */ + int pad); /* pad character to set */ + +chtype field_pad(FIELD *field); + +int set_new_page(FIELD *field, /* field to alter */ + int flag); /* TRUE to force new page */ + +chtype new_page(FIELD *field); /* field to query */ + + The attributes set and returned by the first four functions are normal + curses(3x) display attribute values (A_STANDOUT, A_BOLD, A_REVERSE + etc). The page bit of a field controls whether it is displayed at the + start of a new form screen. + + Field Option Bits + + There is also a large collection of field option bits you can set to + control various aspects of forms processing. You can manipulate them + with these functions: +int set_field_opts(FIELD *field, /* field to alter */ + int attr); /* attribute to set */ + +int field_opts_on(FIELD *field, /* field to alter */ + int attr); /* attributes to turn on */ + +int field_opts_off(FIELD *field, /* field to alter */ + int attr); /* attributes to turn off */ + +int field_opts(FIELD *field); /* field to query */ + + By default, all options are on. Here are the available option bits: + + O_VISIBLE + Controls whether the field is visible on the screen. Can be + used during form processing to hide or pop up fields depending + on the value of parent fields. + + O_ACTIVE + Controls whether the field is active during forms processing + (i.e. visited by form navigation keys). Can be used to make + labels or derived fields with buffer values alterable by the + forms application, not the user. + + O_PUBLIC + Controls whether data is displayed during field entry. If this + option is turned off on a field, the library will accept and + edit data in that field, but it will not be displayed and the + visible field cursor will not move. You can turn off the + O_PUBLIC bit to define password fields. + + O_EDIT + Controls whether the field's data can be modified. When this + option is off, all editing requests except REQ_PREV_CHOICE and + REQ_NEXT_CHOICE will fail. Such read-only fields may be useful + for help messages. + + O_WRAP + Controls word-wrapping in multi-line fields. Normally, when any + character of a (blank-separated) word reaches the end of the + current line, the entire word is wrapped to the next line + (assuming there is one). When this option is off, the word will + be split across the line break. + + O_BLANK + Controls field blanking. When this option is on, entering a + character at the first field position erases the entire field + (except for the just-entered character). + + O_AUTOSKIP + Controls automatic skip to next field when this one fills. + Normally, when the forms user tries to type more data into a + field than will fit, the editing location jumps to next field. + When this option is off, the user's cursor will hang at the end + of the field. This option is ignored in dynamic fields that + have not reached their size limit. + + O_NULLOK + Controls whether validation is applied to blank fields. + Normally, it is not; the user can leave a field blank without + invoking the usual validation check on exit. If this option is + off on a field, exit from it will invoke a validation check. + + O_PASSOK + Controls whether validation occurs on every exit, or only after + the field is modified. Normally the latter is true. Setting + O_PASSOK may be useful if your field's validation function may + change during forms processing. + + O_STATIC + Controls whether the field is fixed to its initial dimensions. + If you turn this off, the field becomes dynamic and will + stretch to fit entered data. + + A field's options cannot be changed while the field is currently + selected. However, options may be changed on posted fields that are + not current. + + The option values are bit-masks and can be composed with logical-or in + the obvious way. + +Field Status + + Every field has a status flag, which is set to FALSE when the field is + created and TRUE when the value in field buffer 0 changes. This flag + can be queried and set directly: +int set_field_status(FIELD *field, /* field to alter */ + int status); /* mode to set */ + +int field_status(FIELD *field); /* fetch mode of field */ + + Setting this flag under program control can be useful if you use the + same form repeatedly, looking for modified fields each time. + + Calling field_status() on a field not currently selected for input + will return a correct value. Calling field_status() on a field that is + currently selected for input may not necessarily give a correct field + status value, because entered data isn't necessarily copied to buffer + zero before the exit validation check. To guarantee that the returned + status value reflects reality, call field_status() either (1) in the + field's exit validation check routine, (2) from the field's or form's + initialization or termination hooks, or (3) just after a + REQ_VALIDATION request has been processed by the forms driver. + +Field User Pointer + + Each field structure contains one character pointer slot that is not + used by the forms library. It is intended to be used by applications + to store private per-field data. You can manipulate it with: +int set_field_userptr(FIELD *field, /* field to alter */ + char *userptr); /* mode to set */ + +char *field_userptr(FIELD *field); /* fetch mode of field */ + + (Properly, this user pointer field ought to have (void *) type. The + (char *) type is retained for System V compatibility.) + + It is valid to set the user pointer of the default field (with a + set_field_userptr() call passed a NULL field pointer.) When a new + field is created, the default-field user pointer is copied to + initialize the new field's user pointer. + +Variable-Sized Fields + + Normally, a field is fixed at the size specified for it at creation + time. If, however, you turn off its O_STATIC bit, it becomes dynamic + and will automatically resize itself to accommodate data as it is + entered. If the field has extra buffers associated with it, they will + grow right along with the main input buffer. + + A one-line dynamic field will have a fixed height (1) but variable + width, scrolling horizontally to display data within the field area as + originally dimensioned and located. A multi-line dynamic field will + have a fixed width, but variable height (number of rows), scrolling + vertically to display data within the field area as originally + dimensioned and located. + + Normally, a dynamic field is allowed to grow without limit. But it is + possible to set an upper limit on the size of a dynamic field. You do + it with this function: +int set_max_field(FIELD *field, /* field to alter (may not be NULL) */ + int max_size); /* upper limit on field size */ + + If the field is one-line, max_size is taken to be a column size limit; + if it is multi-line, it is taken to be a line size limit. To disable + any limit, use an argument of zero. The growth limit can be changed + whether or not the O_STATIC bit is on, but has no effect until it is. + + The following properties of a field change when it becomes dynamic: + * If there is no growth limit, there is no final position of the + field; therefore O_AUTOSKIP and O_NL_OVERLOAD are ignored. + * Field justification will be ignored (though whatever justification + is set up will be retained internally and can be queried). + * The dup_field() and link_field() calls copy dynamic-buffer sizes. + If the O_STATIC option is set on one of a collection of links, + buffer resizing will occur only when the field is edited through + that link. + * The call field_info() will retrieve the original static size of + the field; use dynamic_field_info() to get the actual dynamic + size. + +Field Validation + + By default, a field will accept any data that will fit in its input + buffer. However, it is possible to attach a validation type to a + field. If you do this, any attempt to leave the field while it + contains data that doesn't match the validation type will fail. Some + validation types also have a character-validity check for each time a + character is entered in the field. + + A field's validation check (if any) is not called when + set_field_buffer() modifies the input buffer, nor when that buffer is + changed through a linked field. + + The form library provides a rich set of pre-defined validation types, + and gives you the capability to define custom ones of your own. You + can examine and change field validation attributes with the following + functions: +int set_field_type(FIELD *field, /* field to alter */ + FIELDTYPE *ftype, /* type to associate */ + ...); /* additional arguments*/ + +FIELDTYPE *field_type(FIELD *field); /* field to query */ + + The validation type of a field is considered an attribute of the + field. As with other field attributes, Also, doing set_field_type() + with a NULL field default will change the system default for + validation of newly-created fields. + + Here are the pre-defined validation types: + + TYPE_ALPHA + + This field type accepts alphabetic data; no blanks, no digits, no + special characters (this is checked at character-entry time). It is + set up with: +int set_field_type(FIELD *field, /* field to alter */ + TYPE_ALPHA, /* type to associate */ + int width); /* maximum width of field */ + + The width argument sets a minimum width of data. Typically you'll want + to set this to the field width; if it's greater than the field width, + the validation check will always fail. A minimum width of zero makes + field completion optional. + + TYPE_ALNUM + + This field type accepts alphabetic data and digits; no blanks, no + special characters (this is checked at character-entry time). It is + set up with: +int set_field_type(FIELD *field, /* field to alter */ + TYPE_ALNUM, /* type to associate */ + int width); /* maximum width of field */ + + The width argument sets a minimum width of data. As with TYPE_ALPHA, + typically you'll want to set this to the field width; if it's greater + than the field width, the validation check will always fail. A minimum + width of zero makes field completion optional. + + TYPE_ENUM + + This type allows you to restrict a field's values to be among a + specified set of string values (for example, the two-letter postal + codes for U.S. states). It is set up with: +int set_field_type(FIELD *field, /* field to alter */ + TYPE_ENUM, /* type to associate */ + char **valuelist; /* list of possible values */ + int checkcase; /* case-sensitive? */ + int checkunique); /* must specify uniquely? */ + + The valuelist parameter must point at a NULL-terminated list of valid + strings. The checkcase argument, if true, makes comparison with the + string case-sensitive. + + When the user exits a TYPE_ENUM field, the validation procedure tries + to complete the data in the buffer to a valid entry. If a complete + choice string has been entered, it is of course valid. But it is also + possible to enter a prefix of a valid string and have it completed for + you. + + By default, if you enter such a prefix and it matches more than one + value in the string list, the prefix will be completed to the first + matching value. But the checkunique argument, if true, requires prefix + matches to be unique in order to be valid. + + The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be + particularly useful with these fields. + + TYPE_INTEGER + + This field type accepts an integer. It is set up as follows: +int set_field_type(FIELD *field, /* field to alter */ + TYPE_INTEGER, /* type to associate */ + int padding, /* # places to zero-pad to */ + int vmin, int vmax); /* valid range */ + + Valid characters consist of an optional leading minus and digits. The + range check is performed on exit. If the range maximum is less than or + equal to the minimum, the range is ignored. + + If the value passes its range check, it is padded with as many leading + zero digits as necessary to meet the padding argument. + + A TYPE_INTEGER value buffer can conveniently be interpreted with the C + library function atoi(3). + + TYPE_NUMERIC + + This field type accepts a decimal number. It is set up as follows: +int set_field_type(FIELD *field, /* field to alter */ + TYPE_NUMERIC, /* type to associate */ + int padding, /* # places of precision */ + double vmin, double vmax); /* valid range */ + + Valid characters consist of an optional leading minus and digits. + possibly including a decimal point. If your system supports locale's, + the decimal point character used must be the one defined by your + locale. The range check is performed on exit. If the range maximum is + less than or equal to the minimum, the range is ignored. + + If the value passes its range check, it is padded with as many + trailing zero digits as necessary to meet the padding argument. + + A TYPE_NUMERIC value buffer can conveniently be interpreted with the C + library function atof(3). + + TYPE_REGEXP + + This field type accepts data matching a regular expression. It is set + up as follows: +int set_field_type(FIELD *field, /* field to alter */ + TYPE_REGEXP, /* type to associate */ + char *regexp); /* expression to match */ + + The syntax for regular expressions is that of regcomp(3). The check + for regular-expression match is performed on exit. + +Direct Field Buffer Manipulation + + The chief attribute of a field is its buffer contents. When a form has + been completed, your application usually needs to know the state of + each field buffer. You can find this out with: +char *field_buffer(FIELD *field, /* field to query */ + int bufindex); /* number of buffer to query */ + + Normally, the state of the zero-numbered buffer for each field is set + by the user's editing actions on that field. It's sometimes useful to + be able to set the value of the zero-numbered (or some other) buffer + from your application: +int set_field_buffer(FIELD *field, /* field to alter */ + int bufindex, /* number of buffer to alter */ + char *value); /* string value to set */ + + If the field is not large enough and cannot be resized to a + sufficiently large size to contain the specified value, the value will + be truncated to fit. + + Calling field_buffer() with a null field pointer will raise an error. + Calling field_buffer() on a field not currently selected for input + will return a correct value. Calling field_buffer() on a field that is + currently selected for input may not necessarily give a correct field + buffer value, because entered data isn't necessarily copied to buffer + zero before the exit validation check. To guarantee that the returned + buffer value reflects on-screen reality, call field_buffer() either + (1) in the field's exit validation check routine, (2) from the field's + or form's initialization or termination hooks, or (3) just after a + REQ_VALIDATION request has been processed by the forms driver. + +Attributes of Forms + + As with field attributes, form attributes inherit a default from a + system default form structure. These defaults can be queried or set by + of these functions using a form-pointer argument of NULL. + + The principal attribute of a form is its field list. You can query and + change this list with: +int set_form_fields(FORM *form, /* form to alter */ + FIELD **fields); /* fields to connect */ + +char *form_fields(FORM *form); /* fetch fields of form */ + +int field_count(FORM *form); /* count connect fields */ + + The second argument of set_form_fields() may be a NULL-terminated + field pointer array like the one required by new_form(). In that case, + the old fields of the form are disconnected but not freed (and + eligible to be connected to other forms), then the new fields are + connected. + + It may also be null, in which case the old fields are disconnected + (and not freed) but no new ones are connected. + + The field_count() function simply counts the number of fields + connected to a given from. It returns -1 if the form-pointer argument + is NULL. + +Control of Form Display + + In the overview section, you saw that to display a form you normally + start by defining its size (and fields), posting it, and refreshing + the screen. There is an hidden step before posting, which is the + association of the form with a frame window (actually, a pair of + windows) within which it will be displayed. By default, the forms + library associates every form with the full-screen window stdscr. + + By making this step explicit, you can associate a form with a declared + frame window on your screen display. This can be useful if you want to + adapt the form display to different screen sizes, dynamically tile + forms on the screen, or use a form as part of an interface layout + managed by panels. + + The two windows associated with each form have the same functions as + their analogues in the menu library. Both these windows are painted + when the form is posted and erased when the form is unposted. + + The outer or frame window is not otherwise touched by the form + routines. It exists so the programmer can associate a title, a border, + or perhaps help text with the form and have it properly refreshed or + erased at post/unpost time. The inner window or subwindow is where the + current form page is actually displayed. + + In order to declare your own frame window for a form, you'll need to + know the size of the form's bounding rectangle. You can get this + information with: +int scale_form(FORM *form, /* form to query */ + int *rows, /* form rows */ + int *cols); /* form cols */ + + The form dimensions are passed back in the locations pointed to by the + arguments. Once you have this information, you can use it to declare + of windows, then use one of these functions: +int set_form_win(FORM *form, /* form to alter */ + WINDOW *win); /* frame window to connect */ + +WINDOW *form_win(FORM *form); /* fetch frame window of form */ + +int set_form_sub(FORM *form, /* form to alter */ + WINDOW *win); /* form subwindow to connect */ + +WINDOW *form_sub(FORM *form); /* fetch form subwindow of form */ + + Note that curses operations, including refresh(), on the form, should + be done on the frame window, not the form subwindow. + + It is possible to check from your application whether all of a + scrollable field is actually displayed within the menu subwindow. Use + these functions: +int data_ahead(FORM *form); /* form to be queried */ + +int data_behind(FORM *form); /* form to be queried */ + + The function data_ahead() returns TRUE if (a) the current field is + one-line and has undisplayed data off to the right, (b) the current + field is multi-line and there is data off-screen below it. + + The function data_behind() returns TRUE if the first (upper left hand) + character position is off-screen (not being displayed). + + Finally, there is a function to restore the form window's cursor to + the value expected by the forms driver: +int pos_form_cursor(FORM *) /* form to be queried */ + + If your application changes the form window cursor, call this function + before handing control back to the forms driver in order to + re-synchronize it. + +Input Processing in the Forms Driver + + The function form_driver() handles virtualized input requests for form + navigation, editing, and validation requests, just as menu_driver does + for menus (see the section on menu input handling). +int form_driver(FORM *form, /* form to pass input to */ + int request); /* form request code */ + + Your input virtualization function needs to take input and then + convert it to either an alphanumeric character (which is treated as + data to be entered in the currently-selected field), or a forms + processing request. + + The forms driver provides hooks (through input-validation and + field-termination functions) with which your application code can + check that the input taken by the driver matched what was expected. + + Page Navigation Requests + + These requests cause page-level moves through the form, triggering + display of a new form screen. + + REQ_NEXT_PAGE + Move to the next form page. + + REQ_PREV_PAGE + Move to the previous form page. + + REQ_FIRST_PAGE + Move to the first form page. + + REQ_LAST_PAGE + Move to the last form page. + + These requests treat the list as cyclic; that is, REQ_NEXT_PAGE from + the last page goes to the first, and REQ_PREV_PAGE from the first page + goes to the last. + + Inter-Field Navigation Requests + + These requests handle navigation between fields on the same page. + + REQ_NEXT_FIELD + Move to next field. + + REQ_PREV_FIELD + Move to previous field. + + REQ_FIRST_FIELD + Move to the first field. + + REQ_LAST_FIELD + Move to the last field. + + REQ_SNEXT_FIELD + Move to sorted next field. + + REQ_SPREV_FIELD + Move to sorted previous field. + + REQ_SFIRST_FIELD + Move to the sorted first field. + + REQ_SLAST_FIELD + Move to the sorted last field. + + REQ_LEFT_FIELD + Move left to field. + + REQ_RIGHT_FIELD + Move right to field. + + REQ_UP_FIELD + Move up to field. + + REQ_DOWN_FIELD + Move down to field. + + These requests treat the list of fields on a page as cyclic; that is, + REQ_NEXT_FIELD from the last field goes to the first, and + REQ_PREV_FIELD from the first field goes to the last. The order of the + fields for these (and the REQ_FIRST_FIELD and REQ_LAST_FIELD requests) + is simply the order of the field pointers in the form array (as set up + by new_form() or set_form_fields() + + It is also possible to traverse the fields as if they had been sorted + in screen-position order, so the sequence goes left-to-right and + top-to-bottom. To do this, use the second group of four + sorted-movement requests. + + Finally, it is possible to move between fields using visual directions + up, down, right, and left. To accomplish this, use the third group of + four requests. Note, however, that the position of a form for purposes + of these requests is its upper-left corner. + + For example, suppose you have a multi-line field B, and two + single-line fields A and C on the same line with B, with A to the left + of B and C to the right of B. A REQ_MOVE_RIGHT from A will go to B + only if A, B, and C all share the same first line; otherwise it will + skip over B to C. + + Intra-Field Navigation Requests + + These requests drive movement of the edit cursor within the currently + selected field. + + REQ_NEXT_CHAR + Move to next character. + + REQ_PREV_CHAR + Move to previous character. + + REQ_NEXT_LINE + Move to next line. + + REQ_PREV_LINE + Move to previous line. + + REQ_NEXT_WORD + Move to next word. + + REQ_PREV_WORD + Move to previous word. + + REQ_BEG_FIELD + Move to beginning of field. + + REQ_END_FIELD + Move to end of field. + + REQ_BEG_LINE + Move to beginning of line. + + REQ_END_LINE + Move to end of line. + + REQ_LEFT_CHAR + Move left in field. + + REQ_RIGHT_CHAR + Move right in field. + + REQ_UP_CHAR + Move up in field. + + REQ_DOWN_CHAR + Move down in field. + + Each word is separated from the previous and next characters by + whitespace. The commands to move to beginning and end of line or field + look for the first or last non-pad character in their ranges. + + Scrolling Requests + + Fields that are dynamic and have grown and fields explicitly created + with offscreen rows are scrollable. One-line fields scroll + horizontally; multi-line fields scroll vertically. Most scrolling is + triggered by editing and intra-field movement (the library scrolls the + field to keep the cursor visible). It is possible to explicitly + request scrolling with the following requests: + + REQ_SCR_FLINE + Scroll vertically forward a line. + + REQ_SCR_BLINE + Scroll vertically backward a line. + + REQ_SCR_FPAGE + Scroll vertically forward a page. + + REQ_SCR_BPAGE + Scroll vertically backward a page. + + REQ_SCR_FHPAGE + Scroll vertically forward half a page. + + REQ_SCR_BHPAGE + Scroll vertically backward half a page. + + REQ_SCR_FCHAR + Scroll horizontally forward a character. + + REQ_SCR_BCHAR + Scroll horizontally backward a character. + + REQ_SCR_HFLINE + Scroll horizontally one field width forward. + + REQ_SCR_HBLINE + Scroll horizontally one field width backward. + + REQ_SCR_HFHALF + Scroll horizontally one half field width forward. + + REQ_SCR_HBHALF + Scroll horizontally one half field width backward. + + For scrolling purposes, a page of a field is the height of its visible + part. + + Editing Requests + + When you pass the forms driver an ASCII character, it is treated as a + request to add the character to the field's data buffer. Whether this + is an insertion or a replacement depends on the field's edit mode + (insertion is the default. + + The following requests support editing the field and changing the edit + mode: + + REQ_INS_MODE + Set insertion mode. + + REQ_OVL_MODE + Set overlay mode. + + REQ_NEW_LINE + New line request (see below for explanation). + + REQ_INS_CHAR + Insert space at character location. + + REQ_INS_LINE + Insert blank line at character location. + + REQ_DEL_CHAR + Delete character at cursor. + + REQ_DEL_PREV + Delete previous word at cursor. + + REQ_DEL_LINE + Delete line at cursor. + + REQ_DEL_WORD + Delete word at cursor. + + REQ_CLR_EOL + Clear to end of line. + + REQ_CLR_EOF + Clear to end of field. + + REQ_CLEAR_FIELD + Clear entire field. + + The behavior of the REQ_NEW_LINE and REQ_DEL_PREV requests is + complicated and partly controlled by a pair of forms options. The + special cases are triggered when the cursor is at the beginning of a + field, or on the last line of the field. + + First, we consider REQ_NEW_LINE: + + The normal behavior of REQ_NEW_LINE in insert mode is to break the + current line at the position of the edit cursor, inserting the portion + of the current line after the cursor as a new line following the + current and moving the cursor to the beginning of that new line (you + may think of this as inserting a newline in the field buffer). + + The normal behavior of REQ_NEW_LINE in overlay mode is to clear the + current line from the position of the edit cursor to end of line. The + cursor is then moved to the beginning of the next line. + + However, REQ_NEW_LINE at the beginning of a field, or on the last line + of a field, instead does a REQ_NEXT_FIELD. O_NL_OVERLOAD option is + off, this special action is disabled. + + Now, let us consider REQ_DEL_PREV: + + The normal behavior of REQ_DEL_PREV is to delete the previous + character. If insert mode is on, and the cursor is at the start of a + line, and the text on that line will fit on the previous one, it + instead appends the contents of the current line to the previous one + and deletes the current line (you may think of this as deleting a + newline from the field buffer). + + However, REQ_DEL_PREV at the beginning of a field is instead treated + as a REQ_PREV_FIELD. + + If the O_BS_OVERLOAD option is off, this special action is disabled + and the forms driver just returns E_REQUEST_DENIED. + + See Form Options for discussion of how to set and clear the overload + options. + + Order Requests + + If the type of your field is ordered, and has associated functions for + getting the next and previous values of the type from a given value, + there are requests that can fetch that value into the field buffer: + + REQ_NEXT_CHOICE + Place the successor value of the current value in the buffer. + + REQ_PREV_CHOICE + Place the predecessor value of the current value in the buffer. + + Of the built-in field types, only TYPE_ENUM has built-in successor and + predecessor functions. When you define a field type of your own (see + Custom Validation Types), you can associate our own ordering + functions. + + Application Commands + + Form requests are represented as integers above the curses value + greater than KEY_MAX and less than or equal to the constant + MAX_COMMAND. If your input-virtualization routine returns a value + above MAX_COMMAND, the forms driver will ignore it. + +Field Change Hooks + + It is possible to set function hooks to be executed whenever the + current field or form changes. Here are the functions that support + this: +typedef void (*HOOK)(); /* pointer to function returning void */ + +int set_form_init(FORM *form, /* form to alter */ + HOOK hook); /* initialization hook */ + +HOOK form_init(FORM *form); /* form to query */ + +int set_form_term(FORM *form, /* form to alter */ + HOOK hook); /* termination hook */ + +HOOK form_term(FORM *form); /* form to query */ + +int set_field_init(FORM *form, /* form to alter */ + HOOK hook); /* initialization hook */ + +HOOK field_init(FORM *form); /* form to query */ + +int set_field_term(FORM *form, /* form to alter */ + HOOK hook); /* termination hook */ + +HOOK field_term(FORM *form); /* form to query */ + + These functions allow you to either set or query four different hooks. + In each of the set functions, the second argument should be the + address of a hook function. These functions differ only in the timing + of the hook call. + + form_init + This hook is called when the form is posted; also, just after + each page change operation. + + field_init + This hook is called when the form is posted; also, just after + each field change + + field_term + This hook is called just after field validation; that is, just + before the field is altered. It is also called when the form is + unposted. + + form_term + This hook is called when the form is unposted; also, just + before each page change operation. + + Calls to these hooks may be triggered + 1. When user editing requests are processed by the forms driver + 2. When the current page is changed by set_current_field() call + 3. When the current field is changed by a set_form_page() call + + See Field Change Commands for discussion of the latter two cases. + + You can set a default hook for all fields by passing one of the set + functions a NULL first argument. + + You can disable any of these hooks by (re)setting them to NULL, the + default value. + +Field Change Commands + + Normally, navigation through the form will be driven by the user's + input requests. But sometimes it is useful to be able to move the + focus for editing and viewing under control of your application, or + ask which field it currently is in. The following functions help you + accomplish this: +int set_current_field(FORM *form, /* form to alter */ + FIELD *field); /* field to shift to */ + +FIELD *current_field(FORM *form); /* form to query */ + +int field_index(FORM *form, /* form to query */ + FIELD *field); /* field to get index of */ + + The function field_index() returns the index of the given field in the + given form's field array (the array passed to new_form() or + set_form_fields()). + + The initial current field of a form is the first active field on the + first page. The function set_form_fields() resets this. + + It is also possible to move around by pages. +int set_form_page(FORM *form, /* form to alter */ + int page); /* page to go to (0-origin) */ + +int form_page(FORM *form); /* return form's current page */ + + The initial page of a newly-created form is 0. The function + set_form_fields() resets this. + +Form Options + + Like fields, forms may have control option bits. They can be changed + or queried with these functions: +int set_form_opts(FORM *form, /* form to alter */ + int attr); /* attribute to set */ + +int form_opts_on(FORM *form, /* form to alter */ + int attr); /* attributes to turn on */ + +int form_opts_off(FORM *form, /* form to alter */ + int attr); /* attributes to turn off */ + +int form_opts(FORM *form); /* form to query */ + + By default, all options are on. Here are the available option bits: + + O_NL_OVERLOAD + Enable overloading of REQ_NEW_LINE as described in Editing + Requests. The value of this option is ignored on dynamic fields + that have not reached their size limit; these have no last + line, so the circumstances for triggering a REQ_NEXT_FIELD + never arise. + + O_BS_OVERLOAD + Enable overloading of REQ_DEL_PREV as described in Editing + Requests. + + The option values are bit-masks and can be composed with logical-or in + the obvious way. + +Custom Validation Types + + The form library gives you the capability to define custom validation + types of your own. Further, the optional additional arguments of + set_field_type effectively allow you to parameterize validation types. + Most of the complications in the validation-type interface have to do + with the handling of the additional arguments within custom validation + functions. + + Union Types + + The simplest way to create a custom data type is to compose it from + two preexisting ones: +FIELD *link_fieldtype(FIELDTYPE *type1, + FIELDTYPE *type2); + + This function creates a field type that will accept any of the values + legal for either of its argument field types (which may be either + predefined or programmer-defined). If a set_field_type() call later + requires arguments, the new composite type expects all arguments for + the first type, than all arguments for the second. Order functions + (see Order Requests) associated with the component types will work on + the composite; what it does is check the validation function for the + first type, then for the second, to figure what type the buffer + contents should be treated as. + + New Field Types + + To create a field type from scratch, you need to specify one or both + of the following things: + * A character-validation function, to check each character as it is + entered. + * A field-validation function to be applied on exit from the field. + + Here's how you do that: +typedef int (*HOOK)(); /* pointer to function returning int */ + +FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */ + HOOK c_validate) /* character validator */ + + +int free_fieldtype(FIELDTYPE *ftype); /* type to free */ + + At least one of the arguments of new_fieldtype() must be non-NULL. The + forms driver will automatically call the new type's validation + functions at appropriate points in processing a field of the new type. + + The function free_fieldtype() deallocates the argument fieldtype, + freeing all storage associated with it. + + Normally, a field validator is called when the user attempts to leave + the field. Its first argument is a field pointer, from which it can + get to field buffer 0 and test it. If the function returns TRUE, the + operation succeeds; if it returns FALSE, the edit cursor stays in the + field. + + A character validator gets the character passed in as a first + argument. It too should return TRUE if the character is valid, FALSE + otherwise. + + Validation Function Arguments + + Your field- and character- validation functions will be passed a + second argument as well. This second argument is the address of a + structure (which we'll call a pile) built from any of the + field-type-specific arguments passed to set_field_type(). If no such + arguments are defined for the field type, this pile pointer argument + will be NULL. + + In order to arrange for such arguments to be passed to your validation + functions, you must associate a small set of storage-management + functions with the type. The forms driver will use these to synthesize + a pile from the trailing arguments of each set_field_type() argument, + and a pointer to the pile will be passed to the validation functions. + + Here is how you make the association: +typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */ +typedef void (*VOIDHOOK)(); /* pointer to function returning void */ + +int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */ + PTRHOOK make_str, /* make structure from args */ + PTRHOOK copy_str, /* make copy of structure */ + VOIDHOOK free_str); /* free structure storage */ + + Here is how the storage-management hooks are used: + + make_str + This function is called by set_field_type(). It gets one + argument, a va_list of the type-specific arguments passed to + set_field_type(). It is expected to return a pile pointer to a + data structure that encapsulates those arguments. + + copy_str + This function is called by form library functions that allocate + new field instances. It is expected to take a pile pointer, + copy the pile to allocated storage, and return the address of + the pile copy. + + free_str + This function is called by field- and type-deallocation + routines in the library. It takes a pile pointer argument, and + is expected to free the storage of that pile. + + The make_str and copy_str functions may return NULL to signal + allocation failure. The library routines will that call them will + return error indication when this happens. Thus, your validation + functions should never see a NULL file pointer and need not check + specially for it. + + Order Functions For Custom Types + + Some custom field types are simply ordered in the same well-defined + way that TYPE_ENUM is. For such types, it is possible to define + successor and predecessor functions to support the REQ_NEXT_CHOICE and + REQ_PREV_CHOICE requests. Here's how: +typedef int (*INTHOOK)(); /* pointer to function returning int */ + +int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */ + INTHOOK succ, /* get successor value */ + INTHOOK pred); /* get predecessor value */ + + The successor and predecessor arguments will each be passed two + arguments; a field pointer, and a pile pointer (as for the validation + functions). They are expected to use the function field_buffer() to + read the current value, and set_field_buffer() on buffer 0 to set the + next or previous value. Either hook may return TRUE to indicate + success (a legal next or previous value was set) or FALSE to indicate + failure. + + Avoiding Problems + + The interface for defining custom types is complicated and tricky. + Rather than attempting to create a custom type entirely from scratch, + you should start by studying the library source code for whichever of + the pre-defined types seems to be closest to what you want. + + Use that code as a model, and evolve it towards what you really want. + You will avoid many problems and annoyances that way. The code in the + ncurses library has been specifically exempted from the package + copyright to support this. + + If your custom type defines order functions, have do something + intuitive with a blank field. A useful convention is to make the + successor of a blank field the types minimum value, and its + predecessor the maximum. diff --git a/ncurses/edit_man.sh b/ncurses/edit_man.sh old mode 100755 new mode 100644 diff --git a/ncurses/headers.sh b/ncurses/headers.sh old mode 100755 new mode 100644 diff --git a/ncurses/include/curses.h b/ncurses/include/curses.h deleted file mode 100644 index 1a2c6e5..0000000 --- a/ncurses/include/curses.h +++ /dev/null @@ -1,1757 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - ****************************************************************************/ - -/**************************************************************************** - * Author: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* $Id: curses.h.in,v 1.187 2008/08/30 20:11:29 tom Exp $ */ - -#ifndef __NCURSES_H -#define __NCURSES_H - -#define CURSES 1 -#define CURSES_H 1 - -/* This should be defined for the enhanced functionality to be visible. - * However, some of the wide-character (enhanced) functionality is missing. - * So we do not define it (yet). -#define _XOPEN_CURSES 1 - */ - -/* These are defined only in curses.h, and are used for conditional compiles */ -#define NCURSES_VERSION_MAJOR 5 -#define NCURSES_VERSION_MINOR 7 -#define NCURSES_VERSION_PATCH 20081102 - -/* This is defined in more than one ncurses header, for identification */ -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.7" - -/* - * Identify the mouse encoding version. - */ -#define NCURSES_MOUSE_VERSION 1 - -/* - * Definitions to facilitate DLL's. - */ -#include - -/* - * User-definable tweak to disable the include of . - */ -#ifndef NCURSES_ENABLE_STDBOOL_H -#define NCURSES_ENABLE_STDBOOL_H 1 -#endif - -/* - * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses - * configured using --disable-macros. - */ -#ifdef NCURSES_NOMACROS -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T attr_t -#endif -#endif /* NCURSES_NOMACROS */ - -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T int -#endif - -/* - * Expands to 'const' if ncurses is configured using --enable-const. Note that - * doing so makes it incompatible with other implementations of X/Open Curses. - */ -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_INLINE -#define NCURSES_INLINE inline - -/* - * The internal type used for color values - */ -#undef NCURSES_COLOR_T -#define NCURSES_COLOR_T short - -/* - * Definition used to make WINDOW and similar structs opaque. - */ -#ifndef NCURSES_OPAQUE -#define NCURSES_OPAQUE 1 -#endif - -/* - * The internal type used for window dimensions. - */ -#undef NCURSES_SIZE_T -#define NCURSES_SIZE_T short - -/* - * Control whether tparm() supports varargs or fixed-parameter list. - */ -#undef NCURSES_TPARM_VARARGS -#define NCURSES_TPARM_VARARGS 1 - -/* - * NCURSES_CH_T is used in building the library, but not used otherwise in - * this header file, since that would make the normal/wide-character versions - * of the header incompatible. - */ -#undef NCURSES_CH_T -#define NCURSES_CH_T cchar_t - -#if 0 && defined(_LP64) -typedef unsigned chtype; -typedef unsigned mmask_t; -#else -typedef unsigned int chtype; -typedef unsigned long mmask_t; -#endif - -#include -#include -#include /* we need va_list */ -#ifdef _XOPEN_SOURCE_EXTENDED -#include /* we want wchar_t */ -#endif /* _XOPEN_SOURCE_EXTENDED */ - -/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also - * implement it. If so, we must use the C++ compiler's type to avoid conflict - * with other interfaces. - * - * A further complication is that may declare 'bool' to be a - * different type, such as an enum which is not necessarily compatible with - * C++. If we have , make 'bool' a macro, so users may #undef it. - * Otherwise, let it remain a typedef to avoid conflicts with other #define's. - * In either case, make a typedef for NCURSES_BOOL which can be used if needed - * from either C or C++. - */ - -#undef TRUE -#define TRUE 1 - -#undef FALSE -#define FALSE 0 - -typedef unsigned char NCURSES_BOOL; - -#if defined(__cplusplus) /* __cplusplus, etc. */ - -/* use the C++ compiler's bool type */ -#define NCURSES_BOOL bool - -#else /* c89, c99, etc. */ - -#if NCURSES_ENABLE_STDBOOL_H -#include -/* use whatever the C compiler decides bool really is */ -#define NCURSES_BOOL bool -#else -/* there is no predefined bool - use our own */ -#undef bool -#define bool NCURSES_BOOL -#endif - -#endif /* !__cplusplus, etc. */ - -#ifdef __cplusplus -extern "C" { -#define NCURSES_CAST(type,value) static_cast(value) -#else -#define NCURSES_CAST(type,value) (type)(value) -#endif - -/* - * X/Open attributes. In the ncurses implementation, they are identical to the - * A_ attributes. - */ -#define WA_ATTRIBUTES A_ATTRIBUTES -#define WA_NORMAL A_NORMAL -#define WA_STANDOUT A_STANDOUT -#define WA_UNDERLINE A_UNDERLINE -#define WA_REVERSE A_REVERSE -#define WA_BLINK A_BLINK -#define WA_DIM A_DIM -#define WA_BOLD A_BOLD -#define WA_ALTCHARSET A_ALTCHARSET -#define WA_INVIS A_INVIS -#define WA_PROTECT A_PROTECT -#define WA_HORIZONTAL A_HORIZONTAL -#define WA_LEFT A_LEFT -#define WA_LOW A_LOW -#define WA_RIGHT A_RIGHT -#define WA_TOP A_TOP -#define WA_VERTICAL A_VERTICAL - -/* colors */ -#define COLOR_BLACK 0 -#define COLOR_RED 1 -#define COLOR_GREEN 2 -#define COLOR_YELLOW 3 -#define COLOR_BLUE 4 -#define COLOR_MAGENTA 5 -#define COLOR_CYAN 6 -#define COLOR_WHITE 7 - -/* line graphics */ - -#if 0 || 0 -NCURSES_WRAPPED_VAR(chtype*, acs_map); -#define acs_map (_nc_acs_map()) -#else -extern NCURSES_EXPORT_VAR(chtype) acs_map[]; -#endif - -#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)]) - -/* VT100 symbols begin here */ -#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ -#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ -#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ -#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ -#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ -#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ -#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ -#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ -#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ -#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ -#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ -#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ -#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ -#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ -#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ -#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ -#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ -#define ACS_BULLET NCURSES_ACS('~') /* bullet */ -/* Teletype 5410v1 symbols begin here */ -#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ -#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ -#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ -#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ -#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ -#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ -#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ -/* - * These aren't documented, but a lot of System Vs have them anyway - * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). - * The ACS_names may not match AT&T's, our source didn't know them. - */ -#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ -#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ -#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ -#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ -#define ACS_PI NCURSES_ACS('{') /* Pi */ -#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ -#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ - -/* - * Line drawing ACS names are of the form ACS_trbl, where t is the top, r - * is the right, b is the bottom, and l is the left. t, r, b, and l might - * be B (blank), S (single), D (double), or T (thick). The subset defined - * here only uses B and S. - */ -#define ACS_BSSB ACS_ULCORNER -#define ACS_SSBB ACS_LLCORNER -#define ACS_BBSS ACS_URCORNER -#define ACS_SBBS ACS_LRCORNER -#define ACS_SBSS ACS_RTEE -#define ACS_SSSB ACS_LTEE -#define ACS_SSBS ACS_BTEE -#define ACS_BSSS ACS_TTEE -#define ACS_BSBS ACS_HLINE -#define ACS_SBSB ACS_VLINE -#define ACS_SSSS ACS_PLUS - -#undef ERR -#define ERR (-1) - -#undef OK -#define OK (0) - -/* values for the _flags member */ -#define _SUBWIN 0x01 /* is this a sub-window? */ -#define _ENDLINE 0x02 /* is the window flush right? */ -#define _FULLWIN 0x04 /* is the window full-screen? */ -#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ -#define _ISPAD 0x10 /* is this window a pad? */ -#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ -#define _WRAPPED 0x40 /* cursor was just wrappped */ - -/* - * this value is used in the firstchar and lastchar fields to mark - * unchanged lines - */ -#define _NOCHANGE -1 - -/* - * this value is used in the oldindex field to mark lines created by insertions - * and scrolls. - */ -#define _NEWINDEX -1 - -typedef struct screen SCREEN; -typedef struct _win_st WINDOW; - -typedef chtype attr_t; /* ...must be at least as wide as chtype */ - -#ifdef _XOPEN_SOURCE_EXTENDED - -#if 0 -#ifdef mblen /* libutf8.h defines it w/o undefining first */ -#undef mblen -#endif -#include -#endif - -#if 1 -#include /* ...to get mbstate_t, etc. */ -#endif - -#if 0 -typedef unsigned short wchar_t1; -#endif - -#if 0 -typedef unsigned int wint_t1; -#endif - -#define CCHARW_MAX 5 -typedef struct -{ - attr_t attr; - wchar_t chars[CCHARW_MAX]; -#if 0 -#undef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS 20081102 - int ext_color; /* color pair, must be more than 16-bits */ -#endif -} -cchar_t; - -#endif /* _XOPEN_SOURCE_EXTENDED */ - -#if !NCURSES_OPAQUE -struct ldat; - -struct _win_st -{ - NCURSES_SIZE_T _cury, _curx; /* current cursor position */ - - /* window location and size */ - NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ - NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ - - short _flags; /* window state flags */ - - /* attribute tracking */ - attr_t _attrs; /* current attribute for non-space character */ - chtype _bkgd; /* current background char/attribute pair */ - - /* option values set by user */ - bool _notimeout; /* no time out on function-key entry? */ - bool _clear; /* consider all data in the window invalid? */ - bool _leaveok; /* OK to not reset cursor on exit? */ - bool _scroll; /* OK to scroll this window? */ - bool _idlok; /* OK to use insert/delete line? */ - bool _idcok; /* OK to use insert/delete char? */ - bool _immed; /* window in immed mode? (not yet used) */ - bool _sync; /* window in sync mode? */ - bool _use_keypad; /* process function keys into KEY_ symbols? */ - int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ - - struct ldat *_line; /* the actual line data */ - - /* global screen state */ - NCURSES_SIZE_T _regtop; /* top line of scrolling region */ - NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ - - /* these are used only if this is a sub-window */ - int _parx; /* x coordinate of this window in parent */ - int _pary; /* y coordinate of this window in parent */ - WINDOW *_parent; /* pointer to parent if a sub-window */ - - /* these are used only if this is a pad */ - struct pdat - { - NCURSES_SIZE_T _pad_y, _pad_x; - NCURSES_SIZE_T _pad_top, _pad_left; - NCURSES_SIZE_T _pad_bottom, _pad_right; - } _pad; - - NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ - -#ifdef _XOPEN_SOURCE_EXTENDED - cchar_t _bkgrnd; /* current background char/attribute pair */ -#if 0 - int _color; /* current color-pair for non-space character */ -#endif -#endif -}; -#endif /* NCURSES_OPAQUE */ - -/* - * This is an extension to support events... - */ -#if 1 -#ifdef NCURSES_WGETCH_EVENTS -#if !defined(__BEOS__) || defined(__HAIKU__) - /* Fix _nc_timed_wait() on BEOS... */ -# define NCURSES_EVENT_VERSION 1 -#endif /* !defined(__BEOS__) */ - -/* - * Bits to set in _nc_event.data.flags - */ -# define _NC_EVENT_TIMEOUT_MSEC 1 -# define _NC_EVENT_FILE 2 -# define _NC_EVENT_FILE_READABLE 2 -# if 0 /* Not supported yet... */ -# define _NC_EVENT_FILE_WRITABLE 4 -# define _NC_EVENT_FILE_EXCEPTION 8 -# endif - -typedef struct -{ - int type; - union - { - long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ - struct - { - unsigned int flags; - int fd; - unsigned int result; - } fev; /* _NC_EVENT_FILE */ - } data; -} _nc_event; - -typedef struct -{ - int count; - int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ - _nc_event *events[1]; -} _nc_eventlist; - -extern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *); /* experimental */ -extern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */ - -#endif /* NCURSES_WGETCH_EVENTS */ -#endif /* NCURSES_EXT_FUNCS */ - -/* - * GCC (and some other compilers) define '__attribute__'; we're using this - * macro to alert the compiler to flag inconsistencies in printf/scanf-like - * function calls. Just in case '__attribute__' isn't defined, make a dummy. - * Old versions of G++ do not accept it anyway, at least not consistently with - * GCC. - */ -#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) -#define __attribute__(p) /* nothing */ -#endif - -/* - * We cannot define these in ncurses_cfg.h, since they require parameters to be - * passed (that is non-portable). If you happen to be using gcc with warnings - * enabled, define - * GCC_PRINTF - * GCC_SCANF - * to improve checking of calls to printw(), etc. - */ -#ifndef GCC_PRINTFLIKE -#if defined(GCC_PRINTF) && !defined(printf) -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#else -#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_SCANFLIKE -#if defined(GCC_SCANF) && !defined(scanf) -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#else -#define GCC_SCANFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -/* - * Function prototypes. This is the complete X/Open Curses list of required - * functions. Those marked `generated' will have sources generated from the - * macro definitions later in this file, in order to satisfy XPG4.2 - * requirements. - */ - -extern NCURSES_EXPORT(int) addch (const chtype); /* generated */ -extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ -extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) addstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) baudrate (void); /* implemented */ -extern NCURSES_EXPORT(int) beep (void); /* implemented */ -extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ -extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ -extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ -extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ -extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ -extern NCURSES_EXPORT(int) cbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) clear (void); /* generated */ -extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) clrtobot (void); /* generated */ -extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ -extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) color_set (short,void*); /* generated */ -extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ -extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) curs_set (int); /* implemented */ -extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) delay_output (int); /* implemented */ -extern NCURSES_EXPORT(int) delch (void); /* generated */ -extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) deleteln (void); /* generated */ -extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) doupdate (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) echo (void); /* implemented */ -extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ -extern NCURSES_EXPORT(int) erase (void); /* generated */ -extern NCURSES_EXPORT(int) endwin (void); /* implemented */ -extern NCURSES_EXPORT(char) erasechar (void); /* implemented */ -extern NCURSES_EXPORT(void) filter (void); /* implemented */ -extern NCURSES_EXPORT(int) flash (void); /* implemented */ -extern NCURSES_EXPORT(int) flushinp (void); /* implemented */ -extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getch (void); /* generated */ -extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) getstr (char *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ -extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ -extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_il (void); /* implemented */ -extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ -extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) inch (void); /* generated */ -extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ -extern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) insch (chtype); /* generated */ -extern NCURSES_EXPORT(int) insdelln (int); /* generated */ -extern NCURSES_EXPORT(int) insertln (void); /* generated */ -extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) insstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) instr (char *); /* generated */ -extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ -extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ -extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char) killchar (void); /* implemented */ -extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char *) longname (void); /* implemented */ -extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) move (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ -extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(3,4); -extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(3,4); -extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ -extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ -extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) napms (int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ -extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) nl (void); /* implemented */ -extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) noecho (void); /* implemented */ -extern NCURSES_EXPORT(int) nonl (void); /* implemented */ -extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) noraw (void); /* implemented */ -extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ -extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ -extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ - GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ -extern NCURSES_EXPORT(void) qiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) raw (void); /* implemented */ -extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) refresh (void); /* generated */ -extern NCURSES_EXPORT(int) resetty (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ -extern NCURSES_EXPORT(int) savetty (void); /* implemented */ -extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(1,2); -extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scrl (int); /* generated */ -extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ -extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ -extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ -extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */ -extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_color (short); /* implemented */ -extern NCURSES_EXPORT(int) slk_init (int); /* implemented */ -extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ -extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ -extern NCURSES_EXPORT(int) standout (void); /* generated */ -extern NCURSES_EXPORT(int) standend (void); /* generated */ -extern NCURSES_EXPORT(int) start_color (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ -extern NCURSES_EXPORT(char *) termname (void); /* implemented */ -extern NCURSES_EXPORT(void) timeout (int); /* generated */ -extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) typeahead (int); /* implemented */ -extern NCURSES_EXPORT(int) ungetch (int); /* implemented */ -extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) use_env (bool); /* implemented */ -extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ -extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int)); /* implemented */ -extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ -extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ -extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ -extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */ -extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */ -extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ -extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ -extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ -extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ -extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ -extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ -extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ - GCC_PRINTFLIKE(2,3); -extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(2,3); -extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ - -/* - * These are also declared in : - */ -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) putp (const char *); /* implemented */ - -#if NCURSES_TPARM_VARARGS -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -/* - * These functions are not in X/Open, but we use them in macro definitions: - */ -extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ - -/* - * vid_attr() was implemented originally based on a draft of X/Open curses. - */ -#ifndef _XOPEN_SOURCE_EXTENDED -#define vid_attr(a,pair,opts) vidattr(a) -#endif - -/* - * These functions are extensions - not in X/Open Curses. - */ -#if 1 -#undef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 20081102 -typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); -typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); -extern NCURSES_EXPORT(bool) is_term_resized (int, int); -extern NCURSES_EXPORT(char *) keybound (int, int); -extern NCURSES_EXPORT(const char *) curses_version (void); -extern NCURSES_EXPORT(int) assume_default_colors (int, int); -extern NCURSES_EXPORT(int) define_key (const char *, int); -extern NCURSES_EXPORT(int) key_defined (const char *); -extern NCURSES_EXPORT(int) keyok (int, bool); -extern NCURSES_EXPORT(int) resize_term (int, int); -extern NCURSES_EXPORT(int) resizeterm (int, int); -extern NCURSES_EXPORT(int) set_escdelay (int); -extern NCURSES_EXPORT(int) set_tabsize (int); -extern NCURSES_EXPORT(int) use_default_colors (void); -extern NCURSES_EXPORT(int) use_extended_names (bool); -extern NCURSES_EXPORT(int) use_legacy_coding (int); -extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *); -extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *); -extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int); -extern NCURSES_EXPORT(void) nofilter(void); - -/* - * These extensions provide access to information stored in the WINDOW even - * when NCURSES_OPAQUE is set: - */ -extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */ - -#else -#define curses_version() NCURSES_VERSION -#endif - -/* attributes */ - -#define NCURSES_ATTR_SHIFT 8 -#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT)) - -#define A_NORMAL (1U - 1U) -#define A_ATTRIBUTES NCURSES_BITS(~(1U - 1U),0) -#define A_CHARTEXT (NCURSES_BITS(1U,0) - 1U) -#define A_COLOR NCURSES_BITS(((1U) << 8) - 1U,0) -#define A_STANDOUT NCURSES_BITS(1U,8) -#define A_UNDERLINE NCURSES_BITS(1U,9) -#define A_REVERSE NCURSES_BITS(1U,10) -#define A_BLINK NCURSES_BITS(1U,11) -#define A_DIM NCURSES_BITS(1U,12) -#define A_BOLD NCURSES_BITS(1U,13) -#define A_ALTCHARSET NCURSES_BITS(1U,14) -#define A_INVIS NCURSES_BITS(1U,15) -#define A_PROTECT NCURSES_BITS(1U,16) -#define A_HORIZONTAL NCURSES_BITS(1U,17) -#define A_LEFT NCURSES_BITS(1U,18) -#define A_LOW NCURSES_BITS(1U,19) -#define A_RIGHT NCURSES_BITS(1U,20) -#define A_TOP NCURSES_BITS(1U,21) -#define A_VERTICAL NCURSES_BITS(1U,22) - -/* - * Most of the pseudo functions are macros that either provide compatibility - * with older versions of curses, or provide inline functionality to improve - * performance. - */ - -/* - * These pseudo functions are always implemented as macros: - */ - -#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) -#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) -#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) -#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) - -#define getsyx(y,x) do { if (newscr) { \ - if (is_leaveok(newscr)) \ - (y) = (x) = -1; \ - else \ - getyx(newscr,(y), (x)); \ - } \ - } while(0) - -#define setsyx(y,x) do { if (newscr) { \ - if ((y) == -1 && (x) == -1) \ - leaveok(newscr, TRUE); \ - else { \ - leaveok(newscr, FALSE); \ - wmove(newscr, (y), (x)); \ - } \ - } \ - } while(0) - -#ifndef NCURSES_NOMACROS - -/* - * These miscellaneous pseudo functions are provided for compatibility: - */ - -#define wgetstr(w, s) wgetnstr(w, s, -1) -#define getnstr(s, n) wgetnstr(stdscr, s, n) - -#define setterm(term) setupterm(term, 1, (int *)0) - -#define fixterm() reset_prog_mode() -#define resetterm() reset_shell_mode() -#define saveterm() def_prog_mode() -#define crmode() cbreak() -#define nocrmode() nocbreak() -#define gettmode() - -/* It seems older SYSV curses versions define these */ -#if !NCURSES_OPAQUE -#define getattrs(win) ((win) ? (win)->_attrs : A_NORMAL) -#define getcurx(win) ((win) ? (win)->_curx : ERR) -#define getcury(win) ((win) ? (win)->_cury : ERR) -#define getbegx(win) ((win) ? (win)->_begx : ERR) -#define getbegy(win) ((win) ? (win)->_begy : ERR) -#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR) -#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR) -#define getparx(win) ((win) ? (win)->_parx : ERR) -#define getpary(win) ((win) ? (win)->_pary : ERR) -#endif /* NCURSES_OPAQUE */ - -#define wstandout(win) (wattrset(win,A_STANDOUT)) -#define wstandend(win) (wattrset(win,A_NORMAL)) - -#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) -#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) - -#if !NCURSES_OPAQUE -#if defined(_XOPEN_SOURCE_EXTENDED) && 0 -#define wattrset(win,at) ((win)->_color = PAIR_NUMBER(at), \ - (win)->_attrs = (at)) -#else -#define wattrset(win,at) ((win)->_attrs = (at)) -#endif -#endif /* NCURSES_OPAQUE */ - -#define scroll(win) wscrl(win,1) - -#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) -#define touchline(win, s, c) wtouchln((win), s, c, 1) -#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) - -#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) -#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) -#define hline(ch, n) whline(stdscr, ch, n) -#define vline(ch, n) wvline(stdscr, ch, n) - -#define winstr(w, s) winnstr(w, s, -1) -#define winchstr(w, s) winchnstr(w, s, -1) -#define winsstr(w, s) winsnstr(w, s, -1) - -#if !NCURSES_OPAQUE -#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1) -#endif /* NCURSES_OPAQUE */ - -#define waddstr(win,str) waddnstr(win,str,-1) -#define waddchstr(win,str) waddchnstr(win,str,-1) - -/* - * These apply to the first 256 color pairs. - */ -#define COLOR_PAIR(n) NCURSES_BITS(n, 0) -#define PAIR_NUMBER(a) (NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) - -/* - * pseudo functions for standard screen - */ - -#define addch(ch) waddch(stdscr,ch) -#define addchnstr(str,n) waddchnstr(stdscr,str,n) -#define addchstr(str) waddchstr(stdscr,str) -#define addnstr(str,n) waddnstr(stdscr,str,n) -#define addstr(str) waddnstr(stdscr,str,-1) -#define attroff(at) wattroff(stdscr,at) -#define attron(at) wattron(stdscr,at) -#define attrset(at) wattrset(stdscr,at) -#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o) -#define attr_off(a,o) wattr_off(stdscr,a,o) -#define attr_on(a,o) wattr_on(stdscr,a,o) -#define attr_set(a,c,o) wattr_set(stdscr,a,c,o) -#define bkgd(ch) wbkgd(stdscr,ch) -#define bkgdset(ch) wbkgdset(stdscr,ch) -#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) -#define clear() wclear(stdscr) -#define clrtobot() wclrtobot(stdscr) -#define clrtoeol() wclrtoeol(stdscr) -#define color_set(c,o) wcolor_set(stdscr,c,o) -#define delch() wdelch(stdscr) -#define deleteln() winsdelln(stdscr,-1) -#define echochar(c) wechochar(stdscr,c) -#define erase() werase(stdscr) -#define getch() wgetch(stdscr) -#define getstr(str) wgetstr(stdscr,str) -#define inch() winch(stdscr) -#define inchnstr(s,n) winchnstr(stdscr,s,n) -#define inchstr(s) winchstr(stdscr,s) -#define innstr(s,n) winnstr(stdscr,s,n) -#define insch(c) winsch(stdscr,c) -#define insdelln(n) winsdelln(stdscr,n) -#define insertln() winsdelln(stdscr,1) -#define insnstr(s,n) winsnstr(stdscr,s,n) -#define insstr(s) winsstr(stdscr,s) -#define instr(s) winstr(stdscr,s) -#define move(y,x) wmove(stdscr,y,x) -#define refresh() wrefresh(stdscr) -#define scrl(n) wscrl(stdscr,n) -#define setscrreg(t,b) wsetscrreg(stdscr,t,b) -#define standend() wstandend(stdscr) -#define standout() wstandout(stdscr) -#define timeout(delay) wtimeout(stdscr,delay) -#define wdeleteln(win) winsdelln(win,-1) -#define winsertln(win) winsdelln(win,1) - -/* - * mv functions - */ - -#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) -#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) -#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) -#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) -#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) -#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) -#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) -#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) -#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) -#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) -#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) -#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) -#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) -#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) -#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) -#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) -#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) -#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) -#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) -#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) - -#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) -#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) -#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) -#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) -#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) -#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) -#define mvdelch(y,x) mvwdelch(stdscr,y,x) -#define mvgetch(y,x) mvwgetch(stdscr,y,x) -#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) -#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) -#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) -#define mvinch(y,x) mvwinch(stdscr,y,x) -#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) -#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) -#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) -#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) -#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) -#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) -#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) -#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) - -/* - * Some wide-character functions can be implemented without the extensions. - */ -#if !NCURSES_OPAQUE -#define getbkgd(win) ((win)->_bkgd) -#endif /* NCURSES_OPAQUE */ - -#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) -#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) - -#if !NCURSES_OPAQUE -#if defined(_XOPEN_SOURCE_EXTENDED) && 0 -#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \ - (win)->_color = (p), \ - OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (win)->_color)), \ - OK) -#else -#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \ - OK) -#endif -#endif /* NCURSES_OPAQUE */ - -/* - * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use - * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to - * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already - * use stdarg.h, so... - */ -#define vw_printw vwprintw -#define vw_scanw vwscanw - -/* - * Export fallback function for use in C++ binding. - */ -#if !1 -#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) -NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); -#endif - -/* - * These macros are extensions - not in X/Open Curses. - */ -#if 1 -#if !NCURSES_OPAQUE -#define is_cleared(win) ((win)->_clear) -#define is_idcok(win) ((win)->_idcok) -#define is_idlok(win) ((win)->_idlok) -#define is_immedok(win) ((win)->_immed) -#define is_keypad(win) ((win)->_use_keypad) -#define is_leaveok(win) ((win)->_leaveok) -#define is_nodelay(win) ((win)->_delay == 0) -#define is_notimeout(win) ((win)->_notimeout) -#define is_scrollok(win) ((win)->_scroll) -#define is_syncok(win) ((win)->_sync) -#define wgetparent(win) ((win) ? (win)->_parent : 0) -#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) -#endif -#endif - -#endif /* NCURSES_NOMACROS */ - -/* - * Public variables. - * - * Notes: - * a. ESCDELAY was an undocumented feature under AIX curses. - * It gives the ESC expire time in milliseconds. - * b. ttytype is needed for backward compatibility - */ -#if 0 - -NCURSES_WRAPPED_VAR(WINDOW *, curscr); -NCURSES_WRAPPED_VAR(WINDOW *, newscr); -NCURSES_WRAPPED_VAR(WINDOW *, stdscr); -NCURSES_WRAPPED_VAR(char *, ttytype); -NCURSES_WRAPPED_VAR(int, COLORS); -NCURSES_WRAPPED_VAR(int, COLOR_PAIRS); -NCURSES_WRAPPED_VAR(int, COLS); -NCURSES_WRAPPED_VAR(int, ESCDELAY); -NCURSES_WRAPPED_VAR(int, LINES); -NCURSES_WRAPPED_VAR(int, TABSIZE); - -#define curscr NCURSES_PUBLIC_VAR(curscr()) -#define newscr NCURSES_PUBLIC_VAR(newscr()) -#define stdscr NCURSES_PUBLIC_VAR(stdscr()) -#define ttytype NCURSES_PUBLIC_VAR(ttytype()) -#define COLORS NCURSES_PUBLIC_VAR(COLORS()) -#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) -#define COLS NCURSES_PUBLIC_VAR(COLS()) -#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) -#define LINES NCURSES_PUBLIC_VAR(LINES()) -#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) - -#else - -extern NCURSES_EXPORT_VAR(WINDOW *) curscr; -extern NCURSES_EXPORT_VAR(WINDOW *) newscr; -extern NCURSES_EXPORT_VAR(WINDOW *) stdscr; -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT_VAR(int) COLORS; -extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; -extern NCURSES_EXPORT_VAR(int) COLS; -extern NCURSES_EXPORT_VAR(int) ESCDELAY; -extern NCURSES_EXPORT_VAR(int) LINES; -extern NCURSES_EXPORT_VAR(int) TABSIZE; - -#endif - -/* - * Pseudo-character tokens outside ASCII range. The curses wgetch() function - * will return any given one of these only if the corresponding k- capability - * is defined in your terminal's terminfo entry. - * - * Some keys (KEY_A1, etc) are arranged like this: - * a1 up a3 - * left b2 right - * c1 down c3 - * - * A few key codes do not depend upon the terminfo entry. - */ -#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ -#define KEY_MIN 0401 /* Minimum curses key */ -#define KEY_BREAK 0401 /* Break key (unreliable) */ -#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ -#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ -/* - * These definitions were generated by /SourceCache/ncurses/ncurses-44/ncurses/include/MKkey_defs.sh /SourceCache/ncurses/ncurses-44/ncurses/include/Caps - */ -#define KEY_DOWN 0402 /* down-arrow key */ -#define KEY_UP 0403 /* up-arrow key */ -#define KEY_LEFT 0404 /* left-arrow key */ -#define KEY_RIGHT 0405 /* right-arrow key */ -#define KEY_HOME 0406 /* home key */ -#define KEY_BACKSPACE 0407 /* backspace key */ -#define KEY_F0 0410 /* Function keys. Space for 64 */ -#define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */ -#define KEY_DL 0510 /* delete-line key */ -#define KEY_IL 0511 /* insert-line key */ -#define KEY_DC 0512 /* delete-character key */ -#define KEY_IC 0513 /* insert-character key */ -#define KEY_EIC 0514 /* sent by rmir or smir in insert mode */ -#define KEY_CLEAR 0515 /* clear-screen or erase key */ -#define KEY_EOS 0516 /* clear-to-end-of-screen key */ -#define KEY_EOL 0517 /* clear-to-end-of-line key */ -#define KEY_SF 0520 /* scroll-forward key */ -#define KEY_SR 0521 /* scroll-backward key */ -#define KEY_NPAGE 0522 /* next-page key */ -#define KEY_PPAGE 0523 /* previous-page key */ -#define KEY_STAB 0524 /* set-tab key */ -#define KEY_CTAB 0525 /* clear-tab key */ -#define KEY_CATAB 0526 /* clear-all-tabs key */ -#define KEY_ENTER 0527 /* enter/send key */ -#define KEY_PRINT 0532 /* print key */ -#define KEY_LL 0533 /* lower-left key (home down) */ -#define KEY_A1 0534 /* upper left of keypad */ -#define KEY_A3 0535 /* upper right of keypad */ -#define KEY_B2 0536 /* center of keypad */ -#define KEY_C1 0537 /* lower left of keypad */ -#define KEY_C3 0540 /* lower right of keypad */ -#define KEY_BTAB 0541 /* back-tab key */ -#define KEY_BEG 0542 /* begin key */ -#define KEY_CANCEL 0543 /* cancel key */ -#define KEY_CLOSE 0544 /* close key */ -#define KEY_COMMAND 0545 /* command key */ -#define KEY_COPY 0546 /* copy key */ -#define KEY_CREATE 0547 /* create key */ -#define KEY_END 0550 /* end key */ -#define KEY_EXIT 0551 /* exit key */ -#define KEY_FIND 0552 /* find key */ -#define KEY_HELP 0553 /* help key */ -#define KEY_MARK 0554 /* mark key */ -#define KEY_MESSAGE 0555 /* message key */ -#define KEY_MOVE 0556 /* move key */ -#define KEY_NEXT 0557 /* next key */ -#define KEY_OPEN 0560 /* open key */ -#define KEY_OPTIONS 0561 /* options key */ -#define KEY_PREVIOUS 0562 /* previous key */ -#define KEY_REDO 0563 /* redo key */ -#define KEY_REFERENCE 0564 /* reference key */ -#define KEY_REFRESH 0565 /* refresh key */ -#define KEY_REPLACE 0566 /* replace key */ -#define KEY_RESTART 0567 /* restart key */ -#define KEY_RESUME 0570 /* resume key */ -#define KEY_SAVE 0571 /* save key */ -#define KEY_SBEG 0572 /* shifted begin key */ -#define KEY_SCANCEL 0573 /* shifted cancel key */ -#define KEY_SCOMMAND 0574 /* shifted command key */ -#define KEY_SCOPY 0575 /* shifted copy key */ -#define KEY_SCREATE 0576 /* shifted create key */ -#define KEY_SDC 0577 /* shifted delete-character key */ -#define KEY_SDL 0600 /* shifted delete-line key */ -#define KEY_SELECT 0601 /* select key */ -#define KEY_SEND 0602 /* shifted end key */ -#define KEY_SEOL 0603 /* shifted clear-to-end-of-line key */ -#define KEY_SEXIT 0604 /* shifted exit key */ -#define KEY_SFIND 0605 /* shifted find key */ -#define KEY_SHELP 0606 /* shifted help key */ -#define KEY_SHOME 0607 /* shifted home key */ -#define KEY_SIC 0610 /* shifted insert-character key */ -#define KEY_SLEFT 0611 /* shifted left-arrow key */ -#define KEY_SMESSAGE 0612 /* shifted message key */ -#define KEY_SMOVE 0613 /* shifted move key */ -#define KEY_SNEXT 0614 /* shifted next key */ -#define KEY_SOPTIONS 0615 /* shifted options key */ -#define KEY_SPREVIOUS 0616 /* shifted previous key */ -#define KEY_SPRINT 0617 /* shifted print key */ -#define KEY_SREDO 0620 /* shifted redo key */ -#define KEY_SREPLACE 0621 /* shifted replace key */ -#define KEY_SRIGHT 0622 /* shifted right-arrow key */ -#define KEY_SRSUME 0623 /* shifted resume key */ -#define KEY_SSAVE 0624 /* shifted save key */ -#define KEY_SSUSPEND 0625 /* shifted suspend key */ -#define KEY_SUNDO 0626 /* shifted undo key */ -#define KEY_SUSPEND 0627 /* suspend key */ -#define KEY_UNDO 0630 /* undo key */ -#define KEY_MOUSE 0631 /* Mouse event has occurred */ -#define KEY_RESIZE 0632 /* Terminal resize event */ -#define KEY_EVENT 0633 /* We were interrupted by an event */ - -#define KEY_MAX 0777 /* Maximum key value is 0633 */ -/* $Id: curses.wide,v 1.34 2007/03/10 17:52:23 tom Exp $ */ -/* - * vile:cmode: - * This file is part of ncurses, designed to be appended after curses.h.in - * (see that file for the relevant copyright). - */ -#ifdef _XOPEN_SOURCE_EXTENDED - -extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs; - -#define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c]) - -#define WACS_BSSB NCURSES_WACS('l') -#define WACS_SSBB NCURSES_WACS('m') -#define WACS_BBSS NCURSES_WACS('k') -#define WACS_SBBS NCURSES_WACS('j') -#define WACS_SBSS NCURSES_WACS('u') -#define WACS_SSSB NCURSES_WACS('t') -#define WACS_SSBS NCURSES_WACS('v') -#define WACS_BSSS NCURSES_WACS('w') -#define WACS_BSBS NCURSES_WACS('q') -#define WACS_SBSB NCURSES_WACS('x') -#define WACS_SSSS NCURSES_WACS('n') - -#define WACS_ULCORNER WACS_BSSB -#define WACS_LLCORNER WACS_SSBB -#define WACS_URCORNER WACS_BBSS -#define WACS_LRCORNER WACS_SBBS -#define WACS_RTEE WACS_SBSS -#define WACS_LTEE WACS_SSSB -#define WACS_BTEE WACS_SSBS -#define WACS_TTEE WACS_BSSS -#define WACS_HLINE WACS_BSBS -#define WACS_VLINE WACS_SBSB -#define WACS_PLUS WACS_SSSS - -#define WACS_S1 NCURSES_WACS('o') /* scan line 1 */ -#define WACS_S9 NCURSES_WACS('s') /* scan line 9 */ -#define WACS_DIAMOND NCURSES_WACS('`') /* diamond */ -#define WACS_CKBOARD NCURSES_WACS('a') /* checker board */ -#define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */ -#define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */ -#define WACS_BULLET NCURSES_WACS('~') /* bullet */ - - /* Teletype 5410v1 symbols */ -#define WACS_LARROW NCURSES_WACS(',') /* arrow left */ -#define WACS_RARROW NCURSES_WACS('+') /* arrow right */ -#define WACS_DARROW NCURSES_WACS('.') /* arrow down */ -#define WACS_UARROW NCURSES_WACS('-') /* arrow up */ -#define WACS_BOARD NCURSES_WACS('h') /* board of squares */ -#define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */ -#define WACS_BLOCK NCURSES_WACS('0') /* solid square block */ - - /* ncurses extensions */ -#define WACS_S3 NCURSES_WACS('p') /* scan line 3 */ -#define WACS_S7 NCURSES_WACS('r') /* scan line 7 */ -#define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */ -#define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */ -#define WACS_PI NCURSES_WACS('{') /* Pi */ -#define WACS_NEQUAL NCURSES_WACS('|') /* not equal */ -#define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */ - -/* - * Function prototypes for wide-character operations. - * - * "generated" comments should include ":WIDEC" to make the corresponding - * functions ifdef'd in lib_gen.c - * - * "implemented" comments do not need this marker. - */ - -extern NCURSES_EXPORT(int) add_wch (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) add_wchnstr (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) add_wchstr (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) addnwstr (const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) addwstr (const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) bkgrnd (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */ -extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, short*, void*); /* implemented */ -extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */ -extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvaddnwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvaddwstr (int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_wstr (int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvinwstr (int, int, wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvvline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW *, int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwaddnwstr (WINDOW *, int, int, const wchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwaddwstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *); /* implemented */ -extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */ -extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */ -extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented */ -extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented */ -extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */ -extern NCURSES_EXPORT(int) wadd_wchstr (WINDOW *,const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) waddnwstr (WINDOW *,const wchar_t *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddwstr (WINDOW *,const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wbkgrnd (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(void) wbkgrndset (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* implemented */ -extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */ -extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wins_wstr (WINDOW *, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* implemented */ -extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */ - -#ifndef NCURSES_NOMACROS - -/* - * XSI curses macros for XPG4 conformance. - */ -#define add_wch(c) wadd_wch(stdscr,c) -#define add_wchnstr(str,n) wadd_wchnstr(stdscr,str,n) -#define add_wchstr(str) wadd_wchstr(stdscr,str) -#define addnwstr(wstr,n) waddnwstr(stdscr,wstr,n) -#define addwstr(wstr) waddwstr(stdscr,wstr) -#define bkgrnd(c) wbkgrnd(stdscr,c) -#define bkgrndset(c) wbkgrndset(stdscr,c) -#define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,l,r,t,b,tl,tr,bl,br) -#define box_set(w,v,h) wborder_set(w,v,v,h,h,0,0,0,0) -#define echo_wchar(c) wecho_wchar(stdscr,c) -#define get_wch(c) wget_wch(stdscr,c) -#define get_wstr(t) wget_wstr(stdscr,t) -#define getbkgrnd(wch) wgetbkgrnd(stdscr,wch) -#define getn_wstr(t,n) wgetn_wstr(stdscr,t,n) -#define hline_set(c,n) whline_set(stdscr,c,n) -#define in_wch(c) win_wch(stdscr,c) -#define in_wchnstr(c,n) win_wchnstr(stdscr,c,n) -#define in_wchstr(c) win_wchstr(stdscr,c) -#define innwstr(c,n) winnwstr(stdscr,c,n) -#define ins_nwstr(t,n) wins_nwstr(stdscr,t,n) -#define ins_wch(c) wins_wch(stdscr,c) -#define ins_wstr(t) wins_wstr(stdscr,t) -#define inwstr(c) winwstr(stdscr,c) -#define vline_set(c,n) wvline_set(stdscr,c,n) -#define wadd_wchstr(win,str) wadd_wchnstr(win,str,-1) -#define waddwstr(win,wstr) waddnwstr(win,wstr,-1) -#define wget_wstr(w,t) wgetn_wstr(w,t,-1) -#define win_wchstr(w,c) win_wchnstr(w,c,-1) -#define wins_wstr(w,t) wins_nwstr(w,t,-1) - -#if !NCURSES_OPAQUE -#define wgetbkgrnd(win,wch) (*wch = win->_bkgrnd, OK) -#endif - -#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,y,x,c) -#define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,y,x,s,n) -#define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,y,x,s) -#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,y,x,wstr,n) -#define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,y,x,wstr) -#define mvget_wch(y,x,c) mvwget_wch(stdscr,y,x,c) -#define mvget_wstr(y,x,t) mvwget_wstr(stdscr,y,x,t) -#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,y,x,t,n) -#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,y,x,c,n) -#define mvin_wch(y,x,c) mvwin_wch(stdscr,y,x,c) -#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,y,x,c,n) -#define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,y,x,c) -#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,y,x,c,n) -#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,y,x,t,n) -#define mvins_wch(y,x,c) mvwins_wch(stdscr,y,x,c) -#define mvins_wstr(y,x,t) mvwins_wstr(stdscr,y,x,t) -#define mvinwstr(y,x,c) mvwinwstr(stdscr,y,x,c) -#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,y,x,c,n) - -#define mvwadd_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wadd_wch(win,c)) -#define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : wadd_wchnstr(win,s,n)) -#define mvwadd_wchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : wadd_wchstr(win,s)) -#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,y,x) == ERR ? ERR : waddnwstr(win,wstr,n)) -#define mvwaddwstr(win,y,x,wstr) (wmove(win,y,x) == ERR ? ERR : waddwstr(win,wstr)) -#define mvwget_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wget_wch(win,c)) -#define mvwget_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wget_wstr(win,t)) -#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n)) -#define mvwhline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n)) -#define mvwin_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wch(win,c)) -#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : win_wchnstr(win,c,n)) -#define mvwin_wchstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wchstr(win,c)) -#define mvwinnwstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : winnwstr(win,c,n)) -#define mvwins_nwstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wins_nwstr(win,t,n)) -#define mvwins_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wins_wch(win,c)) -#define mvwins_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wins_wstr(win,t)) -#define mvwinwstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winwstr(win,c)) -#define mvwvline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n)) - -#endif /* NCURSES_NOMACROS */ - -#if defined(TRACE) || defined(NCURSES_TEST) -extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *); -extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *); -#endif - -#endif /* _XOPEN_SOURCE_EXTENDED */ -/* $Id: curses.tail,v 1.16 2008/07/05 20:20:38 tom Exp $ */ -/* - * vile:cmode: - * This file is part of ncurses, designed to be appended after curses.h.in - * (see that file for the relevant copyright). - */ - -/* mouse interface */ - -#if NCURSES_MOUSE_VERSION > 1 -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5)) -#else -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6)) -#endif - -#define NCURSES_BUTTON_RELEASED 001L -#define NCURSES_BUTTON_PRESSED 002L -#define NCURSES_BUTTON_CLICKED 004L -#define NCURSES_DOUBLE_CLICKED 010L -#define NCURSES_TRIPLE_CLICKED 020L -#define NCURSES_RESERVED_EVENT 040L - -/* event masks */ -#define BUTTON1_RELEASED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED) -#define BUTTON1_PRESSED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED) -#define BUTTON1_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED) -#define BUTTON1_DOUBLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED) -#define BUTTON1_TRIPLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED) - -#define BUTTON2_RELEASED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED) -#define BUTTON2_PRESSED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED) -#define BUTTON2_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED) -#define BUTTON2_DOUBLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED) -#define BUTTON2_TRIPLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED) - -#define BUTTON3_RELEASED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED) -#define BUTTON3_PRESSED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED) -#define BUTTON3_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED) -#define BUTTON3_DOUBLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED) -#define BUTTON3_TRIPLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED) - -#define BUTTON4_RELEASED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED) -#define BUTTON4_PRESSED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED) -#define BUTTON4_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED) -#define BUTTON4_DOUBLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED) -#define BUTTON4_TRIPLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED) - -/* - * In 32 bits the version-1 scheme does not provide enough space for a 5th - * button, unless we choose to change the ABI by omitting the reserved-events. - */ -#if NCURSES_MOUSE_VERSION > 1 - -#define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED) -#define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED) -#define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED) -#define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED) -#define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED) - -#define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L) -#define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L) -#define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L) -#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L) - -#else - -#define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT) -#define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT) -#define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT) -#define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT) - -#define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L) -#define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L) -#define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L) -#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L) - -#endif - -#define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1) - -/* macros to extract single event-bits from masks */ -#define BUTTON_RELEASE(e, x) ((e) & NCURSES_MOUSE_MASK(x, 001)) -#define BUTTON_PRESS(e, x) ((e) & NCURSES_MOUSE_MASK(x, 002)) -#define BUTTON_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 004)) -#define BUTTON_DOUBLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 010)) -#define BUTTON_TRIPLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 020)) -#define BUTTON_RESERVED_EVENT(e, x) ((e) & NCURSES_MOUSE_MASK(x, 040)) - -typedef struct -{ - short id; /* ID to distinguish multiple devices */ - int x, y, z; /* event coordinates (character-cell) */ - mmask_t bstate; /* button state bits */ -} -MEVENT; - -extern NCURSES_EXPORT(int) getmouse (MEVENT *); -extern NCURSES_EXPORT(int) ungetmouse (MEVENT *); -extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *); -extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int); -extern NCURSES_EXPORT(int) mouseinterval (int); -extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool); -extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */ - -#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen) - -/* other non-XSI functions */ - -extern NCURSES_EXPORT(int) mcprint (char *, int); /* direct data to printer */ -extern NCURSES_EXPORT(int) has_key (int); /* do we have given key? */ - -/* Debugging : use with libncurses_g.a */ - -extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *); -extern NCURSES_EXPORT(char *) _traceattr (attr_t); -extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype); -extern NCURSES_EXPORT(char *) _nc_tracebits (void); -extern NCURSES_EXPORT(char *) _tracechar (int); -extern NCURSES_EXPORT(char *) _tracechtype (chtype); -extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype); -#ifdef _XOPEN_SOURCE_EXTENDED -#define _tracech_t _tracecchar_t -extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *); -#define _tracech_t2 _tracecchar_t2 -extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *); -#else -#define _tracech_t _tracechtype -#define _tracech_t2 _tracechtype2 -#endif -extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *); -extern NCURSES_EXPORT(void) trace (const unsigned int); - -/* trace masks */ -#define TRACE_DISABLE 0x0000 /* turn off tracing */ -#define TRACE_TIMES 0x0001 /* trace user and system times of updates */ -#define TRACE_TPUTS 0x0002 /* trace tputs calls */ -#define TRACE_UPDATE 0x0004 /* trace update actions, old & new screens */ -#define TRACE_MOVE 0x0008 /* trace cursor moves and scrolls */ -#define TRACE_CHARPUT 0x0010 /* trace all character outputs */ -#define TRACE_ORDINARY 0x001F /* trace all update actions */ -#define TRACE_CALLS 0x0020 /* trace all curses calls */ -#define TRACE_VIRTPUT 0x0040 /* trace virtual character puts */ -#define TRACE_IEVENT 0x0080 /* trace low-level input processing */ -#define TRACE_BITS 0x0100 /* trace state of TTY control bits */ -#define TRACE_ICALLS 0x0200 /* trace internal/nested calls */ -#define TRACE_CCALLS 0x0400 /* trace per-character calls */ -#define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */ -#define TRACE_ATTRS 0x1000 /* trace attribute updates */ - -#define TRACE_SHIFT 13 /* number of bits in the trace masks */ -#define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */ - -#if defined(TRACE) || defined(NCURSES_TEST) -extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */ -extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); -#define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */ -#define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */ -#define OPTIMIZE_SCROLL 0x04 /* scroll optimization */ -#define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */ -#endif - -#ifdef __cplusplus - -#ifndef NCURSES_NOMACROS - -/* these names conflict with STL */ -#undef box -#undef clear -#undef erase -#undef move -#undef refresh - -#endif /* NCURSES_NOMACROS */ - -} -#endif - -#endif /* __NCURSES_H */ diff --git a/ncurses/include/curses.tail b/ncurses/include/curses.tail index aef7c37..9b3910a 100644 --- a/ncurses/include/curses.tail +++ b/ncurses/include/curses.tail @@ -111,6 +111,7 @@ extern NCURSES_EXPORT(int) has_key (int); /* do we have given key? */ /* Debugging : use with libncurses_g.a */ +#ifdef TRACE extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2); extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *); extern NCURSES_EXPORT(char *) _traceattr (attr_t); @@ -130,6 +131,7 @@ extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *); #endif extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *); extern NCURSES_EXPORT(void) trace (const unsigned int); +#endif /* trace masks */ #define TRACE_DISABLE 0x0000 /* turn off tracing */ diff --git a/ncurses/include/hashsize.h b/ncurses/include/hashsize.h deleted file mode 100644 index a0bf42d..0000000 --- a/ncurses/include/hashsize.h +++ /dev/null @@ -1,6 +0,0 @@ -/* - * hashsize.h -- hash and token table constants - */ - -#define CAPTABSIZE 497 -#define HASHTABSIZE ( 497 * 2) diff --git a/ncurses/include/init_keytry.h b/ncurses/include/init_keytry.h deleted file mode 100644 index a05e097..0000000 --- a/ncurses/include/init_keytry.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NCU_KEYS_H -#define NCU_KEYS_H 1 - -/* This file was generated by MAKE_KEYS */ - -#if BROKEN_LINKER -static -#endif -const struct tinfo_fkeys _nc_tinfo_fkeys[] = { - { 0, 0} }; - -#endif /* NCU_KEYS_H */ diff --git a/ncurses/include/ncurses.h b/ncurses/include/ncurses.h deleted file mode 100644 index 1a2c6e5..0000000 --- a/ncurses/include/ncurses.h +++ /dev/null @@ -1,1757 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - ****************************************************************************/ - -/**************************************************************************** - * Author: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* $Id: curses.h.in,v 1.187 2008/08/30 20:11:29 tom Exp $ */ - -#ifndef __NCURSES_H -#define __NCURSES_H - -#define CURSES 1 -#define CURSES_H 1 - -/* This should be defined for the enhanced functionality to be visible. - * However, some of the wide-character (enhanced) functionality is missing. - * So we do not define it (yet). -#define _XOPEN_CURSES 1 - */ - -/* These are defined only in curses.h, and are used for conditional compiles */ -#define NCURSES_VERSION_MAJOR 5 -#define NCURSES_VERSION_MINOR 7 -#define NCURSES_VERSION_PATCH 20081102 - -/* This is defined in more than one ncurses header, for identification */ -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.7" - -/* - * Identify the mouse encoding version. - */ -#define NCURSES_MOUSE_VERSION 1 - -/* - * Definitions to facilitate DLL's. - */ -#include - -/* - * User-definable tweak to disable the include of . - */ -#ifndef NCURSES_ENABLE_STDBOOL_H -#define NCURSES_ENABLE_STDBOOL_H 1 -#endif - -/* - * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses - * configured using --disable-macros. - */ -#ifdef NCURSES_NOMACROS -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T attr_t -#endif -#endif /* NCURSES_NOMACROS */ - -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T int -#endif - -/* - * Expands to 'const' if ncurses is configured using --enable-const. Note that - * doing so makes it incompatible with other implementations of X/Open Curses. - */ -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_INLINE -#define NCURSES_INLINE inline - -/* - * The internal type used for color values - */ -#undef NCURSES_COLOR_T -#define NCURSES_COLOR_T short - -/* - * Definition used to make WINDOW and similar structs opaque. - */ -#ifndef NCURSES_OPAQUE -#define NCURSES_OPAQUE 1 -#endif - -/* - * The internal type used for window dimensions. - */ -#undef NCURSES_SIZE_T -#define NCURSES_SIZE_T short - -/* - * Control whether tparm() supports varargs or fixed-parameter list. - */ -#undef NCURSES_TPARM_VARARGS -#define NCURSES_TPARM_VARARGS 1 - -/* - * NCURSES_CH_T is used in building the library, but not used otherwise in - * this header file, since that would make the normal/wide-character versions - * of the header incompatible. - */ -#undef NCURSES_CH_T -#define NCURSES_CH_T cchar_t - -#if 0 && defined(_LP64) -typedef unsigned chtype; -typedef unsigned mmask_t; -#else -typedef unsigned int chtype; -typedef unsigned long mmask_t; -#endif - -#include -#include -#include /* we need va_list */ -#ifdef _XOPEN_SOURCE_EXTENDED -#include /* we want wchar_t */ -#endif /* _XOPEN_SOURCE_EXTENDED */ - -/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also - * implement it. If so, we must use the C++ compiler's type to avoid conflict - * with other interfaces. - * - * A further complication is that may declare 'bool' to be a - * different type, such as an enum which is not necessarily compatible with - * C++. If we have , make 'bool' a macro, so users may #undef it. - * Otherwise, let it remain a typedef to avoid conflicts with other #define's. - * In either case, make a typedef for NCURSES_BOOL which can be used if needed - * from either C or C++. - */ - -#undef TRUE -#define TRUE 1 - -#undef FALSE -#define FALSE 0 - -typedef unsigned char NCURSES_BOOL; - -#if defined(__cplusplus) /* __cplusplus, etc. */ - -/* use the C++ compiler's bool type */ -#define NCURSES_BOOL bool - -#else /* c89, c99, etc. */ - -#if NCURSES_ENABLE_STDBOOL_H -#include -/* use whatever the C compiler decides bool really is */ -#define NCURSES_BOOL bool -#else -/* there is no predefined bool - use our own */ -#undef bool -#define bool NCURSES_BOOL -#endif - -#endif /* !__cplusplus, etc. */ - -#ifdef __cplusplus -extern "C" { -#define NCURSES_CAST(type,value) static_cast(value) -#else -#define NCURSES_CAST(type,value) (type)(value) -#endif - -/* - * X/Open attributes. In the ncurses implementation, they are identical to the - * A_ attributes. - */ -#define WA_ATTRIBUTES A_ATTRIBUTES -#define WA_NORMAL A_NORMAL -#define WA_STANDOUT A_STANDOUT -#define WA_UNDERLINE A_UNDERLINE -#define WA_REVERSE A_REVERSE -#define WA_BLINK A_BLINK -#define WA_DIM A_DIM -#define WA_BOLD A_BOLD -#define WA_ALTCHARSET A_ALTCHARSET -#define WA_INVIS A_INVIS -#define WA_PROTECT A_PROTECT -#define WA_HORIZONTAL A_HORIZONTAL -#define WA_LEFT A_LEFT -#define WA_LOW A_LOW -#define WA_RIGHT A_RIGHT -#define WA_TOP A_TOP -#define WA_VERTICAL A_VERTICAL - -/* colors */ -#define COLOR_BLACK 0 -#define COLOR_RED 1 -#define COLOR_GREEN 2 -#define COLOR_YELLOW 3 -#define COLOR_BLUE 4 -#define COLOR_MAGENTA 5 -#define COLOR_CYAN 6 -#define COLOR_WHITE 7 - -/* line graphics */ - -#if 0 || 0 -NCURSES_WRAPPED_VAR(chtype*, acs_map); -#define acs_map (_nc_acs_map()) -#else -extern NCURSES_EXPORT_VAR(chtype) acs_map[]; -#endif - -#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)]) - -/* VT100 symbols begin here */ -#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ -#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ -#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ -#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ -#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ -#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ -#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ -#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ -#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ -#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ -#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ -#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ -#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ -#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ -#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ -#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ -#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ -#define ACS_BULLET NCURSES_ACS('~') /* bullet */ -/* Teletype 5410v1 symbols begin here */ -#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ -#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ -#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ -#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ -#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ -#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ -#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ -/* - * These aren't documented, but a lot of System Vs have them anyway - * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). - * The ACS_names may not match AT&T's, our source didn't know them. - */ -#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ -#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ -#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ -#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ -#define ACS_PI NCURSES_ACS('{') /* Pi */ -#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ -#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ - -/* - * Line drawing ACS names are of the form ACS_trbl, where t is the top, r - * is the right, b is the bottom, and l is the left. t, r, b, and l might - * be B (blank), S (single), D (double), or T (thick). The subset defined - * here only uses B and S. - */ -#define ACS_BSSB ACS_ULCORNER -#define ACS_SSBB ACS_LLCORNER -#define ACS_BBSS ACS_URCORNER -#define ACS_SBBS ACS_LRCORNER -#define ACS_SBSS ACS_RTEE -#define ACS_SSSB ACS_LTEE -#define ACS_SSBS ACS_BTEE -#define ACS_BSSS ACS_TTEE -#define ACS_BSBS ACS_HLINE -#define ACS_SBSB ACS_VLINE -#define ACS_SSSS ACS_PLUS - -#undef ERR -#define ERR (-1) - -#undef OK -#define OK (0) - -/* values for the _flags member */ -#define _SUBWIN 0x01 /* is this a sub-window? */ -#define _ENDLINE 0x02 /* is the window flush right? */ -#define _FULLWIN 0x04 /* is the window full-screen? */ -#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ -#define _ISPAD 0x10 /* is this window a pad? */ -#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ -#define _WRAPPED 0x40 /* cursor was just wrappped */ - -/* - * this value is used in the firstchar and lastchar fields to mark - * unchanged lines - */ -#define _NOCHANGE -1 - -/* - * this value is used in the oldindex field to mark lines created by insertions - * and scrolls. - */ -#define _NEWINDEX -1 - -typedef struct screen SCREEN; -typedef struct _win_st WINDOW; - -typedef chtype attr_t; /* ...must be at least as wide as chtype */ - -#ifdef _XOPEN_SOURCE_EXTENDED - -#if 0 -#ifdef mblen /* libutf8.h defines it w/o undefining first */ -#undef mblen -#endif -#include -#endif - -#if 1 -#include /* ...to get mbstate_t, etc. */ -#endif - -#if 0 -typedef unsigned short wchar_t1; -#endif - -#if 0 -typedef unsigned int wint_t1; -#endif - -#define CCHARW_MAX 5 -typedef struct -{ - attr_t attr; - wchar_t chars[CCHARW_MAX]; -#if 0 -#undef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS 20081102 - int ext_color; /* color pair, must be more than 16-bits */ -#endif -} -cchar_t; - -#endif /* _XOPEN_SOURCE_EXTENDED */ - -#if !NCURSES_OPAQUE -struct ldat; - -struct _win_st -{ - NCURSES_SIZE_T _cury, _curx; /* current cursor position */ - - /* window location and size */ - NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ - NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ - - short _flags; /* window state flags */ - - /* attribute tracking */ - attr_t _attrs; /* current attribute for non-space character */ - chtype _bkgd; /* current background char/attribute pair */ - - /* option values set by user */ - bool _notimeout; /* no time out on function-key entry? */ - bool _clear; /* consider all data in the window invalid? */ - bool _leaveok; /* OK to not reset cursor on exit? */ - bool _scroll; /* OK to scroll this window? */ - bool _idlok; /* OK to use insert/delete line? */ - bool _idcok; /* OK to use insert/delete char? */ - bool _immed; /* window in immed mode? (not yet used) */ - bool _sync; /* window in sync mode? */ - bool _use_keypad; /* process function keys into KEY_ symbols? */ - int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ - - struct ldat *_line; /* the actual line data */ - - /* global screen state */ - NCURSES_SIZE_T _regtop; /* top line of scrolling region */ - NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ - - /* these are used only if this is a sub-window */ - int _parx; /* x coordinate of this window in parent */ - int _pary; /* y coordinate of this window in parent */ - WINDOW *_parent; /* pointer to parent if a sub-window */ - - /* these are used only if this is a pad */ - struct pdat - { - NCURSES_SIZE_T _pad_y, _pad_x; - NCURSES_SIZE_T _pad_top, _pad_left; - NCURSES_SIZE_T _pad_bottom, _pad_right; - } _pad; - - NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ - -#ifdef _XOPEN_SOURCE_EXTENDED - cchar_t _bkgrnd; /* current background char/attribute pair */ -#if 0 - int _color; /* current color-pair for non-space character */ -#endif -#endif -}; -#endif /* NCURSES_OPAQUE */ - -/* - * This is an extension to support events... - */ -#if 1 -#ifdef NCURSES_WGETCH_EVENTS -#if !defined(__BEOS__) || defined(__HAIKU__) - /* Fix _nc_timed_wait() on BEOS... */ -# define NCURSES_EVENT_VERSION 1 -#endif /* !defined(__BEOS__) */ - -/* - * Bits to set in _nc_event.data.flags - */ -# define _NC_EVENT_TIMEOUT_MSEC 1 -# define _NC_EVENT_FILE 2 -# define _NC_EVENT_FILE_READABLE 2 -# if 0 /* Not supported yet... */ -# define _NC_EVENT_FILE_WRITABLE 4 -# define _NC_EVENT_FILE_EXCEPTION 8 -# endif - -typedef struct -{ - int type; - union - { - long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ - struct - { - unsigned int flags; - int fd; - unsigned int result; - } fev; /* _NC_EVENT_FILE */ - } data; -} _nc_event; - -typedef struct -{ - int count; - int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ - _nc_event *events[1]; -} _nc_eventlist; - -extern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *); /* experimental */ -extern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */ - -#endif /* NCURSES_WGETCH_EVENTS */ -#endif /* NCURSES_EXT_FUNCS */ - -/* - * GCC (and some other compilers) define '__attribute__'; we're using this - * macro to alert the compiler to flag inconsistencies in printf/scanf-like - * function calls. Just in case '__attribute__' isn't defined, make a dummy. - * Old versions of G++ do not accept it anyway, at least not consistently with - * GCC. - */ -#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) -#define __attribute__(p) /* nothing */ -#endif - -/* - * We cannot define these in ncurses_cfg.h, since they require parameters to be - * passed (that is non-portable). If you happen to be using gcc with warnings - * enabled, define - * GCC_PRINTF - * GCC_SCANF - * to improve checking of calls to printw(), etc. - */ -#ifndef GCC_PRINTFLIKE -#if defined(GCC_PRINTF) && !defined(printf) -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#else -#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_SCANFLIKE -#if defined(GCC_SCANF) && !defined(scanf) -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#else -#define GCC_SCANFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -/* - * Function prototypes. This is the complete X/Open Curses list of required - * functions. Those marked `generated' will have sources generated from the - * macro definitions later in this file, in order to satisfy XPG4.2 - * requirements. - */ - -extern NCURSES_EXPORT(int) addch (const chtype); /* generated */ -extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ -extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) addstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) baudrate (void); /* implemented */ -extern NCURSES_EXPORT(int) beep (void); /* implemented */ -extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ -extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ -extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ -extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ -extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ -extern NCURSES_EXPORT(int) cbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) clear (void); /* generated */ -extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) clrtobot (void); /* generated */ -extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ -extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) color_set (short,void*); /* generated */ -extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ -extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) curs_set (int); /* implemented */ -extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) delay_output (int); /* implemented */ -extern NCURSES_EXPORT(int) delch (void); /* generated */ -extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) deleteln (void); /* generated */ -extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) doupdate (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) echo (void); /* implemented */ -extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ -extern NCURSES_EXPORT(int) erase (void); /* generated */ -extern NCURSES_EXPORT(int) endwin (void); /* implemented */ -extern NCURSES_EXPORT(char) erasechar (void); /* implemented */ -extern NCURSES_EXPORT(void) filter (void); /* implemented */ -extern NCURSES_EXPORT(int) flash (void); /* implemented */ -extern NCURSES_EXPORT(int) flushinp (void); /* implemented */ -extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getch (void); /* generated */ -extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) getstr (char *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ -extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ -extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_il (void); /* implemented */ -extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ -extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) inch (void); /* generated */ -extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ -extern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) insch (chtype); /* generated */ -extern NCURSES_EXPORT(int) insdelln (int); /* generated */ -extern NCURSES_EXPORT(int) insertln (void); /* generated */ -extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) insstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) instr (char *); /* generated */ -extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ -extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ -extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char) killchar (void); /* implemented */ -extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char *) longname (void); /* implemented */ -extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) move (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ -extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(3,4); -extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(3,4); -extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ -extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ -extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) napms (int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ -extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) nl (void); /* implemented */ -extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) noecho (void); /* implemented */ -extern NCURSES_EXPORT(int) nonl (void); /* implemented */ -extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) noraw (void); /* implemented */ -extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ -extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ -extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ - GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ -extern NCURSES_EXPORT(void) qiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) raw (void); /* implemented */ -extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) refresh (void); /* generated */ -extern NCURSES_EXPORT(int) resetty (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ -extern NCURSES_EXPORT(int) savetty (void); /* implemented */ -extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(1,2); -extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scrl (int); /* generated */ -extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ -extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ -extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ -extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */ -extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_color (short); /* implemented */ -extern NCURSES_EXPORT(int) slk_init (int); /* implemented */ -extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ -extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ -extern NCURSES_EXPORT(int) standout (void); /* generated */ -extern NCURSES_EXPORT(int) standend (void); /* generated */ -extern NCURSES_EXPORT(int) start_color (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ -extern NCURSES_EXPORT(char *) termname (void); /* implemented */ -extern NCURSES_EXPORT(void) timeout (int); /* generated */ -extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) typeahead (int); /* implemented */ -extern NCURSES_EXPORT(int) ungetch (int); /* implemented */ -extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) use_env (bool); /* implemented */ -extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ -extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int)); /* implemented */ -extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ -extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ -extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ -extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */ -extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */ -extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ -extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ -extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ -extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ -extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ -extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ -extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ - GCC_PRINTFLIKE(2,3); -extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(2,3); -extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ - -/* - * These are also declared in : - */ -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) putp (const char *); /* implemented */ - -#if NCURSES_TPARM_VARARGS -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -/* - * These functions are not in X/Open, but we use them in macro definitions: - */ -extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ - -/* - * vid_attr() was implemented originally based on a draft of X/Open curses. - */ -#ifndef _XOPEN_SOURCE_EXTENDED -#define vid_attr(a,pair,opts) vidattr(a) -#endif - -/* - * These functions are extensions - not in X/Open Curses. - */ -#if 1 -#undef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 20081102 -typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); -typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); -extern NCURSES_EXPORT(bool) is_term_resized (int, int); -extern NCURSES_EXPORT(char *) keybound (int, int); -extern NCURSES_EXPORT(const char *) curses_version (void); -extern NCURSES_EXPORT(int) assume_default_colors (int, int); -extern NCURSES_EXPORT(int) define_key (const char *, int); -extern NCURSES_EXPORT(int) key_defined (const char *); -extern NCURSES_EXPORT(int) keyok (int, bool); -extern NCURSES_EXPORT(int) resize_term (int, int); -extern NCURSES_EXPORT(int) resizeterm (int, int); -extern NCURSES_EXPORT(int) set_escdelay (int); -extern NCURSES_EXPORT(int) set_tabsize (int); -extern NCURSES_EXPORT(int) use_default_colors (void); -extern NCURSES_EXPORT(int) use_extended_names (bool); -extern NCURSES_EXPORT(int) use_legacy_coding (int); -extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *); -extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *); -extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int); -extern NCURSES_EXPORT(void) nofilter(void); - -/* - * These extensions provide access to information stored in the WINDOW even - * when NCURSES_OPAQUE is set: - */ -extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */ - -#else -#define curses_version() NCURSES_VERSION -#endif - -/* attributes */ - -#define NCURSES_ATTR_SHIFT 8 -#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT)) - -#define A_NORMAL (1U - 1U) -#define A_ATTRIBUTES NCURSES_BITS(~(1U - 1U),0) -#define A_CHARTEXT (NCURSES_BITS(1U,0) - 1U) -#define A_COLOR NCURSES_BITS(((1U) << 8) - 1U,0) -#define A_STANDOUT NCURSES_BITS(1U,8) -#define A_UNDERLINE NCURSES_BITS(1U,9) -#define A_REVERSE NCURSES_BITS(1U,10) -#define A_BLINK NCURSES_BITS(1U,11) -#define A_DIM NCURSES_BITS(1U,12) -#define A_BOLD NCURSES_BITS(1U,13) -#define A_ALTCHARSET NCURSES_BITS(1U,14) -#define A_INVIS NCURSES_BITS(1U,15) -#define A_PROTECT NCURSES_BITS(1U,16) -#define A_HORIZONTAL NCURSES_BITS(1U,17) -#define A_LEFT NCURSES_BITS(1U,18) -#define A_LOW NCURSES_BITS(1U,19) -#define A_RIGHT NCURSES_BITS(1U,20) -#define A_TOP NCURSES_BITS(1U,21) -#define A_VERTICAL NCURSES_BITS(1U,22) - -/* - * Most of the pseudo functions are macros that either provide compatibility - * with older versions of curses, or provide inline functionality to improve - * performance. - */ - -/* - * These pseudo functions are always implemented as macros: - */ - -#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) -#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) -#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) -#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) - -#define getsyx(y,x) do { if (newscr) { \ - if (is_leaveok(newscr)) \ - (y) = (x) = -1; \ - else \ - getyx(newscr,(y), (x)); \ - } \ - } while(0) - -#define setsyx(y,x) do { if (newscr) { \ - if ((y) == -1 && (x) == -1) \ - leaveok(newscr, TRUE); \ - else { \ - leaveok(newscr, FALSE); \ - wmove(newscr, (y), (x)); \ - } \ - } \ - } while(0) - -#ifndef NCURSES_NOMACROS - -/* - * These miscellaneous pseudo functions are provided for compatibility: - */ - -#define wgetstr(w, s) wgetnstr(w, s, -1) -#define getnstr(s, n) wgetnstr(stdscr, s, n) - -#define setterm(term) setupterm(term, 1, (int *)0) - -#define fixterm() reset_prog_mode() -#define resetterm() reset_shell_mode() -#define saveterm() def_prog_mode() -#define crmode() cbreak() -#define nocrmode() nocbreak() -#define gettmode() - -/* It seems older SYSV curses versions define these */ -#if !NCURSES_OPAQUE -#define getattrs(win) ((win) ? (win)->_attrs : A_NORMAL) -#define getcurx(win) ((win) ? (win)->_curx : ERR) -#define getcury(win) ((win) ? (win)->_cury : ERR) -#define getbegx(win) ((win) ? (win)->_begx : ERR) -#define getbegy(win) ((win) ? (win)->_begy : ERR) -#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR) -#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR) -#define getparx(win) ((win) ? (win)->_parx : ERR) -#define getpary(win) ((win) ? (win)->_pary : ERR) -#endif /* NCURSES_OPAQUE */ - -#define wstandout(win) (wattrset(win,A_STANDOUT)) -#define wstandend(win) (wattrset(win,A_NORMAL)) - -#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) -#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) - -#if !NCURSES_OPAQUE -#if defined(_XOPEN_SOURCE_EXTENDED) && 0 -#define wattrset(win,at) ((win)->_color = PAIR_NUMBER(at), \ - (win)->_attrs = (at)) -#else -#define wattrset(win,at) ((win)->_attrs = (at)) -#endif -#endif /* NCURSES_OPAQUE */ - -#define scroll(win) wscrl(win,1) - -#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) -#define touchline(win, s, c) wtouchln((win), s, c, 1) -#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) - -#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) -#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) -#define hline(ch, n) whline(stdscr, ch, n) -#define vline(ch, n) wvline(stdscr, ch, n) - -#define winstr(w, s) winnstr(w, s, -1) -#define winchstr(w, s) winchnstr(w, s, -1) -#define winsstr(w, s) winsnstr(w, s, -1) - -#if !NCURSES_OPAQUE -#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1) -#endif /* NCURSES_OPAQUE */ - -#define waddstr(win,str) waddnstr(win,str,-1) -#define waddchstr(win,str) waddchnstr(win,str,-1) - -/* - * These apply to the first 256 color pairs. - */ -#define COLOR_PAIR(n) NCURSES_BITS(n, 0) -#define PAIR_NUMBER(a) (NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) - -/* - * pseudo functions for standard screen - */ - -#define addch(ch) waddch(stdscr,ch) -#define addchnstr(str,n) waddchnstr(stdscr,str,n) -#define addchstr(str) waddchstr(stdscr,str) -#define addnstr(str,n) waddnstr(stdscr,str,n) -#define addstr(str) waddnstr(stdscr,str,-1) -#define attroff(at) wattroff(stdscr,at) -#define attron(at) wattron(stdscr,at) -#define attrset(at) wattrset(stdscr,at) -#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o) -#define attr_off(a,o) wattr_off(stdscr,a,o) -#define attr_on(a,o) wattr_on(stdscr,a,o) -#define attr_set(a,c,o) wattr_set(stdscr,a,c,o) -#define bkgd(ch) wbkgd(stdscr,ch) -#define bkgdset(ch) wbkgdset(stdscr,ch) -#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) -#define clear() wclear(stdscr) -#define clrtobot() wclrtobot(stdscr) -#define clrtoeol() wclrtoeol(stdscr) -#define color_set(c,o) wcolor_set(stdscr,c,o) -#define delch() wdelch(stdscr) -#define deleteln() winsdelln(stdscr,-1) -#define echochar(c) wechochar(stdscr,c) -#define erase() werase(stdscr) -#define getch() wgetch(stdscr) -#define getstr(str) wgetstr(stdscr,str) -#define inch() winch(stdscr) -#define inchnstr(s,n) winchnstr(stdscr,s,n) -#define inchstr(s) winchstr(stdscr,s) -#define innstr(s,n) winnstr(stdscr,s,n) -#define insch(c) winsch(stdscr,c) -#define insdelln(n) winsdelln(stdscr,n) -#define insertln() winsdelln(stdscr,1) -#define insnstr(s,n) winsnstr(stdscr,s,n) -#define insstr(s) winsstr(stdscr,s) -#define instr(s) winstr(stdscr,s) -#define move(y,x) wmove(stdscr,y,x) -#define refresh() wrefresh(stdscr) -#define scrl(n) wscrl(stdscr,n) -#define setscrreg(t,b) wsetscrreg(stdscr,t,b) -#define standend() wstandend(stdscr) -#define standout() wstandout(stdscr) -#define timeout(delay) wtimeout(stdscr,delay) -#define wdeleteln(win) winsdelln(win,-1) -#define winsertln(win) winsdelln(win,1) - -/* - * mv functions - */ - -#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) -#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) -#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) -#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) -#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) -#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) -#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) -#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) -#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) -#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) -#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) -#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) -#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) -#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) -#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) -#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) -#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) -#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) -#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) -#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) - -#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) -#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) -#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) -#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) -#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) -#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) -#define mvdelch(y,x) mvwdelch(stdscr,y,x) -#define mvgetch(y,x) mvwgetch(stdscr,y,x) -#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) -#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) -#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) -#define mvinch(y,x) mvwinch(stdscr,y,x) -#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) -#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) -#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) -#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) -#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) -#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) -#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) -#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) - -/* - * Some wide-character functions can be implemented without the extensions. - */ -#if !NCURSES_OPAQUE -#define getbkgd(win) ((win)->_bkgd) -#endif /* NCURSES_OPAQUE */ - -#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) -#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) - -#if !NCURSES_OPAQUE -#if defined(_XOPEN_SOURCE_EXTENDED) && 0 -#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \ - (win)->_color = (p), \ - OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (win)->_color)), \ - OK) -#else -#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \ - OK) -#endif -#endif /* NCURSES_OPAQUE */ - -/* - * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use - * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to - * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already - * use stdarg.h, so... - */ -#define vw_printw vwprintw -#define vw_scanw vwscanw - -/* - * Export fallback function for use in C++ binding. - */ -#if !1 -#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) -NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); -#endif - -/* - * These macros are extensions - not in X/Open Curses. - */ -#if 1 -#if !NCURSES_OPAQUE -#define is_cleared(win) ((win)->_clear) -#define is_idcok(win) ((win)->_idcok) -#define is_idlok(win) ((win)->_idlok) -#define is_immedok(win) ((win)->_immed) -#define is_keypad(win) ((win)->_use_keypad) -#define is_leaveok(win) ((win)->_leaveok) -#define is_nodelay(win) ((win)->_delay == 0) -#define is_notimeout(win) ((win)->_notimeout) -#define is_scrollok(win) ((win)->_scroll) -#define is_syncok(win) ((win)->_sync) -#define wgetparent(win) ((win) ? (win)->_parent : 0) -#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) -#endif -#endif - -#endif /* NCURSES_NOMACROS */ - -/* - * Public variables. - * - * Notes: - * a. ESCDELAY was an undocumented feature under AIX curses. - * It gives the ESC expire time in milliseconds. - * b. ttytype is needed for backward compatibility - */ -#if 0 - -NCURSES_WRAPPED_VAR(WINDOW *, curscr); -NCURSES_WRAPPED_VAR(WINDOW *, newscr); -NCURSES_WRAPPED_VAR(WINDOW *, stdscr); -NCURSES_WRAPPED_VAR(char *, ttytype); -NCURSES_WRAPPED_VAR(int, COLORS); -NCURSES_WRAPPED_VAR(int, COLOR_PAIRS); -NCURSES_WRAPPED_VAR(int, COLS); -NCURSES_WRAPPED_VAR(int, ESCDELAY); -NCURSES_WRAPPED_VAR(int, LINES); -NCURSES_WRAPPED_VAR(int, TABSIZE); - -#define curscr NCURSES_PUBLIC_VAR(curscr()) -#define newscr NCURSES_PUBLIC_VAR(newscr()) -#define stdscr NCURSES_PUBLIC_VAR(stdscr()) -#define ttytype NCURSES_PUBLIC_VAR(ttytype()) -#define COLORS NCURSES_PUBLIC_VAR(COLORS()) -#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) -#define COLS NCURSES_PUBLIC_VAR(COLS()) -#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) -#define LINES NCURSES_PUBLIC_VAR(LINES()) -#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) - -#else - -extern NCURSES_EXPORT_VAR(WINDOW *) curscr; -extern NCURSES_EXPORT_VAR(WINDOW *) newscr; -extern NCURSES_EXPORT_VAR(WINDOW *) stdscr; -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT_VAR(int) COLORS; -extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; -extern NCURSES_EXPORT_VAR(int) COLS; -extern NCURSES_EXPORT_VAR(int) ESCDELAY; -extern NCURSES_EXPORT_VAR(int) LINES; -extern NCURSES_EXPORT_VAR(int) TABSIZE; - -#endif - -/* - * Pseudo-character tokens outside ASCII range. The curses wgetch() function - * will return any given one of these only if the corresponding k- capability - * is defined in your terminal's terminfo entry. - * - * Some keys (KEY_A1, etc) are arranged like this: - * a1 up a3 - * left b2 right - * c1 down c3 - * - * A few key codes do not depend upon the terminfo entry. - */ -#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ -#define KEY_MIN 0401 /* Minimum curses key */ -#define KEY_BREAK 0401 /* Break key (unreliable) */ -#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ -#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ -/* - * These definitions were generated by /SourceCache/ncurses/ncurses-44/ncurses/include/MKkey_defs.sh /SourceCache/ncurses/ncurses-44/ncurses/include/Caps - */ -#define KEY_DOWN 0402 /* down-arrow key */ -#define KEY_UP 0403 /* up-arrow key */ -#define KEY_LEFT 0404 /* left-arrow key */ -#define KEY_RIGHT 0405 /* right-arrow key */ -#define KEY_HOME 0406 /* home key */ -#define KEY_BACKSPACE 0407 /* backspace key */ -#define KEY_F0 0410 /* Function keys. Space for 64 */ -#define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */ -#define KEY_DL 0510 /* delete-line key */ -#define KEY_IL 0511 /* insert-line key */ -#define KEY_DC 0512 /* delete-character key */ -#define KEY_IC 0513 /* insert-character key */ -#define KEY_EIC 0514 /* sent by rmir or smir in insert mode */ -#define KEY_CLEAR 0515 /* clear-screen or erase key */ -#define KEY_EOS 0516 /* clear-to-end-of-screen key */ -#define KEY_EOL 0517 /* clear-to-end-of-line key */ -#define KEY_SF 0520 /* scroll-forward key */ -#define KEY_SR 0521 /* scroll-backward key */ -#define KEY_NPAGE 0522 /* next-page key */ -#define KEY_PPAGE 0523 /* previous-page key */ -#define KEY_STAB 0524 /* set-tab key */ -#define KEY_CTAB 0525 /* clear-tab key */ -#define KEY_CATAB 0526 /* clear-all-tabs key */ -#define KEY_ENTER 0527 /* enter/send key */ -#define KEY_PRINT 0532 /* print key */ -#define KEY_LL 0533 /* lower-left key (home down) */ -#define KEY_A1 0534 /* upper left of keypad */ -#define KEY_A3 0535 /* upper right of keypad */ -#define KEY_B2 0536 /* center of keypad */ -#define KEY_C1 0537 /* lower left of keypad */ -#define KEY_C3 0540 /* lower right of keypad */ -#define KEY_BTAB 0541 /* back-tab key */ -#define KEY_BEG 0542 /* begin key */ -#define KEY_CANCEL 0543 /* cancel key */ -#define KEY_CLOSE 0544 /* close key */ -#define KEY_COMMAND 0545 /* command key */ -#define KEY_COPY 0546 /* copy key */ -#define KEY_CREATE 0547 /* create key */ -#define KEY_END 0550 /* end key */ -#define KEY_EXIT 0551 /* exit key */ -#define KEY_FIND 0552 /* find key */ -#define KEY_HELP 0553 /* help key */ -#define KEY_MARK 0554 /* mark key */ -#define KEY_MESSAGE 0555 /* message key */ -#define KEY_MOVE 0556 /* move key */ -#define KEY_NEXT 0557 /* next key */ -#define KEY_OPEN 0560 /* open key */ -#define KEY_OPTIONS 0561 /* options key */ -#define KEY_PREVIOUS 0562 /* previous key */ -#define KEY_REDO 0563 /* redo key */ -#define KEY_REFERENCE 0564 /* reference key */ -#define KEY_REFRESH 0565 /* refresh key */ -#define KEY_REPLACE 0566 /* replace key */ -#define KEY_RESTART 0567 /* restart key */ -#define KEY_RESUME 0570 /* resume key */ -#define KEY_SAVE 0571 /* save key */ -#define KEY_SBEG 0572 /* shifted begin key */ -#define KEY_SCANCEL 0573 /* shifted cancel key */ -#define KEY_SCOMMAND 0574 /* shifted command key */ -#define KEY_SCOPY 0575 /* shifted copy key */ -#define KEY_SCREATE 0576 /* shifted create key */ -#define KEY_SDC 0577 /* shifted delete-character key */ -#define KEY_SDL 0600 /* shifted delete-line key */ -#define KEY_SELECT 0601 /* select key */ -#define KEY_SEND 0602 /* shifted end key */ -#define KEY_SEOL 0603 /* shifted clear-to-end-of-line key */ -#define KEY_SEXIT 0604 /* shifted exit key */ -#define KEY_SFIND 0605 /* shifted find key */ -#define KEY_SHELP 0606 /* shifted help key */ -#define KEY_SHOME 0607 /* shifted home key */ -#define KEY_SIC 0610 /* shifted insert-character key */ -#define KEY_SLEFT 0611 /* shifted left-arrow key */ -#define KEY_SMESSAGE 0612 /* shifted message key */ -#define KEY_SMOVE 0613 /* shifted move key */ -#define KEY_SNEXT 0614 /* shifted next key */ -#define KEY_SOPTIONS 0615 /* shifted options key */ -#define KEY_SPREVIOUS 0616 /* shifted previous key */ -#define KEY_SPRINT 0617 /* shifted print key */ -#define KEY_SREDO 0620 /* shifted redo key */ -#define KEY_SREPLACE 0621 /* shifted replace key */ -#define KEY_SRIGHT 0622 /* shifted right-arrow key */ -#define KEY_SRSUME 0623 /* shifted resume key */ -#define KEY_SSAVE 0624 /* shifted save key */ -#define KEY_SSUSPEND 0625 /* shifted suspend key */ -#define KEY_SUNDO 0626 /* shifted undo key */ -#define KEY_SUSPEND 0627 /* suspend key */ -#define KEY_UNDO 0630 /* undo key */ -#define KEY_MOUSE 0631 /* Mouse event has occurred */ -#define KEY_RESIZE 0632 /* Terminal resize event */ -#define KEY_EVENT 0633 /* We were interrupted by an event */ - -#define KEY_MAX 0777 /* Maximum key value is 0633 */ -/* $Id: curses.wide,v 1.34 2007/03/10 17:52:23 tom Exp $ */ -/* - * vile:cmode: - * This file is part of ncurses, designed to be appended after curses.h.in - * (see that file for the relevant copyright). - */ -#ifdef _XOPEN_SOURCE_EXTENDED - -extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs; - -#define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c]) - -#define WACS_BSSB NCURSES_WACS('l') -#define WACS_SSBB NCURSES_WACS('m') -#define WACS_BBSS NCURSES_WACS('k') -#define WACS_SBBS NCURSES_WACS('j') -#define WACS_SBSS NCURSES_WACS('u') -#define WACS_SSSB NCURSES_WACS('t') -#define WACS_SSBS NCURSES_WACS('v') -#define WACS_BSSS NCURSES_WACS('w') -#define WACS_BSBS NCURSES_WACS('q') -#define WACS_SBSB NCURSES_WACS('x') -#define WACS_SSSS NCURSES_WACS('n') - -#define WACS_ULCORNER WACS_BSSB -#define WACS_LLCORNER WACS_SSBB -#define WACS_URCORNER WACS_BBSS -#define WACS_LRCORNER WACS_SBBS -#define WACS_RTEE WACS_SBSS -#define WACS_LTEE WACS_SSSB -#define WACS_BTEE WACS_SSBS -#define WACS_TTEE WACS_BSSS -#define WACS_HLINE WACS_BSBS -#define WACS_VLINE WACS_SBSB -#define WACS_PLUS WACS_SSSS - -#define WACS_S1 NCURSES_WACS('o') /* scan line 1 */ -#define WACS_S9 NCURSES_WACS('s') /* scan line 9 */ -#define WACS_DIAMOND NCURSES_WACS('`') /* diamond */ -#define WACS_CKBOARD NCURSES_WACS('a') /* checker board */ -#define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */ -#define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */ -#define WACS_BULLET NCURSES_WACS('~') /* bullet */ - - /* Teletype 5410v1 symbols */ -#define WACS_LARROW NCURSES_WACS(',') /* arrow left */ -#define WACS_RARROW NCURSES_WACS('+') /* arrow right */ -#define WACS_DARROW NCURSES_WACS('.') /* arrow down */ -#define WACS_UARROW NCURSES_WACS('-') /* arrow up */ -#define WACS_BOARD NCURSES_WACS('h') /* board of squares */ -#define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */ -#define WACS_BLOCK NCURSES_WACS('0') /* solid square block */ - - /* ncurses extensions */ -#define WACS_S3 NCURSES_WACS('p') /* scan line 3 */ -#define WACS_S7 NCURSES_WACS('r') /* scan line 7 */ -#define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */ -#define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */ -#define WACS_PI NCURSES_WACS('{') /* Pi */ -#define WACS_NEQUAL NCURSES_WACS('|') /* not equal */ -#define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */ - -/* - * Function prototypes for wide-character operations. - * - * "generated" comments should include ":WIDEC" to make the corresponding - * functions ifdef'd in lib_gen.c - * - * "implemented" comments do not need this marker. - */ - -extern NCURSES_EXPORT(int) add_wch (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) add_wchnstr (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) add_wchstr (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) addnwstr (const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) addwstr (const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) bkgrnd (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */ -extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, short*, void*); /* implemented */ -extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */ -extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvaddnwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvaddwstr (int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_wstr (int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvinwstr (int, int, wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvvline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW *, int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwaddnwstr (WINDOW *, int, int, const wchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwaddwstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *); /* implemented */ -extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */ -extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */ -extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented */ -extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented */ -extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */ -extern NCURSES_EXPORT(int) wadd_wchstr (WINDOW *,const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) waddnwstr (WINDOW *,const wchar_t *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddwstr (WINDOW *,const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wbkgrnd (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(void) wbkgrndset (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* implemented */ -extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */ -extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wins_wstr (WINDOW *, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* implemented */ -extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */ - -#ifndef NCURSES_NOMACROS - -/* - * XSI curses macros for XPG4 conformance. - */ -#define add_wch(c) wadd_wch(stdscr,c) -#define add_wchnstr(str,n) wadd_wchnstr(stdscr,str,n) -#define add_wchstr(str) wadd_wchstr(stdscr,str) -#define addnwstr(wstr,n) waddnwstr(stdscr,wstr,n) -#define addwstr(wstr) waddwstr(stdscr,wstr) -#define bkgrnd(c) wbkgrnd(stdscr,c) -#define bkgrndset(c) wbkgrndset(stdscr,c) -#define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,l,r,t,b,tl,tr,bl,br) -#define box_set(w,v,h) wborder_set(w,v,v,h,h,0,0,0,0) -#define echo_wchar(c) wecho_wchar(stdscr,c) -#define get_wch(c) wget_wch(stdscr,c) -#define get_wstr(t) wget_wstr(stdscr,t) -#define getbkgrnd(wch) wgetbkgrnd(stdscr,wch) -#define getn_wstr(t,n) wgetn_wstr(stdscr,t,n) -#define hline_set(c,n) whline_set(stdscr,c,n) -#define in_wch(c) win_wch(stdscr,c) -#define in_wchnstr(c,n) win_wchnstr(stdscr,c,n) -#define in_wchstr(c) win_wchstr(stdscr,c) -#define innwstr(c,n) winnwstr(stdscr,c,n) -#define ins_nwstr(t,n) wins_nwstr(stdscr,t,n) -#define ins_wch(c) wins_wch(stdscr,c) -#define ins_wstr(t) wins_wstr(stdscr,t) -#define inwstr(c) winwstr(stdscr,c) -#define vline_set(c,n) wvline_set(stdscr,c,n) -#define wadd_wchstr(win,str) wadd_wchnstr(win,str,-1) -#define waddwstr(win,wstr) waddnwstr(win,wstr,-1) -#define wget_wstr(w,t) wgetn_wstr(w,t,-1) -#define win_wchstr(w,c) win_wchnstr(w,c,-1) -#define wins_wstr(w,t) wins_nwstr(w,t,-1) - -#if !NCURSES_OPAQUE -#define wgetbkgrnd(win,wch) (*wch = win->_bkgrnd, OK) -#endif - -#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,y,x,c) -#define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,y,x,s,n) -#define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,y,x,s) -#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,y,x,wstr,n) -#define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,y,x,wstr) -#define mvget_wch(y,x,c) mvwget_wch(stdscr,y,x,c) -#define mvget_wstr(y,x,t) mvwget_wstr(stdscr,y,x,t) -#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,y,x,t,n) -#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,y,x,c,n) -#define mvin_wch(y,x,c) mvwin_wch(stdscr,y,x,c) -#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,y,x,c,n) -#define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,y,x,c) -#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,y,x,c,n) -#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,y,x,t,n) -#define mvins_wch(y,x,c) mvwins_wch(stdscr,y,x,c) -#define mvins_wstr(y,x,t) mvwins_wstr(stdscr,y,x,t) -#define mvinwstr(y,x,c) mvwinwstr(stdscr,y,x,c) -#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,y,x,c,n) - -#define mvwadd_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wadd_wch(win,c)) -#define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : wadd_wchnstr(win,s,n)) -#define mvwadd_wchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : wadd_wchstr(win,s)) -#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,y,x) == ERR ? ERR : waddnwstr(win,wstr,n)) -#define mvwaddwstr(win,y,x,wstr) (wmove(win,y,x) == ERR ? ERR : waddwstr(win,wstr)) -#define mvwget_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wget_wch(win,c)) -#define mvwget_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wget_wstr(win,t)) -#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n)) -#define mvwhline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n)) -#define mvwin_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wch(win,c)) -#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : win_wchnstr(win,c,n)) -#define mvwin_wchstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wchstr(win,c)) -#define mvwinnwstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : winnwstr(win,c,n)) -#define mvwins_nwstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wins_nwstr(win,t,n)) -#define mvwins_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wins_wch(win,c)) -#define mvwins_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wins_wstr(win,t)) -#define mvwinwstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winwstr(win,c)) -#define mvwvline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n)) - -#endif /* NCURSES_NOMACROS */ - -#if defined(TRACE) || defined(NCURSES_TEST) -extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *); -extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *); -#endif - -#endif /* _XOPEN_SOURCE_EXTENDED */ -/* $Id: curses.tail,v 1.16 2008/07/05 20:20:38 tom Exp $ */ -/* - * vile:cmode: - * This file is part of ncurses, designed to be appended after curses.h.in - * (see that file for the relevant copyright). - */ - -/* mouse interface */ - -#if NCURSES_MOUSE_VERSION > 1 -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5)) -#else -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6)) -#endif - -#define NCURSES_BUTTON_RELEASED 001L -#define NCURSES_BUTTON_PRESSED 002L -#define NCURSES_BUTTON_CLICKED 004L -#define NCURSES_DOUBLE_CLICKED 010L -#define NCURSES_TRIPLE_CLICKED 020L -#define NCURSES_RESERVED_EVENT 040L - -/* event masks */ -#define BUTTON1_RELEASED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED) -#define BUTTON1_PRESSED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED) -#define BUTTON1_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED) -#define BUTTON1_DOUBLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED) -#define BUTTON1_TRIPLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED) - -#define BUTTON2_RELEASED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED) -#define BUTTON2_PRESSED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED) -#define BUTTON2_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED) -#define BUTTON2_DOUBLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED) -#define BUTTON2_TRIPLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED) - -#define BUTTON3_RELEASED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED) -#define BUTTON3_PRESSED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED) -#define BUTTON3_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED) -#define BUTTON3_DOUBLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED) -#define BUTTON3_TRIPLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED) - -#define BUTTON4_RELEASED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED) -#define BUTTON4_PRESSED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED) -#define BUTTON4_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED) -#define BUTTON4_DOUBLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED) -#define BUTTON4_TRIPLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED) - -/* - * In 32 bits the version-1 scheme does not provide enough space for a 5th - * button, unless we choose to change the ABI by omitting the reserved-events. - */ -#if NCURSES_MOUSE_VERSION > 1 - -#define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED) -#define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED) -#define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED) -#define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED) -#define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED) - -#define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L) -#define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L) -#define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L) -#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L) - -#else - -#define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT) -#define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT) -#define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT) -#define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT) - -#define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L) -#define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L) -#define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L) -#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L) - -#endif - -#define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1) - -/* macros to extract single event-bits from masks */ -#define BUTTON_RELEASE(e, x) ((e) & NCURSES_MOUSE_MASK(x, 001)) -#define BUTTON_PRESS(e, x) ((e) & NCURSES_MOUSE_MASK(x, 002)) -#define BUTTON_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 004)) -#define BUTTON_DOUBLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 010)) -#define BUTTON_TRIPLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 020)) -#define BUTTON_RESERVED_EVENT(e, x) ((e) & NCURSES_MOUSE_MASK(x, 040)) - -typedef struct -{ - short id; /* ID to distinguish multiple devices */ - int x, y, z; /* event coordinates (character-cell) */ - mmask_t bstate; /* button state bits */ -} -MEVENT; - -extern NCURSES_EXPORT(int) getmouse (MEVENT *); -extern NCURSES_EXPORT(int) ungetmouse (MEVENT *); -extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *); -extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int); -extern NCURSES_EXPORT(int) mouseinterval (int); -extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool); -extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */ - -#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen) - -/* other non-XSI functions */ - -extern NCURSES_EXPORT(int) mcprint (char *, int); /* direct data to printer */ -extern NCURSES_EXPORT(int) has_key (int); /* do we have given key? */ - -/* Debugging : use with libncurses_g.a */ - -extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *); -extern NCURSES_EXPORT(char *) _traceattr (attr_t); -extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype); -extern NCURSES_EXPORT(char *) _nc_tracebits (void); -extern NCURSES_EXPORT(char *) _tracechar (int); -extern NCURSES_EXPORT(char *) _tracechtype (chtype); -extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype); -#ifdef _XOPEN_SOURCE_EXTENDED -#define _tracech_t _tracecchar_t -extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *); -#define _tracech_t2 _tracecchar_t2 -extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *); -#else -#define _tracech_t _tracechtype -#define _tracech_t2 _tracechtype2 -#endif -extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *); -extern NCURSES_EXPORT(void) trace (const unsigned int); - -/* trace masks */ -#define TRACE_DISABLE 0x0000 /* turn off tracing */ -#define TRACE_TIMES 0x0001 /* trace user and system times of updates */ -#define TRACE_TPUTS 0x0002 /* trace tputs calls */ -#define TRACE_UPDATE 0x0004 /* trace update actions, old & new screens */ -#define TRACE_MOVE 0x0008 /* trace cursor moves and scrolls */ -#define TRACE_CHARPUT 0x0010 /* trace all character outputs */ -#define TRACE_ORDINARY 0x001F /* trace all update actions */ -#define TRACE_CALLS 0x0020 /* trace all curses calls */ -#define TRACE_VIRTPUT 0x0040 /* trace virtual character puts */ -#define TRACE_IEVENT 0x0080 /* trace low-level input processing */ -#define TRACE_BITS 0x0100 /* trace state of TTY control bits */ -#define TRACE_ICALLS 0x0200 /* trace internal/nested calls */ -#define TRACE_CCALLS 0x0400 /* trace per-character calls */ -#define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */ -#define TRACE_ATTRS 0x1000 /* trace attribute updates */ - -#define TRACE_SHIFT 13 /* number of bits in the trace masks */ -#define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */ - -#if defined(TRACE) || defined(NCURSES_TEST) -extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */ -extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); -#define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */ -#define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */ -#define OPTIMIZE_SCROLL 0x04 /* scroll optimization */ -#define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */ -#endif - -#ifdef __cplusplus - -#ifndef NCURSES_NOMACROS - -/* these names conflict with STL */ -#undef box -#undef clear -#undef erase -#undef move -#undef refresh - -#endif /* NCURSES_NOMACROS */ - -} -#endif - -#endif /* __NCURSES_H */ diff --git a/ncurses/include/ncurses_cfg.h b/ncurses/include/ncurses_cfg.h index 13822d6..f35d01a 100644 --- a/ncurses/include/ncurses_cfg.h +++ b/ncurses/include/ncurses_cfg.h @@ -46,15 +46,15 @@ #ifndef NC_CONFIG_H #define NC_CONFIG_H -#define SYSTEM_NAME "darwin12.0" +#define SYSTEM_NAME "darwin10.0" #define CC_HAS_PROTOS 1 #define HAVE_LONG_FILE_NAMES 1 #define USE_DATABASE 1 -#define TERMINFO_DIRS "/usr/share/terminfo" +#define TERMINFO_DIRS "/usr/share/terminfo:/usr/local/share/terminfo" #define TERMINFO "/usr/share/terminfo" #define HAVE_BIG_CORE 1 #define USE_TERMCAP 1 -#define TERMPATH "/etc/termcap:/usr/share/misc/termcap" +#define TERMPATH "/etc/termcap:/usr/share/misc/termcap:/usr/local/etc/termcap:/usr/local/share/misc/termcap" #define USE_HOME_TERMINFO 1 #define USE_ROOT_ENVIRON 1 #define HAVE_REMOVE 1 diff --git a/ncurses/include/ncurses_def.h b/ncurses/include/ncurses_def.h deleted file mode 100644 index 23efa32..0000000 --- a/ncurses/include/ncurses_def.h +++ /dev/null @@ -1,708 +0,0 @@ -/* - * This file is generated by /var/tmp/ncurses.roots/ncurses/ncurses/include/MKncurses_def.sh - */ - -#ifndef NC_DEFINE_H -#define NC_DEFINE_H 1 - -#ifndef BROKEN_LINKER -#define BROKEN_LINKER 0 -#endif - -#ifndef BSD_TPUTS -#define BSD_TPUTS 0 -#endif - -#ifndef CC_HAS_PROTOS -#define CC_HAS_PROTOS 0 -#endif - -#ifndef CPP_HAS_PARAM_INIT -#define CPP_HAS_PARAM_INIT 0 -#endif - -#ifndef CURSES_ACS_ARRAY -#define CURSES_ACS_ARRAY acs_map -#endif - -#ifndef CURSES_WACS_ARRAY -#define CURSES_WACS_ARRAY _nc_wacs -#endif - -#ifndef DECL_ERRNO -#define DECL_ERRNO 0 -#endif - -#ifndef ETIP_NEEDS_MATH_H -#define ETIP_NEEDS_MATH_H 0 -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -#ifndef HAVE_BIG_CORE -#define HAVE_BIG_CORE 0 -#endif - -#ifndef HAVE_BSD_CGETENT -#define HAVE_BSD_CGETENT 0 -#endif - -#ifndef HAVE_BSD_SIGNAL_H -#define HAVE_BSD_SIGNAL_H 0 -#endif - -#ifndef HAVE_BTOWC -#define HAVE_BTOWC 0 -#endif - -#ifndef HAVE_BUILTIN_H -#define HAVE_BUILTIN_H 0 -#endif - -#ifndef HAVE_CHGAT -#define HAVE_CHGAT 1 -#endif - -#ifndef HAVE_COLOR_SET -#define HAVE_COLOR_SET 1 -#endif - -#ifndef HAVE_DIRENT_H -#define HAVE_DIRENT_H 0 -#endif - -#ifndef HAVE_ERRNO -#define HAVE_ERRNO 0 -#endif - -#ifndef HAVE_FCNTL_H -#define HAVE_FCNTL_H 0 -#endif - -#ifndef HAVE_FILTER -#define HAVE_FILTER 1 -#endif - -#ifndef HAVE_FORM_H -#define HAVE_FORM_H 0 -#endif - -#ifndef HAVE_GETBEGX -#define HAVE_GETBEGX 1 -#endif - -#ifndef HAVE_GETCURX -#define HAVE_GETCURX 1 -#endif - -#ifndef HAVE_GETCWD -#define HAVE_GETCWD 0 -#endif - -#ifndef HAVE_GETEGID -#define HAVE_GETEGID 0 -#endif - -#ifndef HAVE_GETEUID -#define HAVE_GETEUID 0 -#endif - -#ifndef HAVE_GETMAXX -#define HAVE_GETMAXX 1 -#endif - -#ifndef HAVE_GETNSTR -#define HAVE_GETNSTR 0 -#endif - -#ifndef HAVE_GETOPT_H -#define HAVE_GETOPT_H 0 -#endif - -#ifndef HAVE_GETPARX -#define HAVE_GETPARX 1 -#endif - -#ifndef HAVE_GETTIMEOFDAY -#define HAVE_GETTIMEOFDAY 0 -#endif - -#ifndef HAVE_GETTTYNAM -#define HAVE_GETTTYNAM 0 -#endif - -#ifndef HAVE_GETWIN -#define HAVE_GETWIN 1 -#endif - -#ifndef HAVE_GPM_H -#define HAVE_GPM_H 0 -#endif - -#ifndef HAVE_GPP_BUILTIN_H -#define HAVE_GPP_BUILTIN_H 0 -#endif - -#ifndef HAVE_GXX_BUILTIN_H -#define HAVE_GXX_BUILTIN_H 0 -#endif - -#ifndef HAVE_HAS_KEY -#define HAVE_HAS_KEY 0 -#endif - -#ifndef HAVE_IOSTREAM -#define HAVE_IOSTREAM 0 -#endif - -#ifndef HAVE_ISASCII -#define HAVE_ISASCII 0 -#endif - -#ifndef HAVE_ISSETUGID -#define HAVE_ISSETUGID 0 -#endif - -#ifndef HAVE_LANGINFO_CODESET -#define HAVE_LANGINFO_CODESET 0 -#endif - -#ifndef HAVE_LIBC_H -#define HAVE_LIBC_H 0 -#endif - -#ifndef HAVE_LIBDBMALLOC -#define HAVE_LIBDBMALLOC 0 -#endif - -#ifndef HAVE_LIBDMALLOC -#define HAVE_LIBDMALLOC 0 -#endif - -#ifndef HAVE_LIBFORM -#define HAVE_LIBFORM 0 -#endif - -#ifndef HAVE_LIBGPM -#define HAVE_LIBGPM 0 -#endif - -#ifndef HAVE_LIBMENU -#define HAVE_LIBMENU 0 -#endif - -#ifndef HAVE_LIBMPATROL -#define HAVE_LIBMPATROL 0 -#endif - -#ifndef HAVE_LIBPANEL -#define HAVE_LIBPANEL 0 -#endif - -#ifndef HAVE_LIMITS_H -#define HAVE_LIMITS_H 0 -#endif - -#ifndef HAVE_LINK -#define HAVE_LINK 0 -#endif - -#ifndef HAVE_LOCALE_H -#define HAVE_LOCALE_H 0 -#endif - -#ifndef HAVE_LONG_FILE_NAMES -#define HAVE_LONG_FILE_NAMES 0 -#endif - -#ifndef HAVE_MBLEN -#define HAVE_MBLEN 0 -#endif - -#ifndef HAVE_MBRLEN -#define HAVE_MBRLEN 0 -#endif - -#ifndef HAVE_MBRTOWC -#define HAVE_MBRTOWC 0 -#endif - -#ifndef HAVE_MBSRTOWCS -#define HAVE_MBSRTOWCS 0 -#endif - -#ifndef HAVE_MBSTOWCS -#define HAVE_MBSTOWCS 0 -#endif - -#ifndef HAVE_MBTOWC -#define HAVE_MBTOWC 0 -#endif - -#ifndef HAVE_MENU_H -#define HAVE_MENU_H 0 -#endif - -#ifndef HAVE_MKSTEMP -#define HAVE_MKSTEMP 0 -#endif - -#ifndef HAVE_MVVLINE -#define HAVE_MVVLINE 1 -#endif - -#ifndef HAVE_MVWVLINE -#define HAVE_MVWVLINE 1 -#endif - -#ifndef HAVE_NANOSLEEP -#define HAVE_NANOSLEEP 0 -#endif - -#ifndef HAVE_NC_ALLOC_H -#define HAVE_NC_ALLOC_H 0 -#endif - -#ifndef HAVE_PANEL_H -#define HAVE_PANEL_H 0 -#endif - -#ifndef HAVE_POLL -#define HAVE_POLL 0 -#endif - -#ifndef HAVE_POLL_H -#define HAVE_POLL_H 0 -#endif - -#ifndef HAVE_PURIFY -#define HAVE_PURIFY 0 -#endif - -#ifndef HAVE_PUTWC -#define HAVE_PUTWC 0 -#endif - -#ifndef HAVE_PUTWIN -#define HAVE_PUTWIN 1 -#endif - -#ifndef HAVE_REGEXPR_H_FUNCS -#define HAVE_REGEXPR_H_FUNCS 0 -#endif - -#ifndef HAVE_REGEXP_H_FUNCS -#define HAVE_REGEXP_H_FUNCS 0 -#endif - -#ifndef HAVE_REGEX_H_FUNCS -#define HAVE_REGEX_H_FUNCS 0 -#endif - -#ifndef HAVE_REMOVE -#define HAVE_REMOVE 0 -#endif - -#ifndef HAVE_RESIZETERM -#define HAVE_RESIZETERM 0 -#endif - -#ifndef HAVE_RESIZE_TERM -#define HAVE_RESIZE_TERM 0 -#endif - -#ifndef HAVE_RIPOFFLINE -#define HAVE_RIPOFFLINE 1 -#endif - -#ifndef HAVE_SELECT -#define HAVE_SELECT 0 -#endif - -#ifndef HAVE_SETBUF -#define HAVE_SETBUF 0 -#endif - -#ifndef HAVE_SETBUFFER -#define HAVE_SETBUFFER 0 -#endif - -#ifndef HAVE_SETUPTERM -#define HAVE_SETUPTERM 1 -#endif - -#ifndef HAVE_SETVBUF -#define HAVE_SETVBUF 0 -#endif - -#ifndef HAVE_SIGACTION -#define HAVE_SIGACTION 0 -#endif - -#ifndef HAVE_SIGVEC -#define HAVE_SIGVEC 0 -#endif - -#ifndef HAVE_SIZECHANGE -#define HAVE_SIZECHANGE 0 -#endif - -#ifndef HAVE_SLK_COLOR -#define HAVE_SLK_COLOR 0 -#endif - -#ifndef HAVE_SLK_INIT -#define HAVE_SLK_INIT 1 -#endif - -#ifndef HAVE_STRDUP -#define HAVE_STRDUP 0 -#endif - -#ifndef HAVE_STRSTR -#define HAVE_STRSTR 0 -#endif - -#ifndef HAVE_SYMLINK -#define HAVE_SYMLINK 0 -#endif - -#ifndef HAVE_SYS_BSDTYPES_H -#define HAVE_SYS_BSDTYPES_H 0 -#endif - -#ifndef HAVE_SYS_IOCTL_H -#define HAVE_SYS_IOCTL_H 0 -#endif - -#ifndef HAVE_SYS_PARAM_H -#define HAVE_SYS_PARAM_H 0 -#endif - -#ifndef HAVE_SYS_POLL_H -#define HAVE_SYS_POLL_H 0 -#endif - -#ifndef HAVE_SYS_SELECT_H -#define HAVE_SYS_SELECT_H 0 -#endif - -#ifndef HAVE_SYS_TERMIO_H -#define HAVE_SYS_TERMIO_H 0 -#endif - -#ifndef HAVE_SYS_TIMES_H -#define HAVE_SYS_TIMES_H 0 -#endif - -#ifndef HAVE_SYS_TIME_H -#define HAVE_SYS_TIME_H 0 -#endif - -#ifndef HAVE_SYS_TIME_SELECT -#define HAVE_SYS_TIME_SELECT 0 -#endif - -#ifndef HAVE_TCGETATTR -#define HAVE_TCGETATTR 0 -#endif - -#ifndef HAVE_TCGETPGRP -#define HAVE_TCGETPGRP 0 -#endif - -#ifndef HAVE_TELL -#define HAVE_TELL 0 -#endif - -#ifndef HAVE_TERMATTRS -#define HAVE_TERMATTRS 1 -#endif - -#ifndef HAVE_TERMIOS_H -#define HAVE_TERMIOS_H 0 -#endif - -#ifndef HAVE_TERMIO_H -#define HAVE_TERMIO_H 0 -#endif - -#ifndef HAVE_TERMNAME -#define HAVE_TERMNAME 1 -#endif - -#ifndef HAVE_TERM_H -#define HAVE_TERM_H 1 -#endif - -#ifndef HAVE_TGETENT -#define HAVE_TGETENT 1 -#endif - -#ifndef HAVE_TIGETNUM -#define HAVE_TIGETNUM 1 -#endif - -#ifndef HAVE_TIGETSTR -#define HAVE_TIGETSTR 1 -#endif - -#ifndef HAVE_TIMES -#define HAVE_TIMES 0 -#endif - -#ifndef HAVE_TTYENT_H -#define HAVE_TTYENT_H 0 -#endif - -#ifndef HAVE_TYPEAHEAD -#define HAVE_TYPEAHEAD 1 -#endif - -#ifndef HAVE_TYPEINFO -#define HAVE_TYPEINFO 0 -#endif - -#ifndef HAVE_TYPE_ATTR_T -#define HAVE_TYPE_ATTR_T 0 -#endif - -#ifndef HAVE_TYPE_SIGACTION -#define HAVE_TYPE_SIGACTION 0 -#endif - -#ifndef HAVE_UNISTD_H -#define HAVE_UNISTD_H 0 -#endif - -#ifndef HAVE_UNLINK -#define HAVE_UNLINK 0 -#endif - -#ifndef HAVE_USE_DEFAULT_COLORS -#define HAVE_USE_DEFAULT_COLORS 0 -#endif - -#ifndef HAVE_VFSCANF -#define HAVE_VFSCANF 0 -#endif - -#ifndef HAVE_VSNPRINTF -#define HAVE_VSNPRINTF 0 -#endif - -#ifndef HAVE_VSSCANF -#define HAVE_VSSCANF 0 -#endif - -#ifndef HAVE_WCSRTOMBS -#define HAVE_WCSRTOMBS 0 -#endif - -#ifndef HAVE_WCSTOMBS -#define HAVE_WCSTOMBS 0 -#endif - -#ifndef HAVE_WCTOB -#define HAVE_WCTOB 0 -#endif - -#ifndef HAVE_WCTOMB -#define HAVE_WCTOMB 0 -#endif - -#ifndef HAVE_WCTYPE_H -#define HAVE_WCTYPE_H 0 -#endif - -#ifndef HAVE_WINSSTR -#define HAVE_WINSSTR 1 -#endif - -#ifndef HAVE_WORKING_POLL -#define HAVE_WORKING_POLL 0 -#endif - -#ifndef HAVE_WRESIZE -#define HAVE_WRESIZE 0 -#endif - -#ifndef HAVE__DOSCAN -#define HAVE__DOSCAN 0 -#endif - -#ifndef MIXEDCASE_FILENAMES -#define MIXEDCASE_FILENAMES 0 -#endif - -#ifndef NCURSES_CHAR_EQ -#define NCURSES_CHAR_EQ 0 -#endif - -#ifndef NCURSES_EXPANDED -#define NCURSES_EXPANDED 0 -#endif - -#ifndef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS 0 -#endif - -#ifndef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 0 -#endif - -#ifndef NCURSES_NO_PADDING -#define NCURSES_NO_PADDING 0 -#endif - -#ifndef NCURSES_PATHSEP -#define NCURSES_PATHSEP ':' -#endif - -#ifndef NDEBUG -#define NDEBUG 0 -#endif - -#ifndef NEED_PTEM_H -#define NEED_PTEM_H 0 -#endif - -#ifndef NO_LEAKS -#define NO_LEAKS 0 -#endif - -#ifndef PURE_TERMINFO -#define PURE_TERMINFO 0 -#endif - -#ifndef RETSIGTYPE -#define RETSIGTYPE 0 -#endif - -#ifndef STDC_HEADERS -#define STDC_HEADERS 0 -#endif - -#ifndef SVR4_ACTION -#define SVR4_ACTION 0 -#endif - -#ifndef SVR4_TERMIO -#define SVR4_TERMIO 0 -#endif - -#ifndef SYSTEM_NAME -#define SYSTEM_NAME "unknown" -#endif - -#ifndef TERMINFO -#define TERMINFO "none" -#endif - -#ifndef TERMPATH -#define TERMPATH "none" -#endif - -#ifndef TIME_WITH_SYS_TIME -#define TIME_WITH_SYS_TIME 0 -#endif - -#ifndef TYPEOF_CHTYPE -#define TYPEOF_CHTYPE 0 -#endif - -#ifndef USE_COLORFGBG -#define USE_COLORFGBG 0 -#endif - -#ifndef USE_DATABASE -#define USE_DATABASE 0 -#endif - -#ifndef USE_GETCAP -#define USE_GETCAP 0 -#endif - -#ifndef USE_GETCAP_CACHE -#define USE_GETCAP_CACHE 0 -#endif - -#ifndef USE_HARD_TABS -#define USE_HARD_TABS 0 -#endif - -#ifndef USE_HASHED_DB -#define USE_HASHED_DB 0 -#endif - -#ifndef USE_HASHMAP -#define USE_HASHMAP 0 -#endif - -#ifndef USE_HOME_TERMINFO -#define USE_HOME_TERMINFO 0 -#endif - -#ifndef USE_LINKS -#define USE_LINKS 0 -#endif - -#ifndef USE_MY_MEMMOVE -#define USE_MY_MEMMOVE 0 -#endif - -#ifndef USE_OK_BCOPY -#define USE_OK_BCOPY 0 -#endif - -#ifndef USE_RCS_IDS -#define USE_RCS_IDS 0 -#endif - -#ifndef USE_REENTRANT -#define USE_REENTRANT 0 -#endif - -#ifndef USE_SAFE_SPRINTF -#define USE_SAFE_SPRINTF 0 -#endif - -#ifndef USE_SCROLL_HINTS -#define USE_SCROLL_HINTS 0 -#endif - -#ifndef USE_SIGWINCH -#define USE_SIGWINCH 0 -#endif - -#ifndef USE_SYMLINKS -#define USE_SYMLINKS 0 -#endif - -#ifndef USE_SYSMOUSE -#define USE_SYSMOUSE 0 -#endif - -#ifndef USE_TERMCAP -#define USE_TERMCAP 0 -#endif - -#ifndef USE_WEAK_SYMBOLS -#define USE_WEAK_SYMBOLS 0 -#endif - -#ifndef USE_WIDEC_SUPPORT -#define USE_WIDEC_SUPPORT 0 -#endif - -#ifndef USE_XMC_SUPPORT -#define USE_XMC_SUPPORT 0 -#endif - -#endif /* NC_DEFINE_H */ diff --git a/ncurses/include/panel.h b/ncurses/include/panel.h deleted file mode 120000 index 617777d..0000000 --- a/ncurses/include/panel.h +++ /dev/null @@ -1 +0,0 @@ -../../ncurses/panel/panel.h \ No newline at end of file diff --git a/ncurses/include/parametrized.h b/ncurses/include/parametrized.h deleted file mode 100644 index 950a947..0000000 --- a/ncurses/include/parametrized.h +++ /dev/null @@ -1,560 +0,0 @@ -/* - * parametrized.h --- is a termcap capability parametrized? - * - * Note: this file is generated using MKparametrized.sh, do not edit by hand. - * A value of -1 in the table means suppress both pad and % translations. - * A value of 0 in the table means do pad but not % translations. - * A value of 1 in the table means do both pad and % translations. - */ - -static short const parametrized[] = { -0, /* cbt */ -0, /* bel */ -0, /* cr */ -1, /* csr */ -0, /* tbc */ -0, /* clear */ -0, /* el */ -0, /* ed */ -1, /* hpa */ -0, /* cmdch */ -1, /* cup */ -0, /* cud1 */ -0, /* home */ -0, /* civis */ -0, /* cub1 */ -1, /* mrcup */ -0, /* cnorm */ -0, /* cuf1 */ -0, /* ll */ -0, /* cuu1 */ -0, /* cvvis */ -0, /* dch1 */ -0, /* dl1 */ -0, /* dsl */ -0, /* hd */ -0, /* smacs */ -0, /* blink */ -0, /* bold */ -0, /* smcup */ -0, /* smdc */ -0, /* dim */ -0, /* smir */ -0, /* invis */ -0, /* prot */ -0, /* rev */ -0, /* smso */ -0, /* smul */ -1, /* ech */ -0, /* rmacs */ -0, /* sgr0 */ -0, /* rmcup */ -0, /* rmdc */ -0, /* rmir */ -0, /* rmso */ -0, /* rmul */ -0, /* flash */ -0, /* ff */ -0, /* fsl */ -0, /* is1 */ -0, /* is2 */ -0, /* is3 */ -0, /* if */ -0, /* ich1 */ -0, /* il1 */ -0, /* ip */ -0, /* kbs */ -0, /* ktbc */ -0, /* kclr */ -0, /* kctab */ -0, /* kdch1 */ -0, /* kdl1 */ -0, /* kcud1 */ -0, /* krmir */ -0, /* kel */ -0, /* ked */ -0, /* kf0 */ -0, /* kf1 */ -0, /* kf10 */ -0, /* kf2 */ -0, /* kf3 */ -0, /* kf4 */ -0, /* kf5 */ -0, /* kf6 */ -0, /* kf7 */ -0, /* kf8 */ -0, /* kf9 */ -0, /* khome */ -0, /* kich1 */ -0, /* kil1 */ -0, /* kcub1 */ -0, /* kll */ -0, /* knp */ -0, /* kpp */ -0, /* kcuf1 */ -0, /* kind */ -0, /* kri */ -0, /* khts */ -0, /* kcuu1 */ -0, /* rmkx */ -0, /* smkx */ -0, /* lf0 */ -0, /* lf1 */ -0, /* lf10 */ -0, /* lf2 */ -0, /* lf3 */ -0, /* lf4 */ -0, /* lf5 */ -0, /* lf6 */ -0, /* lf7 */ -0, /* lf8 */ -0, /* lf9 */ -0, /* rmm */ -0, /* smm */ -0, /* nel */ -0, /* pad */ -1, /* dch */ -1, /* dl */ -1, /* cud */ -1, /* ich */ -1, /* indn */ -1, /* il */ -1, /* cub */ -1, /* cuf */ -1, /* rin */ -1, /* cuu */ -1, /* pfkey */ -1, /* pfloc */ -1, /* pfx */ -0, /* mc0 */ -0, /* mc4 */ -0, /* mc5 */ -1, /* rep */ -0, /* rs1 */ -0, /* rs2 */ -0, /* rs3 */ -0, /* rf */ -0, /* rc */ -1, /* vpa */ -0, /* sc */ -0, /* ind */ -0, /* ri */ -1, /* sgr */ -0, /* hts */ -1, /* wind */ -0, /* ht */ -1, /* tsl */ -0, /* uc */ -0, /* hu */ -0, /* iprog */ -0, /* ka1 */ -0, /* ka3 */ -0, /* kb2 */ -0, /* kc1 */ -0, /* kc3 */ -1, /* mc5p */ -0, /* rmp */ --1, /* acsc */ -1, /* pln */ -0, /* kcbt */ -0, /* smxon */ -0, /* rmxon */ -0, /* smam */ -0, /* rmam */ -0, /* xonc */ -0, /* xoffc */ -0, /* enacs */ -0, /* smln */ -0, /* rmln */ -0, /* kbeg */ -0, /* kcan */ -0, /* kclo */ -0, /* kcmd */ -0, /* kcpy */ -0, /* kcrt */ -0, /* kend */ -0, /* kent */ -0, /* kext */ -0, /* kfnd */ -0, /* khlp */ -0, /* kmrk */ -0, /* kmsg */ -0, /* kmov */ -0, /* knxt */ -0, /* kopn */ -0, /* kopt */ -0, /* kprv */ -0, /* kprt */ -0, /* krdo */ -0, /* kref */ -0, /* krfr */ -0, /* krpl */ -0, /* krst */ -0, /* kres */ -0, /* ksav */ -0, /* kspd */ -0, /* kund */ -0, /* kBEG */ -0, /* kCAN */ -0, /* kCMD */ -0, /* kCPY */ -0, /* kCRT */ -0, /* kDC */ -0, /* kDL */ -0, /* kslt */ -0, /* kEND */ -0, /* kEOL */ -0, /* kEXT */ -0, /* kFND */ -1, /* kHLP */ -1, /* kHOM */ -1, /* kIC */ -1, /* kLFT */ -0, /* kMSG */ -0, /* kMOV */ -0, /* kNXT */ -0, /* kOPT */ -0, /* kPRV */ -0, /* kPRT */ -0, /* kRDO */ -0, /* kRPL */ -0, /* kRIT */ -0, /* kRES */ -0, /* kSAV */ -0, /* kSPD */ -0, /* kUND */ -0, /* rfi */ -0, /* kf11 */ -0, /* kf12 */ -0, /* kf13 */ -0, /* kf14 */ -0, /* kf15 */ -0, /* kf16 */ -0, /* kf17 */ -0, /* kf18 */ -0, /* kf19 */ -0, /* kf20 */ -0, /* kf21 */ -0, /* kf22 */ -0, /* kf23 */ -0, /* kf24 */ -0, /* kf25 */ -0, /* kf26 */ -0, /* kf27 */ -0, /* kf28 */ -0, /* kf29 */ -0, /* kf30 */ -0, /* kf31 */ -0, /* kf32 */ -0, /* kf33 */ -0, /* kf34 */ -0, /* kf35 */ -0, /* kf36 */ -0, /* kf37 */ -0, /* kf38 */ -0, /* kf39 */ -0, /* kf40 */ -0, /* kf41 */ -0, /* kf42 */ -0, /* kf43 */ -0, /* kf44 */ -0, /* kf45 */ -0, /* kf46 */ -0, /* kf47 */ -0, /* kf48 */ -0, /* kf49 */ -0, /* kf50 */ -0, /* kf51 */ -0, /* kf52 */ -0, /* kf53 */ -0, /* kf54 */ -0, /* kf55 */ -0, /* kf56 */ -0, /* kf57 */ -0, /* kf58 */ -0, /* kf59 */ -0, /* kf60 */ -0, /* kf61 */ -0, /* kf62 */ -0, /* kf63 */ -0, /* el1 */ -0, /* mgc */ -0, /* smgl */ -0, /* smgr */ -0, /* fln */ -1, /* sclk */ -0, /* dclk */ -0, /* rmclk */ -1, /* cwin */ -1, /* wingo */ -0, /* hup */ -1, /* dial */ -1, /* qdial */ -0, /* tone */ -0, /* pulse */ -0, /* hook */ -0, /* pause */ -0, /* wait */ -1, /* u0 */ -1, /* u1 */ -1, /* u2 */ -1, /* u3 */ -1, /* u4 */ -1, /* u5 */ -1, /* u6 */ -1, /* u7 */ -1, /* u8 */ -1, /* u9 */ -0, /* op */ -0, /* oc */ -1, /* initc */ -1, /* initp */ -1, /* scp */ -1, /* setf */ -1, /* setb */ -1, /* cpi */ -1, /* lpi */ -1, /* chr */ -1, /* cvr */ -1, /* defc */ -0, /* swidm */ -0, /* sdrfq */ -0, /* sitm */ -0, /* slm */ -0, /* smicm */ -0, /* snlq */ -0, /* snrmq */ -0, /* sshm */ -0, /* ssubm */ -0, /* ssupm */ -0, /* sum */ -0, /* rwidm */ -0, /* ritm */ -0, /* rlm */ -0, /* rmicm */ -0, /* rshm */ -0, /* rsubm */ -0, /* rsupm */ -0, /* rum */ -0, /* mhpa */ -0, /* mcud1 */ -0, /* mcub1 */ -0, /* mcuf1 */ -1, /* mvpa */ -0, /* mcuu1 */ -0, /* porder */ -0, /* mcud */ -0, /* mcub */ -0, /* mcuf */ -0, /* mcuu */ -1, /* scs */ -0, /* smgb */ -1, /* smgbp */ -1, /* smglp */ -1, /* smgrp */ -0, /* smgt */ -1, /* smgtp */ -0, /* sbim */ -1, /* scsd */ -0, /* rbim */ -1, /* rcsd */ -0, /* subcs */ -0, /* supcs */ -0, /* docr */ -0, /* zerom */ -1, /* csnm */ -0, /* kmous */ -0, /* minfo */ -0, /* reqmp */ -1, /* getm */ -1, /* setaf */ -1, /* setab */ -1, /* pfxl */ -0, /* devt */ -0, /* csin */ -0, /* s0ds */ -0, /* s1ds */ -0, /* s2ds */ -0, /* s3ds */ -1, /* smglr */ -1, /* smgtb */ -1, /* birep */ -0, /* binel */ -0, /* bicr */ -1, /* colornm */ -0, /* defbi */ -0, /* endbi */ -1, /* setcolor */ -1, /* slines */ -1, /* dispc */ -0, /* smpch */ -0, /* rmpch */ -0, /* smsc */ -0, /* rmsc */ -0, /* pctrm */ -0, /* scesc */ -0, /* scesa */ -0, /* ehhlm */ -0, /* elhlm */ -0, /* elohlm */ -0, /* erhlm */ -0, /* ethlm */ -0, /* evhlm */ -1, /* sgr1 */ -1, /* slength */ -0, /* OTi2 */ -0, /* OTrs */ -0, /* OTnl */ -0, /* OTbc */ -0, /* OTko */ -0, /* OTma */ --1, /* OTG2 */ --1, /* OTG3 */ --1, /* OTG1 */ --1, /* OTG4 */ --1, /* OTGR */ --1, /* OTGL */ --1, /* OTGU */ --1, /* OTGD */ --1, /* OTGH */ --1, /* OTGV */ --1, /* OTGC */ -0, /* meml */ -0, /* memu */ -1, /* pln */ -0, /* smln */ -0, /* rmln */ -0, /* kf11 */ -0, /* kf12 */ -0, /* kf13 */ -0, /* kf14 */ -0, /* kf15 */ -0, /* kf16 */ -0, /* kf17 */ -0, /* kf18 */ -0, /* kf19 */ -0, /* kf20 */ -0, /* kf21 */ -0, /* kf22 */ -0, /* kf23 */ -0, /* kf24 */ -0, /* kf25 */ -0, /* kf26 */ -0, /* kf27 */ -0, /* kf28 */ -0, /* kf29 */ -0, /* kf30 */ -0, /* kf31 */ -0, /* kf32 */ -0, /* kf33 */ -0, /* kf34 */ -0, /* kf35 */ -0, /* kf36 */ -0, /* kf37 */ -0, /* kf38 */ -0, /* kf39 */ -0, /* kf40 */ -0, /* kf41 */ -0, /* kf42 */ -0, /* kf43 */ -0, /* kf44 */ -0, /* kf45 */ -0, /* kf46 */ -0, /* kf47 */ -0, /* kf48 */ -0, /* kf49 */ -0, /* kf50 */ -0, /* kf51 */ -0, /* kf52 */ -0, /* kf53 */ -0, /* kf54 */ -0, /* kf55 */ -0, /* kf56 */ -0, /* kf57 */ -0, /* kf58 */ -0, /* kf59 */ -0, /* kf60 */ -0, /* kf61 */ -0, /* kf62 */ -0, /* kf63 */ -0, /* box1 */ -0, /* box2 */ -0, /* batt1 */ -0, /* batt2 */ -0, /* colb0 */ -0, /* colb1 */ -0, /* colb2 */ -0, /* colb3 */ -0, /* colb4 */ -0, /* colb5 */ -0, /* colb6 */ -0, /* colb7 */ -0, /* colf0 */ -0, /* colf1 */ -0, /* colf2 */ -0, /* colf3 */ -0, /* colf4 */ -0, /* colf5 */ -0, /* colf6 */ -0, /* colf7 */ -0, /* font0 */ -0, /* font1 */ -0, /* font2 */ -0, /* font3 */ -0, /* font4 */ -0, /* font5 */ -0, /* font6 */ -0, /* font7 */ -0, /* kbtab */ -0, /* kdo */ -0, /* kcmd */ -0, /* kcpn */ -0, /* kend */ -0, /* khlp */ -0, /* knl */ -0, /* knpn */ -0, /* kppn */ -0, /* kppn */ -0, /* kquit */ -0, /* ksel */ -0, /* kscl */ -0, /* kscr */ -0, /* ktab */ -0, /* kmpf1 */ -0, /* kmpt1 */ -0, /* kmpf2 */ -0, /* kmpt2 */ -0, /* kmpf3 */ -0, /* kmpt3 */ -0, /* kmpf4 */ -0, /* kmpt4 */ -0, /* kmpf5 */ -0, /* kmpt5 */ -0, /* apstr */ -0, /* kmpf6 */ -0, /* kmpt6 */ -0, /* kmpf7 */ -0, /* kmpt7 */ -0, /* kmpf8 */ -0, /* kmpt8 */ -0, /* kmpf9 */ -0, /* kmpt9 */ -0, /* ksf1 */ -0, /* ksf2 */ -0, /* ksf3 */ -0, /* ksf4 */ -0, /* ksf5 */ -0, /* ksf6 */ -0, /* ksf7 */ -0, /* ksf8 */ -0, /* ksf9 */ -0, /* ksf10 */ -0, /* kf11 */ -0, /* kf12 */ -0, /* kact */ -0, /* topl */ -0, /* btml */ -0, /* rvert */ -0, /* lvert */ -} /* 548 entries */; - diff --git a/ncurses/include/term.h b/ncurses/include/term.h deleted file mode 100644 index 6ab89c2..0000000 --- a/ncurses/include/term.h +++ /dev/null @@ -1,792 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * - * * - * Permission is hereby granted, free of charge, to any person obtaining a * - * copy of this software and associated documentation files (the * - * "Software"), to deal in the Software without restriction, including * - * without limitation the rights to use, copy, modify, merge, publish, * - * distribute, distribute with modifications, sublicense, and/or sell * - * copies of the Software, and to permit persons to whom the Software is * - * furnished to do so, subject to the following conditions: * - * * - * The above copyright notice and this permission notice shall be included * - * in all copies or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * - * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * * - * Except as contained in this notice, the name(s) of the above copyright * - * holders shall not be used in advertising or otherwise to promote the * - * sale, use or other dealings in this Software without prior written * - * authorization. * - ****************************************************************************/ - -/****************************************************************************/ -/* Author: Zeyd M. Ben-Halim 1992,1995 */ -/* and: Eric S. Raymond */ -/* and: Thomas E. Dickey 1995-on */ -/****************************************************************************/ - -/* $Id: MKterm.h.awk.in,v 1.50 2008/05/24 23:13:59 tom Exp $ */ - -/* -** term.h -- Definition of struct term -*/ - -#ifndef NCURSES_TERM_H_incl -#define NCURSES_TERM_H_incl 1 - -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.7" - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H - * definition (based on the system for which this was configured). - */ - -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_SBOOL -#define NCURSES_SBOOL char - -#undef NCURSES_XNAMES -#define NCURSES_XNAMES 1 - -/* We will use these symbols to hide differences between - * termios/termio/sgttyb interfaces. - */ -#undef TTY -#undef SET_TTY -#undef GET_TTY - -/* Assume POSIX termio if we have the header and function */ -/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */ -#if 1 && 1 - -#undef TERMIOS -#define TERMIOS 1 - -#include -#define TTY struct termios - -#else /* !HAVE_TERMIOS_H */ - -/* #if HAVE_TERMIO_H */ -#if 0 - -#undef TERMIOS -#define TERMIOS 1 - -#include -#define TTY struct termio - -/* Add definitions to make termio look like termios. - * But ifdef it, since there are some implementations - * that try to do this for us in a fake . - */ -#ifndef TCSANOW -#define TCSANOW TCSETA -#endif -#ifndef TCSADRAIN -#define TCSADRAIN TCSETAW -#endif -#ifndef TCSAFLUSH -#define TCSAFLUSH TCSETAF -#endif -#ifndef tcsetattr -#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg) -#endif -#ifndef tcgetattr -#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg) -#endif -#ifndef cfgetospeed -#define cfgetospeed(t) ((t)->c_cflag & CBAUD) -#endif -#ifndef TCIFLUSH -#define TCIFLUSH 0 -#endif -#ifndef TCOFLUSH -#define TCOFLUSH 1 -#endif -#ifndef TCIOFLUSH -#define TCIOFLUSH 2 -#endif -#ifndef tcflush -#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg) -#endif - -#else /* !HAVE_TERMIO_H */ - -#undef TERMIOS -#include -#include -#define TTY struct sgttyb - -#endif /* HAVE_TERMIO_H */ - -#endif /* HAVE_TERMIOS_H */ - -#ifdef TERMIOS -#define GET_TTY(fd, buf) tcgetattr(fd, buf) -#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf) -#else -#define GET_TTY(fd, buf) gtty(fd, buf) -#define SET_TTY(fd, buf) stty(fd, buf) -#endif - -#define NAMESIZE 256 - -#define CUR cur_term->type. - -#define auto_left_margin CUR Booleans[0] -#define auto_right_margin CUR Booleans[1] -#define no_esc_ctlc CUR Booleans[2] -#define ceol_standout_glitch CUR Booleans[3] -#define eat_newline_glitch CUR Booleans[4] -#define erase_overstrike CUR Booleans[5] -#define generic_type CUR Booleans[6] -#define hard_copy CUR Booleans[7] -#define has_meta_key CUR Booleans[8] -#define has_status_line CUR Booleans[9] -#define insert_null_glitch CUR Booleans[10] -#define memory_above CUR Booleans[11] -#define memory_below CUR Booleans[12] -#define move_insert_mode CUR Booleans[13] -#define move_standout_mode CUR Booleans[14] -#define over_strike CUR Booleans[15] -#define status_line_esc_ok CUR Booleans[16] -#define dest_tabs_magic_smso CUR Booleans[17] -#define tilde_glitch CUR Booleans[18] -#define transparent_underline CUR Booleans[19] -#define xon_xoff CUR Booleans[20] -#define needs_xon_xoff CUR Booleans[21] -#define prtr_silent CUR Booleans[22] -#define hard_cursor CUR Booleans[23] -#define non_rev_rmcup CUR Booleans[24] -#define no_pad_char CUR Booleans[25] -#define non_dest_scroll_region CUR Booleans[26] -#define can_change CUR Booleans[27] -#define back_color_erase CUR Booleans[28] -#define hue_lightness_saturation CUR Booleans[29] -#define col_addr_glitch CUR Booleans[30] -#define cr_cancels_micro_mode CUR Booleans[31] -#define has_print_wheel CUR Booleans[32] -#define row_addr_glitch CUR Booleans[33] -#define semi_auto_right_margin CUR Booleans[34] -#define cpi_changes_res CUR Booleans[35] -#define lpi_changes_res CUR Booleans[36] -#define columns CUR Numbers[0] -#define init_tabs CUR Numbers[1] -#define lines CUR Numbers[2] -#define lines_of_memory CUR Numbers[3] -#define magic_cookie_glitch CUR Numbers[4] -#define padding_baud_rate CUR Numbers[5] -#define virtual_terminal CUR Numbers[6] -#define width_status_line CUR Numbers[7] -#define num_labels CUR Numbers[8] -#define label_height CUR Numbers[9] -#define label_width CUR Numbers[10] -#define max_attributes CUR Numbers[11] -#define maximum_windows CUR Numbers[12] -#define max_colors CUR Numbers[13] -#define max_pairs CUR Numbers[14] -#define no_color_video CUR Numbers[15] -#define buffer_capacity CUR Numbers[16] -#define dot_vert_spacing CUR Numbers[17] -#define dot_horz_spacing CUR Numbers[18] -#define max_micro_address CUR Numbers[19] -#define max_micro_jump CUR Numbers[20] -#define micro_col_size CUR Numbers[21] -#define micro_line_size CUR Numbers[22] -#define number_of_pins CUR Numbers[23] -#define output_res_char CUR Numbers[24] -#define output_res_line CUR Numbers[25] -#define output_res_horz_inch CUR Numbers[26] -#define output_res_vert_inch CUR Numbers[27] -#define print_rate CUR Numbers[28] -#define wide_char_size CUR Numbers[29] -#define buttons CUR Numbers[30] -#define bit_image_entwining CUR Numbers[31] -#define bit_image_type CUR Numbers[32] -#define back_tab CUR Strings[0] -#define bell CUR Strings[1] -#define carriage_return CUR Strings[2] -#define change_scroll_region CUR Strings[3] -#define clear_all_tabs CUR Strings[4] -#define clear_screen CUR Strings[5] -#define clr_eol CUR Strings[6] -#define clr_eos CUR Strings[7] -#define column_address CUR Strings[8] -#define command_character CUR Strings[9] -#define cursor_address CUR Strings[10] -#define cursor_down CUR Strings[11] -#define cursor_home CUR Strings[12] -#define cursor_invisible CUR Strings[13] -#define cursor_left CUR Strings[14] -#define cursor_mem_address CUR Strings[15] -#define cursor_normal CUR Strings[16] -#define cursor_right CUR Strings[17] -#define cursor_to_ll CUR Strings[18] -#define cursor_up CUR Strings[19] -#define cursor_visible CUR Strings[20] -#define delete_character CUR Strings[21] -#define delete_line CUR Strings[22] -#define dis_status_line CUR Strings[23] -#define down_half_line CUR Strings[24] -#define enter_alt_charset_mode CUR Strings[25] -#define enter_blink_mode CUR Strings[26] -#define enter_bold_mode CUR Strings[27] -#define enter_ca_mode CUR Strings[28] -#define enter_delete_mode CUR Strings[29] -#define enter_dim_mode CUR Strings[30] -#define enter_insert_mode CUR Strings[31] -#define enter_secure_mode CUR Strings[32] -#define enter_protected_mode CUR Strings[33] -#define enter_reverse_mode CUR Strings[34] -#define enter_standout_mode CUR Strings[35] -#define enter_underline_mode CUR Strings[36] -#define erase_chars CUR Strings[37] -#define exit_alt_charset_mode CUR Strings[38] -#define exit_attribute_mode CUR Strings[39] -#define exit_ca_mode CUR Strings[40] -#define exit_delete_mode CUR Strings[41] -#define exit_insert_mode CUR Strings[42] -#define exit_standout_mode CUR Strings[43] -#define exit_underline_mode CUR Strings[44] -#define flash_screen CUR Strings[45] -#define form_feed CUR Strings[46] -#define from_status_line CUR Strings[47] -#define init_1string CUR Strings[48] -#define init_2string CUR Strings[49] -#define init_3string CUR Strings[50] -#define init_file CUR Strings[51] -#define insert_character CUR Strings[52] -#define insert_line CUR Strings[53] -#define insert_padding CUR Strings[54] -#define key_backspace CUR Strings[55] -#define key_catab CUR Strings[56] -#define key_clear CUR Strings[57] -#define key_ctab CUR Strings[58] -#define key_dc CUR Strings[59] -#define key_dl CUR Strings[60] -#define key_down CUR Strings[61] -#define key_eic CUR Strings[62] -#define key_eol CUR Strings[63] -#define key_eos CUR Strings[64] -#define key_f0 CUR Strings[65] -#define key_f1 CUR Strings[66] -#define key_f10 CUR Strings[67] -#define key_f2 CUR Strings[68] -#define key_f3 CUR Strings[69] -#define key_f4 CUR Strings[70] -#define key_f5 CUR Strings[71] -#define key_f6 CUR Strings[72] -#define key_f7 CUR Strings[73] -#define key_f8 CUR Strings[74] -#define key_f9 CUR Strings[75] -#define key_home CUR Strings[76] -#define key_ic CUR Strings[77] -#define key_il CUR Strings[78] -#define key_left CUR Strings[79] -#define key_ll CUR Strings[80] -#define key_npage CUR Strings[81] -#define key_ppage CUR Strings[82] -#define key_right CUR Strings[83] -#define key_sf CUR Strings[84] -#define key_sr CUR Strings[85] -#define key_stab CUR Strings[86] -#define key_up CUR Strings[87] -#define keypad_local CUR Strings[88] -#define keypad_xmit CUR Strings[89] -#define lab_f0 CUR Strings[90] -#define lab_f1 CUR Strings[91] -#define lab_f10 CUR Strings[92] -#define lab_f2 CUR Strings[93] -#define lab_f3 CUR Strings[94] -#define lab_f4 CUR Strings[95] -#define lab_f5 CUR Strings[96] -#define lab_f6 CUR Strings[97] -#define lab_f7 CUR Strings[98] -#define lab_f8 CUR Strings[99] -#define lab_f9 CUR Strings[100] -#define meta_off CUR Strings[101] -#define meta_on CUR Strings[102] -#define newline CUR Strings[103] -#define pad_char CUR Strings[104] -#define parm_dch CUR Strings[105] -#define parm_delete_line CUR Strings[106] -#define parm_down_cursor CUR Strings[107] -#define parm_ich CUR Strings[108] -#define parm_index CUR Strings[109] -#define parm_insert_line CUR Strings[110] -#define parm_left_cursor CUR Strings[111] -#define parm_right_cursor CUR Strings[112] -#define parm_rindex CUR Strings[113] -#define parm_up_cursor CUR Strings[114] -#define pkey_key CUR Strings[115] -#define pkey_local CUR Strings[116] -#define pkey_xmit CUR Strings[117] -#define print_screen CUR Strings[118] -#define prtr_off CUR Strings[119] -#define prtr_on CUR Strings[120] -#define repeat_char CUR Strings[121] -#define reset_1string CUR Strings[122] -#define reset_2string CUR Strings[123] -#define reset_3string CUR Strings[124] -#define reset_file CUR Strings[125] -#define restore_cursor CUR Strings[126] -#define row_address CUR Strings[127] -#define save_cursor CUR Strings[128] -#define scroll_forward CUR Strings[129] -#define scroll_reverse CUR Strings[130] -#define set_attributes CUR Strings[131] -#define set_tab CUR Strings[132] -#define set_window CUR Strings[133] -#define tab CUR Strings[134] -#define to_status_line CUR Strings[135] -#define underline_char CUR Strings[136] -#define up_half_line CUR Strings[137] -#define init_prog CUR Strings[138] -#define key_a1 CUR Strings[139] -#define key_a3 CUR Strings[140] -#define key_b2 CUR Strings[141] -#define key_c1 CUR Strings[142] -#define key_c3 CUR Strings[143] -#define prtr_non CUR Strings[144] -#define char_padding CUR Strings[145] -#define acs_chars CUR Strings[146] -#define plab_norm CUR Strings[147] -#define key_btab CUR Strings[148] -#define enter_xon_mode CUR Strings[149] -#define exit_xon_mode CUR Strings[150] -#define enter_am_mode CUR Strings[151] -#define exit_am_mode CUR Strings[152] -#define xon_character CUR Strings[153] -#define xoff_character CUR Strings[154] -#define ena_acs CUR Strings[155] -#define label_on CUR Strings[156] -#define label_off CUR Strings[157] -#define key_beg CUR Strings[158] -#define key_cancel CUR Strings[159] -#define key_close CUR Strings[160] -#define key_command CUR Strings[161] -#define key_copy CUR Strings[162] -#define key_create CUR Strings[163] -#define key_end CUR Strings[164] -#define key_enter CUR Strings[165] -#define key_exit CUR Strings[166] -#define key_find CUR Strings[167] -#define key_help CUR Strings[168] -#define key_mark CUR Strings[169] -#define key_message CUR Strings[170] -#define key_move CUR Strings[171] -#define key_next CUR Strings[172] -#define key_open CUR Strings[173] -#define key_options CUR Strings[174] -#define key_previous CUR Strings[175] -#define key_print CUR Strings[176] -#define key_redo CUR Strings[177] -#define key_reference CUR Strings[178] -#define key_refresh CUR Strings[179] -#define key_replace CUR Strings[180] -#define key_restart CUR Strings[181] -#define key_resume CUR Strings[182] -#define key_save CUR Strings[183] -#define key_suspend CUR Strings[184] -#define key_undo CUR Strings[185] -#define key_sbeg CUR Strings[186] -#define key_scancel CUR Strings[187] -#define key_scommand CUR Strings[188] -#define key_scopy CUR Strings[189] -#define key_screate CUR Strings[190] -#define key_sdc CUR Strings[191] -#define key_sdl CUR Strings[192] -#define key_select CUR Strings[193] -#define key_send CUR Strings[194] -#define key_seol CUR Strings[195] -#define key_sexit CUR Strings[196] -#define key_sfind CUR Strings[197] -#define key_shelp CUR Strings[198] -#define key_shome CUR Strings[199] -#define key_sic CUR Strings[200] -#define key_sleft CUR Strings[201] -#define key_smessage CUR Strings[202] -#define key_smove CUR Strings[203] -#define key_snext CUR Strings[204] -#define key_soptions CUR Strings[205] -#define key_sprevious CUR Strings[206] -#define key_sprint CUR Strings[207] -#define key_sredo CUR Strings[208] -#define key_sreplace CUR Strings[209] -#define key_sright CUR Strings[210] -#define key_srsume CUR Strings[211] -#define key_ssave CUR Strings[212] -#define key_ssuspend CUR Strings[213] -#define key_sundo CUR Strings[214] -#define req_for_input CUR Strings[215] -#define key_f11 CUR Strings[216] -#define key_f12 CUR Strings[217] -#define key_f13 CUR Strings[218] -#define key_f14 CUR Strings[219] -#define key_f15 CUR Strings[220] -#define key_f16 CUR Strings[221] -#define key_f17 CUR Strings[222] -#define key_f18 CUR Strings[223] -#define key_f19 CUR Strings[224] -#define key_f20 CUR Strings[225] -#define key_f21 CUR Strings[226] -#define key_f22 CUR Strings[227] -#define key_f23 CUR Strings[228] -#define key_f24 CUR Strings[229] -#define key_f25 CUR Strings[230] -#define key_f26 CUR Strings[231] -#define key_f27 CUR Strings[232] -#define key_f28 CUR Strings[233] -#define key_f29 CUR Strings[234] -#define key_f30 CUR Strings[235] -#define key_f31 CUR Strings[236] -#define key_f32 CUR Strings[237] -#define key_f33 CUR Strings[238] -#define key_f34 CUR Strings[239] -#define key_f35 CUR Strings[240] -#define key_f36 CUR Strings[241] -#define key_f37 CUR Strings[242] -#define key_f38 CUR Strings[243] -#define key_f39 CUR Strings[244] -#define key_f40 CUR Strings[245] -#define key_f41 CUR Strings[246] -#define key_f42 CUR Strings[247] -#define key_f43 CUR Strings[248] -#define key_f44 CUR Strings[249] -#define key_f45 CUR Strings[250] -#define key_f46 CUR Strings[251] -#define key_f47 CUR Strings[252] -#define key_f48 CUR Strings[253] -#define key_f49 CUR Strings[254] -#define key_f50 CUR Strings[255] -#define key_f51 CUR Strings[256] -#define key_f52 CUR Strings[257] -#define key_f53 CUR Strings[258] -#define key_f54 CUR Strings[259] -#define key_f55 CUR Strings[260] -#define key_f56 CUR Strings[261] -#define key_f57 CUR Strings[262] -#define key_f58 CUR Strings[263] -#define key_f59 CUR Strings[264] -#define key_f60 CUR Strings[265] -#define key_f61 CUR Strings[266] -#define key_f62 CUR Strings[267] -#define key_f63 CUR Strings[268] -#define clr_bol CUR Strings[269] -#define clear_margins CUR Strings[270] -#define set_left_margin CUR Strings[271] -#define set_right_margin CUR Strings[272] -#define label_format CUR Strings[273] -#define set_clock CUR Strings[274] -#define display_clock CUR Strings[275] -#define remove_clock CUR Strings[276] -#define create_window CUR Strings[277] -#define goto_window CUR Strings[278] -#define hangup CUR Strings[279] -#define dial_phone CUR Strings[280] -#define quick_dial CUR Strings[281] -#define tone CUR Strings[282] -#define pulse CUR Strings[283] -#define flash_hook CUR Strings[284] -#define fixed_pause CUR Strings[285] -#define wait_tone CUR Strings[286] -#define user0 CUR Strings[287] -#define user1 CUR Strings[288] -#define user2 CUR Strings[289] -#define user3 CUR Strings[290] -#define user4 CUR Strings[291] -#define user5 CUR Strings[292] -#define user6 CUR Strings[293] -#define user7 CUR Strings[294] -#define user8 CUR Strings[295] -#define user9 CUR Strings[296] -#define orig_pair CUR Strings[297] -#define orig_colors CUR Strings[298] -#define initialize_color CUR Strings[299] -#define initialize_pair CUR Strings[300] -#define set_color_pair CUR Strings[301] -#define set_foreground CUR Strings[302] -#define set_background CUR Strings[303] -#define change_char_pitch CUR Strings[304] -#define change_line_pitch CUR Strings[305] -#define change_res_horz CUR Strings[306] -#define change_res_vert CUR Strings[307] -#define define_char CUR Strings[308] -#define enter_doublewide_mode CUR Strings[309] -#define enter_draft_quality CUR Strings[310] -#define enter_italics_mode CUR Strings[311] -#define enter_leftward_mode CUR Strings[312] -#define enter_micro_mode CUR Strings[313] -#define enter_near_letter_quality CUR Strings[314] -#define enter_normal_quality CUR Strings[315] -#define enter_shadow_mode CUR Strings[316] -#define enter_subscript_mode CUR Strings[317] -#define enter_superscript_mode CUR Strings[318] -#define enter_upward_mode CUR Strings[319] -#define exit_doublewide_mode CUR Strings[320] -#define exit_italics_mode CUR Strings[321] -#define exit_leftward_mode CUR Strings[322] -#define exit_micro_mode CUR Strings[323] -#define exit_shadow_mode CUR Strings[324] -#define exit_subscript_mode CUR Strings[325] -#define exit_superscript_mode CUR Strings[326] -#define exit_upward_mode CUR Strings[327] -#define micro_column_address CUR Strings[328] -#define micro_down CUR Strings[329] -#define micro_left CUR Strings[330] -#define micro_right CUR Strings[331] -#define micro_row_address CUR Strings[332] -#define micro_up CUR Strings[333] -#define order_of_pins CUR Strings[334] -#define parm_down_micro CUR Strings[335] -#define parm_left_micro CUR Strings[336] -#define parm_right_micro CUR Strings[337] -#define parm_up_micro CUR Strings[338] -#define select_char_set CUR Strings[339] -#define set_bottom_margin CUR Strings[340] -#define set_bottom_margin_parm CUR Strings[341] -#define set_left_margin_parm CUR Strings[342] -#define set_right_margin_parm CUR Strings[343] -#define set_top_margin CUR Strings[344] -#define set_top_margin_parm CUR Strings[345] -#define start_bit_image CUR Strings[346] -#define start_char_set_def CUR Strings[347] -#define stop_bit_image CUR Strings[348] -#define stop_char_set_def CUR Strings[349] -#define subscript_characters CUR Strings[350] -#define superscript_characters CUR Strings[351] -#define these_cause_cr CUR Strings[352] -#define zero_motion CUR Strings[353] -#define char_set_names CUR Strings[354] -#define key_mouse CUR Strings[355] -#define mouse_info CUR Strings[356] -#define req_mouse_pos CUR Strings[357] -#define get_mouse CUR Strings[358] -#define set_a_foreground CUR Strings[359] -#define set_a_background CUR Strings[360] -#define pkey_plab CUR Strings[361] -#define device_type CUR Strings[362] -#define code_set_init CUR Strings[363] -#define set0_des_seq CUR Strings[364] -#define set1_des_seq CUR Strings[365] -#define set2_des_seq CUR Strings[366] -#define set3_des_seq CUR Strings[367] -#define set_lr_margin CUR Strings[368] -#define set_tb_margin CUR Strings[369] -#define bit_image_repeat CUR Strings[370] -#define bit_image_newline CUR Strings[371] -#define bit_image_carriage_return CUR Strings[372] -#define color_names CUR Strings[373] -#define define_bit_image_region CUR Strings[374] -#define end_bit_image_region CUR Strings[375] -#define set_color_band CUR Strings[376] -#define set_page_length CUR Strings[377] -#define display_pc_char CUR Strings[378] -#define enter_pc_charset_mode CUR Strings[379] -#define exit_pc_charset_mode CUR Strings[380] -#define enter_scancode_mode CUR Strings[381] -#define exit_scancode_mode CUR Strings[382] -#define pc_term_options CUR Strings[383] -#define scancode_escape CUR Strings[384] -#define alt_scancode_esc CUR Strings[385] -#define enter_horizontal_hl_mode CUR Strings[386] -#define enter_left_hl_mode CUR Strings[387] -#define enter_low_hl_mode CUR Strings[388] -#define enter_right_hl_mode CUR Strings[389] -#define enter_top_hl_mode CUR Strings[390] -#define enter_vertical_hl_mode CUR Strings[391] -#define set_a_attributes CUR Strings[392] -#define set_pglen_inch CUR Strings[393] - -#define BOOLWRITE 37 -#define NUMWRITE 33 -#define STRWRITE 394 - -/* older synonyms for some capabilities */ -#define beehive_glitch no_esc_ctlc -#define teleray_glitch dest_tabs_magic_smso -#define micro_char_size micro_col_size - -#ifdef __INTERNAL_CAPS_VISIBLE -#define termcap_init2 CUR Strings[394] -#define termcap_reset CUR Strings[395] -#define magic_cookie_glitch_ul CUR Numbers[33] -#define backspaces_with_bs CUR Booleans[37] -#define crt_no_scrolling CUR Booleans[38] -#define no_correctly_working_cr CUR Booleans[39] -#define carriage_return_delay CUR Numbers[34] -#define new_line_delay CUR Numbers[35] -#define linefeed_if_not_lf CUR Strings[396] -#define backspace_if_not_bs CUR Strings[397] -#define gnu_has_meta_key CUR Booleans[40] -#define linefeed_is_newline CUR Booleans[41] -#define backspace_delay CUR Numbers[36] -#define horizontal_tab_delay CUR Numbers[37] -#define number_of_function_keys CUR Numbers[38] -#define other_non_function_keys CUR Strings[398] -#define arrow_key_map CUR Strings[399] -#define has_hardware_tabs CUR Booleans[42] -#define return_does_clr_eol CUR Booleans[43] -#define acs_ulcorner CUR Strings[400] -#define acs_llcorner CUR Strings[401] -#define acs_urcorner CUR Strings[402] -#define acs_lrcorner CUR Strings[403] -#define acs_ltee CUR Strings[404] -#define acs_rtee CUR Strings[405] -#define acs_btee CUR Strings[406] -#define acs_ttee CUR Strings[407] -#define acs_hline CUR Strings[408] -#define acs_vline CUR Strings[409] -#define acs_plus CUR Strings[410] -#define memory_lock CUR Strings[411] -#define memory_unlock CUR Strings[412] -#define box_chars_1 CUR Strings[413] -#endif /* __INTERNAL_CAPS_VISIBLE */ - - -/* - * Predefined terminfo array sizes - */ -#define BOOLCOUNT 44 -#define NUMCOUNT 39 -#define STRCOUNT 414 - -/* used by code for comparing entries */ -#define acs_chars_index 146 - -typedef struct termtype { /* in-core form of terminfo data */ - char *term_names; /* str_table offset of term names */ - char *str_table; /* pointer to string table */ - NCURSES_SBOOL *Booleans; /* array of boolean values */ - short *Numbers; /* array of integer values */ - char **Strings; /* array of string offsets */ - -#if NCURSES_XNAMES - char *ext_str_table; /* pointer to extended string table */ - char **ext_Names; /* corresponding names */ - - unsigned short num_Booleans;/* count total Booleans */ - unsigned short num_Numbers; /* count total Numbers */ - unsigned short num_Strings; /* count total Strings */ - - unsigned short ext_Booleans;/* count extensions to Booleans */ - unsigned short ext_Numbers; /* count extensions to Numbers */ - unsigned short ext_Strings; /* count extensions to Strings */ -#endif /* NCURSES_XNAMES */ - -} TERMTYPE; - -typedef struct term { /* describe an actual terminal */ - TERMTYPE type; /* terminal type description */ - short Filedes; /* file description being written to */ - TTY Ottyb, /* original state of the terminal */ - Nttyb; /* current state of the terminal */ - int _baudrate; /* used to compute padding */ - char * _termname; /* used for termname() */ -} TERMINAL; - -#if 0 || 0 -NCURSES_WRAPPED_VAR(TERMINAL *, cur_term); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames); - -#define cur_term NCURSES_PUBLIC_VAR(cur_term()) -#define boolnames NCURSES_PUBLIC_VAR(boolnames()) -#define boolcodes NCURSES_PUBLIC_VAR(boolcodes()) -#define boolfnames NCURSES_PUBLIC_VAR(boolfnames()) -#define numnames NCURSES_PUBLIC_VAR(numnames()) -#define numcodes NCURSES_PUBLIC_VAR(numcodes()) -#define numfnames NCURSES_PUBLIC_VAR(numfnames()) -#define strnames NCURSES_PUBLIC_VAR(strnames()) -#define strcodes NCURSES_PUBLIC_VAR(strcodes()) -#define strfnames NCURSES_PUBLIC_VAR(strfnames()) - -#else - -extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term; - -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[]; - -#endif - -/* internals */ -extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf); -extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf); -extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const); -extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *); -extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int); -extern NCURSES_EXPORT(char *) _nc_first_name (const char *const); -extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const); -extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *); - -/* entry points */ -extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *); -extern NCURSES_EXPORT(int) del_curterm (TERMINAL *); - -/* miscellaneous entry points */ -extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *); -extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *); - -/* terminfo entry points, also declared in curses.h */ -#if !defined(__NCURSES_H) -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT(int) putp (const char *); -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); - -#if 1 /* NCURSES_TPARM_VARARGS */ -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -#endif /* __NCURSES_H */ - -/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */ -#if !defined(NCURSES_TERMCAP_H_incl) -extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **); -extern NCURSES_EXPORT(char *) tgoto (const char *, int, int); -extern NCURSES_EXPORT(int) tgetent (char *, const char *); -extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int)); -#endif /* NCURSES_TERMCAP_H_incl */ - -#ifdef __cplusplus -} -#endif - -#endif /* NCURSES_TERM_H_incl */ diff --git a/ncurses/include/term_entry.h b/ncurses/include/term_entry.h index fb87540..d1acd66 100644 --- a/ncurses/include/term_entry.h +++ b/ncurses/include/term_entry.h @@ -158,8 +158,10 @@ extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *); extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */ extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool); +#ifndef __APPLE__ /* trace_xnames.c */ extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *); +#endif #ifdef __cplusplus } diff --git a/ncurses/include/tic.h b/ncurses/include/tic.h index 4e10399..8a7f647 100644 --- a/ncurses/include/tic.h +++ b/ncurses/include/tic.h @@ -128,7 +128,9 @@ extern "C" { #endif extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing; +#ifndef __APPLE__ extern NCURSES_EXPORT(void) _nc_tracef (char *, ...) GCC_PRINTFLIKE(1,2); +#endif extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *); diff --git a/ncurses/man/term.5 b/ncurses/man/term.5 index 19af62a..b3b2264 100644 --- a/ncurses/man/term.5 +++ b/ncurses/man/term.5 @@ -265,6 +265,8 @@ Some limitations: total compiled entries cannot exceed 4096 bytes. The name field cannot exceed 128 bytes. .SH FILES \*d/*/* compiled terminal capability data base +.TP 5 +/usr/local/share/terminfo/*/* fallback compiled terminal capability data base .SH SEE ALSO \fBcurses\fR(3X), \fBterminfo\fR(\*n). .SH AUTHORS diff --git a/ncurses/man/term.7 b/ncurses/man/term.7 index 7eda6fb..feb5906 100644 --- a/ncurses/man/term.7 +++ b/ncurses/man/term.7 @@ -189,6 +189,9 @@ should be unique within the first 14 characters. \*d/?/* compiled terminal capability data base .TP 5 +/usr/local/share/terminfo/?/* +fallback compiled terminal capability data base +.TP 5 /etc/inittab tty line initialization (AT&T-like UNIXes) .TP 5 diff --git a/ncurses/misc/chkdef.cmd b/ncurses/misc/chkdef.cmd new file mode 100644 index 0000000..fa91dce --- /dev/null +++ b/ncurses/misc/chkdef.cmd @@ -0,0 +1,114 @@ +/**************************************************************************** + * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + * $Id: chkdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $ + * + * Author: Juan Jose Garcia Ripoll . + * Webpage: http://www.arrakis.es/~worm/ + * + * chkdef.cmd - checks that a .def file has no conflicts and is properly + * formatted. + * + * returns nonzero if two symbols have the same code or a line has a wrong + * format. + * + * returns 0 otherwise + * + * the standard output shows conflicts. + */ +parse arg def_file + +def_file = translate(def_file,'\','/') + +call CleanQueue + +/* + * `cmp' is zero when the file is valid + * `codes' associates a name to a code + * `names' associates a code to a name + */ +cmp = 0 +codes. = 0 +names. = '' + +/* + * This sed expression cleans empty lines, comments and special .DEF + * commands, such as LIBRARY..., EXPORTS..., etc + */ +tidy_up = '"s/[ ][ ]*/ /g;s/;.*//g;/^[ ]*$/d;/^[a-zA-Z]/d;"' + +/* + * First we find all public symbols from the original DLL. All this + * information is pushed into a REXX private list with the RXQUEUE + * utility program. + */ +'@echo off' +'type' def_file '| sed' tidy_up '| sort | rxqueue' + +do while queued() > 0 + /* + * We retrieve the symbol name (NEW_NAME) and its code (NEW_CODE) + */ + parse pull '"' new_name '"' '@'new_code rest + select + when (new_code = '') | (new_name = '') then + /* The input was not properly formatted */ + do + say 'Error: symbol "'new_name'" has no export code or is empty' + cmp = 1 + end + when codes.new_name \= 0 then + /* This symbol was already defined */ + if codes.new_name \= new_code then + do + cmp = 2 + say 'Symbol "'new_name'" multiply defined' + end + when names.new_code \= '' then + /* This code was already assigned to a symbol */ + if names.new_code \= new_name then + do + cmp = 3 + say 'Conflict with "'names.new_code'" & "'new_name'" being @'new_code + end + otherwise + do + codes.new_name = new_code + names.new_code = new_name + end + end /* select */ +end + +exit cmp + +CleanQueue: procedure + do while queued() > 0 + parse pull foo + end +return diff --git a/ncurses/misc/cleantic.cmd b/ncurses/misc/cleantic.cmd new file mode 100644 index 0000000..6859de3 --- /dev/null +++ b/ncurses/misc/cleantic.cmd @@ -0,0 +1,44 @@ +/**************************************************************************** + * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + * $Id: cleantic.cmd,v 1.4 2006/04/22 23:14:50 tom Exp $ + * + * Author: Juan Jose Garcia Ripoll . + * Webpage: http://www.arrakis.es/~worm/ + */ +parse arg dir + +pause +dir = translate(dir,'\','/'); +letters = '0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z' + +if dir = '' then + dir = '.' +'echo Cleaning 'dir +'for %%1 in ('letters') do @if not exist 'dir'\%%1\* (echo Cleaning ...\%%1 & rd %%1 2>NUL)' diff --git a/ncurses/misc/cmpdef.cmd b/ncurses/misc/cmpdef.cmd new file mode 100644 index 0000000..5bb8f6c --- /dev/null +++ b/ncurses/misc/cmpdef.cmd @@ -0,0 +1,134 @@ +/**************************************************************************** + * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + * $Id: cmpdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $ + * + * Author: Juan Jose Garcia Ripoll . + * Webpage: http://www.arrakis.es/~worm/ + * + * cmpdef.cmd - compares two .def files, checking whether they have + * the same entries with the same export codes. + * + * returns 0 if there are no conflicts between the files -- that is, + * the newer one can replace the older one. + * + * returns 1 when either of the files is not properly formatted and + * when there are conflicts: two symbols having the same export code. + * + * the standard output shows a list with newly added symbols, plus + * replaced symbols and conflicts. + */ +parse arg def_file1 def_file2 + +def_file1 = translate(def_file1,'\','/') +def_file2 = translate(def_file2,'\','/') + +call CleanQueue + +/* + * `cmp' is zero when the last file is valid and upward compatible + * `numbers' is the stem where symbols are stored + */ +cmp = 0 +names. = '' +numbers. = 0 + +/* + * This sed expression cleans empty lines, comments and special .DEF + * commands, such as LIBRARY..., EXPORTS..., etc + */ +tidy_up = '"s/[ ][ ]*/ /g;s/;.*//g;/^[ ]*$/d;/^[a-zA-Z]/d;"' + +/* + * First we find all public symbols from the original DLL. All this + * information is pushed into a REXX private list with the RXQUEUE + * utility program. + */ +'@echo off' +'type' def_file1 '| sed' tidy_up '| sort | rxqueue' + +do while queued() > 0 + /* + * We retrieve the symbol name (NAME) and its number (NUMBER) + */ + parse pull '"' name '"' '@'number rest + if number = '' || name = '' then + do + say 'Corrupted file' def_file1 + say 'Symbol' name 'has no number' + exit 1 + end + else + do + numbers.name = number + names.number = name + end +end + +/* + * Now we find all public symbols from the new DLL, and compare. + */ +'type' def_file2 '| sed' tidy_up '| sort | rxqueue' + +do while queued() > 0 + parse pull '"' name '"' '@'number rest + if name = '' | number = '' then + do + say 'Corrupted file' def_file2 + say 'Symbol' name 'has no number' + exit 1 + end + if numbers.name = 0 then + do + cmp = 1 + if names.number = '' then + say 'New symbol' name 'with code @'number + else + say 'Conflict old =' names.number ', new =' name 'at @'number + end + else if numbers.name \= number then + do + cmp = 1 + say name 'Symbol' name 'changed from @'numbers.name 'to @'number + end +end /* do */ + +exit cmp + +/* + * Cleans the REXX queue by pulling and forgetting every line. + * This is needed, at least, when `cmpdef.cmd' starts, because an aborted + * REXX program might have left some rubbish in. + */ +CleanQueue: procedure + do while queued() > 0 + parse pull foo + end +return + diff --git a/ncurses/misc/makedef.cmd b/ncurses/misc/makedef.cmd new file mode 100644 index 0000000..68a3569 --- /dev/null +++ b/ncurses/misc/makedef.cmd @@ -0,0 +1,179 @@ +/**************************************************************************** + * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/* + * $Id: makedef.cmd,v 1.5 2006/04/22 23:14:50 tom Exp $ + * + * Author: Juan Jose Garcia Ripoll . + * Webpage: http://www.arrakis.es/~worm/ + * + * makedef.cmd - update a DLL export list using a newly created library file + * in a.out format, plus an old .DEF file. + * + * standard output gets a sorted list with all entrypoints with entrycodes. + * This list, plus a few .def sentences (LIBRARY, DESCRIPTION and EXPORT) + * is used to build a new .def file. + * + * `_nc_*' symbols are ignored. + * + * returns 1 when the old def_file is corrupted -- that is, export items are + * not properly formatted. + * + * returns 0 if everything went OK. + */ + +parse arg lib_file def_file + +lib_file = translate(lib_file,'\','/') +def_file = translate(def_file,'\','/') + +call CleanQueue + +/* + * `codes' is the stem that links a code to every symbol + * `names' is the stem where symbols are stored sequentially + * `last' is the index of the last symbol defined + */ +last = 0 +used. = 0 +codes. = 0 +names. = '' + +tmp_name = 'foo.tmp' + +/* + * This sed expression cleans empty lines, comments and special .DEF + * commands, such as LIBRARY..., EXPORTS..., etc + */ +tidy_up = '"/^[A-Z]/d;s/[ ][ ]*/ /g;s/;.*$//g;s/^[ ]*//g;/^[ ]*$/d"' + +/* + * First we find all public symbols (functions and variables). Next we + * concatenate this list with the old one, sorting it and wiping out + * all unused data (comments, DLL directives, blanks, etc). All this + * information is pushed into a REXX private list with the RXQUEUE + * utility program. + */ +'@echo off' +'emxexp -u' lib_file '>' tmp_name +'cat' tmp_name def_file '| sed' tidy_up '| sort > foo2.tmp' +'type foo2.tmp | rxqueue' +'del' tmp_name '1>NUL' + +/* + * This loop runs over the queue items + */ +do while queued() > 0 + /* + * We retrieve the symbol name (NEW_NAME) and its number (NEW_NUMBER) + * When the line comes from `emximp's output, there's no number, so + * we assign it the special value 0. + */ + parse pull new_symbol '@'new_code rest + if Left(new_symbol,1) = '"' then + parse var new_symbol '"' new_name '"' rest + else + do + echo 'Symbol 'new_symbol' was not quoted' + new_name = new_symbol + end + + if new_code = '' then + new_code = 0 + /* + * Here, one would place all smart checks that would kill unused symbols. + * However, export tables are not that big, so why bothering? + if Left(new_name,4) = '_nc_' then + iterate + */ + /* + * The algorithm: + * IF (this is the 2nd time the symbol appears) THEN + * (this symbol comes from a .DEF file) + * it has a valid code that we store + * we mark that code as used + * ELIF (it has no number) THEN + * (it's a new symbol) + * we increase the counter of defined symbols + * we assign it the special number 0 + * (later on it'll be assigned an unused export code) + * ELSE + * this symbol was in the old DLL and it's no longer + * here, so we skip it. + */ + select + when new_name = '' then + 'echo Warning: empty symbol found 1>&2' + when names.last = new_name then + do + codes.last = new_code + used.new_code = 1 + end + when new_code = 0 then + do + last = last + 1 + names.last = new_name + codes.last = 0 + end + otherwise + 'echo Warning: symbol "'new_name'" has disappeared 1>&2' + end /* select */ +end /* do while queued() */ + +/* + * Finally we scan the stem, writing out all symbols with export codes. + * Those that did not have a valid one (just 0) are assigned a new one. + */ +new_code = 1 +inx = 1 +do while inx <= last + if codes.inx = 0 then + do + do while used.new_code \= 0 + new_code = new_code + 1 + end + codes.inx = new_code + used.new_code = 1 + end + say ' "'names.inx'" @'codes.inx' NONAME' + inx = inx + 1 +end +'del foo2.tmp 1>NUL' +exit 0 + +/* + * Cleans the REXX queue by pulling and forgetting every line. + * This is needed, at least, when `makedef.cmd' starts, because an aborted + * REXX program might have left some rubbish in. + */ +CleanQueue: procedure + do while queued() > 0 + parse pull foo + end +return + diff --git a/ncurses/ncurses/.DS_Store b/ncurses/ncurses/.DS_Store new file mode 100644 index 0000000..9310049 Binary files /dev/null and b/ncurses/ncurses/.DS_Store differ diff --git a/ncurses/ncurses/base/codes.c b/ncurses/ncurses/base/codes.c deleted file mode 100644 index 14c785a..0000000 --- a/ncurses/ncurses/base/codes.c +++ /dev/null @@ -1,666 +0,0 @@ -/* This file was generated by MKcodes.awk */ - -#include - -#define IT NCURSES_CONST char * const - - -#if BROKEN_LINKER || USE_REENTRANT - -#include - -static const char _nc_code_blob[] = -"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" "in\0" \ -"da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" "xo\0" "nx\0" \ -"5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" "YA\0" "YB\0" "YC\0" \ -"YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" "lm\0" "sg\0" "pb\0" "vt\0" \ -"ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" "Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" \ -"Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" "Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" \ -"Yn\0" "BT\0" "Yo\0" "Yp\0" "bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" \ -"cd\0" "ch\0" "CC\0" "cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" \ -"ll\0" "up\0" "vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" \ -"dm\0" "mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \ -"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" "i3\0" \ -"if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" "kL\0" "kd\0" \ -"kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" "k4\0" "k5\0" "k6\0" \ -"k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" "kH\0" "kN\0" "kP\0" "kr\0" \ -"kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" "l0\0" "l1\0" "la\0" "l2\0" "l3\0" \ -"l4\0" "l5\0" "l6\0" "l7\0" "l8\0" "l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" \ -"DL\0" "DO\0" "IC\0" "SF\0" "AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" \ -"px\0" "ps\0" "pf\0" "po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" \ -"sc\0" "sf\0" "sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" \ -"K1\0" "K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \ -"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" "@3\0" \ -"@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" "%3\0" "%4\0" \ -"%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" "&3\0" "&4\0" "&5\0" \ -"&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" "*3\0" "*4\0" "*5\0" "*6\0" \ -"*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" "#3\0" "#4\0" "%a\0" "%b\0" "%c\0" \ -"%d\0" "%e\0" "%f\0" "%g\0" "%h\0" "%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" \ -"F1\0" "F2\0" "F3\0" "F4\0" "F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" \ -"FC\0" "FD\0" "FE\0" "FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" \ -"FN\0" "FO\0" "FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" \ -"FY\0" "FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \ -"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" "MC\0" \ -"ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" "DI\0" "QD\0" \ -"TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" "u3\0" "u4\0" "u5\0" \ -"u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" "Ip\0" "sp\0" "Sf\0" "Sb\0" \ -"ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" "ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" \ -"ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" "ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" \ -"ZW\0" "ZX\0" "ZY\0" "ZZ\0" "Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" \ -"Zh\0" "Zi\0" "Zj\0" "Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" \ -"Zs\0" "Zt\0" "Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" \ -"AF\0" "AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \ -"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" "S3\0" \ -"S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" "Xt\0" "Xv\0" \ -"sA\0" "sL\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" "dC\0" "dN\0" "nl\0" \ -"bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" "ma\0" "pt\0" "xr\0" "G2\0" \ -"G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" "GD\0" "GH\0" "GV\0" "GC\0" "ml\0" \ -"mu\0" "bx\0" ; -static const short _nc_offset_boolcodes[] = { -0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, -45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, -90, 93, 96, 99, 102, 105, 108, 1401, 1404, 1407, 1422, 1425, 1443, 1446, }; - -static NCURSES_CONST char ** ptr_boolcodes = 0; - -static const short _nc_offset_numcodes[] = { -111, 114, 117, 120, 123, 126, -129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, -165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, -201, 204, 207, 1398, 1410, 1413, 1428, 1431, 1434, }; - -static NCURSES_CONST char ** ptr_numcodes = 0; - -static const short _nc_offset_strcodes[] = { -210, 213, 216, 219, 222, 225, 228, 231, 234, -237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270, -273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, -309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, -345, 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, 378, -381, 384, 387, 390, 393, 396, 399, 402, 405, 408, 411, 414, -417, 420, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450, -453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486, -489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522, -525, 528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558, -561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594, -597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630, -633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666, -669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702, -705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, -741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774, -777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810, -813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846, -849, 852, 855, 858, 861, 864, 867, 870, 873, 876, 879, 882, -885, 888, 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, -921, 924, 927, 930, 933, 936, 939, 942, 945, 948, 951, 954, -957, 960, 963, 966, 969, 972, 975, 978, 981, 984, 987, 990, -993, 996, 999, 1002, 1005, 1008, 1011, 1014, 1017, 1020, 1023, -1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050, 1053, 1056, -1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089, -1092, 1095, 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119, 1122, -1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152, 1155, -1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182, 1185, 1188, -1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221, -1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251, 1254, -1257, 1260, 1263, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287, -1290, 1293, 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320, -1323, 1326, 1329, 1332, 1335, 1338, 1341, 1344, 1347, 1350, 1353, -1356, 1359, 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383, 1386, -1389, 1392, 1395, 1416, 1419, -1437, 1440, 1449, 1452, -1455, 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485, -1488, }; - -static NCURSES_CONST char ** ptr_strcodes = 0; - - -static IT * -alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size) -{ - if (*value == 0) { - if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) { - unsigned n; - for (n = 0; n < size; ++n) { - (*value)[n] = _nc_code_blob + offsets[n]; - } - } - } - return *value; -} - -#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); } - -FIX(boolcodes) -FIX(numcodes) -FIX(strcodes) - -#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); } - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_codes_leaks(void) -{ -FREE_FIX(boolcodes) -FREE_FIX(numcodes) -FREE_FIX(strcodes) -} -#endif - -#else - -#define DCL(it) NCURSES_EXPORT_VAR(IT) it[] - -DCL(boolcodes) = { - "bw", - "am", - "xb", - "xs", - "xn", - "eo", - "gn", - "hc", - "km", - "hs", - "in", - "da", - "db", - "mi", - "ms", - "os", - "es", - "xt", - "hz", - "ul", - "xo", - "nx", - "5i", - "HC", - "NR", - "NP", - "ND", - "cc", - "ut", - "hl", - "YA", - "YB", - "YC", - "YD", - "YE", - "YF", - "YG", - "bs", - "ns", - "nc", - "MT", - "NL", - "pt", - "xr", - - (NCURSES_CONST char *)0, -}; - -DCL(numcodes) = { - "co", - "it", - "li", - "lm", - "sg", - "pb", - "vt", - "ws", - "Nl", - "lh", - "lw", - "ma", - "MW", - "Co", - "pa", - "NC", - "Ya", - "Yb", - "Yc", - "Yd", - "Ye", - "Yf", - "Yg", - "Yh", - "Yi", - "Yj", - "Yk", - "Yl", - "Ym", - "Yn", - "BT", - "Yo", - "Yp", - "ug", - "dC", - "dN", - "dB", - "dT", - "kn", - - (NCURSES_CONST char *)0, -}; - -DCL(strcodes) = { - "bt", - "bl", - "cr", - "cs", - "ct", - "cl", - "ce", - "cd", - "ch", - "CC", - "cm", - "do", - "ho", - "vi", - "le", - "CM", - "ve", - "nd", - "ll", - "up", - "vs", - "dc", - "dl", - "ds", - "hd", - "as", - "mb", - "md", - "ti", - "dm", - "mh", - "im", - "mk", - "mp", - "mr", - "so", - "us", - "ec", - "ae", - "me", - "te", - "ed", - "ei", - "se", - "ue", - "vb", - "ff", - "fs", - "i1", - "is", - "i3", - "if", - "ic", - "al", - "ip", - "kb", - "ka", - "kC", - "kt", - "kD", - "kL", - "kd", - "kM", - "kE", - "kS", - "k0", - "k1", - "k;", - "k2", - "k3", - "k4", - "k5", - "k6", - "k7", - "k8", - "k9", - "kh", - "kI", - "kA", - "kl", - "kH", - "kN", - "kP", - "kr", - "kF", - "kR", - "kT", - "ku", - "ke", - "ks", - "l0", - "l1", - "la", - "l2", - "l3", - "l4", - "l5", - "l6", - "l7", - "l8", - "l9", - "mo", - "mm", - "nw", - "pc", - "DC", - "DL", - "DO", - "IC", - "SF", - "AL", - "LE", - "RI", - "SR", - "UP", - "pk", - "pl", - "px", - "ps", - "pf", - "po", - "rp", - "r1", - "r2", - "r3", - "rf", - "rc", - "cv", - "sc", - "sf", - "sr", - "sa", - "st", - "wi", - "ta", - "ts", - "uc", - "hu", - "iP", - "K1", - "K3", - "K2", - "K4", - "K5", - "pO", - "rP", - "ac", - "pn", - "kB", - "SX", - "RX", - "SA", - "RA", - "XN", - "XF", - "eA", - "LO", - "LF", - "@1", - "@2", - "@3", - "@4", - "@5", - "@6", - "@7", - "@8", - "@9", - "@0", - "%1", - "%2", - "%3", - "%4", - "%5", - "%6", - "%7", - "%8", - "%9", - "%0", - "&1", - "&2", - "&3", - "&4", - "&5", - "&6", - "&7", - "&8", - "&9", - "&0", - "*1", - "*2", - "*3", - "*4", - "*5", - "*6", - "*7", - "*8", - "*9", - "*0", - "#1", - "#2", - "#3", - "#4", - "%a", - "%b", - "%c", - "%d", - "%e", - "%f", - "%g", - "%h", - "%i", - "%j", - "!1", - "!2", - "!3", - "RF", - "F1", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "FA", - "FB", - "FC", - "FD", - "FE", - "FF", - "FG", - "FH", - "FI", - "FJ", - "FK", - "FL", - "FM", - "FN", - "FO", - "FP", - "FQ", - "FR", - "FS", - "FT", - "FU", - "FV", - "FW", - "FX", - "FY", - "FZ", - "Fa", - "Fb", - "Fc", - "Fd", - "Fe", - "Ff", - "Fg", - "Fh", - "Fi", - "Fj", - "Fk", - "Fl", - "Fm", - "Fn", - "Fo", - "Fp", - "Fq", - "Fr", - "cb", - "MC", - "ML", - "MR", - "Lf", - "SC", - "DK", - "RC", - "CW", - "WG", - "HU", - "DI", - "QD", - "TO", - "PU", - "fh", - "PA", - "WA", - "u0", - "u1", - "u2", - "u3", - "u4", - "u5", - "u6", - "u7", - "u8", - "u9", - "op", - "oc", - "Ic", - "Ip", - "sp", - "Sf", - "Sb", - "ZA", - "ZB", - "ZC", - "ZD", - "ZE", - "ZF", - "ZG", - "ZH", - "ZI", - "ZJ", - "ZK", - "ZL", - "ZM", - "ZN", - "ZO", - "ZP", - "ZQ", - "ZR", - "ZS", - "ZT", - "ZU", - "ZV", - "ZW", - "ZX", - "ZY", - "ZZ", - "Za", - "Zb", - "Zc", - "Zd", - "Ze", - "Zf", - "Zg", - "Zh", - "Zi", - "Zj", - "Zk", - "Zl", - "Zm", - "Zn", - "Zo", - "Zp", - "Zq", - "Zr", - "Zs", - "Zt", - "Zu", - "Zv", - "Zw", - "Zx", - "Zy", - "Km", - "Mi", - "RQ", - "Gm", - "AF", - "AB", - "xl", - "dv", - "ci", - "s0", - "s1", - "s2", - "s3", - "ML", - "MT", - "Xy", - "Zz", - "Yv", - "Yw", - "Yx", - "Yy", - "Yz", - "YZ", - "S1", - "S2", - "S3", - "S4", - "S5", - "S6", - "S7", - "S8", - "Xh", - "Xl", - "Xo", - "Xr", - "Xt", - "Xv", - "sA", - "sL", - "i2", - "rs", - "nl", - "bc", - "ko", - "ma", - "G2", - "G3", - "G1", - "G4", - "GR", - "GL", - "GU", - "GD", - "GH", - "GV", - "GC", - "ml", - "mu", - "bx", - - (NCURSES_CONST char *)0, -}; - - -#endif /* BROKEN_LINKER */ diff --git a/ncurses/ncurses/base/comp_captab.c b/ncurses/ncurses/base/comp_captab.c deleted file mode 100644 index bb50ac3..0000000 --- a/ncurses/ncurses/base/comp_captab.c +++ /dev/null @@ -1,3355 +0,0 @@ -/* - * comp_captab.c -- The names of the capabilities indexed via a hash - * table for the compiler. - * - */ - -#include -#include -#include - -static const char info_names_text[] = \ -"bw\0" "am\0" "xsb\0" "xhp\0" "xenl\0" "eo\0" "gn\0" "hc\0" "km\0" \ -"hs\0" "in\0" "da\0" "db\0" "mir\0" "msgr\0" "os\0" "eslok\0" "xt\0" \ -"hz\0" "ul\0" "xon\0" "nxon\0" "mc5i\0" "chts\0" "nrrmc\0" "npc\0" \ -"ndscr\0" "ccc\0" "bce\0" "hls\0" "xhpa\0" "crxm\0" "daisy\0" "xvpa\0" \ -"sam\0" "cpix\0" "lpix\0" "cols\0" "it\0" "lines\0" "lm\0" "xmc\0" \ -"pb\0" "vt\0" "wsl\0" "nlab\0" "lh\0" "lw\0" "ma\0" "wnum\0" "colors\0" \ -"pairs\0" "ncv\0" "bufsz\0" "spinv\0" "spinh\0" "maddr\0" "mjump\0" \ -"mcs\0" "mls\0" "npins\0" "orc\0" "orl\0" "orhi\0" "orvi\0" "cps\0" \ -"widcs\0" "btns\0" "bitwin\0" "bitype\0" "cbt\0" "bel\0" "cr\0" "csr\0" \ -"tbc\0" "clear\0" "el\0" "ed\0" "hpa\0" "cmdch\0" "cup\0" "cud1\0" \ -"home\0" "civis\0" "cub1\0" "mrcup\0" "cnorm\0" "cuf1\0" "ll\0" \ -"cuu1\0" "cvvis\0" "dch1\0" "dl1\0" "dsl\0" "hd\0" "smacs\0" "blink\0" \ -"bold\0" "smcup\0" "smdc\0" "dim\0" "smir\0" "invis\0" "prot\0" "rev\0" \ -"smso\0" "smul\0" "ech\0" "rmacs\0" "sgr0\0" "rmcup\0" "rmdc\0" \ -"rmir\0" "rmso\0" "rmul\0" "flash\0" "ff\0" "fsl\0" "is1\0" "is2\0" \ -"is3\0" "if\0" "ich1\0" "il1\0" "ip\0" "kbs\0" "ktbc\0" "kclr\0" \ -"kctab\0" "kdch1\0" "kdl1\0" "kcud1\0" "krmir\0" "kel\0" "ked\0" \ -"kf0\0" "kf1\0" "kf10\0" "kf2\0" "kf3\0" "kf4\0" "kf5\0" "kf6\0" \ -"kf7\0" "kf8\0" "kf9\0" "khome\0" "kich1\0" "kil1\0" "kcub1\0" "kll\0" \ -"knp\0" "kpp\0" "kcuf1\0" "kind\0" "kri\0" "khts\0" "kcuu1\0" "rmkx\0" \ -"smkx\0" "lf0\0" "lf1\0" "lf10\0" "lf2\0" "lf3\0" "lf4\0" "lf5\0" \ -"lf6\0" "lf7\0" "lf8\0" "lf9\0" "rmm\0" "smm\0" "nel\0" "pad\0" "dch\0" \ -"dl\0" "cud\0" "ich\0" "indn\0" "il\0" "cub\0" "cuf\0" "rin\0" "cuu\0" \ -"pfkey\0" "pfloc\0" "pfx\0" "mc0\0" "mc4\0" "mc5\0" "rep\0" "rs1\0" \ -"rs2\0" "rs3\0" "rf\0" "rc\0" "vpa\0" "sc\0" "ind\0" "ri\0" "sgr\0" \ -"hts\0" "wind\0" "ht\0" "tsl\0" "uc\0" "hu\0" "iprog\0" "ka1\0" "ka3\0" \ -"kb2\0" "kc1\0" "kc3\0" "mc5p\0" "rmp\0" "acsc\0" "pln\0" "kcbt\0" \ -"smxon\0" "rmxon\0" "smam\0" "rmam\0" "xonc\0" "xoffc\0" "enacs\0" \ -"smln\0" "rmln\0" "kbeg\0" "kcan\0" "kclo\0" "kcmd\0" "kcpy\0" "kcrt\0" \ -"kend\0" "kent\0" "kext\0" "kfnd\0" "khlp\0" "kmrk\0" "kmsg\0" "kmov\0" \ -"knxt\0" "kopn\0" "kopt\0" "kprv\0" "kprt\0" "krdo\0" "kref\0" "krfr\0" \ -"krpl\0" "krst\0" "kres\0" "ksav\0" "kspd\0" "kund\0" "kBEG\0" "kCAN\0" \ -"kCMD\0" "kCPY\0" "kCRT\0" "kDC\0" "kDL\0" "kslt\0" "kEND\0" "kEOL\0" \ -"kEXT\0" "kFND\0" "kHLP\0" "kHOM\0" "kIC\0" "kLFT\0" "kMSG\0" "kMOV\0" \ -"kNXT\0" "kOPT\0" "kPRV\0" "kPRT\0" "kRDO\0" "kRPL\0" "kRIT\0" "kRES\0" \ -"kSAV\0" "kSPD\0" "kUND\0" "rfi\0" "kf11\0" "kf12\0" "kf13\0" "kf14\0" \ -"kf15\0" "kf16\0" "kf17\0" "kf18\0" "kf19\0" "kf20\0" "kf21\0" "kf22\0" \ -"kf23\0" "kf24\0" "kf25\0" "kf26\0" "kf27\0" "kf28\0" "kf29\0" "kf30\0" \ -"kf31\0" "kf32\0" "kf33\0" "kf34\0" "kf35\0" "kf36\0" "kf37\0" "kf38\0" \ -"kf39\0" "kf40\0" "kf41\0" "kf42\0" "kf43\0" "kf44\0" "kf45\0" "kf46\0" \ -"kf47\0" "kf48\0" "kf49\0" "kf50\0" "kf51\0" "kf52\0" "kf53\0" "kf54\0" \ -"kf55\0" "kf56\0" "kf57\0" "kf58\0" "kf59\0" "kf60\0" "kf61\0" "kf62\0" \ -"kf63\0" "el1\0" "mgc\0" "smgl\0" "smgr\0" "fln\0" "sclk\0" "dclk\0" \ -"rmclk\0" "cwin\0" "wingo\0" "hup\0" "dial\0" "qdial\0" "tone\0" \ -"pulse\0" "hook\0" "pause\0" "wait\0" "u0\0" "u1\0" "u2\0" "u3\0" \ -"u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "initc\0" \ -"initp\0" "scp\0" "setf\0" "setb\0" "cpi\0" "lpi\0" "chr\0" "cvr\0" \ -"defc\0" "swidm\0" "sdrfq\0" "sitm\0" "slm\0" "smicm\0" "snlq\0" \ -"snrmq\0" "sshm\0" "ssubm\0" "ssupm\0" "sum\0" "rwidm\0" "ritm\0" \ -"rlm\0" "rmicm\0" "rshm\0" "rsubm\0" "rsupm\0" "rum\0" "mhpa\0" \ -"mcud1\0" "mcub1\0" "mcuf1\0" "mvpa\0" "mcuu1\0" "porder\0" "mcud\0" \ -"mcub\0" "mcuf\0" "mcuu\0" "scs\0" "smgb\0" "smgbp\0" "smglp\0" \ -"smgrp\0" "smgt\0" "smgtp\0" "sbim\0" "scsd\0" "rbim\0" "rcsd\0" \ -"subcs\0" "supcs\0" "docr\0" "zerom\0" "csnm\0" "kmous\0" "minfo\0" \ -"reqmp\0" "getm\0" "setaf\0" "setab\0" "pfxl\0" "devt\0" "csin\0" \ -"s0ds\0" "s1ds\0" "s2ds\0" "s3ds\0" "smglr\0" "smgtb\0" "birep\0" \ -"binel\0" "bicr\0" "colornm\0" "defbi\0" "endbi\0" "setcolor\0" \ -"slines\0" "dispc\0" "smpch\0" "rmpch\0" "smsc\0" "rmsc\0" "pctrm\0" \ -"scesc\0" "scesa\0" "ehhlm\0" "elhlm\0" "elohlm\0" "erhlm\0" "ethlm\0" \ -"evhlm\0" "sgr1\0" "slength\0" "OTi2\0" "OTrs\0" "OTug\0" "OTbs\0" \ -"OTns\0" "OTnc\0" "OTdC\0" "OTdN\0" "OTnl\0" "OTbc\0" "OTMT\0" "OTNL\0" \ -"OTdB\0" "OTdT\0" "OTkn\0" "OTko\0" "OTma\0" "OTpt\0" "OTxr\0" "OTG2\0" \ -"OTG3\0" "OTG1\0" "OTG4\0" "OTGR\0" "OTGL\0" "OTGU\0" "OTGD\0" "OTGH\0" \ -"OTGV\0" "OTGC\0" "meml\0" "memu\0" "box1\0" ; - -static name_table_data const info_names_data[] = -{ - { 0, BOOLEAN, 0, -1 }, - { 3, BOOLEAN, 1, -1 }, - { 6, BOOLEAN, 2, -1 }, - { 10, BOOLEAN, 3, -1 }, - { 14, BOOLEAN, 4, -1 }, - { 19, BOOLEAN, 5, -1 }, - { 22, BOOLEAN, 6, -1 }, - { 25, BOOLEAN, 7, -1 }, - { 28, BOOLEAN, 8, -1 }, - { 31, BOOLEAN, 9, -1 }, - { 34, BOOLEAN, 10, -1 }, - { 37, BOOLEAN, 11, -1 }, - { 40, BOOLEAN, 12, -1 }, - { 43, BOOLEAN, 13, -1 }, - { 47, BOOLEAN, 14, -1 }, - { 52, BOOLEAN, 15, -1 }, - { 55, BOOLEAN, 16, -1 }, - { 61, BOOLEAN, 17, -1 }, - { 64, BOOLEAN, 18, -1 }, - { 67, BOOLEAN, 19, -1 }, - { 70, BOOLEAN, 20, -1 }, - { 74, BOOLEAN, 21, -1 }, - { 79, BOOLEAN, 22, -1 }, - { 84, BOOLEAN, 23, -1 }, - { 89, BOOLEAN, 24, -1 }, - { 95, BOOLEAN, 25, -1 }, - { 99, BOOLEAN, 26, -1 }, - { 105, BOOLEAN, 27, -1 }, - { 109, BOOLEAN, 28, -1 }, - { 113, BOOLEAN, 29, -1 }, - { 117, BOOLEAN, 30, -1 }, - { 122, BOOLEAN, 31, -1 }, - { 127, BOOLEAN, 32, -1 }, - { 133, BOOLEAN, 33, -1 }, - { 138, BOOLEAN, 34, -1 }, - { 142, BOOLEAN, 35, -1 }, - { 147, BOOLEAN, 36, -1 }, - { 152, NUMBER, 0, -1 }, - { 157, NUMBER, 1, -1 }, - { 160, NUMBER, 2, 6 }, - { 166, NUMBER, 3, -1 }, - { 169, NUMBER, 4, -1 }, - { 173, NUMBER, 5, -1 }, - { 176, NUMBER, 6, -1 }, - { 179, NUMBER, 7, -1 }, - { 183, NUMBER, 8, -1 }, - { 188, NUMBER, 9, -1 }, - { 191, NUMBER, 10, -1 }, - { 194, NUMBER, 11, -1 }, - { 197, NUMBER, 12, -1 }, - { 202, NUMBER, 13, -1 }, - { 209, NUMBER, 14, -1 }, - { 215, NUMBER, 15, -1 }, - { 219, NUMBER, 16, 46 }, - { 225, NUMBER, 17, -1 }, - { 231, NUMBER, 18, -1 }, - { 237, NUMBER, 19, -1 }, - { 243, NUMBER, 20, -1 }, - { 249, NUMBER, 21, -1 }, - { 253, NUMBER, 22, -1 }, - { 257, NUMBER, 23, -1 }, - { 263, NUMBER, 24, -1 }, - { 267, NUMBER, 25, -1 }, - { 271, NUMBER, 26, -1 }, - { 276, NUMBER, 27, -1 }, - { 281, NUMBER, 28, -1 }, - { 285, NUMBER, 29, -1 }, - { 291, NUMBER, 30, -1 }, - { 296, NUMBER, 31, -1 }, - { 303, NUMBER, 32, 68 }, - { 310, STRING, 0, -1 }, - { 314, STRING, 1, -1 }, - { 318, STRING, 2, -1 }, - { 321, STRING, 3, -1 }, - { 325, STRING, 4, -1 }, - { 329, STRING, 5, -1 }, - { 335, STRING, 6, -1 }, - { 338, STRING, 7, -1 }, - { 341, STRING, 8, -1 }, - { 345, STRING, 9, -1 }, - { 351, STRING, 10, 73 }, - { 355, STRING, 11, -1 }, - { 360, STRING, 12, -1 }, - { 365, STRING, 13, -1 }, - { 371, STRING, 14, -1 }, - { 376, STRING, 15, -1 }, - { 382, STRING, 16, -1 }, - { 388, STRING, 17, -1 }, - { 393, STRING, 18, -1 }, - { 396, STRING, 19, -1 }, - { 401, STRING, 20, -1 }, - { 407, STRING, 21, -1 }, - { 412, STRING, 22, -1 }, - { 416, STRING, 23, -1 }, - { 420, STRING, 24, -1 }, - { 423, STRING, 25, -1 }, - { 429, STRING, 26, -1 }, - { 435, STRING, 27, -1 }, - { 440, STRING, 28, -1 }, - { 446, STRING, 29, -1 }, - { 451, STRING, 30, -1 }, - { 455, STRING, 31, -1 }, - { 460, STRING, 32, -1 }, - { 466, STRING, 33, -1 }, - { 471, STRING, 34, -1 }, - { 475, STRING, 35, -1 }, - { 480, STRING, 36, -1 }, - { 485, STRING, 37, -1 }, - { 489, STRING, 38, -1 }, - { 495, STRING, 39, -1 }, - { 500, STRING, 40, -1 }, - { 506, STRING, 41, -1 }, - { 511, STRING, 42, -1 }, - { 516, STRING, 43, -1 }, - { 521, STRING, 44, -1 }, - { 526, STRING, 45, -1 }, - { 532, STRING, 46, -1 }, - { 535, STRING, 47, -1 }, - { 539, STRING, 48, -1 }, - { 543, STRING, 49, 59 }, - { 547, STRING, 50, 76 }, - { 551, STRING, 51, -1 }, - { 554, STRING, 52, 20 }, - { 559, STRING, 53, -1 }, - { 563, STRING, 54, -1 }, - { 566, STRING, 55, -1 }, - { 570, STRING, 56, -1 }, - { 575, STRING, 57, 98 }, - { 580, STRING, 58, -1 }, - { 586, STRING, 59, -1 }, - { 592, STRING, 60, -1 }, - { 597, STRING, 61, -1 }, - { 603, STRING, 62, -1 }, - { 609, STRING, 63, -1 }, - { 613, STRING, 64, -1 }, - { 617, STRING, 65, -1 }, - { 621, STRING, 66, -1 }, - { 625, STRING, 67, -1 }, - { 630, STRING, 68, -1 }, - { 634, STRING, 69, -1 }, - { 638, STRING, 70, -1 }, - { 642, STRING, 71, 61 }, - { 646, STRING, 72, -1 }, - { 650, STRING, 73, -1 }, - { 654, STRING, 74, -1 }, - { 658, STRING, 75, -1 }, - { 662, STRING, 76, -1 }, - { 668, STRING, 77, -1 }, - { 674, STRING, 78, -1 }, - { 679, STRING, 79, -1 }, - { 685, STRING, 80, -1 }, - { 689, STRING, 81, -1 }, - { 693, STRING, 82, -1 }, - { 697, STRING, 83, -1 }, - { 703, STRING, 84, 55 }, - { 708, STRING, 85, 105 }, - { 712, STRING, 86, -1 }, - { 717, STRING, 87, 81 }, - { 723, STRING, 88, -1 }, - { 728, STRING, 89, -1 }, - { 733, STRING, 90, -1 }, - { 737, STRING, 91, -1 }, - { 741, STRING, 92, -1 }, - { 746, STRING, 93, -1 }, - { 750, STRING, 94, 33 }, - { 754, STRING, 95, -1 }, - { 758, STRING, 96, -1 }, - { 762, STRING, 97, -1 }, - { 766, STRING, 98, 7 }, - { 770, STRING, 99, 94 }, - { 774, STRING, 100, -1 }, - { 778, STRING, 101, 131 }, - { 782, STRING, 102, -1 }, - { 786, STRING, 103, -1 }, - { 790, STRING, 104, 30 }, - { 794, STRING, 105, -1 }, - { 798, STRING, 106, -1 }, - { 801, STRING, 107, -1 }, - { 805, STRING, 108, -1 }, - { 809, STRING, 109, -1 }, - { 814, STRING, 110, -1 }, - { 817, STRING, 111, -1 }, - { 821, STRING, 112, 156 }, - { 825, STRING, 113, -1 }, - { 829, STRING, 114, -1 }, - { 833, STRING, 115, 51 }, - { 839, STRING, 116, -1 }, - { 845, STRING, 117, -1 }, - { 849, STRING, 118, -1 }, - { 853, STRING, 119, -1 }, - { 857, STRING, 120, -1 }, - { 861, STRING, 121, -1 }, - { 865, STRING, 122, -1 }, - { 869, STRING, 123, -1 }, - { 873, STRING, 124, 126 }, - { 877, STRING, 125, -1 }, - { 880, STRING, 126, -1 }, - { 883, STRING, 127, -1 }, - { 887, STRING, 128, -1 }, - { 890, STRING, 129, -1 }, - { 894, STRING, 130, -1 }, - { 897, STRING, 131, -1 }, - { 901, STRING, 132, -1 }, - { 905, STRING, 133, -1 }, - { 910, STRING, 134, -1 }, - { 913, STRING, 135, -1 }, - { 917, STRING, 136, 23 }, - { 920, STRING, 137, -1 }, - { 923, STRING, 138, -1 }, - { 929, STRING, 139, -1 }, - { 933, STRING, 140, -1 }, - { 937, STRING, 141, 210 }, - { 941, STRING, 142, 211 }, - { 945, STRING, 143, 135 }, - { 949, STRING, 144, -1 }, - { 954, STRING, 145, -1 }, - { 958, STRING, 146, 176 }, - { 963, STRING, 147, -1 }, - { 967, STRING, 148, 194 }, - { 972, STRING, 149, -1 }, - { 978, STRING, 150, -1 }, - { 984, STRING, 151, 137 }, - { 989, STRING, 152, -1 }, - { 994, STRING, 153, -1 }, - { 999, STRING, 154, -1 }, - { 1005, STRING, 155, -1 }, - { 1011, STRING, 156, -1 }, - { 1016, STRING, 157, -1 }, - { 1021, STRING, 158, -1 }, - { 1026, STRING, 159, -1 }, - { 1031, STRING, 160, -1 }, - { 1036, STRING, 161, -1 }, - { 1041, STRING, 162, -1 }, - { 1046, STRING, 163, 54 }, - { 1051, STRING, 164, 192 }, - { 1056, STRING, 165, -1 }, - { 1061, STRING, 166, -1 }, - { 1066, STRING, 167, 193 }, - { 1071, STRING, 168, -1 }, - { 1076, STRING, 169, 70 }, - { 1081, STRING, 170, 235 }, - { 1086, STRING, 171, -1 }, - { 1091, STRING, 172, -1 }, - { 1096, STRING, 173, 177 }, - { 1101, STRING, 174, -1 }, - { 1106, STRING, 175, -1 }, - { 1111, STRING, 176, -1 }, - { 1116, STRING, 177, -1 }, - { 1121, STRING, 178, -1 }, - { 1126, STRING, 179, 239 }, - { 1131, STRING, 180, 219 }, - { 1136, STRING, 181, 80 }, - { 1141, STRING, 182, 249 }, - { 1146, STRING, 183, 252 }, - { 1151, STRING, 184, 240 }, - { 1156, STRING, 185, 254 }, - { 1161, STRING, 186, -1 }, - { 1166, STRING, 187, -1 }, - { 1171, STRING, 188, 101 }, - { 1176, STRING, 189, -1 }, - { 1181, STRING, 190, -1 }, - { 1186, STRING, 191, -1 }, - { 1190, STRING, 192, -1 }, - { 1194, STRING, 193, 244 }, - { 1199, STRING, 194, -1 }, - { 1204, STRING, 195, 152 }, - { 1209, STRING, 196, -1 }, - { 1214, STRING, 197, 150 }, - { 1219, STRING, 198, -1 }, - { 1224, STRING, 199, 268 }, - { 1229, STRING, 200, -1 }, - { 1233, STRING, 201, 72 }, - { 1238, STRING, 202, -1 }, - { 1243, STRING, 203, -1 }, - { 1248, STRING, 204, -1 }, - { 1253, STRING, 205, -1 }, - { 1258, STRING, 206, -1 }, - { 1263, STRING, 207, 196 }, - { 1268, STRING, 208, -1 }, - { 1273, STRING, 209, -1 }, - { 1278, STRING, 210, -1 }, - { 1283, STRING, 211, -1 }, - { 1288, STRING, 212, 281 }, - { 1293, STRING, 213, 272 }, - { 1298, STRING, 214, 283 }, - { 1303, STRING, 215, -1 }, - { 1307, STRING, 216, -1 }, - { 1312, STRING, 217, 134 }, - { 1317, STRING, 218, -1 }, - { 1322, STRING, 219, -1 }, - { 1327, STRING, 220, -1 }, - { 1332, STRING, 221, 43 }, - { 1337, STRING, 222, 256 }, - { 1342, STRING, 223, -1 }, - { 1347, STRING, 224, -1 }, - { 1352, STRING, 225, 286 }, - { 1357, STRING, 226, 287 }, - { 1362, STRING, 227, 288 }, - { 1367, STRING, 228, 289 }, - { 1372, STRING, 229, 290 }, - { 1377, STRING, 230, 291 }, - { 1382, STRING, 231, 292 }, - { 1387, STRING, 232, 293 }, - { 1392, STRING, 233, 294 }, - { 1397, STRING, 234, 133 }, - { 1402, STRING, 235, 296 }, - { 1407, STRING, 236, 297 }, - { 1412, STRING, 237, 298 }, - { 1417, STRING, 238, 299 }, - { 1422, STRING, 239, 300 }, - { 1427, STRING, 240, 301 }, - { 1432, STRING, 241, 302 }, - { 1437, STRING, 242, 303 }, - { 1442, STRING, 243, 304 }, - { 1447, STRING, 244, 257 }, - { 1452, STRING, 245, 306 }, - { 1457, STRING, 246, 307 }, - { 1462, STRING, 247, 308 }, - { 1467, STRING, 248, 309 }, - { 1472, STRING, 249, 310 }, - { 1477, STRING, 250, 311 }, - { 1482, STRING, 251, 312 }, - { 1487, STRING, 252, 313 }, - { 1492, STRING, 253, 314 }, - { 1497, STRING, 254, 226 }, - { 1502, STRING, 255, 316 }, - { 1507, STRING, 256, 317 }, - { 1512, STRING, 257, 318 }, - { 1517, STRING, 258, 319 }, - { 1522, STRING, 259, 320 }, - { 1527, STRING, 260, 321 }, - { 1532, STRING, 261, 322 }, - { 1537, STRING, 262, 323 }, - { 1542, STRING, 263, 324 }, - { 1547, STRING, 264, 258 }, - { 1552, STRING, 265, 326 }, - { 1557, STRING, 266, 327 }, - { 1562, STRING, 267, 328 }, - { 1567, STRING, 268, 329 }, - { 1572, STRING, 269, -1 }, - { 1576, STRING, 270, -1 }, - { 1580, STRING, 271, 335 }, - { 1585, STRING, 272, 332 }, - { 1590, STRING, 273, -1 }, - { 1594, STRING, 274, -1 }, - { 1599, STRING, 275, -1 }, - { 1604, STRING, 276, -1 }, - { 1610, STRING, 277, 37 }, - { 1615, STRING, 278, -1 }, - { 1621, STRING, 279, -1 }, - { 1625, STRING, 280, -1 }, - { 1630, STRING, 281, -1 }, - { 1636, STRING, 282, -1 }, - { 1641, STRING, 283, -1 }, - { 1647, STRING, 284, -1 }, - { 1652, STRING, 285, 8 }, - { 1658, STRING, 286, 262 }, - { 1663, STRING, 287, -1 }, - { 1666, STRING, 288, -1 }, - { 1669, STRING, 289, -1 }, - { 1672, STRING, 290, -1 }, - { 1675, STRING, 291, -1 }, - { 1678, STRING, 292, -1 }, - { 1681, STRING, 293, -1 }, - { 1684, STRING, 294, -1 }, - { 1687, STRING, 295, -1 }, - { 1690, STRING, 296, -1 }, - { 1693, STRING, 297, -1 }, - { 1696, STRING, 298, -1 }, - { 1699, STRING, 299, -1 }, - { 1705, STRING, 300, -1 }, - { 1711, STRING, 301, -1 }, - { 1715, STRING, 302, 325 }, - { 1720, STRING, 303, 221 }, - { 1725, STRING, 304, 243 }, - { 1729, STRING, 305, -1 }, - { 1733, STRING, 306, 250 }, - { 1737, STRING, 307, -1 }, - { 1741, STRING, 308, 141 }, - { 1746, STRING, 309, 248 }, - { 1752, STRING, 310, 218 }, - { 1758, STRING, 311, -1 }, - { 1763, STRING, 312, 201 }, - { 1767, STRING, 313, 229 }, - { 1773, STRING, 314, 264 }, - { 1778, STRING, 315, 253 }, - { 1784, STRING, 316, 334 }, - { 1789, STRING, 317, -1 }, - { 1795, STRING, 318, 236 }, - { 1801, STRING, 319, 185 }, - { 1805, STRING, 320, -1 }, - { 1811, STRING, 321, -1 }, - { 1816, STRING, 322, -1 }, - { 1820, STRING, 323, -1 }, - { 1826, STRING, 324, 112 }, - { 1831, STRING, 325, -1 }, - { 1837, STRING, 326, -1 }, - { 1843, STRING, 327, -1 }, - { 1847, STRING, 328, -1 }, - { 1852, STRING, 329, -1 }, - { 1858, STRING, 330, -1 }, - { 1864, STRING, 331, 53 }, - { 1870, STRING, 332, -1 }, - { 1875, STRING, 333, 47 }, - { 1881, STRING, 334, 155 }, - { 1888, STRING, 335, -1 }, - { 1893, STRING, 336, -1 }, - { 1898, STRING, 337, -1 }, - { 1903, STRING, 338, -1 }, - { 1908, STRING, 339, -1 }, - { 1912, STRING, 340, -1 }, - { 1917, STRING, 341, 383 }, - { 1923, STRING, 342, -1 }, - { 1929, STRING, 343, -1 }, - { 1935, STRING, 344, 386 }, - { 1940, STRING, 345, 238 }, - { 1946, STRING, 346, -1 }, - { 1951, STRING, 347, 344 }, - { 1956, STRING, 348, 31 }, - { 1961, STRING, 349, -1 }, - { 1966, STRING, 350, 380 }, - { 1972, STRING, 351, 255 }, - { 1978, STRING, 352, -1 }, - { 1983, STRING, 353, -1 }, - { 1989, STRING, 354, 347 }, - { 1994, STRING, 355, -1 }, - { 2000, STRING, 356, -1 }, - { 2006, STRING, 357, -1 }, - { 2012, STRING, 358, 87 }, - { 2017, STRING, 359, -1 }, - { 2023, STRING, 360, -1 }, - { 2029, STRING, 361, -1 }, - { 2034, STRING, 362, -1 }, - { 2039, STRING, 363, -1 }, - { 2044, STRING, 364, -1 }, - { 2049, STRING, 365, 212 }, - { 2054, STRING, 366, 109 }, - { 2059, STRING, 367, 213 }, - { 2064, STRING, 368, 230 }, - { 2070, STRING, 369, -1 }, - { 2076, STRING, 370, -1 }, - { 2082, STRING, 371, -1 }, - { 2088, STRING, 372, -1 }, - { 2093, STRING, 373, -1 }, - { 2101, STRING, 374, -1 }, - { 2107, STRING, 375, -1 }, - { 2113, STRING, 376, -1 }, - { 2122, STRING, 377, 116 }, - { 2129, STRING, 378, -1 }, - { 2135, STRING, 379, 231 }, - { 2141, STRING, 380, -1 }, - { 2147, STRING, 381, 338 }, - { 2152, STRING, 382, -1 }, - { 2157, STRING, 383, -1 }, - { 2163, STRING, 384, 197 }, - { 2169, STRING, 385, 430 }, - { 2175, STRING, 386, -1 }, - { 2181, STRING, 387, -1 }, - { 2187, STRING, 388, -1 }, - { 2194, STRING, 389, -1 }, - { 2200, STRING, 390, -1 }, - { 2206, STRING, 391, -1 }, - { 2212, STRING, 392, 437 }, - { 2217, STRING, 393, -1 }, - { 2225, STRING, 394, -1 }, - { 2230, STRING, 395, -1 }, - { 2235, NUMBER, 33, -1 }, - { 2240, BOOLEAN, 37, -1 }, - { 2245, BOOLEAN, 38, -1 }, - { 2250, BOOLEAN, 39, -1 }, - { 2255, NUMBER, 34, -1 }, - { 2260, NUMBER, 35, -1 }, - { 2265, STRING, 396, -1 }, - { 2270, STRING, 397, 13 }, - { 2275, BOOLEAN, 40, -1 }, - { 2280, BOOLEAN, 41, 446 }, - { 2285, NUMBER, 36, -1 }, - { 2290, NUMBER, 37, -1 }, - { 2295, NUMBER, 38, -1 }, - { 2300, STRING, 398, 472 }, - { 2305, STRING, 399, -1 }, - { 2310, BOOLEAN, 42, -1 }, - { 2315, BOOLEAN, 43, -1 }, - { 2320, STRING, 400, -1 }, - { 2325, STRING, 401, -1 }, - { 2330, STRING, 402, -1 }, - { 2335, STRING, 403, -1 }, - { 2340, STRING, 404, -1 }, - { 2345, STRING, 405, -1 }, - { 2350, STRING, 406, -1 }, - { 2355, STRING, 407, -1 }, - { 2360, STRING, 408, 26 }, - { 2365, STRING, 409, 60 }, - { 2370, STRING, 410, 121 }, - { 2375, STRING, 411, 407 }, - { 2380, STRING, 412, 402 }, - { 2385, STRING, 413, -1 } -}; - -static struct name_table_entry *_nc_info_table = 0; - -static const short _nc_info_hash_table[995] = -{ - -1, - -1, - -1, - -1, - -1, - -1, - 465, - -1, - -1, - -1, - -1, - -1, - 261, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 457, - -1, - -1, - 265, - 216, - 120, - -1, - -1, - -1, - 180, - -1, - -1, - 88, - -1, - 420, - -1, - 398, - -1, - 348, - -1, - -1, - 19, - -1, - -1, - -1, - 359, - -1, - 174, - -1, - 245, - -1, - 74, - -1, - -1, - -1, - -1, - -1, - 269, - -1, - 480, - -1, - -1, - -1, - 124, - -1, - -1, - -1, - 390, - 379, - 367, - -1, - -1, - 444, - -1, - -1, - -1, - 305, - -1, - -1, - 363, - -1, - -1, - 483, - 377, - -1, - -1, - -1, - -1, - 460, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 204, - 38, - -1, - 82, - -1, - 110, - 127, - -1, - -1, - 463, - -1, - -1, - -1, - -1, - 336, - -1, - 17, - 128, - 434, - -1, - 188, - 129, - -1, - 351, - -1, - -1, - 16, - -1, - -1, - 259, - -1, - -1, - -1, - -1, - -1, - 489, - -1, - 353, - -1, - 71, - 247, - -1, - -1, - -1, - -1, - 78, - -1, - -1, - 331, - -1, - -1, - 173, - 136, - 161, - 189, - -1, - -1, - -1, - -1, - 454, - -1, - -1, - -1, - -1, - 224, - 479, - -1, - -1, - -1, - -1, - -1, - 354, - -1, - -1, - 233, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 125, - 11, - -1, - -1, - 378, - 166, - -1, - 191, - -1, - -1, - 48, - 228, - -1, - 2, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 374, - -1, - 408, - -1, - -1, - -1, - -1, - -1, - -1, - 375, - -1, - 52, - 145, - 170, - -1, - 392, - 382, - -1, - 393, - 411, - -1, - -1, - -1, - 276, - -1, - -1, - 35, - -1, - -1, - -1, - -1, - -1, - -1, - 396, - 388, - 36, - -1, - -1, - 64, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 350, - -1, - -1, - 215, - 91, - -1, - -1, - 439, - -1, - 122, - -1, - 200, - -1, - 67, - -1, - 410, - -1, - -1, - 89, - -1, - -1, - -1, - -1, - -1, - 96, - 21, - -1, - 103, - 1, - -1, - -1, - 369, - -1, - -1, - 345, - -1, - -1, - -1, - 355, - 40, - -1, - 27, - -1, - 406, - -1, - -1, - -1, - 482, - 419, - 417, - -1, - -1, - 360, - 270, - -1, - -1, - 251, - -1, - -1, - -1, - -1, - 349, - -1, - -1, - 278, - -1, - 442, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 438, - -1, - 494, - -1, - -1, - -1, - -1, - -1, - 315, - -1, - 340, - 364, - 356, - -1, - 484, - -1, - -1, - -1, - -1, - 32, - -1, - -1, - -1, - 260, - -1, - -1, - -1, - -1, - 207, - 487, - 84, - 453, - -1, - -1, - 413, - -1, - -1, - -1, - -1, - -1, - 214, - -1, - 337, - 352, - 477, - -1, - 435, - 56, - -1, - -1, - 34, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 132, - -1, - 85, - 492, - 428, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 199, - -1, - 342, - -1, - -1, - -1, - 138, - 163, - 190, - 147, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 266, - -1, - -1, - 433, - -1, - -1, - 474, - -1, - -1, - -1, - -1, - 385, - 100, - -1, - -1, - -1, - 431, - -1, - 391, - 381, - 12, - 58, - -1, - 142, - 167, - -1, - -1, - 409, - -1, - -1, - -1, - -1, - 42, - 45, - 66, - -1, - -1, - 424, - -1, - -1, - -1, - -1, - -1, - -1, - 220, - 376, - -1, - -1, - 343, - -1, - -1, - -1, - 114, - 106, - -1, - -1, - 447, - -1, - 217, - 493, - 171, - 172, - 399, - 346, - -1, - -1, - -1, - -1, - 195, - -1, - -1, - -1, - -1, - -1, - 496, - -1, - -1, - -1, - -1, - 241, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 151, - -1, - 118, - -1, - 62, - 187, - -1, - -1, - -1, - -1, - -1, - 234, - -1, - 443, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 357, - -1, - -1, - -1, - 246, - -1, - -1, - -1, - 448, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 39, - -1, - 10, - 397, - 389, - -1, - -1, - 154, - -1, - -1, - -1, - 130, - -1, - 22, - 222, - 373, - 162, - -1, - 361, - 203, - -1, - -1, - 242, - -1, - -1, - -1, - -1, - 459, - -1, - -1, - 271, - -1, - 97, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 427, - -1, - 175, - 107, - -1, - -1, - -1, - 178, - 423, - 372, - 69, - -1, - 365, - -1, - 4, - 486, - 184, - -1, - -1, - -1, - -1, - 461, - -1, - -1, - 282, - -1, - -1, - -1, - -1, - -1, - 475, - -1, - -1, - -1, - 395, - 387, - -1, - -1, - 79, - 63, - -1, - -1, - 452, - 451, - -1, - 50, - -1, - 436, - -1, - -1, - 285, - -1, - -1, - 83, - 455, - -1, - -1, - -1, - 279, - 370, - -1, - -1, - -1, - 18, - -1, - -1, - -1, - -1, - -1, - 421, - -1, - 495, - -1, - -1, - -1, - -1, - 227, - 333, - -1, - -1, - 25, - 139, - 164, - -1, - -1, - 371, - -1, - -1, - 429, - -1, - -1, - -1, - 273, - -1, - 466, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 181, - -1, - -1, - 75, - -1, - 92, - 339, - -1, - 384, - -1, - 123, - -1, - 143, - 168, - -1, - 183, - 186, - -1, - 108, - 95, - 368, - -1, - -1, - 277, - 198, - -1, - 206, - 432, - -1, - 476, - -1, - 458, - -1, - -1, - 182, - -1, - 441, - -1, - -1, - -1, - 115, - 113, - 404, - -1, - 473, - -1, - -1, - -1, - 490, - 104, - -1, - -1, - 450, - 449, - -1, - -1, - -1, - 274, - -1, - 481, - 111, - 99, - -1, - -1, - -1, - -1, - -1, - -1, - 263, - 93, - -1, - 117, - -1, - 29, - -1, - -1, - -1, - -1, - 119, - -1, - -1, - 426, - 491, - -1, - -1, - 205, - -1, - 237, - 44, - -1, - -1, - -1, - -1, - -1, - 418, - 416, - -1, - -1, - 358, - -1, - -1, - -1, - 65, - -1, - 440, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 5, - -1, - -1, - -1, - 488, - -1, - -1, - -1, - 28, - 412, - -1, - 405, - -1, - -1, - -1, - -1, - -1, - 295, - -1, - 471, - 362, - -1, - -1, - 485, - -1, - -1, - -1, - -1, - -1, - 202, - -1, - -1, - 284, - -1, - 469, - -1, - -1, - 9, - 24, - -1, - -1, - 179, - -1, - -1, - 15, - -1, - -1, - 148, - -1, - -1, - -1, - 341, - -1, - -1, - 366, - 209, - 223, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 0, - -1, - 208, - 467, - -1, - 422, - -1, - 464, - 157, - -1, - 403, - -1, - 415, - -1, - -1, - -1, - -1, - 445, - -1, - -1, - 330, - -1, - -1, - -1, - 462, - 160, - -1, - -1, - -1, - -1, - 86, - -1, - -1, - 41, - -1, - 280, - -1, - 478, - -1, - -1, - 57, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 394, - 414, - -1, - -1, - -1, - 140, - 165, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 275, - 102, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 232, - -1, - 14, - -1, - -1, - 225, - -1, - -1, - 267, - -1, - 77, - -1, - 144, - 169, - -1, - 149, - -1, - 400, - -1, - -1, - -1, - 3, - -1, - -1, - -1, - 468, - 425, - -1, - -1, - 470, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 456, - -1, - 158, - 159, - -1, - -1, - 146, - 49, - -1, - -1, - 153, - -1, - 401, - 90, - 0 /* base-of-table */ -}; - -#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414) -#error --> term.h and comp_captab.c disagree about the <-- -#error --> numbers of booleans, numbers and/or strings <-- -#endif - -static const char cap_names_text[] = \ -"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" \ -"in\0" "da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" \ -"xo\0" "nx\0" "5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" \ -"YA\0" "YB\0" "YC\0" "YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" \ -"lm\0" "sg\0" "pb\0" "vt\0" "ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" \ -"Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" "Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" \ -"Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" "Yn\0" "BT\0" "Yo\0" "Yp\0" \ -"bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" "cd\0" "ch\0" "CC\0" \ -"cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" "ll\0" "up\0" \ -"vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" "dm\0" \ -"mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \ -"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" \ -"i3\0" "if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" \ -"kL\0" "kd\0" "kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" \ -"k4\0" "k5\0" "k6\0" "k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" \ -"kH\0" "kN\0" "kP\0" "kr\0" "kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" \ -"l0\0" "l1\0" "la\0" "l2\0" "l3\0" "l4\0" "l5\0" "l6\0" "l7\0" "l8\0" \ -"l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" "DL\0" "DO\0" "IC\0" "SF\0" \ -"AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" "px\0" "ps\0" "pf\0" \ -"po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" "sc\0" "sf\0" \ -"sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" "K1\0" \ -"K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \ -"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" \ -"@3\0" "@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" \ -"%3\0" "%4\0" "%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" \ -"&3\0" "&4\0" "&5\0" "&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" \ -"*3\0" "*4\0" "*5\0" "*6\0" "*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" \ -"#3\0" "#4\0" "%a\0" "%b\0" "%c\0" "%d\0" "%e\0" "%f\0" "%g\0" "%h\0" \ -"%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" "F1\0" "F2\0" "F3\0" "F4\0" \ -"F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" "FC\0" "FD\0" "FE\0" \ -"FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" "FN\0" "FO\0" \ -"FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" "FY\0" \ -"FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \ -"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" \ -"MC\0" "ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" \ -"DI\0" "QD\0" "TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" \ -"u3\0" "u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" \ -"Ip\0" "sp\0" "Sf\0" "Sb\0" "ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" \ -"ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" "ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" \ -"ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" "ZW\0" "ZX\0" "ZY\0" "ZZ\0" \ -"Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" "Zh\0" "Zi\0" "Zj\0" \ -"Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" "Zs\0" "Zt\0" \ -"Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" "AF\0" \ -"AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \ -"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" \ -"S3\0" "S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" \ -"Xt\0" "Xv\0" "sA\0" "sL\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" \ -"dC\0" "dN\0" "nl\0" "bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" \ -"ma\0" "pt\0" "xr\0" "G2\0" "G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" \ -"GD\0" "GH\0" "GV\0" "GC\0" "ml\0" "mu\0" "bx\0" ; - -static name_table_data const cap_names_data[] = -{ - { 0, BOOLEAN, 0, -1 }, - { 3, BOOLEAN, 1, -1 }, - { 6, BOOLEAN, 2, -1 }, - { 9, BOOLEAN, 3, -1 }, - { 12, BOOLEAN, 4, -1 }, - { 15, BOOLEAN, 5, -1 }, - { 18, BOOLEAN, 6, -1 }, - { 21, BOOLEAN, 7, -1 }, - { 24, BOOLEAN, 8, -1 }, - { 27, BOOLEAN, 9, -1 }, - { 30, BOOLEAN, 10, -1 }, - { 33, BOOLEAN, 11, -1 }, - { 36, BOOLEAN, 12, -1 }, - { 39, BOOLEAN, 13, -1 }, - { 42, BOOLEAN, 14, -1 }, - { 45, BOOLEAN, 15, -1 }, - { 48, BOOLEAN, 16, -1 }, - { 51, BOOLEAN, 17, -1 }, - { 54, BOOLEAN, 18, -1 }, - { 57, BOOLEAN, 19, -1 }, - { 60, BOOLEAN, 20, -1 }, - { 63, BOOLEAN, 21, -1 }, - { 66, BOOLEAN, 22, -1 }, - { 69, BOOLEAN, 23, -1 }, - { 72, BOOLEAN, 24, 1 }, - { 75, BOOLEAN, 25, -1 }, - { 78, BOOLEAN, 26, -1 }, - { 81, BOOLEAN, 27, -1 }, - { 84, BOOLEAN, 28, -1 }, - { 87, BOOLEAN, 29, -1 }, - { 90, BOOLEAN, 30, -1 }, - { 93, BOOLEAN, 31, -1 }, - { 96, BOOLEAN, 32, -1 }, - { 99, BOOLEAN, 33, -1 }, - { 102, BOOLEAN, 34, -1 }, - { 105, BOOLEAN, 35, -1 }, - { 108, BOOLEAN, 36, -1 }, - { 111, NUMBER, 0, -1 }, - { 114, NUMBER, 1, -1 }, - { 117, NUMBER, 2, -1 }, - { 120, NUMBER, 3, -1 }, - { 123, NUMBER, 4, -1 }, - { 126, NUMBER, 5, -1 }, - { 129, NUMBER, 6, -1 }, - { 132, NUMBER, 7, -1 }, - { 135, NUMBER, 8, -1 }, - { 138, NUMBER, 9, -1 }, - { 141, NUMBER, 10, -1 }, - { 144, NUMBER, 11, -1 }, - { 147, NUMBER, 12, -1 }, - { 150, NUMBER, 13, -1 }, - { 153, NUMBER, 14, -1 }, - { 156, NUMBER, 15, -1 }, - { 159, NUMBER, 16, -1 }, - { 162, NUMBER, 17, -1 }, - { 165, NUMBER, 18, -1 }, - { 168, NUMBER, 19, -1 }, - { 171, NUMBER, 20, -1 }, - { 174, NUMBER, 21, -1 }, - { 177, NUMBER, 22, -1 }, - { 180, NUMBER, 23, -1 }, - { 183, NUMBER, 24, -1 }, - { 186, NUMBER, 25, -1 }, - { 189, NUMBER, 26, -1 }, - { 192, NUMBER, 27, -1 }, - { 195, NUMBER, 28, -1 }, - { 198, NUMBER, 29, -1 }, - { 201, NUMBER, 30, -1 }, - { 204, NUMBER, 31, -1 }, - { 207, NUMBER, 32, -1 }, - { 210, STRING, 0, -1 }, - { 213, STRING, 1, -1 }, - { 216, STRING, 2, -1 }, - { 219, STRING, 3, -1 }, - { 222, STRING, 4, -1 }, - { 225, STRING, 5, -1 }, - { 228, STRING, 6, -1 }, - { 231, STRING, 7, -1 }, - { 234, STRING, 8, -1 }, - { 237, STRING, 9, -1 }, - { 240, STRING, 10, -1 }, - { 243, STRING, 11, -1 }, - { 246, STRING, 12, -1 }, - { 249, STRING, 13, -1 }, - { 252, STRING, 14, -1 }, - { 255, STRING, 15, -1 }, - { 258, STRING, 16, -1 }, - { 261, STRING, 17, -1 }, - { 264, STRING, 18, -1 }, - { 267, STRING, 19, -1 }, - { 270, STRING, 20, -1 }, - { 273, STRING, 21, -1 }, - { 276, STRING, 22, -1 }, - { 279, STRING, 23, -1 }, - { 282, STRING, 24, -1 }, - { 285, STRING, 25, -1 }, - { 288, STRING, 26, -1 }, - { 291, STRING, 27, -1 }, - { 294, STRING, 28, -1 }, - { 297, STRING, 29, -1 }, - { 300, STRING, 30, -1 }, - { 303, STRING, 31, -1 }, - { 306, STRING, 32, -1 }, - { 309, STRING, 33, -1 }, - { 312, STRING, 34, -1 }, - { 315, STRING, 35, -1 }, - { 318, STRING, 36, -1 }, - { 321, STRING, 37, -1 }, - { 324, STRING, 38, -1 }, - { 327, STRING, 39, -1 }, - { 330, STRING, 40, -1 }, - { 333, STRING, 41, -1 }, - { 336, STRING, 42, -1 }, - { 339, STRING, 43, -1 }, - { 342, STRING, 44, -1 }, - { 345, STRING, 45, -1 }, - { 348, STRING, 46, -1 }, - { 351, STRING, 47, -1 }, - { 354, STRING, 48, 102 }, - { 357, STRING, 49, -1 }, - { 360, STRING, 50, -1 }, - { 363, STRING, 51, -1 }, - { 366, STRING, 52, -1 }, - { 369, STRING, 53, -1 }, - { 372, STRING, 54, -1 }, - { 375, STRING, 55, -1 }, - { 378, STRING, 56, -1 }, - { 381, STRING, 57, -1 }, - { 384, STRING, 58, -1 }, - { 387, STRING, 59, -1 }, - { 390, STRING, 60, -1 }, - { 393, STRING, 61, -1 }, - { 396, STRING, 62, -1 }, - { 399, STRING, 63, -1 }, - { 402, STRING, 64, -1 }, - { 405, STRING, 65, -1 }, - { 408, STRING, 66, -1 }, - { 411, STRING, 67, -1 }, - { 414, STRING, 68, -1 }, - { 417, STRING, 69, -1 }, - { 420, STRING, 70, -1 }, - { 423, STRING, 71, -1 }, - { 426, STRING, 72, -1 }, - { 429, STRING, 73, -1 }, - { 432, STRING, 74, -1 }, - { 435, STRING, 75, 15 }, - { 438, STRING, 76, -1 }, - { 441, STRING, 77, -1 }, - { 444, STRING, 78, -1 }, - { 447, STRING, 79, -1 }, - { 450, STRING, 80, -1 }, - { 453, STRING, 81, -1 }, - { 456, STRING, 82, -1 }, - { 459, STRING, 83, -1 }, - { 462, STRING, 84, -1 }, - { 465, STRING, 85, -1 }, - { 468, STRING, 86, -1 }, - { 471, STRING, 87, -1 }, - { 474, STRING, 88, -1 }, - { 477, STRING, 89, -1 }, - { 480, STRING, 90, -1 }, - { 483, STRING, 91, -1 }, - { 486, STRING, 92, 35 }, - { 489, STRING, 93, -1 }, - { 492, STRING, 94, -1 }, - { 495, STRING, 95, -1 }, - { 498, STRING, 96, -1 }, - { 501, STRING, 97, -1 }, - { 504, STRING, 98, -1 }, - { 507, STRING, 99, -1 }, - { 510, STRING, 100, -1 }, - { 513, STRING, 101, -1 }, - { 516, STRING, 102, 120 }, - { 519, STRING, 103, -1 }, - { 522, STRING, 104, -1 }, - { 525, STRING, 105, -1 }, - { 528, STRING, 106, -1 }, - { 531, STRING, 107, -1 }, - { 534, STRING, 108, -1 }, - { 537, STRING, 109, -1 }, - { 540, STRING, 110, -1 }, - { 543, STRING, 111, -1 }, - { 546, STRING, 112, 111 }, - { 549, STRING, 113, -1 }, - { 552, STRING, 114, -1 }, - { 555, STRING, 115, 161 }, - { 558, STRING, 116, 163 }, - { 561, STRING, 117, -1 }, - { 564, STRING, 118, 170 }, - { 567, STRING, 119, -1 }, - { 570, STRING, 120, 166 }, - { 573, STRING, 121, -1 }, - { 576, STRING, 122, -1 }, - { 579, STRING, 123, -1 }, - { 582, STRING, 124, -1 }, - { 585, STRING, 125, -1 }, - { 588, STRING, 126, -1 }, - { 591, STRING, 127, -1 }, - { 594, STRING, 128, -1 }, - { 597, STRING, 129, -1 }, - { 600, STRING, 130, -1 }, - { 603, STRING, 131, -1 }, - { 606, STRING, 132, -1 }, - { 609, STRING, 133, -1 }, - { 612, STRING, 134, -1 }, - { 615, STRING, 135, -1 }, - { 618, STRING, 136, -1 }, - { 621, STRING, 137, -1 }, - { 624, STRING, 138, -1 }, - { 627, STRING, 139, -1 }, - { 630, STRING, 140, -1 }, - { 633, STRING, 141, -1 }, - { 636, STRING, 142, -1 }, - { 639, STRING, 143, -1 }, - { 642, STRING, 144, -1 }, - { 645, STRING, 145, 37 }, - { 648, STRING, 146, -1 }, - { 651, STRING, 147, 165 }, - { 654, STRING, 148, -1 }, - { 657, STRING, 149, 117 }, - { 660, STRING, 150, 16 }, - { 663, STRING, 151, -1 }, - { 666, STRING, 152, -1 }, - { 669, STRING, 153, -1 }, - { 672, STRING, 154, 126 }, - { 675, STRING, 155, -1 }, - { 678, STRING, 156, -1 }, - { 681, STRING, 157, -1 }, - { 684, STRING, 158, -1 }, - { 687, STRING, 159, -1 }, - { 690, STRING, 160, -1 }, - { 693, STRING, 161, -1 }, - { 696, STRING, 162, -1 }, - { 699, STRING, 163, -1 }, - { 702, STRING, 164, 183 }, - { 705, STRING, 165, -1 }, - { 708, STRING, 166, -1 }, - { 711, STRING, 167, 116 }, - { 714, STRING, 168, -1 }, - { 717, STRING, 169, 97 }, - { 720, STRING, 170, 109 }, - { 723, STRING, 171, -1 }, - { 726, STRING, 172, -1 }, - { 729, STRING, 173, 100 }, - { 732, STRING, 174, 13 }, - { 735, STRING, 175, -1 }, - { 738, STRING, 176, 118 }, - { 741, STRING, 177, 96 }, - { 744, STRING, 178, -1 }, - { 747, STRING, 179, 87 }, - { 750, STRING, 180, -1 }, - { 753, STRING, 181, -1 }, - { 756, STRING, 182, -1 }, - { 759, STRING, 183, -1 }, - { 762, STRING, 184, -1 }, - { 765, STRING, 185, -1 }, - { 768, STRING, 186, -1 }, - { 771, STRING, 187, -1 }, - { 774, STRING, 188, 196 }, - { 777, STRING, 189, -1 }, - { 780, STRING, 190, -1 }, - { 783, STRING, 191, 195 }, - { 786, STRING, 192, -1 }, - { 789, STRING, 193, -1 }, - { 792, STRING, 194, -1 }, - { 795, STRING, 195, -1 }, - { 798, STRING, 196, -1 }, - { 801, STRING, 197, -1 }, - { 804, STRING, 198, -1 }, - { 807, STRING, 199, 131 }, - { 810, STRING, 200, 158 }, - { 813, STRING, 201, -1 }, - { 816, STRING, 202, -1 }, - { 819, STRING, 203, -1 }, - { 822, STRING, 204, -1 }, - { 825, STRING, 205, -1 }, - { 828, STRING, 206, -1 }, - { 831, STRING, 207, -1 }, - { 834, STRING, 208, -1 }, - { 837, STRING, 209, -1 }, - { 840, STRING, 210, -1 }, - { 843, STRING, 211, -1 }, - { 846, STRING, 212, 122 }, - { 849, STRING, 213, -1 }, - { 852, STRING, 214, -1 }, - { 855, STRING, 215, -1 }, - { 858, STRING, 216, -1 }, - { 861, STRING, 217, 46 }, - { 864, STRING, 218, 39 }, - { 867, STRING, 219, -1 }, - { 870, STRING, 220, -1 }, - { 873, STRING, 221, 88 }, - { 876, STRING, 222, 40 }, - { 879, STRING, 223, -1 }, - { 882, STRING, 224, -1 }, - { 885, STRING, 225, 47 }, - { 888, STRING, 226, -1 }, - { 891, STRING, 227, -1 }, - { 894, STRING, 228, -1 }, - { 897, STRING, 229, -1 }, - { 900, STRING, 230, 53 }, - { 903, STRING, 231, 54 }, - { 906, STRING, 232, 55 }, - { 909, STRING, 233, 56 }, - { 912, STRING, 234, 57 }, - { 915, STRING, 235, 58 }, - { 918, STRING, 236, 59 }, - { 921, STRING, 237, 60 }, - { 924, STRING, 238, 61 }, - { 927, STRING, 239, 62 }, - { 930, STRING, 240, 63 }, - { 933, STRING, 241, 64 }, - { 936, STRING, 242, 65 }, - { 939, STRING, 243, 66 }, - { 942, STRING, 244, 68 }, - { 945, STRING, 245, 69 }, - { 948, STRING, 246, -1 }, - { 951, STRING, 247, -1 }, - { 954, STRING, 248, -1 }, - { 957, STRING, 249, -1 }, - { 960, STRING, 250, -1 }, - { 963, STRING, 251, -1 }, - { 966, STRING, 252, -1 }, - { 969, STRING, 253, -1 }, - { 972, STRING, 254, -1 }, - { 975, STRING, 255, -1 }, - { 978, STRING, 256, -1 }, - { 981, STRING, 257, 7 }, - { 984, STRING, 258, 94 }, - { 987, STRING, 259, -1 }, - { 990, STRING, 260, -1 }, - { 993, STRING, 261, -1 }, - { 996, STRING, 262, -1 }, - { 999, STRING, 263, -1 }, - { 1002, STRING, 264, -1 }, - { 1005, STRING, 265, 184 }, - { 1008, STRING, 266, 29 }, - { 1011, STRING, 267, -1 }, - { 1014, STRING, 268, -1 }, - { 1017, STRING, 269, -1 }, - { 1020, STRING, 270, -1 }, - { 1023, STRING, 271, -1 }, - { 1026, STRING, 272, -1 }, - { 1029, STRING, 273, 257 }, - { 1032, STRING, 274, -1 }, - { 1035, STRING, 275, -1 }, - { 1038, STRING, 276, -1 }, - { 1041, STRING, 277, 4 }, - { 1044, STRING, 278, -1 }, - { 1047, STRING, 279, -1 }, - { 1050, STRING, 280, -1 }, - { 1053, STRING, 281, -1 }, - { 1056, STRING, 282, -1 }, - { 1059, STRING, 283, -1 }, - { 1062, STRING, 284, 229 }, - { 1065, STRING, 285, -1 }, - { 1068, STRING, 286, -1 }, - { 1071, STRING, 287, -1 }, - { 1074, STRING, 288, -1 }, - { 1077, STRING, 289, -1 }, - { 1080, STRING, 290, -1 }, - { 1083, STRING, 291, -1 }, - { 1086, STRING, 292, -1 }, - { 1089, STRING, 293, -1 }, - { 1092, STRING, 294, -1 }, - { 1095, STRING, 295, -1 }, - { 1098, STRING, 296, -1 }, - { 1101, STRING, 297, 142 }, - { 1104, STRING, 298, -1 }, - { 1107, STRING, 299, -1 }, - { 1110, STRING, 300, 149 }, - { 1113, STRING, 301, -1 }, - { 1116, STRING, 302, -1 }, - { 1119, STRING, 303, -1 }, - { 1122, STRING, 304, -1 }, - { 1125, STRING, 305, -1 }, - { 1128, STRING, 306, -1 }, - { 1131, STRING, 307, -1 }, - { 1134, STRING, 308, -1 }, - { 1137, STRING, 309, 48 }, - { 1140, STRING, 310, 247 }, - { 1143, STRING, 311, 238 }, - { 1146, STRING, 312, 239 }, - { 1149, STRING, 313, 240 }, - { 1152, STRING, 314, 241 }, - { 1155, STRING, 315, 242 }, - { 1158, STRING, 316, 243 }, - { 1161, STRING, 317, 244 }, - { 1164, STRING, 318, 245 }, - { 1167, STRING, 319, 246 }, - { 1170, STRING, 320, -1 }, - { 1173, STRING, 321, 172 }, - { 1176, STRING, 322, -1 }, - { 1179, STRING, 323, 171 }, - { 1182, STRING, 324, 103 }, - { 1185, STRING, 325, -1 }, - { 1188, STRING, 326, 104 }, - { 1191, STRING, 327, 14 }, - { 1194, STRING, 328, -1 }, - { 1197, STRING, 329, -1 }, - { 1200, STRING, 330, -1 }, - { 1203, STRING, 331, -1 }, - { 1206, STRING, 332, -1 }, - { 1209, STRING, 333, -1 }, - { 1212, STRING, 334, -1 }, - { 1215, STRING, 335, -1 }, - { 1218, STRING, 336, -1 }, - { 1221, STRING, 337, -1 }, - { 1224, STRING, 338, -1 }, - { 1227, STRING, 339, -1 }, - { 1230, STRING, 340, -1 }, - { 1233, STRING, 341, -1 }, - { 1236, STRING, 342, -1 }, - { 1239, STRING, 343, -1 }, - { 1242, STRING, 344, 208 }, - { 1245, STRING, 345, -1 }, - { 1248, STRING, 346, -1 }, - { 1251, STRING, 347, -1 }, - { 1254, STRING, 348, -1 }, - { 1257, STRING, 349, -1 }, - { 1260, STRING, 350, -1 }, - { 1263, STRING, 351, -1 }, - { 1266, STRING, 352, -1 }, - { 1269, STRING, 353, 272 }, - { 1272, STRING, 354, 273 }, - { 1275, STRING, 355, 387 }, - { 1278, STRING, 356, -1 }, - { 1281, STRING, 357, -1 }, - { 1284, STRING, 358, -1 }, - { 1287, STRING, 359, -1 }, - { 1290, STRING, 360, -1 }, - { 1293, STRING, 361, -1 }, - { 1296, STRING, 362, -1 }, - { 1299, STRING, 363, -1 }, - { 1302, STRING, 364, -1 }, - { 1305, STRING, 365, 67 }, - { 1308, STRING, 366, -1 }, - { 1311, STRING, 367, -1 }, - { 1314, STRING, 368, 341 }, - { 1317, STRING, 369, -1 }, - { 1320, STRING, 370, -1 }, - { 1323, STRING, 371, 274 }, - { 1326, STRING, 372, -1 }, - { 1329, STRING, 373, -1 }, - { 1332, STRING, 374, -1 }, - { 1335, STRING, 375, -1 }, - { 1338, STRING, 376, -1 }, - { 1341, STRING, 377, -1 }, - { 1344, STRING, 378, -1 }, - { 1347, STRING, 379, -1 }, - { 1350, STRING, 380, -1 }, - { 1353, STRING, 381, 357 }, - { 1356, STRING, 382, 358 }, - { 1359, STRING, 383, 359 }, - { 1362, STRING, 384, 360 }, - { 1365, STRING, 385, 361 }, - { 1368, STRING, 386, -1 }, - { 1371, STRING, 387, -1 }, - { 1374, STRING, 388, -1 }, - { 1377, STRING, 389, -1 }, - { 1380, STRING, 390, -1 }, - { 1383, STRING, 391, -1 }, - { 1386, STRING, 392, -1 }, - { 1389, STRING, 393, -1 }, - { 1392, STRING, 394, 390 }, - { 1395, STRING, 395, -1 }, - { 1398, NUMBER, 33, -1 }, - { 1401, BOOLEAN, 37, -1 }, - { 1404, BOOLEAN, 38, -1 }, - { 1407, BOOLEAN, 39, 248 }, - { 1410, NUMBER, 34, -1 }, - { 1413, NUMBER, 35, 203 }, - { 1416, STRING, 396, -1 }, - { 1419, STRING, 397, -1 }, - { 1422, BOOLEAN, 40, 439 }, - { 1425, BOOLEAN, 41, -1 }, - { 1428, NUMBER, 36, -1 }, - { 1431, NUMBER, 37, -1 }, - { 1434, NUMBER, 38, -1 }, - { 1437, STRING, 398, -1 }, - { 1440, STRING, 399, 379 }, - { 1443, BOOLEAN, 42, -1 }, - { 1446, BOOLEAN, 43, -1 }, - { 1449, STRING, 400, 386 }, - { 1452, STRING, 401, 425 }, - { 1455, STRING, 402, 385 }, - { 1458, STRING, 403, 388 }, - { 1461, STRING, 404, 412 }, - { 1464, STRING, 405, 406 }, - { 1467, STRING, 406, 415 }, - { 1470, STRING, 407, -1 }, - { 1473, STRING, 408, 402 }, - { 1476, STRING, 409, 416 }, - { 1479, STRING, 410, -1 }, - { 1482, STRING, 411, 464 }, - { 1485, STRING, 412, 399 }, - { 1488, STRING, 413, -1 } -}; - -static struct name_table_entry *_nc_cap_table = 0; - -static const short _nc_cap_hash_table[995] = -{ - 253, - -1, - 45, - 211, - 263, - -1, - -1, - -1, - -1, - -1, - -1, - 449, - 457, - 311, - 411, - -1, - 132, - -1, - -1, - -1, - -1, - 123, - 71, - 75, - 92, - 427, - 233, - -1, - 336, - -1, - -1, - 370, - 291, - 494, - 472, - 138, - 186, - -1, - -1, - -1, - -1, - 19, - 193, - 436, - 431, - 453, - -1, - 315, - 489, - 349, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 353, - -1, - -1, - -1, - -1, - -1, - 124, - -1, - -1, - -1, - 394, - -1, - 367, - 167, - -1, - 191, - 371, - -1, - 89, - -1, - -1, - -1, - 363, - 460, - 319, - 419, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 70, - 74, - -1, - -1, - -1, - -1, - -1, - 38, - -1, - 128, - -1, - 398, - -1, - -1, - 481, - -1, - -1, - 202, - -1, - 28, - 43, - -1, - 17, - -1, - -1, - 444, - 423, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 496, - -1, - -1, - -1, - -1, - 430, - -1, - -1, - -1, - -1, - 296, - -1, - 21, - -1, - 187, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 321, - 276, - -1, - -1, - 31, - 375, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 429, - 476, - -1, - -1, - -1, - 300, - 400, - -1, - 218, - -1, - -1, - 227, - -1, - -1, - -1, - -1, - 11, - 285, - 179, - -1, - 325, - 280, - -1, - 224, - 162, - 480, - -1, - -1, - 51, - -1, - -1, - 201, - 204, - -1, - -1, - -1, - -1, - 22, - -1, - 304, - 404, - -1, - 154, - -1, - -1, - -1, - -1, - 108, - -1, - 76, - -1, - -1, - -1, - -1, - 329, - 284, - -1, - 270, - 84, - 383, - 250, - 426, - -1, - -1, - 260, - 113, - 110, - 114, - 86, - -1, - -1, - -1, - -1, - 308, - 408, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 433, - -1, - 112, - 230, - -1, - 333, - 428, - -1, - 223, - 288, - 484, - 254, - -1, - -1, - 210, - 264, - -1, - 98, - -1, - 83, - 471, - -1, - 450, - -1, - 312, - 487, - -1, - 151, - -1, - -1, - -1, - 342, - 24, - -1, - 80, - 99, - -1, - 234, - -1, - 337, - 101, - -1, - 8, - 292, - 391, - -1, - 139, - 164, - -1, - -1, - -1, - -1, - -1, - 194, - 437, - -1, - 454, - -1, - 316, - 492, - -1, - 155, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 395, - -1, - 143, - 168, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 364, - -1, - 320, - 420, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 207, - -1, - -1, - 157, - 447, - 495, - -1, - 137, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 440, - 445, - 424, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 79, - 175, - -1, - 297, - 493, - 23, - 178, - -1, - -1, - -1, - 340, - 52, - -1, - -1, - -1, - 346, - 344, - -1, - 322, - 277, - -1, - -1, - 32, - 376, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 373, - -1, - 470, - -1, - -1, - -1, - 301, - 401, - -1, - 127, - -1, - -1, - -1, - -1, - -1, - -1, - 339, - 12, - -1, - -1, - -1, - 326, - 281, - 348, - 125, - 36, - 380, - 343, - -1, - 42, - -1, - 267, - -1, - -1, - 372, - 115, - -1, - 2, - 345, - -1, - 305, - 405, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 237, - -1, - 330, - 121, - -1, - 271, - -1, - 384, - 251, - -1, - 189, - -1, - 261, - 199, - -1, - -1, - -1, - -1, - -1, - 177, - -1, - 309, - 409, - -1, - -1, - -1, - -1, - 226, - -1, - -1, - -1, - -1, - -1, - -1, - 231, - 352, - 334, - -1, - -1, - -1, - 289, - 486, - 255, - 135, - 160, - 212, - 265, - -1, - -1, - -1, - -1, - 434, - -1, - 451, - -1, - 313, - 413, - -1, - -1, - -1, - -1, - -1, - -1, - 214, - -1, - -1, - -1, - -1, - 235, - 6, - 338, - 10, - -1, - 478, - 293, - 392, - -1, - 140, - 217, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 347, - 455, - 459, - 317, - 417, - -1, - 134, - -1, - -1, - -1, - 49, - -1, - -1, - 72, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 153, - -1, - 396, - -1, - 144, - 169, - -1, - -1, - 200, - -1, - -1, - -1, - -1, - 482, - 365, - 461, - 442, - 421, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 197, - 432, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 446, - 441, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 18, - -1, - -1, - -1, - 298, - 490, - -1, - -1, - -1, - -1, - -1, - -1, - 26, - -1, - -1, - 351, - -1, - -1, - -1, - 323, - 278, - -1, - 369, - 33, - 377, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 302, - 491, - -1, - 129, - -1, - -1, - -1, - -1, - 216, - 473, - 27, - 91, - 107, - -1, - -1, - 327, - 282, - -1, - 268, - -1, - 381, - 469, - 368, - 174, - -1, - 258, - 198, - -1, - 206, - 180, - -1, - -1, - 176, - -1, - 306, - 488, - -1, - 150, - -1, - -1, - -1, - 438, - 475, - -1, - -1, - -1, - -1, - 228, - -1, - 331, - -1, - -1, - -1, - 286, - 485, - 252, - -1, - -1, - 209, - 262, - 41, - -1, - 466, - -1, - -1, - -1, - 448, - -1, - 310, - 410, - -1, - 130, - -1, - -1, - -1, - -1, - 25, - -1, - -1, - 463, - 50, - 232, - -1, - 335, - -1, - -1, - -1, - 290, - 389, - 256, - 136, - 185, - 213, - 266, - -1, - -1, - -1, - 192, - 435, - -1, - 452, - 458, - 314, - 414, - -1, - 152, - -1, - -1, - -1, - 474, - -1, - -1, - 215, - 81, - 5, - 236, - -1, - 82, - -1, - -1, - 479, - 294, - 393, - -1, - 141, - 190, - -1, - -1, - 105, - -1, - -1, - -1, - 477, - 20, - 362, - -1, - 318, - 418, - -1, - 156, - -1, - -1, - -1, - -1, - 95, - 467, - 73, - 93, - 220, - 219, - -1, - 9, - 119, - -1, - 159, - -1, - 397, - 468, - 145, - 188, - -1, - 465, - -1, - 205, - 106, - 90, - 44, - 3, - 366, - -1, - 443, - 422, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 0, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 295, - -1, - 173, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 355, - -1, - 222, - 221, - -1, - -1, - 275, - 356, - -1, - 30, - 374, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 225, - -1, - -1, - 299, - -1, - -1, - 148, - -1, - -1, - 181, - -1, - -1, - -1, - -1, - 462, - -1, - -1, - -1, - 324, - 279, - -1, - -1, - 34, - 378, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 350, - -1, - 303, - 403, - -1, - 133, - -1, - -1, - -1, - -1, - -1, - -1, - 77, - -1, - 182, - -1, - -1, - 328, - 283, - -1, - 269, - -1, - 382, - 249, - -1, - -1, - -1, - 259, - -1, - -1, - -1, - -1, - -1, - 85, - -1, - 456, - 307, - 407, - -1, - 147, - -1, - -1, - -1, - -1, - -1, - -1, - 78, - -1, - -1, - 354, - -1, - 332, - -1, - -1, - 146, - 287, - 483, - 0 /* base-of-table */ -}; - -#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414) -#error --> term.h and comp_captab.c disagree about the <-- -#error --> numbers of booleans, numbers and/or strings <-- -#endif - -/* generated by MKcaptab.awk capalias(1) */ - -static struct alias *_nc_capalias_table = 0; - -static const char capalias_text[] = "\ -sb\0sr\0BSD\0\ -BO\0mr\0AT&T\0\ -CI\0vi\0AT&T\0\ -CV\0ve\0AT&T\0\ -DS\0mh\0AT&T\0\ -FE\0LF\0AT&T\0\ -FL\0LO\0AT&T\0\ -XS\0mk\0AT&T\0\ -EE\0mh\0XENIX\0\ -GE\0ae\0XENIX\0\ -GS\0as\0XENIX\0\ -CF\0vi\0XENIX\0\ -CO\0ve\0XENIX\0\ -EN\0@7\0XENIX\0\ -HM\0kh\0XENIX\0\ -LD\0kL\0XENIX\0\ -PD\0kN\0XENIX\0\ -PN\0po\0XENIX\0\ -PS\0pf\0XENIX\0\ -PU\0kP\0XENIX\0\ -RT\0@8\0XENIX\0\ -UP\0ku\0XENIX\0\ -G6\0XENIX\0\ -G7\0XENIX\0\ -G5\0XENIX\0\ -G8\0XENIX\0\ -Gr\0XENIX\0\ -Gr\0XENIX\0\ -Gu\0XENIX\0\ -Gd\0XENIX\0\ -Gh\0XENIX\0\ -Gv\0XENIX\0\ -Gc\0XENIX\0\ -GG\0XENIX\0\ -kq\0%1\0IBM\0\ -HS\0mh\0IRIS\0\ -KA\0k;\0Tek\0\ -KB\0F1\0Tek\0\ -KC\0F2\0Tek\0\ -KD\0F3\0Tek\0\ -KE\0F4\0Tek\0\ -KF\0F5\0Tek\0\ -BC\0Sb\0Tek\0\ -FC\0Sf\0Tek\0\ -"; - -static const alias_table_data capalias_data[] = { - { 0, 3, 6}, /* scroll */ - { 10, 13, 16}, /* enter_reverse_mode */ - { 21, 24, 27}, /* cursor_invisible */ - { 32, 35, 38}, /* cursor_normal */ - { 43, 46, 49}, /* enter_dim_mode */ - { 54, 57, 60}, /* label_on */ - { 65, 68, 71}, /* label_off */ - { 76, 79, 82}, /* enter_secure_mode */ - { 87, 90, 93}, /* exit_attribute_mode */ - { 99, 102, 105}, /* exit_alt_charset_mode */ - { 111, 114, 117}, /* enter_alt_charset_mode */ - { 123, 126, 129}, /* cursor_invis */ - { 135, 138, 141}, /* cursor_normal */ - { 147, 150, 153}, /* key_end */ - { 159, 162, 165}, /* key_home */ - { 171, 174, 177}, /* key_dl */ - { 183, 186, 189}, /* key_npage */ - { 195, 198, 201}, /* prtr_off */ - { 207, 210, 213}, /* prtr_on */ - { 219, 222, 225}, /* key_ppage */ - { 231, 234, 237}, /* kent */ - { 243, 246, 249}, /* kcuu1 */ - { 255, -1, 258}, /* double-ACS_ULCORNER */ - { 264, -1, 267}, /* double-ACS_LLCORNER */ - { 273, -1, 276}, /* double-ACS_URCORNER */ - { 282, -1, 285}, /* double-ACS_LRCORNER */ - { 291, -1, 294}, /* double-ACS_LTEE */ - { 300, -1, 303}, /* double-ACS_RTEE */ - { 309, -1, 312}, /* double-ACS_BTEE */ - { 318, -1, 321}, /* double */ - { 327, -1, 330}, /* double-ACS_HLINE */ - { 336, -1, 339}, /* double-ACS_VLINE */ - { 345, -1, 348}, /* double-ACS_PLUS */ - { 354, -1, 357}, /* acs-glitch */ - { 363, 366, 369}, /* key_help */ - { 373, 376, 379}, /* enter_dim_mode */ - { 384, 387, 390}, /* key_f10 */ - { 394, 397, 400}, /* key_f11 */ - { 404, 407, 410}, /* key_f12 */ - { 414, 417, 420}, /* key_f13 */ - { 424, 427, 430}, /* key_f14 */ - { 434, 437, 440}, /* key_f15 */ - { 444, 447, 450}, /* set_background */ - { 454, 457, 460}, /* set_foreground */ -}; - -/* generated by MKcaptab.awk infoalias(1) */ - -static struct alias *_nc_infoalias_table = 0; - -static const char infoalias_text[] = "\ -font0\0s0ds\0IBM\0\ -font1\0s1ds\0IBM\0\ -font2\0s2ds\0IBM\0\ -font3\0s3ds\0IBM\0\ -kbtab\0kcbt\0IBM\0\ -ksel\0kslt\0IBM\0\ -"; - -static const alias_table_data infoalias_data[] = { - { 0, 6, 11}, /* set0_des_seq */ - { 15, 21, 26}, /* set1_des_seq */ - { 30, 36, 41}, /* set2_des_seq */ - { 45, 51, 56}, /* set3_des_seq */ - { 60, 66, 71}, /* key_backtab */ - { 75, 80, 85}, /* key_select */ -}; - - -#if 1 -static void -next_string(const char *strings, unsigned *offset) -{ - *offset += strlen(strings + *offset) + 1; -} - -static const struct name_table_entry * -_nc_build_names(struct name_table_entry **actual, - const name_table_data *source, - const char *strings) -{ - if (*actual == 0) { - *actual = typeCalloc(struct name_table_entry, CAPTABSIZE); - if (*actual != 0) { - unsigned n; - unsigned len = 0; - for (n = 0; n < CAPTABSIZE; ++n) { - (*actual)[n].nte_name = strings + len; - (*actual)[n].nte_type = source[n].nte_type; - (*actual)[n].nte_index = source[n].nte_index; - (*actual)[n].nte_link = source[n].nte_link; - next_string(strings, &len); - } - } - } - return *actual; -} - -#define add_alias(field) \ - if (source[n].field >= 0) { \ - (*actual)[n].field = strings + source[n].field; \ - } - -static const struct alias * -_nc_build_alias(struct alias **actual, - const alias_table_data *source, - const char *strings, - unsigned tablesize) -{ - if (*actual == 0) { - *actual = typeCalloc(struct alias, tablesize + 1); - if (*actual != 0) { - unsigned n; - for (n = 0; n < tablesize; ++n) { - add_alias(from); - add_alias(to); - add_alias(source); - } - } - } - return *actual; -} - -#define build_names(root) _nc_build_names(&_nc_##root##_table, \ - root##_names_data, \ - root##_names_text) -#define build_alias(root) _nc_build_alias(&_nc_##root##alias_table, \ - root##alias_data, \ - root##alias_text, \ - SIZEOF(root##alias_data)) -#else -#define build_names(root) _nc_ ## root ## _table -#define build_alias(root) _nc_ ## root ## alias_table -#endif - -NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool termcap) -{ - return termcap ? build_names(cap) : build_names(info) ; -} - -NCURSES_EXPORT(const short *) _nc_get_hash_table (bool termcap) -{ - return termcap ? _nc_cap_hash_table: _nc_info_hash_table ; -} - -NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool termcap) -{ - return termcap ? build_alias(cap) : build_alias(info) ; -} - -#if NO_LEAKS -NCURSES_EXPORT(void) _nc_comp_captab_leaks(void) -{ -#if 1 - FreeIfNeeded(_nc_cap_table); - FreeIfNeeded(_nc_info_table); - FreeIfNeeded(_nc_capalias_table); - FreeIfNeeded(_nc_infoalias_table); -#endif -} -#endif /* NO_LEAKS */ diff --git a/ncurses/ncurses/base/fallback.c b/ncurses/ncurses/base/fallback.c deleted file mode 100644 index a94e4ae..0000000 --- a/ncurses/ncurses/base/fallback.c +++ /dev/null @@ -1,12 +0,0 @@ -/* - * DO NOT EDIT THIS FILE BY HAND! It is generated by MKfallback.sh. - */ - -#include -#include - -NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *name GCC_UNUSED) -{ - /* the fallback list is empty */ - return((TERMTYPE *)0); -} diff --git a/ncurses/ncurses/base/unctrl.c b/ncurses/ncurses/base/unctrl.c deleted file mode 100644 index 563b176..0000000 --- a/ncurses/ncurses/base/unctrl.c +++ /dev/null @@ -1,163 +0,0 @@ -/* generated by MKunctrl.awk */ - -#include -#include - -#if USE_WIDEC_SUPPORT -#if HAVE_WCTYPE_H -#include -#endif -#endif - -#undef unctrl - -NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *sp, chtype ch) -{ -static const short unctrl_table[] = { - 0, 3, 6, 9, 12, 15, 18, 21, - 24, 27, 30, 33, 36, 39, 42, 45, - 48, 51, 54, 57, 60, 63, 66, 69, - 72, 75, 78, 81, 84, 87, 90, 93, - 96, 98, 100, 102, 104, 106, 108, 110, - 112, 114, 116, 118, 120, 122, 124, 126, - 128, 130, 132, 134, 136, 138, 140, 142, - 144, 146, 148, 150, 152, 154, 156, 158, - 160, 162, 164, 166, 168, 170, 172, 174, - 176, 178, 180, 182, 184, 186, 188, 190, - 192, 194, 196, 198, 200, 202, 204, 206, - 208, 210, 212, 214, 216, 218, 220, 222, - 224, 226, 228, 230, 232, 234, 236, 238, - 240, 242, 244, 246, 248, 250, 252, 254, - 256, 258, 260, 262, 264, 266, 268, 270, - 272, 274, 276, 278, 280, 282, 284, 286, - 289, 292, 295, 298, 301, 304, 307, 310, - 313, 316, 319, 322, 325, 328, 331, 334, - 337, 340, 343, 346, 349, 352, 355, 358, - 361, 364, 367, 370, 373, 376, 379, 382, - 385, 389, 393, 397, 401, 405, 409, 413, - 417, 421, 425, 429, 433, 437, 441, 445, - 449, 453, 457, 461, 465, 469, 473, 477, - 481, 485, 489, 493, 497, 501, 505, 509, - 513, 517, 521, 525, 529, 533, 537, 541, - 545, 549, 553, 557, 561, 565, 569, 573, - 577, 581, 585, 589, 593, 597, 601, 605, - 609, 613, 617, 621, 625, 629, 633, 637, - 641, 645, 649, 653, 657, 661, 665, 669, - 673, 677, 681, 685, 689, 693, 697, 701, - 705, 709, 713, 717, 721, 725, 729, 733, - 737, 741, 745, 749, 753, 757, 761, 765,}; - -#if NCURSES_EXT_FUNCS -static const short unctrl_c1[] = { - 768, 770, 772, 774, 776, 778, 780, 782, - 784, 786, 788, 790, 792, 794, 796, 798, - 800, 802, 804, 806, 808, 810, 812, 814, - 816, 818, 820, 822, 824, 826, 828, 830, - 832, 834, 836, 838, 840, 842, 844, 846, - 848, 850, 852, 854, 856, 858, 860, 862, - 864, 866, 868, 870, 872, 874, 876, 878, - 880, 882, 884, 886, 888, 890, 892, 894, - 896, 898, 900, 902, 904, 906, 908, 910, - 912, 914, 916, 918, 920, 922, 924, 926, - 928, 930, 932, 934, 936, 938, 940, 942, - 944, 946, 948, 950, 952, 954, 956, 958, - 960, 962, 964, 966, 968, 970, 972, 974, - 976, 978, 980, 982, 984, 986, 988, 990, - 992, 994, 996, 998,1000,1002,1004,1006, - 1008,1010,1012,1014,1016,1018,1020,1022,}; -#endif /* NCURSES_EXT_FUNCS */ - -static const char unctrl_blob[] = - "^\100\0^\101\0^\102\0^\103\0^\104\0^\105\0^\106\0^\107\0" - "^\110\0^\111\0^\112\0^\113\0^\114\0^\115\0^\116\0^\117\0" - "^\120\0^\121\0^\122\0^\123\0^\124\0^\125\0^\126\0^\127\0" - "^\130\0^\131\0^\132\0^\133\0^\134\0^\135\0^\136\0^\137\0" - "\040\0\041\0\042\0\043\0\044\0\045\0\046\0\047\0" - "\050\0\051\0\052\0\053\0\054\0\055\0\056\0\057\0" - "\060\0\061\0\062\0\063\0\064\0\065\0\066\0\067\0" - "\070\0\071\0\072\0\073\0\074\0\075\0\076\0\077\0" - "\100\0\101\0\102\0\103\0\104\0\105\0\106\0\107\0" - "\110\0\111\0\112\0\113\0\114\0\115\0\116\0\117\0" - "\120\0\121\0\122\0\123\0\124\0\125\0\126\0\127\0" - "\130\0\131\0\132\0\133\0\134\0\135\0\136\0\137\0" - "\140\0\141\0\142\0\143\0\144\0\145\0\146\0\147\0" - "\150\0\151\0\152\0\153\0\154\0\155\0\156\0\157\0" - "\160\0\161\0\162\0\163\0\164\0\165\0\166\0\167\0" - "\170\0\171\0\172\0\173\0\174\0\175\0\176\0^?\0" - "~\100\0~\101\0~\102\0~\103\0~\104\0~\105\0~\106\0~\107\0" - "~\110\0~\111\0~\112\0~\113\0~\114\0~\115\0~\116\0~\117\0" - "~\120\0~\121\0~\122\0~\123\0~\124\0~\125\0~\126\0~\127\0" - "~\130\0~\131\0~\132\0~\133\0~\134\0~\135\0~\136\0~\137\0" - "M-\040\0M-\041\0M-\042\0M-\043\0M-\044\0M-\045\0M-\046\0M-\047\0" - "M-\050\0M-\051\0M-\052\0M-\053\0M-\054\0M-\055\0M-\056\0M-\057\0" - "M-\060\0M-\061\0M-\062\0M-\063\0M-\064\0M-\065\0M-\066\0M-\067\0" - "M-\070\0M-\071\0M-\072\0M-\073\0M-\074\0M-\075\0M-\076\0M-\077\0" - "M-\100\0M-\101\0M-\102\0M-\103\0M-\104\0M-\105\0M-\106\0M-\107\0" - "M-\110\0M-\111\0M-\112\0M-\113\0M-\114\0M-\115\0M-\116\0M-\117\0" - "M-\120\0M-\121\0M-\122\0M-\123\0M-\124\0M-\125\0M-\126\0M-\127\0" - "M-\130\0M-\131\0M-\132\0M-\133\0M-\134\0M-\135\0M-\136\0M-\137\0" - "M-\140\0M-\141\0M-\142\0M-\143\0M-\144\0M-\145\0M-\146\0M-\147\0" - "M-\150\0M-\151\0M-\152\0M-\153\0M-\154\0M-\155\0M-\156\0M-\157\0" - "M-\160\0M-\161\0M-\162\0M-\163\0M-\164\0M-\165\0M-\166\0M-\167\0" - "M-\170\0M-\171\0M-\172\0M-\173\0M-\174\0M-\175\0M-\176\0~?\0" -/* printable values in 128-255 range */ - "\200\0\201\0\202\0\203\0\204\0\205\0\206\0\207\0" - "\210\0\211\0\212\0\213\0\214\0\215\0\216\0\217\0" - "\220\0\221\0\222\0\223\0\224\0\225\0\226\0\227\0" - "\230\0\231\0\232\0\233\0\234\0\235\0\236\0\237\0" - "\240\0\241\0\242\0\243\0\244\0\245\0\246\0\247\0" - "\250\0\251\0\252\0\253\0\254\0\255\0\256\0\257\0" - "\260\0\261\0\262\0\263\0\264\0\265\0\266\0\267\0" - "\270\0\271\0\272\0\273\0\274\0\275\0\276\0\277\0" - "\300\0\301\0\302\0\303\0\304\0\305\0\306\0\307\0" - "\310\0\311\0\312\0\313\0\314\0\315\0\316\0\317\0" - "\320\0\321\0\322\0\323\0\324\0\325\0\326\0\327\0" - "\330\0\331\0\332\0\333\0\334\0\335\0\336\0\337\0" - "\340\0\341\0\342\0\343\0\344\0\345\0\346\0\347\0" - "\350\0\351\0\352\0\353\0\354\0\355\0\356\0\357\0" - "\360\0\361\0\362\0\363\0\364\0\365\0\366\0\367\0" - "\370\0\371\0\372\0\373\0\374\0\375\0\376\0\377\0" -; - - int check = ChCharOf(ch); - const char *result; - - if (check >= 0 && check < (int)SIZEOF(unctrl_table)) { -#if NCURSES_EXT_FUNCS - if ((sp != 0) - && (sp->_legacy_coding > 1) - && (check >= 128) - && (check < 160)) - result = unctrl_blob + unctrl_c1[check - 128]; - else -#if USE_WIDEC_SUPPORT - if ((check >= 160) - && (check < 256) - && ((sp != 0) - && ((sp->_legacy_coding > 0) - || (sp->_legacy_coding == 0 - && (isprint(check) || iswprint(check)))))) - result = unctrl_blob + unctrl_c1[check - 128]; - else -#else - if ((check >= 160) - && (check < 256) - && ((sp != 0) - && ((sp->_legacy_coding > 0) - || (sp->_legacy_coding == 0 - && isprint(check))))) - result = unctrl_blob + unctrl_c1[check - 128]; - else -#endif /* USE_WIDEC_SUPPORT */ -#endif /* NCURSES_EXT_FUNCS */ - result = unctrl_blob + unctrl_table[check]; - } else { - result = 0; - } - return (NCURSES_CONST char *)result; -} - -NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype ch) -{ - return _nc_unctrl(SP, ch); -} diff --git a/ncurses/ncurses/curses.priv.h b/ncurses/ncurses/curses.priv.h index 29e1319..6c16ad9 100644 --- a/ncurses/ncurses/curses.priv.h +++ b/ncurses/ncurses/curses.priv.h @@ -927,7 +927,9 @@ struct screen { }; extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain; +#ifndef __APPLE__ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; +#endif WINDOWLIST { WINDOW win; /* first, so WINDOW_EXT() works */ @@ -1581,10 +1583,12 @@ extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_keyname (SCREEN *, int); extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *, chtype); extern NCURSES_EXPORT(SCREEN *) _nc_screen_of (WINDOW *); extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int); +#ifndef __APPLE__ extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t); extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *); extern NCURSES_EXPORT(char *) _nc_tracechar (SCREEN *, int); extern NCURSES_EXPORT(char *) _nc_tracemouse (SCREEN *, MEVENT const *); +#endif extern NCURSES_EXPORT(int) _nc_access (const char *, int); extern NCURSES_EXPORT(int) _nc_baudrate (int); extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *); @@ -1609,7 +1613,9 @@ extern NCURSES_EXPORT(void) _nc_scroll_optimize (void); extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, bool); extern NCURSES_EXPORT(void) _nc_signal_handler (bool); extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *); +#ifndef __APPLE__ extern NCURSES_EXPORT(void) _nc_trace_tries (TRIES *); +#endif #if NO_LEAKS extern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void); @@ -1637,7 +1643,9 @@ extern NCURSES_EXPORT(void) _nc_update_screensize (SCREEN *); #endif #if HAVE_RESIZETERM +#ifndef __APPLE__ extern NCURSES_EXPORT(void) _nc_resize_margins (WINDOW *); +#endif #else #define _nc_resize_margins(wp) /* nothing */ #endif diff --git a/ncurses/ncurses/lib_gen.c b/ncurses/ncurses/lib_gen.c deleted file mode 100644 index 5fbe1d7..0000000 --- a/ncurses/ncurses/lib_gen.c +++ /dev/null @@ -1,1568 +0,0 @@ -/* - * DO NOT EDIT THIS FILE BY HAND! - * It is generated by /tmp/ncurses-27.roots/ncurses-27/ncurses/ncurses/base/MKlib_gen.sh generated. - * - * This is a file of trivial functions generated from macro - * definitions in curses.h to satisfy the XSI Curses requirement - * that every macro also exist as a callable function. - * - * It will never be linked unless you call one of the entry - * points with its normal macro definition disabled. In that - * case, if you have no shared libraries, it will indirectly - * pull most of the rest of the library into your link image. - */ -#define NCURSES_ATTR_T int -#include - - -#undef addch -NCURSES_EXPORT(int) addch (const chtype z) -{ - T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,z)); -} - - -#undef addchnstr -NCURSES_EXPORT(int) addchnstr (const chtype * a1, int z) -{ - T((T_CALLED("addchnstr(%p,%d)"), a1, z)); returnCode(waddchnstr(stdscr,a1,z)); -} - - -#undef addchstr -NCURSES_EXPORT(int) addchstr (const chtype * z) -{ - T((T_CALLED("addchstr(%p)"), z)); returnCode(waddchnstr(stdscr,z,-1)); -} - - -#undef addnstr -NCURSES_EXPORT(int) addnstr (const char * a1, int z) -{ - T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,a1,z)); -} - - -#undef addstr -NCURSES_EXPORT(int) addstr (const char * z) -{ - T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,z,-1)); -} - - -#undef attroff -NCURSES_EXPORT(int) attroff (int z) -{ - T((T_CALLED("attroff(%s)"), _traceattr2(0,z))); returnCode(wattr_off(stdscr, (attr_t)(z), ((void *)0))); -} - - -#undef attron -NCURSES_EXPORT(int) attron (int z) -{ - T((T_CALLED("attron(%s)"), _traceattr2(0,z))); returnCode(wattr_on(stdscr, (attr_t)(z), ((void *)0))); -} - - -#undef attrset -NCURSES_EXPORT(int) attrset (int z) -{ - T((T_CALLED("attrset(%s)"), _traceattr2(0,z))); returnAttr(((stdscr)->_attrs = (z))); -} - - -#undef attr_get -NCURSES_EXPORT(int) attr_get (attr_t * a1, short * a2, void * z) -{ - T((T_CALLED("attr_get(%p,%p,%p)"), a1, a2, z)); returnCode(((void)((a1) != (void *)0 && (*(a1) = (stdscr)->_attrs)), (void)((a2) != (void *)0 && (*(a2) = ((int)(((((stdscr)->_attrs) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))))), (0))); -} - - -#undef attr_off -NCURSES_EXPORT(int) attr_off (attr_t a1, void * z) -{ - T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), z)); returnCode(wattr_off(stdscr,a1,z)); -} - - -#undef attr_on -NCURSES_EXPORT(int) attr_on (attr_t a1, void * z) -{ - T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), z)); returnCode(wattr_on(stdscr,a1,z)); -} - - -#undef attr_set -NCURSES_EXPORT(int) attr_set (attr_t a1, short a2, void * z) -{ - T((T_CALLED("attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, z)); returnCode(((stdscr)->_attrs = (((a1) & ~((((1U) << 8) - 1U) << ((0) + 8))) | ((a2) << ((0) + 8))), (0))); -} - - -#undef bkgd -NCURSES_EXPORT(int) bkgd (chtype z) -{ - T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,z)); -} - - -#undef bkgdset -NCURSES_EXPORT(void) bkgdset (chtype z) -{ - T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,z); - returnVoid; -} - - -#undef border -NCURSES_EXPORT(int) border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z) -{ - T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z)); -} - - -#undef box -NCURSES_EXPORT(int) box (WINDOW * a1, chtype a2, chtype z) -{ - T((T_CALLED("box(%p,%s,%s)"), a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0)); -} - - -#undef chgat -NCURSES_EXPORT(int) chgat (int a1, attr_t a2, short a3, const void * z) -{ - T((T_CALLED("chgat(%d,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, z)); returnCode(wchgat(stdscr,a1,a2,a3,z)); -} - - -#undef clear -NCURSES_EXPORT(int) clear (void) -{ - T((T_CALLED("clear()"))); returnCode(wclear(stdscr)); -} - - -#undef clrtobot -NCURSES_EXPORT(int) clrtobot (void) -{ - T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr)); -} - - -#undef clrtoeol -NCURSES_EXPORT(int) clrtoeol (void) -{ - T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr)); -} - - -#undef color_set -NCURSES_EXPORT(int) color_set (short a1, void * z) -{ - T((T_CALLED("color_set(%d,%p)"), a1, z)); returnCode(wcolor_set(stdscr,a1,z)); -} - - -#undef COLOR_PAIR -NCURSES_EXPORT(int) COLOR_PAIR (int z) -{ - T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((z) << ((0) + 8))); -} - - -#undef delch -NCURSES_EXPORT(int) delch (void) -{ - T((T_CALLED("delch()"))); returnCode(wdelch(stdscr)); -} - - -#undef deleteln -NCURSES_EXPORT(int) deleteln (void) -{ - T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1)); -} - - -#undef echochar -NCURSES_EXPORT(int) echochar (const chtype z) -{ - T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,z)); -} - - -#undef erase -NCURSES_EXPORT(int) erase (void) -{ - T((T_CALLED("erase()"))); returnCode(werase(stdscr)); -} - - -#undef getbkgd -NCURSES_EXPORT(chtype) getbkgd (WINDOW * z) -{ - T((T_CALLED("getbkgd(%p)"), z)); returnChar(((z)->_bkgd)); -} - - -#undef getch -NCURSES_EXPORT(int) getch (void) -{ - T((T_CALLED("getch()"))); returnCode(wgetch(stdscr)); -} - - -#undef getnstr -NCURSES_EXPORT(int) getnstr (char * a1, int z) -{ - T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, z)); -} - - -#undef getstr -NCURSES_EXPORT(int) getstr (char * z) -{ - T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, z, -1)); -} - - -#undef hline -NCURSES_EXPORT(int) hline (chtype a1, int z) -{ - T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, z)); -} - - -#undef inch -NCURSES_EXPORT(chtype) inch (void) -{ - T((T_CALLED("inch()"))); returnChar(winch(stdscr)); -} - - -#undef inchnstr -NCURSES_EXPORT(int) inchnstr (chtype * a1, int z) -{ - T((T_CALLED("inchnstr(%p,%d)"), a1, z)); returnCode(winchnstr(stdscr,a1,z)); -} - - -#undef inchstr -NCURSES_EXPORT(int) inchstr (chtype * z) -{ - T((T_CALLED("inchstr(%p)"), z)); returnCode(winchnstr(stdscr, z, -1)); -} - - -#undef innstr -NCURSES_EXPORT(int) innstr (char * a1, int z) -{ - return winnstr(stdscr,a1,z) ; -} - - -#undef insch -NCURSES_EXPORT(int) insch (chtype z) -{ - T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,z)); -} - - -#undef insdelln -NCURSES_EXPORT(int) insdelln (int z) -{ - T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,z)); -} - - -#undef insertln -NCURSES_EXPORT(int) insertln (void) -{ - T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1)); -} - - -#undef insnstr -NCURSES_EXPORT(int) insnstr (const char * a1, int z) -{ - T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,a1,z)); -} - - -#undef insstr -NCURSES_EXPORT(int) insstr (const char * z) -{ - T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, z, -1)); -} - - -#undef instr -NCURSES_EXPORT(int) instr (char * z) -{ - T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, z, -1)); -} - - -#undef move -NCURSES_EXPORT(int) move (int a1, int z) -{ - T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,a1,z)); -} - - -#undef mvaddch -NCURSES_EXPORT(int) mvaddch (int a1, int a2, const chtype z) -{ - T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddch(stdscr,z))); -} - - -#undef mvaddchnstr -NCURSES_EXPORT(int) mvaddchnstr (int a1, int a2, const chtype * a3, int z) -{ - T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,a3,z))); -} - - -#undef mvaddchstr -NCURSES_EXPORT(int) mvaddchstr (int a1, int a2, const chtype * z) -{ - T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,z,-1))); -} - - -#undef mvaddnstr -NCURSES_EXPORT(int) mvaddnstr (int a1, int a2, const char * a3, int z) -{ - T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,a3,z))); -} - - -#undef mvaddstr -NCURSES_EXPORT(int) mvaddstr (int a1, int a2, const char * z) -{ - T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,z,-1))); -} - - -#undef mvchgat -NCURSES_EXPORT(int) mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z) -{ - T((T_CALLED("mvchgat(%d,%d,%d,%s,%d,%p)"), a1, a2, a3, _traceattr2(3,a4), a5, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wchgat(stdscr,a3,a4,a5,z))); -} - - -#undef mvdelch -NCURSES_EXPORT(int) mvdelch (int a1, int z) -{ - T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wdelch(stdscr))); -} - - -#undef mvgetch -NCURSES_EXPORT(int) mvgetch (int a1, int z) -{ - T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wgetch(stdscr))); -} - - -#undef mvgetnstr -NCURSES_EXPORT(int) mvgetnstr (int a1, int a2, char * a3, int z) -{ - T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr,a3,z))); -} - - -#undef mvgetstr -NCURSES_EXPORT(int) mvgetstr (int a1, int a2, char * z) -{ - T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr, z, -1))); -} - - -#undef mvhline -NCURSES_EXPORT(int) mvhline (int a1, int a2, chtype a3, int z) -{ - T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : whline(stdscr,a3,z))); -} - - -#undef mvinch -NCURSES_EXPORT(chtype) mvinch (int a1, int z) -{ - T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChar((wmove(stdscr,a1,z) == (-1) ? (chtype)((-1)) : winch(stdscr))); -} - - -#undef mvinchnstr -NCURSES_EXPORT(int) mvinchnstr (int a1, int a2, chtype * a3, int z) -{ - T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr,a3,z))); -} - - -#undef mvinchstr -NCURSES_EXPORT(int) mvinchstr (int a1, int a2, chtype * z) -{ - T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr, z, -1))); -} - - -#undef mvinnstr -NCURSES_EXPORT(int) mvinnstr (int a1, int a2, char * a3, int z) -{ - return (wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr,a3,z)) ; -} - - -#undef mvinsch -NCURSES_EXPORT(int) mvinsch (int a1, int a2, chtype z) -{ - T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsch(stdscr,z))); -} - - -#undef mvinsnstr -NCURSES_EXPORT(int) mvinsnstr (int a1, int a2, const char * a3, int z) -{ - T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr,a3,z))); -} - - -#undef mvinsstr -NCURSES_EXPORT(int) mvinsstr (int a1, int a2, const char * z) -{ - T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr, z, -1))); -} - - -#undef mvinstr -NCURSES_EXPORT(int) mvinstr (int a1, int a2, char * z) -{ - T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr, z, -1))); -} - - -#undef mvvline -NCURSES_EXPORT(int) mvvline (int a1, int a2, chtype a3, int z) -{ - T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wvline(stdscr,a3,z))); -} - - -#undef mvwaddch -NCURSES_EXPORT(int) mvwaddch (WINDOW * a1, int a2, int a3, const chtype z) -{ - T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddch(a1,z))); -} - - -#undef mvwaddchnstr -NCURSES_EXPORT(int) mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z) -{ - T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,a4,z))); -} - - -#undef mvwaddchstr -NCURSES_EXPORT(int) mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z) -{ - T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,z,-1))); -} - - -#undef mvwaddnstr -NCURSES_EXPORT(int) mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z) -{ - T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,a4,z))); -} - - -#undef mvwaddstr -NCURSES_EXPORT(int) mvwaddstr (WINDOW * a1, int a2, int a3, const char * z) -{ - T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,z,-1))); -} - - -#undef mvwchgat -NCURSES_EXPORT(int) mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z) -{ - T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%d,%p)"), a1, a2, a3, a4, _traceattr2(4,a5), a6, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wchgat(a1,a4,a5,a6,z))); -} - - -#undef mvwdelch -NCURSES_EXPORT(int) mvwdelch (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwdelch(%p,%d,%d)"), a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wdelch(a1))); -} - - -#undef mvwgetch -NCURSES_EXPORT(int) mvwgetch (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwgetch(%p,%d,%d)"), a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wgetch(a1))); -} - - -#undef mvwgetnstr -NCURSES_EXPORT(int) mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z) -{ - T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1,a4,z))); -} - - -#undef mvwgetstr -NCURSES_EXPORT(int) mvwgetstr (WINDOW * a1, int a2, int a3, char * z) -{ - T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1, z, -1))); -} - - -#undef mvwhline -NCURSES_EXPORT(int) mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z) -{ - T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : whline(a1,a4,z))); -} - - -#undef mvwinch -NCURSES_EXPORT(chtype) mvwinch (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwinch(%p,%d,%d)"), a1, a2, z)); returnChar((wmove(a1,a2,z) == (-1) ? (chtype)((-1)) : winch(a1))); -} - - -#undef mvwinchnstr -NCURSES_EXPORT(int) mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z) -{ - T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1,a4,z))); -} - - -#undef mvwinchstr -NCURSES_EXPORT(int) mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z) -{ - T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1, z, -1))); -} - - -#undef mvwinnstr -NCURSES_EXPORT(int) mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z) -{ - return (wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1,a4,z)) ; -} - - -#undef mvwinsch -NCURSES_EXPORT(int) mvwinsch (WINDOW * a1, int a2, int a3, chtype z) -{ - T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsch(a1,z))); -} - - -#undef mvwinsnstr -NCURSES_EXPORT(int) mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z) -{ - T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1,a4,z))); -} - - -#undef mvwinsstr -NCURSES_EXPORT(int) mvwinsstr (WINDOW * a1, int a2, int a3, const char * z) -{ - T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1, z, -1))); -} - - -#undef mvwinstr -NCURSES_EXPORT(int) mvwinstr (WINDOW * a1, int a2, int a3, char * z) -{ - T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1, z, -1))); -} - - -#undef mvwvline -NCURSES_EXPORT(int) mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z) -{ - T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wvline(a1,a4,z))); -} - - -#undef PAIR_NUMBER -NCURSES_EXPORT(int) PAIR_NUMBER (int z) -{ - T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((z) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8)))); -} - - -#undef redrawwin -NCURSES_EXPORT(int) redrawwin (WINDOW * z) -{ - T((T_CALLED("redrawwin(%p)"), z)); returnCode(wredrawln(z, 0, (z)->_maxy+1)); -} - - -#undef refresh -NCURSES_EXPORT(int) refresh (void) -{ - T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr)); -} - - -#undef scrl -NCURSES_EXPORT(int) scrl (int z) -{ - T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,z)); -} - - -#undef scroll -NCURSES_EXPORT(int) scroll (WINDOW * z) -{ - T((T_CALLED("scroll(%p)"), z)); returnCode(wscrl(z,1)); -} - - -#undef setscrreg -NCURSES_EXPORT(int) setscrreg (int a1, int z) -{ - T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,a1,z)); -} - - -#if USE_WIDEC_SUPPORT -#undef slk_attr_off -NCURSES_EXPORT(int) slk_attr_off (const attr_t a1, void * z) -{ - T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), z)); returnCode(((z) ? (-1) : slk_attroff(a1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef slk_attr_on -NCURSES_EXPORT(int) slk_attr_on (attr_t a1, void * z) -{ - T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), z)); returnCode(((z) ? (-1) : slk_attron(a1))); -} -#endif - - -#undef standout -NCURSES_EXPORT(int) standout (void) -{ - T((T_CALLED("standout()"))); returnAttr((((stdscr)->_attrs = (((1U) << ((8) + 8)))))); -} - - -#undef standend -NCURSES_EXPORT(int) standend (void) -{ - T((T_CALLED("standend()"))); returnAttr((((stdscr)->_attrs = ((1U - 1U))))); -} - - -#undef timeout -NCURSES_EXPORT(void) timeout (int z) -{ - T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,z); - returnVoid; -} - - -#undef touchline -NCURSES_EXPORT(int) touchline (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("touchline(%p,%d,%d)"), a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1)); -} - - -#undef touchwin -NCURSES_EXPORT(int) touchwin (WINDOW * z) -{ - T((T_CALLED("touchwin(%p)"), z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1)); -} - - -#undef untouchwin -NCURSES_EXPORT(int) untouchwin (WINDOW * z) -{ - T((T_CALLED("untouchwin(%p)"), z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0)); -} - - -#undef vline -NCURSES_EXPORT(int) vline (chtype a1, int z) -{ - T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, z)); -} - - -#undef vw_printw -NCURSES_EXPORT(int) vw_printw (WINDOW * a1, const char * a2, va_list z) -{ - T((T_CALLED("vw_printw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z)); -} - - -#undef vw_scanw -NCURSES_EXPORT(int) vw_scanw (WINDOW * a1, char * a2, va_list z) -{ - T((T_CALLED("vw_scanw(%p,%s,%s)"), a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z)); -} - - -#undef waddchstr -NCURSES_EXPORT(int) waddchstr (WINDOW * a1, const chtype * z) -{ - T((T_CALLED("waddchstr(%p,%p)"), a1, z)); returnCode(waddchnstr(a1,z,-1)); -} - - -#undef waddstr -NCURSES_EXPORT(int) waddstr (WINDOW * a1, const char * z) -{ - T((T_CALLED("waddstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1)); -} - - -#undef wattron -NCURSES_EXPORT(int) wattron (WINDOW * a1, int z) -{ - T((T_CALLED("wattron(%p,%d)"), a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void *)0))); -} - - -#undef wattroff -NCURSES_EXPORT(int) wattroff (WINDOW * a1, int z) -{ - T((T_CALLED("wattroff(%p,%d)"), a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void *)0))); -} - - -#undef wattrset -NCURSES_EXPORT(int) wattrset (WINDOW * a1, int z) -{ - T((T_CALLED("wattrset(%p,%d)"), a1, z)); returnAttr(((a1)->_attrs = (z))); -} - - -#undef wattr_get -NCURSES_EXPORT(int) wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z) -{ - T((T_CALLED("wattr_get(%p,%p,%p,%p)"), a1, a2, a3, z)); returnCode(((void)((a2) != (void *)0 && (*(a2) = (a1)->_attrs)), (void)((a3) != (void *)0 && (*(a3) = ((int)(((((a1)->_attrs) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))))), (0))); -} - - -#undef wattr_set -NCURSES_EXPORT(int) wattr_set (WINDOW * a1, attr_t a2, short a3, void * z) -{ - T((T_CALLED("wattr_set(%p,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, z)); returnCode(((a1)->_attrs = (((a2) & ~((((1U) << 8) - 1U) << ((0) + 8))) | ((a3) << ((0) + 8))), (0))); -} - - -#undef wdeleteln -NCURSES_EXPORT(int) wdeleteln (WINDOW * z) -{ - T((T_CALLED("wdeleteln(%p)"), z)); returnCode(winsdelln(z,-1)); -} - - -#undef wgetstr -NCURSES_EXPORT(int) wgetstr (WINDOW * a1, char * z) -{ - T((T_CALLED("wgetstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1)); -} - - -#undef winchstr -NCURSES_EXPORT(int) winchstr (WINDOW * a1, chtype * z) -{ - T((T_CALLED("winchstr(%p,%p)"), a1, z)); returnCode(winchnstr(a1, z, -1)); -} - - -#undef winsertln -NCURSES_EXPORT(int) winsertln (WINDOW * z) -{ - T((T_CALLED("winsertln(%p)"), z)); returnCode(winsdelln(z,1)); -} - - -#undef winsstr -NCURSES_EXPORT(int) winsstr (WINDOW * a1, const char * z) -{ - T((T_CALLED("winsstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1)); -} - - -#undef winstr -NCURSES_EXPORT(int) winstr (WINDOW * a1, char * z) -{ - T((T_CALLED("winstr(%p,%s)"), a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1)); -} - - -#undef wstandout -NCURSES_EXPORT(int) wstandout (WINDOW * z) -{ - T((T_CALLED("wstandout(%p)"), z)); returnAttr((((z)->_attrs = (((1U) << ((8) + 8)))))); -} - - -#undef wstandend -NCURSES_EXPORT(int) wstandend (WINDOW * z) -{ - T((T_CALLED("wstandend(%p)"), z)); returnAttr((((z)->_attrs = ((1U - 1U))))); -} - - -#undef getattrs -NCURSES_EXPORT(int) getattrs (const WINDOW * z) -{ - T((T_CALLED("getattrs(%p)"), z)); returnCode(((z) ? (z)->_attrs : (1U - 1U))); -} - - -#undef getcurx -NCURSES_EXPORT(int) getcurx (const WINDOW * z) -{ - T((T_CALLED("getcurx(%p)"), z)); returnCode(((z) ? (z)->_curx : (-1))); -} - - -#undef getcury -NCURSES_EXPORT(int) getcury (const WINDOW * z) -{ - T((T_CALLED("getcury(%p)"), z)); returnCode(((z) ? (z)->_cury : (-1))); -} - - -#undef getbegx -NCURSES_EXPORT(int) getbegx (const WINDOW * z) -{ - T((T_CALLED("getbegx(%p)"), z)); returnCode(((z) ? (z)->_begx : (-1))); -} - - -#undef getbegy -NCURSES_EXPORT(int) getbegy (const WINDOW * z) -{ - T((T_CALLED("getbegy(%p)"), z)); returnCode(((z) ? (z)->_begy : (-1))); -} - - -#undef getmaxx -NCURSES_EXPORT(int) getmaxx (const WINDOW * z) -{ - T((T_CALLED("getmaxx(%p)"), z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1))); -} - - -#undef getmaxy -NCURSES_EXPORT(int) getmaxy (const WINDOW * z) -{ - T((T_CALLED("getmaxy(%p)"), z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1))); -} - - -#undef getparx -NCURSES_EXPORT(int) getparx (const WINDOW * z) -{ - T((T_CALLED("getparx(%p)"), z)); returnCode(((z) ? (z)->_parx : (-1))); -} - - -#undef getpary -NCURSES_EXPORT(int) getpary (const WINDOW * z) -{ - T((T_CALLED("getpary(%p)"), z)); returnCode(((z) ? (z)->_pary : (-1))); -} - - -#undef wgetparent -NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW * z) -{ - T((T_CALLED("(%p)"), z)); returnWin(((z) ? (z)->_parent : 0)); -} - - -#undef is_cleared -NCURSES_EXPORT(NCURSES_BOOL) is_cleared (const WINDOW * z) -{ - T((T_CALLED("is_cleared(%p)"), z)); returnBool(((z)->_clear)); -} - - -#undef is_idcok -NCURSES_EXPORT(NCURSES_BOOL) is_idcok (const WINDOW * z) -{ - T((T_CALLED("is_idcok(%p)"), z)); returnBool(((z)->_idcok)); -} - - -#undef is_idlok -NCURSES_EXPORT(NCURSES_BOOL) is_idlok (const WINDOW * z) -{ - T((T_CALLED("is_idlok(%p)"), z)); returnBool(((z)->_idlok)); -} - - -#undef is_immedok -NCURSES_EXPORT(NCURSES_BOOL) is_immedok (const WINDOW * z) -{ - T((T_CALLED("is_immedok(%p)"), z)); returnBool(((z)->_immed)); -} - - -#undef is_keypad -NCURSES_EXPORT(NCURSES_BOOL) is_keypad (const WINDOW * z) -{ - T((T_CALLED("is_keypad(%p)"), z)); returnBool(((z)->_use_keypad)); -} - - -#undef is_leaveok -NCURSES_EXPORT(NCURSES_BOOL) is_leaveok (const WINDOW * z) -{ - T((T_CALLED("is_leaveok(%p)"), z)); returnBool(((z)->_leaveok)); -} - - -#undef is_nodelay -NCURSES_EXPORT(NCURSES_BOOL) is_nodelay (const WINDOW * z) -{ - T((T_CALLED("is_nodelay(%p)"), z)); returnBool(((z)->_delay == 0)); -} - - -#undef is_notimeout -NCURSES_EXPORT(NCURSES_BOOL) is_notimeout (const WINDOW * z) -{ - T((T_CALLED("is_notimeout(%p)"), z)); returnBool(((z)->_notimeout)); -} - - -#undef is_scrollok -NCURSES_EXPORT(NCURSES_BOOL) is_scrollok (const WINDOW * z) -{ - T((T_CALLED("is_scrollok(%p)"), z)); returnBool(((z)->_scroll)); -} - - -#undef is_syncok -NCURSES_EXPORT(NCURSES_BOOL) is_syncok (const WINDOW * z) -{ - T((T_CALLED("is_syncok(%p)"), z)); returnBool(((z)->_sync)); -} - - -#undef wgetscrreg -NCURSES_EXPORT(int) wgetscrreg (const WINDOW * a1, int * a2, int * z) -{ - T((T_CALLED("wgetscrreg(%p,%p,%p)"), a1, a2, z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1))); -} - - -#if USE_WIDEC_SUPPORT -#undef add_wch -NCURSES_EXPORT(int) add_wch (const cchar_t * z) -{ - T((T_CALLED("add_wch(%p)"), z)); returnCode(wadd_wch(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef add_wchnstr -NCURSES_EXPORT(int) add_wchnstr (const cchar_t * a1, int z) -{ - T((T_CALLED("add_wchnstr(%p,%d)"), a1, z)); returnCode(wadd_wchnstr(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef add_wchstr -NCURSES_EXPORT(int) add_wchstr (const cchar_t * z) -{ - T((T_CALLED("add_wchstr(%p)"), z)); returnCode(wadd_wchnstr(stdscr,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef addnwstr -NCURSES_EXPORT(int) addnwstr (const wchar_t * a1, int z) -{ - T((T_CALLED("addnwstr(%p,%d)"), a1, z)); returnCode(waddnwstr(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef addwstr -NCURSES_EXPORT(int) addwstr (const wchar_t * z) -{ - T((T_CALLED("addwstr(%p)"), z)); returnCode(waddnwstr(stdscr,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef bkgrnd -NCURSES_EXPORT(int) bkgrnd (const cchar_t * z) -{ - T((T_CALLED("bkgrnd(%p)"), z)); returnCode(wbkgrnd(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef bkgrndset -NCURSES_EXPORT(void) bkgrndset (const cchar_t * z) -{ - T((T_CALLED("bkgrndset(%p)"), z)); wbkgrndset(stdscr,z); - returnVoid; -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef border_set -NCURSES_EXPORT(int) border_set (const cchar_t * a1, const cchar_t * a2, const cchar_t * a3, const cchar_t * a4, const cchar_t * a5, const cchar_t * a6, const cchar_t * a7, const cchar_t * z) -{ - T((T_CALLED("border_set(%p,%p,%p,%p,%p,%p,%p,%p)"), a1, a2, a3, a4, a5, a6, a7, z)); returnCode(wborder_set(stdscr,a1,a2,a3,a4,a5,a6,a7,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef box_set -NCURSES_EXPORT(int) box_set (WINDOW * a1, const cchar_t * a2, const cchar_t * z) -{ - T((T_CALLED("box_set(%p,%p,%p)"), a1, a2, z)); returnCode(wborder_set(a1,a2,a2,z,z,0,0,0,0)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef echo_wchar -NCURSES_EXPORT(int) echo_wchar (const cchar_t * z) -{ - T((T_CALLED("echo_wchar(%p)"), z)); returnCode(wecho_wchar(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef get_wch -NCURSES_EXPORT(int) get_wch (wint_t * z) -{ - T((T_CALLED("get_wch(%p)"), z)); returnCode(wget_wch(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef get_wstr -NCURSES_EXPORT(int) get_wstr (wint_t * z) -{ - T((T_CALLED("get_wstr(%p)"), z)); returnCode(wgetn_wstr(stdscr,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef getbkgrnd -NCURSES_EXPORT(int) getbkgrnd (cchar_t * z) -{ - T((T_CALLED("getbkgrnd(%p)"), z)); returnCode((*z = stdscr->_bkgrnd, (0))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef getn_wstr -NCURSES_EXPORT(int) getn_wstr (wint_t * a1, int z) -{ - T((T_CALLED("getn_wstr(%p,%d)"), a1, z)); returnCode(wgetn_wstr(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef hline_set -NCURSES_EXPORT(int) hline_set (const cchar_t * a1, int z) -{ - T((T_CALLED("hline_set(%p,%d)"), a1, z)); returnCode(whline_set(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef in_wch -NCURSES_EXPORT(int) in_wch (cchar_t * z) -{ - T((T_CALLED("in_wch(%p)"), z)); returnCode(win_wch(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef in_wchnstr -NCURSES_EXPORT(int) in_wchnstr (cchar_t * a1, int z) -{ - T((T_CALLED("in_wchnstr(%p,%d)"), a1, z)); returnCode(win_wchnstr(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef in_wchstr -NCURSES_EXPORT(int) in_wchstr (cchar_t * z) -{ - T((T_CALLED("in_wchstr(%p)"), z)); returnCode(win_wchnstr(stdscr,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef innwstr -NCURSES_EXPORT(int) innwstr (wchar_t * a1, int z) -{ - return winnwstr(stdscr,a1,z) ; -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef ins_nwstr -NCURSES_EXPORT(int) ins_nwstr (const wchar_t * a1, int z) -{ - T((T_CALLED("ins_nwstr(%p,%d)"), a1, z)); returnCode(wins_nwstr(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef ins_wch -NCURSES_EXPORT(int) ins_wch (const cchar_t * z) -{ - T((T_CALLED("ins_wch(%p)"), z)); returnCode(wins_wch(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef ins_wstr -NCURSES_EXPORT(int) ins_wstr (const wchar_t * z) -{ - T((T_CALLED("ins_wstr(%p)"), z)); returnCode(wins_nwstr(stdscr,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef inwstr -NCURSES_EXPORT(int) inwstr (wchar_t * z) -{ - T((T_CALLED("inwstr(%p)"), z)); returnCode(winwstr(stdscr,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvadd_wch -NCURSES_EXPORT(int) mvadd_wch (int a1, int a2, const cchar_t * z) -{ - T((T_CALLED("mvadd_wch(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wadd_wch(stdscr,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvadd_wchnstr -NCURSES_EXPORT(int) mvadd_wchnstr (int a1, int a2, const cchar_t * a3, int z) -{ - T((T_CALLED("mvadd_wchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wadd_wchnstr(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvadd_wchstr -NCURSES_EXPORT(int) mvadd_wchstr (int a1, int a2, const cchar_t * z) -{ - T((T_CALLED("mvadd_wchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wadd_wchnstr(stdscr,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvaddnwstr -NCURSES_EXPORT(int) mvaddnwstr (int a1, int a2, const wchar_t * a3, int z) -{ - T((T_CALLED("mvaddnwstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnwstr(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvaddwstr -NCURSES_EXPORT(int) mvaddwstr (int a1, int a2, const wchar_t * z) -{ - T((T_CALLED("mvaddwstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnwstr(stdscr,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvget_wch -NCURSES_EXPORT(int) mvget_wch (int a1, int a2, wint_t * z) -{ - T((T_CALLED("mvget_wch(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wget_wch(stdscr,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvget_wstr -NCURSES_EXPORT(int) mvget_wstr (int a1, int a2, wint_t * z) -{ - T((T_CALLED("mvget_wstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetn_wstr(stdscr,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvgetn_wstr -NCURSES_EXPORT(int) mvgetn_wstr (int a1, int a2, wint_t * a3, int z) -{ - T((T_CALLED("mvgetn_wstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetn_wstr(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvhline_set -NCURSES_EXPORT(int) mvhline_set (int a1, int a2, const cchar_t * a3, int z) -{ - T((T_CALLED("mvhline_set(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : whline_set(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvin_wch -NCURSES_EXPORT(int) mvin_wch (int a1, int a2, cchar_t * z) -{ - T((T_CALLED("mvin_wch(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : win_wch(stdscr,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvin_wchnstr -NCURSES_EXPORT(int) mvin_wchnstr (int a1, int a2, cchar_t * a3, int z) -{ - T((T_CALLED("mvin_wchnstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : win_wchnstr(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvin_wchstr -NCURSES_EXPORT(int) mvin_wchstr (int a1, int a2, cchar_t * z) -{ - T((T_CALLED("mvin_wchstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : win_wchnstr(stdscr,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvinnwstr -NCURSES_EXPORT(int) mvinnwstr (int a1, int a2, wchar_t * a3, int z) -{ - return (wmove(stdscr,a1,a2) == (-1) ? (-1) : winnwstr(stdscr,a3,z)) ; -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvins_nwstr -NCURSES_EXPORT(int) mvins_nwstr (int a1, int a2, const wchar_t * a3, int z) -{ - T((T_CALLED("mvins_nwstr(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wins_nwstr(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvins_wch -NCURSES_EXPORT(int) mvins_wch (int a1, int a2, const cchar_t * z) -{ - T((T_CALLED("mvins_wch(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wins_wch(stdscr,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvins_wstr -NCURSES_EXPORT(int) mvins_wstr (int a1, int a2, const wchar_t * z) -{ - T((T_CALLED("mvins_wstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wins_nwstr(stdscr,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvinwstr -NCURSES_EXPORT(int) mvinwstr (int a1, int a2, wchar_t * z) -{ - T((T_CALLED("mvinwstr(%d,%d,%p)"), a1, a2, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winwstr(stdscr,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvvline_set -NCURSES_EXPORT(int) mvvline_set (int a1, int a2, const cchar_t * a3, int z) -{ - T((T_CALLED("mvvline_set(%d,%d,%p,%d)"), a1, a2, a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wvline_set(stdscr,a3,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwadd_wch -NCURSES_EXPORT(int) mvwadd_wch (WINDOW * a1, int a2, int a3, const cchar_t * z) -{ - T((T_CALLED("mvwadd_wch(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wadd_wch(a1,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwadd_wchnstr -NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW * a1, int a2, int a3, const cchar_t * a4, int z) -{ - T((T_CALLED("mvwadd_wchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wadd_wchnstr(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwadd_wchstr -NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW * a1, int a2, int a3, const cchar_t * z) -{ - T((T_CALLED("mvwadd_wchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wadd_wchnstr(a1,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwaddnwstr -NCURSES_EXPORT(int) mvwaddnwstr (WINDOW * a1, int a2, int a3, const wchar_t * a4, int z) -{ - T((T_CALLED("mvwaddnwstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnwstr(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwaddwstr -NCURSES_EXPORT(int) mvwaddwstr (WINDOW * a1, int a2, int a3, const wchar_t * z) -{ - T((T_CALLED("mvwaddwstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnwstr(a1,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwget_wch -NCURSES_EXPORT(int) mvwget_wch (WINDOW * a1, int a2, int a3, wint_t * z) -{ - T((T_CALLED("mvwget_wch(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wget_wch(a1,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwget_wstr -NCURSES_EXPORT(int) mvwget_wstr (WINDOW * a1, int a2, int a3, wint_t * z) -{ - T((T_CALLED("mvwget_wstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetn_wstr(a1,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwgetn_wstr -NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW * a1, int a2, int a3, wint_t * a4, int z) -{ - T((T_CALLED("mvwgetn_wstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetn_wstr(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwhline_set -NCURSES_EXPORT(int) mvwhline_set (WINDOW * a1, int a2, int a3, const cchar_t * a4, int z) -{ - T((T_CALLED("mvwhline_set(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : whline_set(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwin_wch -NCURSES_EXPORT(int) mvwin_wch (WINDOW * a1, int a2, int a3, cchar_t * z) -{ - T((T_CALLED("mvwin_wch(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : win_wch(a1,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwin_wchnstr -NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW * a1, int a2, int a3, cchar_t * a4, int z) -{ - T((T_CALLED("mvwin_wchnstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : win_wchnstr(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwin_wchstr -NCURSES_EXPORT(int) mvwin_wchstr (WINDOW * a1, int a2, int a3, cchar_t * z) -{ - T((T_CALLED("mvwin_wchstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : win_wchnstr(a1,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwinnwstr -NCURSES_EXPORT(int) mvwinnwstr (WINDOW * a1, int a2, int a3, wchar_t * a4, int z) -{ - return (wmove(a1,a2,a3) == (-1) ? (-1) : winnwstr(a1,a4,z)) ; -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwins_nwstr -NCURSES_EXPORT(int) mvwins_nwstr (WINDOW * a1, int a2, int a3, const wchar_t * a4, int z) -{ - T((T_CALLED("mvwins_nwstr(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wins_nwstr(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwins_wch -NCURSES_EXPORT(int) mvwins_wch (WINDOW * a1, int a2, int a3, const cchar_t * z) -{ - T((T_CALLED("mvwins_wch(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wins_wch(a1,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwins_wstr -NCURSES_EXPORT(int) mvwins_wstr (WINDOW * a1, int a2, int a3, const wchar_t * z) -{ - T((T_CALLED("mvwins_wstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wins_nwstr(a1,z,-1))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwinwstr -NCURSES_EXPORT(int) mvwinwstr (WINDOW * a1, int a2, int a3, wchar_t * z) -{ - T((T_CALLED("mvwinwstr(%p,%d,%d,%p)"), a1, a2, a3, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winwstr(a1,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef mvwvline_set -NCURSES_EXPORT(int) mvwvline_set (WINDOW * a1, int a2, int a3, const cchar_t * a4, int z) -{ - T((T_CALLED("mvwvline_set(%p,%d,%d,%p,%d)"), a1, a2, a3, a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wvline_set(a1,a4,z))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef vline_set -NCURSES_EXPORT(int) vline_set (const cchar_t * a1, int z) -{ - T((T_CALLED("vline_set(%p,%d)"), a1, z)); returnCode(wvline_set(stdscr,a1,z)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef wadd_wchstr -NCURSES_EXPORT(int) wadd_wchstr (WINDOW * a1, const cchar_t * z) -{ - T((T_CALLED("wadd_wchstr(%p,%p)"), a1, z)); returnCode(wadd_wchnstr(a1,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef waddwstr -NCURSES_EXPORT(int) waddwstr (WINDOW * a1, const wchar_t * z) -{ - T((T_CALLED("waddwstr(%p,%p)"), a1, z)); returnCode(waddnwstr(a1,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef wget_wstr -NCURSES_EXPORT(int) wget_wstr (WINDOW * a1, wint_t * z) -{ - T((T_CALLED("wget_wstr(%p,%p)"), a1, z)); returnCode(wgetn_wstr(a1,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef wgetbkgrnd -NCURSES_EXPORT(int) wgetbkgrnd (WINDOW * a1, cchar_t * z) -{ - T((T_CALLED("wgetbkgrnd(%p,%p)"), a1, z)); returnCode((*z = a1->_bkgrnd, (0))); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef win_wchstr -NCURSES_EXPORT(int) win_wchstr (WINDOW * a1, cchar_t * z) -{ - T((T_CALLED("win_wchstr(%p,%p)"), a1, z)); returnCode(win_wchnstr(a1,z,-1)); -} -#endif - - -#if USE_WIDEC_SUPPORT -#undef wins_wstr -NCURSES_EXPORT(int) wins_wstr (WINDOW * a1, const wchar_t * z) -{ - T((T_CALLED("wins_wstr(%p,%p)"), a1, z)); returnCode(wins_nwstr(a1,z,-1)); -} -#endif - - -#undef mouse_trafo -NCURSES_EXPORT(NCURSES_BOOL) mouse_trafo (int * a1, int * a2, NCURSES_BOOL z) -{ - T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), a1, a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z)); -} diff --git a/ncurses/ncurses/lib_keyname.c b/ncurses/ncurses/lib_keyname.c deleted file mode 100644 index 85dfbc6..0000000 --- a/ncurses/ncurses/lib_keyname.c +++ /dev/null @@ -1,405 +0,0 @@ -/* generated by MKkeyname.awk */ - -#include -#include -#include - -struct kn { short offset; int code; }; -static const struct kn _nc_key_names[] = { - { 0, KEY_A1 }, - { 7, KEY_A3 }, - { 14, KEY_B2 }, - { 21, KEY_BACKSPACE }, - { 35, KEY_BEG }, - { 43, KEY_BREAK }, - { 53, KEY_BTAB }, - { 62, KEY_C1 }, - { 69, KEY_C3 }, - { 76, KEY_CANCEL }, - { 87, KEY_CATAB }, - { 97, KEY_CLEAR }, - { 107, KEY_CLOSE }, - { 117, KEY_COMMAND }, - { 129, KEY_COPY }, - { 138, KEY_CREATE }, - { 149, KEY_CTAB }, - { 158, KEY_DC }, - { 165, KEY_DL }, - { 172, KEY_DOWN }, - { 181, KEY_EIC }, - { 189, KEY_END }, - { 197, KEY_ENTER }, - { 207, KEY_EOL }, - { 215, KEY_EOS }, - { 223, KEY_EXIT }, - { 232, KEY_F(0) }, - { 241, KEY_F(1) }, - { 250, KEY_F(10) }, - { 260, KEY_F(11) }, - { 270, KEY_F(12) }, - { 280, KEY_F(13) }, - { 290, KEY_F(14) }, - { 300, KEY_F(15) }, - { 310, KEY_F(16) }, - { 320, KEY_F(17) }, - { 330, KEY_F(18) }, - { 340, KEY_F(19) }, - { 350, KEY_F(2) }, - { 359, KEY_F(20) }, - { 369, KEY_F(21) }, - { 379, KEY_F(22) }, - { 389, KEY_F(23) }, - { 399, KEY_F(24) }, - { 409, KEY_F(25) }, - { 419, KEY_F(26) }, - { 429, KEY_F(27) }, - { 439, KEY_F(28) }, - { 449, KEY_F(29) }, - { 459, KEY_F(3) }, - { 468, KEY_F(30) }, - { 478, KEY_F(31) }, - { 488, KEY_F(32) }, - { 498, KEY_F(33) }, - { 508, KEY_F(34) }, - { 518, KEY_F(35) }, - { 528, KEY_F(36) }, - { 538, KEY_F(37) }, - { 548, KEY_F(38) }, - { 558, KEY_F(39) }, - { 568, KEY_F(4) }, - { 577, KEY_F(40) }, - { 587, KEY_F(41) }, - { 597, KEY_F(42) }, - { 607, KEY_F(43) }, - { 617, KEY_F(44) }, - { 627, KEY_F(45) }, - { 637, KEY_F(46) }, - { 647, KEY_F(47) }, - { 657, KEY_F(48) }, - { 667, KEY_F(49) }, - { 677, KEY_F(5) }, - { 686, KEY_F(50) }, - { 696, KEY_F(51) }, - { 706, KEY_F(52) }, - { 716, KEY_F(53) }, - { 726, KEY_F(54) }, - { 736, KEY_F(55) }, - { 746, KEY_F(56) }, - { 756, KEY_F(57) }, - { 766, KEY_F(58) }, - { 776, KEY_F(59) }, - { 786, KEY_F(6) }, - { 795, KEY_F(60) }, - { 805, KEY_F(61) }, - { 815, KEY_F(62) }, - { 825, KEY_F(63) }, - { 835, KEY_F(7) }, - { 844, KEY_F(8) }, - { 853, KEY_F(9) }, - { 862, KEY_FIND }, - { 871, KEY_HELP }, - { 880, KEY_HOME }, - { 889, KEY_IC }, - { 896, KEY_IL }, - { 903, KEY_LEFT }, - { 912, KEY_LL }, - { 919, KEY_MARK }, - { 928, KEY_MESSAGE }, - { 940, KEY_MOUSE }, - { 950, KEY_MOVE }, - { 959, KEY_NEXT }, - { 968, KEY_NPAGE }, - { 978, KEY_OPEN }, - { 987, KEY_OPTIONS }, - { 999, KEY_PPAGE }, - { 1009, KEY_PREVIOUS }, - { 1022, KEY_PRINT }, - { 1032, KEY_REDO }, - { 1041, KEY_REFERENCE }, - { 1055, KEY_REFRESH }, - { 1067, KEY_REPLACE }, - { 1079, KEY_RESET }, - { 1089, KEY_RESIZE }, - { 1100, KEY_RESTART }, - { 1112, KEY_RESUME }, - { 1123, KEY_RIGHT }, - { 1133, KEY_SAVE }, - { 1142, KEY_SBEG }, - { 1151, KEY_SCANCEL }, - { 1163, KEY_SCOMMAND }, - { 1176, KEY_SCOPY }, - { 1186, KEY_SCREATE }, - { 1198, KEY_SDC }, - { 1206, KEY_SDL }, - { 1214, KEY_SELECT }, - { 1225, KEY_SEND }, - { 1234, KEY_SEOL }, - { 1243, KEY_SEXIT }, - { 1253, KEY_SF }, - { 1260, KEY_SFIND }, - { 1270, KEY_SHELP }, - { 1280, KEY_SHOME }, - { 1290, KEY_SIC }, - { 1298, KEY_SLEFT }, - { 1308, KEY_SMESSAGE }, - { 1321, KEY_SMOVE }, - { 1331, KEY_SNEXT }, - { 1341, KEY_SOPTIONS }, - { 1354, KEY_SPREVIOUS }, - { 1368, KEY_SPRINT }, - { 1379, KEY_SR }, - { 1386, KEY_SREDO }, - { 1396, KEY_SREPLACE }, - { 1409, KEY_SRESET }, - { 1420, KEY_SRIGHT }, - { 1431, KEY_SRSUME }, - { 1442, KEY_SSAVE }, - { 1452, KEY_SSUSPEND }, - { 1465, KEY_STAB }, - { 1474, KEY_SUNDO }, - { 1484, KEY_SUSPEND }, - { 1496, KEY_UNDO }, - { 1505, KEY_UP }, - { -1, 0 }}; - -static const char key_names[] = - "KEY_A1\0" - "KEY_A3\0" - "KEY_B2\0" - "KEY_BACKSPACE\0" - "KEY_BEG\0" - "KEY_BREAK\0" - "KEY_BTAB\0" - "KEY_C1\0" - "KEY_C3\0" - "KEY_CANCEL\0" - "KEY_CATAB\0" - "KEY_CLEAR\0" - "KEY_CLOSE\0" - "KEY_COMMAND\0" - "KEY_COPY\0" - "KEY_CREATE\0" - "KEY_CTAB\0" - "KEY_DC\0" - "KEY_DL\0" - "KEY_DOWN\0" - "KEY_EIC\0" - "KEY_END\0" - "KEY_ENTER\0" - "KEY_EOL\0" - "KEY_EOS\0" - "KEY_EXIT\0" - "KEY_F(0)\0" - "KEY_F(1)\0" - "KEY_F(10)\0" - "KEY_F(11)\0" - "KEY_F(12)\0" - "KEY_F(13)\0" - "KEY_F(14)\0" - "KEY_F(15)\0" - "KEY_F(16)\0" - "KEY_F(17)\0" - "KEY_F(18)\0" - "KEY_F(19)\0" - "KEY_F(2)\0" - "KEY_F(20)\0" - "KEY_F(21)\0" - "KEY_F(22)\0" - "KEY_F(23)\0" - "KEY_F(24)\0" - "KEY_F(25)\0" - "KEY_F(26)\0" - "KEY_F(27)\0" - "KEY_F(28)\0" - "KEY_F(29)\0" - "KEY_F(3)\0" - "KEY_F(30)\0" - "KEY_F(31)\0" - "KEY_F(32)\0" - "KEY_F(33)\0" - "KEY_F(34)\0" - "KEY_F(35)\0" - "KEY_F(36)\0" - "KEY_F(37)\0" - "KEY_F(38)\0" - "KEY_F(39)\0" - "KEY_F(4)\0" - "KEY_F(40)\0" - "KEY_F(41)\0" - "KEY_F(42)\0" - "KEY_F(43)\0" - "KEY_F(44)\0" - "KEY_F(45)\0" - "KEY_F(46)\0" - "KEY_F(47)\0" - "KEY_F(48)\0" - "KEY_F(49)\0" - "KEY_F(5)\0" - "KEY_F(50)\0" - "KEY_F(51)\0" - "KEY_F(52)\0" - "KEY_F(53)\0" - "KEY_F(54)\0" - "KEY_F(55)\0" - "KEY_F(56)\0" - "KEY_F(57)\0" - "KEY_F(58)\0" - "KEY_F(59)\0" - "KEY_F(6)\0" - "KEY_F(60)\0" - "KEY_F(61)\0" - "KEY_F(62)\0" - "KEY_F(63)\0" - "KEY_F(7)\0" - "KEY_F(8)\0" - "KEY_F(9)\0" - "KEY_FIND\0" - "KEY_HELP\0" - "KEY_HOME\0" - "KEY_IC\0" - "KEY_IL\0" - "KEY_LEFT\0" - "KEY_LL\0" - "KEY_MARK\0" - "KEY_MESSAGE\0" - "KEY_MOUSE\0" - "KEY_MOVE\0" - "KEY_NEXT\0" - "KEY_NPAGE\0" - "KEY_OPEN\0" - "KEY_OPTIONS\0" - "KEY_PPAGE\0" - "KEY_PREVIOUS\0" - "KEY_PRINT\0" - "KEY_REDO\0" - "KEY_REFERENCE\0" - "KEY_REFRESH\0" - "KEY_REPLACE\0" - "KEY_RESET\0" - "KEY_RESIZE\0" - "KEY_RESTART\0" - "KEY_RESUME\0" - "KEY_RIGHT\0" - "KEY_SAVE\0" - "KEY_SBEG\0" - "KEY_SCANCEL\0" - "KEY_SCOMMAND\0" - "KEY_SCOPY\0" - "KEY_SCREATE\0" - "KEY_SDC\0" - "KEY_SDL\0" - "KEY_SELECT\0" - "KEY_SEND\0" - "KEY_SEOL\0" - "KEY_SEXIT\0" - "KEY_SF\0" - "KEY_SFIND\0" - "KEY_SHELP\0" - "KEY_SHOME\0" - "KEY_SIC\0" - "KEY_SLEFT\0" - "KEY_SMESSAGE\0" - "KEY_SMOVE\0" - "KEY_SNEXT\0" - "KEY_SOPTIONS\0" - "KEY_SPREVIOUS\0" - "KEY_SPRINT\0" - "KEY_SR\0" - "KEY_SREDO\0" - "KEY_SREPLACE\0" - "KEY_SRESET\0" - "KEY_SRIGHT\0" - "KEY_SRSUME\0" - "KEY_SSAVE\0" - "KEY_SSUSPEND\0" - "KEY_STAB\0" - "KEY_SUNDO\0" - "KEY_SUSPEND\0" - "KEY_UNDO\0" - "KEY_UP\0"; - -#define SIZEOF_TABLE 256 -#define MyTable _nc_globals.keyname_table - -NCURSES_EXPORT(NCURSES_CONST char *) _nc_keyname (SCREEN *sp, int c) -{ - int i; - char name[20]; - char *p; - NCURSES_CONST char *result = 0; - - if (c == -1) { - result = "-1"; - } else { - for (i = 0; _nc_key_names[i].offset != -1; i++) { - if (_nc_key_names[i].code == c) { - result = (NCURSES_CONST char *)key_names + _nc_key_names[i].offset; - break; - } - } - - if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) { - if (MyTable == 0) - MyTable = typeCalloc(char *, SIZEOF_TABLE); - if (MyTable != 0) { - if (MyTable[c] == 0) { - int cc = c; - p = name; - if (cc >= 128 && (sp == 0 || sp->_use_meta)) { - strcpy(p, "M-"); - p += 2; - cc -= 128; - } - if (cc < 32) - sprintf(p, "^%c", cc + '@'); - else if (cc == 127) - strcpy(p, "^?"); - else - sprintf(p, "%c", cc); - MyTable[c] = strdup(name); - } - result = MyTable[c]; - } -#if NCURSES_EXT_FUNCS && NCURSES_XNAMES - } else if (result == 0 && cur_term != 0) { - int j, k; - char * bound; - TERMTYPE *tp = &(cur_term->type); - int save_trace = _nc_tracing; - - _nc_tracing = 0; /* prevent recursion via keybound() */ - for (j = 0; (bound = keybound(c, j)) != 0; ++j) { - for(k = STRCOUNT; k < (int) NUM_STRINGS(tp); k++) { - if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) { - result = ExtStrname(tp, k, strnames); - break; - } - } - free(bound); - if (result != 0) - break; - } - _nc_tracing = save_trace; -#endif - } - } - return result; -} - -NCURSES_EXPORT(NCURSES_CONST char *) keyname (int c) -{ - return _nc_keyname(SP, c); -} - -#if NO_LEAKS -void _nc_keyname_leaks(void) -{ - int j; - if (MyTable != 0) { - for (j = 0; j < SIZEOF_TABLE; ++j) { - FreeIfNeeded(MyTable[j]); - } - FreeAndNull(MyTable); - } -} -#endif /* NO_LEAKS */ diff --git a/ncurses/ncurses/names.c b/ncurses/ncurses/names.c deleted file mode 100644 index 360e733..0000000 --- a/ncurses/ncurses/names.c +++ /dev/null @@ -1,1365 +0,0 @@ -/* This file was generated by MKnames.awk */ - -#include - -#define IT NCURSES_CONST char * const - - -#if BROKEN_LINKER || USE_REENTRANT - -#include - -static const char _nc_name_blob[] = -"bw\0" "auto_left_margin\0" "am\0" "auto_right_margin\0" "xsb\0" "no_esc_ctlc\0" \ -"xhp\0" "ceol_standout_glitch\0" "xenl\0" "eat_newline_glitch\0" "eo\0" \ -"erase_overstrike\0" "gn\0" "generic_type\0" "hc\0" "hard_copy\0" "km\0" \ -"has_meta_key\0" "hs\0" "has_status_line\0" "in\0" "insert_null_glitch\0" \ -"da\0" "memory_above\0" "db\0" "memory_below\0" "mir\0" "move_insert_mode\0" \ -"msgr\0" "move_standout_mode\0" "os\0" "over_strike\0" "eslok\0" "status_line_esc_ok\0" \ -"xt\0" "dest_tabs_magic_smso\0" "hz\0" "tilde_glitch\0" "ul\0" "transparent_underline\0" \ -"xon\0" "xon_xoff\0" "nxon\0" "needs_xon_xoff\0" "mc5i\0" "prtr_silent\0" \ -"chts\0" "hard_cursor\0" "nrrmc\0" "non_rev_rmcup\0" "npc\0" "no_pad_char\0" \ -"ndscr\0" "non_dest_scroll_region\0" "ccc\0" "can_change\0" "bce\0" "back_color_erase\0" \ -"hls\0" "hue_lightness_saturation\0" "xhpa\0" "col_addr_glitch\0" "crxm\0" \ -"cr_cancels_micro_mode\0" "daisy\0" "has_print_wheel\0" "xvpa\0" "row_addr_glitch\0" \ -"sam\0" "semi_auto_right_margin\0" "cpix\0" "cpi_changes_res\0" "lpix\0" \ -"lpi_changes_res\0" "cols\0" "columns\0" "it\0" "init_tabs\0" "lines\0" \ -"lines\0" "lm\0" "lines_of_memory\0" "xmc\0" "magic_cookie_glitch\0" "pb\0" \ -"padding_baud_rate\0" "vt\0" "virtual_terminal\0" "wsl\0" "width_status_line\0" \ -"nlab\0" "num_labels\0" "lh\0" "label_height\0" "lw\0" "label_width\0" \ -"ma\0" "max_attributes\0" "wnum\0" "maximum_windows\0" "colors\0" "max_colors\0" \ -"pairs\0" "max_pairs\0" "ncv\0" "no_color_video\0" "bufsz\0" "buffer_capacity\0" \ -"spinv\0" "dot_vert_spacing\0" "spinh\0" "dot_horz_spacing\0" "maddr\0" \ -"max_micro_address\0" "mjump\0" "max_micro_jump\0" "mcs\0" "micro_col_size\0" \ -"mls\0" "micro_line_size\0" "npins\0" "number_of_pins\0" "orc\0" "output_res_char\0" \ -"orl\0" "output_res_line\0" "orhi\0" "output_res_horz_inch\0" "orvi\0" \ -"output_res_vert_inch\0" "cps\0" "print_rate\0" "widcs\0" "wide_char_size\0" \ -"btns\0" "buttons\0" "bitwin\0" "bit_image_entwining\0" "bitype\0" "bit_image_type\0" \ -"cbt\0" "back_tab\0" "bel\0" "bell\0" "cr\0" "carriage_return\0" "csr\0" \ -"change_scroll_region\0" "tbc\0" "clear_all_tabs\0" "clear\0" "clear_screen\0" \ -"el\0" "clr_eol\0" "ed\0" "clr_eos\0" "hpa\0" "column_address\0" "cmdch\0" \ -"command_character\0" "cup\0" "cursor_address\0" "cud1\0" "cursor_down\0" \ -"home\0" "cursor_home\0" "civis\0" "cursor_invisible\0" "cub1\0" "cursor_left\0" \ -"mrcup\0" "cursor_mem_address\0" "cnorm\0" "cursor_normal\0" "cuf1\0" "cursor_right\0" \ -"ll\0" "cursor_to_ll\0" "cuu1\0" "cursor_up\0" "cvvis\0" "cursor_visible\0" \ -"dch1\0" "delete_character\0" "dl1\0" "delete_line\0" "dsl\0" "dis_status_line\0" \ -"hd\0" "down_half_line\0" "smacs\0" "enter_alt_charset_mode\0" "blink\0" \ -"enter_blink_mode\0" "bold\0" "enter_bold_mode\0" "smcup\0" "enter_ca_mode\0" \ -"smdc\0" "enter_delete_mode\0" "dim\0" "enter_dim_mode\0" "smir\0" "enter_insert_mode\0" \ -"invis\0" "enter_secure_mode\0" "prot\0" "enter_protected_mode\0" "rev\0" \ -"enter_reverse_mode\0" "smso\0" "enter_standout_mode\0" "smul\0" "enter_underline_mode\0" \ -"ech\0" "erase_chars\0" "rmacs\0" "exit_alt_charset_mode\0" "sgr0\0" "exit_attribute_mode\0" \ -"rmcup\0" "exit_ca_mode\0" "rmdc\0" "exit_delete_mode\0" "rmir\0" "exit_insert_mode\0" \ -"rmso\0" "exit_standout_mode\0" "rmul\0" "exit_underline_mode\0" "flash\0" \ -"flash_screen\0" "ff\0" "form_feed\0" "fsl\0" "from_status_line\0" "is1\0" \ -"init_1string\0" "is2\0" "init_2string\0" "is3\0" "init_3string\0" "if\0" \ -"init_file\0" "ich1\0" "insert_character\0" "il1\0" "insert_line\0" "ip\0" \ -"insert_padding\0" "kbs\0" "key_backspace\0" "ktbc\0" "key_catab\0" "kclr\0" \ -"key_clear\0" "kctab\0" "key_ctab\0" "kdch1\0" "key_dc\0" "kdl1\0" "key_dl\0" \ -"kcud1\0" "key_down\0" "krmir\0" "key_eic\0" "kel\0" "key_eol\0" "ked\0" \ -"key_eos\0" "kf0\0" "key_f0\0" "kf1\0" "key_f1\0" "kf10\0" "key_f10\0" \ -"kf2\0" "key_f2\0" "kf3\0" "key_f3\0" "kf4\0" "key_f4\0" "kf5\0" "key_f5\0" \ -"kf6\0" "key_f6\0" "kf7\0" "key_f7\0" "kf8\0" "key_f8\0" "kf9\0" "key_f9\0" \ -"khome\0" "key_home\0" "kich1\0" "key_ic\0" "kil1\0" "key_il\0" "kcub1\0" \ -"key_left\0" "kll\0" "key_ll\0" "knp\0" "key_npage\0" "kpp\0" "key_ppage\0" \ -"kcuf1\0" "key_right\0" "kind\0" "key_sf\0" "kri\0" "key_sr\0" "khts\0" \ -"key_stab\0" "kcuu1\0" "key_up\0" "rmkx\0" "keypad_local\0" "smkx\0" "keypad_xmit\0" \ -"lf0\0" "lab_f0\0" "lf1\0" "lab_f1\0" "lf10\0" "lab_f10\0" "lf2\0" "lab_f2\0" \ -"lf3\0" "lab_f3\0" "lf4\0" "lab_f4\0" "lf5\0" "lab_f5\0" "lf6\0" "lab_f6\0" \ -"lf7\0" "lab_f7\0" "lf8\0" "lab_f8\0" "lf9\0" "lab_f9\0" "rmm\0" "meta_off\0" \ -"smm\0" "meta_on\0" "nel\0" "newline\0" "pad\0" "pad_char\0" "dch\0" "parm_dch\0" \ -"dl\0" "parm_delete_line\0" "cud\0" "parm_down_cursor\0" "ich\0" "parm_ich\0" \ -"indn\0" "parm_index\0" "il\0" "parm_insert_line\0" "cub\0" "parm_left_cursor\0" \ -"cuf\0" "parm_right_cursor\0" "rin\0" "parm_rindex\0" "cuu\0" "parm_up_cursor\0" \ -"pfkey\0" "pkey_key\0" "pfloc\0" "pkey_local\0" "pfx\0" "pkey_xmit\0" "mc0\0" \ -"print_screen\0" "mc4\0" "prtr_off\0" "mc5\0" "prtr_on\0" "rep\0" "repeat_char\0" \ -"rs1\0" "reset_1string\0" "rs2\0" "reset_2string\0" "rs3\0" "reset_3string\0" \ -"rf\0" "reset_file\0" "rc\0" "restore_cursor\0" "vpa\0" "row_address\0" \ -"sc\0" "save_cursor\0" "ind\0" "scroll_forward\0" "ri\0" "scroll_reverse\0" \ -"sgr\0" "set_attributes\0" "hts\0" "set_tab\0" "wind\0" "set_window\0" \ -"ht\0" "tab\0" "tsl\0" "to_status_line\0" "uc\0" "underline_char\0" "hu\0" \ -"up_half_line\0" "iprog\0" "init_prog\0" "ka1\0" "key_a1\0" "ka3\0" "key_a3\0" \ -"kb2\0" "key_b2\0" "kc1\0" "key_c1\0" "kc3\0" "key_c3\0" "mc5p\0" "prtr_non\0" \ -"rmp\0" "char_padding\0" "acsc\0" "acs_chars\0" "pln\0" "plab_norm\0" "kcbt\0" \ -"key_btab\0" "smxon\0" "enter_xon_mode\0" "rmxon\0" "exit_xon_mode\0" "smam\0" \ -"enter_am_mode\0" "rmam\0" "exit_am_mode\0" "xonc\0" "xon_character\0" \ -"xoffc\0" "xoff_character\0" "enacs\0" "ena_acs\0" "smln\0" "label_on\0" \ -"rmln\0" "label_off\0" "kbeg\0" "key_beg\0" "kcan\0" "key_cancel\0" "kclo\0" \ -"key_close\0" "kcmd\0" "key_command\0" "kcpy\0" "key_copy\0" "kcrt\0" "key_create\0" \ -"kend\0" "key_end\0" "kent\0" "key_enter\0" "kext\0" "key_exit\0" "kfnd\0" \ -"key_find\0" "khlp\0" "key_help\0" "kmrk\0" "key_mark\0" "kmsg\0" "key_message\0" \ -"kmov\0" "key_move\0" "knxt\0" "key_next\0" "kopn\0" "key_open\0" "kopt\0" \ -"key_options\0" "kprv\0" "key_previous\0" "kprt\0" "key_print\0" "krdo\0" \ -"key_redo\0" "kref\0" "key_reference\0" "krfr\0" "key_refresh\0" "krpl\0" \ -"key_replace\0" "krst\0" "key_restart\0" "kres\0" "key_resume\0" "ksav\0" \ -"key_save\0" "kspd\0" "key_suspend\0" "kund\0" "key_undo\0" "kBEG\0" "key_sbeg\0" \ -"kCAN\0" "key_scancel\0" "kCMD\0" "key_scommand\0" "kCPY\0" "key_scopy\0" \ -"kCRT\0" "key_screate\0" "kDC\0" "key_sdc\0" "kDL\0" "key_sdl\0" "kslt\0" \ -"key_select\0" "kEND\0" "key_send\0" "kEOL\0" "key_seol\0" "kEXT\0" "key_sexit\0" \ -"kFND\0" "key_sfind\0" "kHLP\0" "key_shelp\0" "kHOM\0" "key_shome\0" "kIC\0" \ -"key_sic\0" "kLFT\0" "key_sleft\0" "kMSG\0" "key_smessage\0" "kMOV\0" "key_smove\0" \ -"kNXT\0" "key_snext\0" "kOPT\0" "key_soptions\0" "kPRV\0" "key_sprevious\0" \ -"kPRT\0" "key_sprint\0" "kRDO\0" "key_sredo\0" "kRPL\0" "key_sreplace\0" \ -"kRIT\0" "key_sright\0" "kRES\0" "key_srsume\0" "kSAV\0" "key_ssave\0" \ -"kSPD\0" "key_ssuspend\0" "kUND\0" "key_sundo\0" "rfi\0" "req_for_input\0" \ -"kf11\0" "key_f11\0" "kf12\0" "key_f12\0" "kf13\0" "key_f13\0" "kf14\0" \ -"key_f14\0" "kf15\0" "key_f15\0" "kf16\0" "key_f16\0" "kf17\0" "key_f17\0" \ -"kf18\0" "key_f18\0" "kf19\0" "key_f19\0" "kf20\0" "key_f20\0" "kf21\0" \ -"key_f21\0" "kf22\0" "key_f22\0" "kf23\0" "key_f23\0" "kf24\0" "key_f24\0" \ -"kf25\0" "key_f25\0" "kf26\0" "key_f26\0" "kf27\0" "key_f27\0" "kf28\0" \ -"key_f28\0" "kf29\0" "key_f29\0" "kf30\0" "key_f30\0" "kf31\0" "key_f31\0" \ -"kf32\0" "key_f32\0" "kf33\0" "key_f33\0" "kf34\0" "key_f34\0" "kf35\0" \ -"key_f35\0" "kf36\0" "key_f36\0" "kf37\0" "key_f37\0" "kf38\0" "key_f38\0" \ -"kf39\0" "key_f39\0" "kf40\0" "key_f40\0" "kf41\0" "key_f41\0" "kf42\0" \ -"key_f42\0" "kf43\0" "key_f43\0" "kf44\0" "key_f44\0" "kf45\0" "key_f45\0" \ -"kf46\0" "key_f46\0" "kf47\0" "key_f47\0" "kf48\0" "key_f48\0" "kf49\0" \ -"key_f49\0" "kf50\0" "key_f50\0" "kf51\0" "key_f51\0" "kf52\0" "key_f52\0" \ -"kf53\0" "key_f53\0" "kf54\0" "key_f54\0" "kf55\0" "key_f55\0" "kf56\0" \ -"key_f56\0" "kf57\0" "key_f57\0" "kf58\0" "key_f58\0" "kf59\0" "key_f59\0" \ -"kf60\0" "key_f60\0" "kf61\0" "key_f61\0" "kf62\0" "key_f62\0" "kf63\0" \ -"key_f63\0" "el1\0" "clr_bol\0" "mgc\0" "clear_margins\0" "smgl\0" "set_left_margin\0" \ -"smgr\0" "set_right_margin\0" "fln\0" "label_format\0" "sclk\0" "set_clock\0" \ -"dclk\0" "display_clock\0" "rmclk\0" "remove_clock\0" "cwin\0" "create_window\0" \ -"wingo\0" "goto_window\0" "hup\0" "hangup\0" "dial\0" "dial_phone\0" "qdial\0" \ -"quick_dial\0" "tone\0" "tone\0" "pulse\0" "pulse\0" "hook\0" "flash_hook\0" \ -"pause\0" "fixed_pause\0" "wait\0" "wait_tone\0" "u0\0" "user0\0" "u1\0" \ -"user1\0" "u2\0" "user2\0" "u3\0" "user3\0" "u4\0" "user4\0" "u5\0" "user5\0" \ -"u6\0" "user6\0" "u7\0" "user7\0" "u8\0" "user8\0" "u9\0" "user9\0" "op\0" \ -"orig_pair\0" "oc\0" "orig_colors\0" "initc\0" "initialize_color\0" "initp\0" \ -"initialize_pair\0" "scp\0" "set_color_pair\0" "setf\0" "set_foreground\0" \ -"setb\0" "set_background\0" "cpi\0" "change_char_pitch\0" "lpi\0" "change_line_pitch\0" \ -"chr\0" "change_res_horz\0" "cvr\0" "change_res_vert\0" "defc\0" "define_char\0" \ -"swidm\0" "enter_doublewide_mode\0" "sdrfq\0" "enter_draft_quality\0" "sitm\0" \ -"enter_italics_mode\0" "slm\0" "enter_leftward_mode\0" "smicm\0" "enter_micro_mode\0" \ -"snlq\0" "enter_near_letter_quality\0" "snrmq\0" "enter_normal_quality\0" \ -"sshm\0" "enter_shadow_mode\0" "ssubm\0" "enter_subscript_mode\0" "ssupm\0" \ -"enter_superscript_mode\0" "sum\0" "enter_upward_mode\0" "rwidm\0" "exit_doublewide_mode\0" \ -"ritm\0" "exit_italics_mode\0" "rlm\0" "exit_leftward_mode\0" "rmicm\0" \ -"exit_micro_mode\0" "rshm\0" "exit_shadow_mode\0" "rsubm\0" "exit_subscript_mode\0" \ -"rsupm\0" "exit_superscript_mode\0" "rum\0" "exit_upward_mode\0" "mhpa\0" \ -"micro_column_address\0" "mcud1\0" "micro_down\0" "mcub1\0" "micro_left\0" \ -"mcuf1\0" "micro_right\0" "mvpa\0" "micro_row_address\0" "mcuu1\0" "micro_up\0" \ -"porder\0" "order_of_pins\0" "mcud\0" "parm_down_micro\0" "mcub\0" "parm_left_micro\0" \ -"mcuf\0" "parm_right_micro\0" "mcuu\0" "parm_up_micro\0" "scs\0" "select_char_set\0" \ -"smgb\0" "set_bottom_margin\0" "smgbp\0" "set_bottom_margin_parm\0" "smglp\0" \ -"set_left_margin_parm\0" "smgrp\0" "set_right_margin_parm\0" "smgt\0" "set_top_margin\0" \ -"smgtp\0" "set_top_margin_parm\0" "sbim\0" "start_bit_image\0" "scsd\0" \ -"start_char_set_def\0" "rbim\0" "stop_bit_image\0" "rcsd\0" "stop_char_set_def\0" \ -"subcs\0" "subscript_characters\0" "supcs\0" "superscript_characters\0" \ -"docr\0" "these_cause_cr\0" "zerom\0" "zero_motion\0" "csnm\0" "char_set_names\0" \ -"kmous\0" "key_mouse\0" "minfo\0" "mouse_info\0" "reqmp\0" "req_mouse_pos\0" \ -"getm\0" "get_mouse\0" "setaf\0" "set_a_foreground\0" "setab\0" "set_a_background\0" \ -"pfxl\0" "pkey_plab\0" "devt\0" "device_type\0" "csin\0" "code_set_init\0" \ -"s0ds\0" "set0_des_seq\0" "s1ds\0" "set1_des_seq\0" "s2ds\0" "set2_des_seq\0" \ -"s3ds\0" "set3_des_seq\0" "smglr\0" "set_lr_margin\0" "smgtb\0" "set_tb_margin\0" \ -"birep\0" "bit_image_repeat\0" "binel\0" "bit_image_newline\0" "bicr\0" \ -"bit_image_carriage_return\0" "colornm\0" "color_names\0" "defbi\0" "define_bit_image_region\0" \ -"endbi\0" "end_bit_image_region\0" "setcolor\0" "set_color_band\0" "slines\0" \ -"set_page_length\0" "dispc\0" "display_pc_char\0" "smpch\0" "enter_pc_charset_mode\0" \ -"rmpch\0" "exit_pc_charset_mode\0" "smsc\0" "enter_scancode_mode\0" "rmsc\0" \ -"exit_scancode_mode\0" "pctrm\0" "pc_term_options\0" "scesc\0" "scancode_escape\0" \ -"scesa\0" "alt_scancode_esc\0" "ehhlm\0" "enter_horizontal_hl_mode\0" "elhlm\0" \ -"enter_left_hl_mode\0" "elohlm\0" "enter_low_hl_mode\0" "erhlm\0" "enter_right_hl_mode\0" \ -"ethlm\0" "enter_top_hl_mode\0" "evhlm\0" "enter_vertical_hl_mode\0" "sgr1\0" \ -"set_a_attributes\0" "slength\0" "set_pglen_inch\0" "OTi2\0" "termcap_init2\0" \ -"OTrs\0" "termcap_reset\0" "OTug\0" "magic_cookie_glitch_ul\0" "OTbs\0" \ -"backspaces_with_bs\0" "OTns\0" "crt_no_scrolling\0" "OTnc\0" "no_correctly_working_cr\0" \ -"OTdC\0" "carriage_return_delay\0" "OTdN\0" "new_line_delay\0" "OTnl\0" \ -"linefeed_if_not_lf\0" "OTbc\0" "backspace_if_not_bs\0" "OTMT\0" "gnu_has_meta_key\0" \ -"OTNL\0" "linefeed_is_newline\0" "OTdB\0" "backspace_delay\0" "OTdT\0" \ -"horizontal_tab_delay\0" "OTkn\0" "number_of_function_keys\0" "OTko\0" \ -"other_non_function_keys\0" "OTma\0" "arrow_key_map\0" "OTpt\0" "has_hardware_tabs\0" \ -"OTxr\0" "return_does_clr_eol\0" "OTG2\0" "acs_ulcorner\0" "OTG3\0" "acs_llcorner\0" \ -"OTG1\0" "acs_urcorner\0" "OTG4\0" "acs_lrcorner\0" "OTGR\0" "acs_ltee\0" \ -"OTGL\0" "acs_rtee\0" "OTGU\0" "acs_btee\0" "OTGD\0" "acs_ttee\0" "OTGH\0" \ -"acs_hline\0" "OTGV\0" "acs_vline\0" "OTGC\0" "acs_plus\0" "meml\0" "memory_lock\0" \ -"memu\0" "memory_unlock\0" "box1\0" "box_chars_1\0" ; -static const short _nc_offset_boolfnames[] = { -3, 23, 45, 61, 87, 109, 129, -145, 158, 174, 193, 215, 231, -248, 270, 292, 310, 332, 356, -372, 398, 412, 432, 449, 467, -485, 503, 530, 545, 566, 596, -617, 645, 666, 686, 714, 735, -8193, 8217, 8239, 8364, 8386, 8535, 8558, }; - -static NCURSES_CONST char ** ptr_boolfnames = 0; - -static const short _nc_offset_boolnames[] = { -0, 20, 41, 57, 82, 106, 126, 142, 155, 171, 190, 212, 228, 244, 265, 289, 304, 329, 353, 369, 394, 407, 427, 444, 461, 481, 497, 526, 541, 562, 591, 612, 639, 661, 682, 709, 730, 8188, 8212, 8234, 8359, 8381, 8530, 8553, }; - -static NCURSES_CONST char ** ptr_boolnames = 0; - -static const short _nc_offset_numfnames[] = { -756, 767, 783, 792, 812, 835, -856, 877, 900, 914, 930, 945, -965, 988, 1005, 1019, 1040, 1062, 1085, 1108, 1132, 1151, 1170, -1192, 1211, 1231, 1252, 1278, 1303, 1320, 1340, 1355, 1382, 8165, -8268, 8295, 8411, 8432, -8458, }; - -static NCURSES_CONST char ** ptr_numfnames = 0; - -static const short _nc_offset_numnames[] = { -751, 764, 777, 789, 808, 832, 853, 873, 895, 911, 927, 942, 960, 981, 999, 1015, 1034, 1056, -1079, 1102, 1126, 1147, 1166, 1186, 1207, 1227, 1247, 1273, 1299, -1314, 1335, 1348, 1375, 8160, 8263, 8290, 8406, 8427, 8453, }; - -static NCURSES_CONST char ** ptr_numnames = 0; - -static const short _nc_offset_strfnames[] = { -1401, -1414, 1422, 1442, 1467, 1488, 1504, 1515, 1527, 1548, 1570, 1590, -1607, 1625, 1647, 1665, 1690, 1709, 1725, 1743, 1759, 1779, 1800, -1816, 1835, 1856, 1885, 1907, 1929, 1948, 1970, 1990, 2014, 2037, -2062, 2086, 2111, 2136, 2154, 2181, 2207, 2225, 2247, 2269, 2293, -2319, 2335, 2349, 2370, 2387, 2404, 2420, 2435, 2456, 2471, 2490, -2509, 2524, 2540, 2555, 2567, 2580, 2595, 2607, 2619, 2631, 2642, -2654, 2666, 2677, 2688, 2699, 2710, 2721, 2732, 2743, 2756, 2771, -2783, 2796, 2809, 2820, 2834, 2850, 2865, 2876, 2888, 2903, 2915, -2933, 2949, 2960, 2972, 2984, 2995, 3006, 3017, 3028, 3039, 3050, -3061, 3072, 3085, 3097, 3109, 3122, 3134, 3155, 3176, 3190, 3204, -3225, 3246, 3268, 3284, 3305, 3320, 3335, 3349, 3366, 3379, 3391, -3407, 3425, 3443, 3460, 3474, 3493, 3508, 3524, 3542, 3561, 3580, -3593, 3607, 3615, 3633, 3651, 3670, 3684, 3695, 3706, 3717, 3728, -3740, 3753, 3771, 3785, 3800, 3815, 3836, 3855, 3874, 3892, 3912, -3933, 3946, 3960, 3975, 3988, 4004, 4019, 4036, 4050, 4066, 4079, -4094, 4108, 4122, 4136, 4150, 4167, 4181, 4195, 4209, 4226, 4244, -4259, 4273, 4292, 4309, 4326, 4343, 4359, 4373, 4390, 4404, 4418, -4435, 4453, 4468, 4484, 4496, 4509, 4525, 4539, 4553, 4568, 4583, -4598, 4612, 4625, 4640, 4658, 4673, 4688, 4706, 4725, 4741, 4756, -4774, 4790, 4806, 4821, 4839, 4853, 4872, 4885, 4898, 4911, 4924, -4937, 4950, 4963, 4976, 4989, 5002, 5015, 5028, 5041, 5054, 5067, -5080, 5093, 5106, 5119, 5132, 5145, 5158, 5171, 5184, 5197, 5210, -5223, 5236, 5249, 5262, 5275, 5288, 5301, 5314, 5327, 5340, 5353, -5366, 5379, 5392, 5405, 5418, 5431, 5444, 5457, 5470, 5483, 5496, -5509, 5522, 5535, 5548, 5560, 5572, 5591, 5612, 5633, 5651, 5666, -5686, 5704, 5724, 5740, 5752, 5769, 5785, 5796, 5807, 5824, 5841, -5854, 5863, 5872, 5881, 5890, 5899, 5908, 5917, 5926, 5935, 5944, -5957, 5975, 5998, 6018, 6038, 6058, 6077, 6099, 6121, 6141, 6162, -6180, 6208, 6233, 6256, 6282, 6304, 6336, 6362, 6386, 6413, 6440, -6464, 6490, 6512, 6537, 6558, 6581, 6607, 6633, 6655, 6682, 6699, -6716, 6733, 6757, 6773, 6792, 6813, 6834, 6856, 6874, 6895, 6919, -6948, 6975, 7002, 7023, 7048, 7069, 7093, 7113, 7137, 7164, 7192, -7213, 7230, 7251, 7267, 7284, 7303, 7319, 7342, 7364, 7379, 7396, -7415, 7433, 7451, 7469, 7488, 7508, 7528, 7551, 7574, 7608, 7626, -7656, 7686, 7708, 7730, 7752, 7780, 7806, 7831, 7856, 7878, 7900, -7923, 7954, 7980, 8004, 8030, 8054, 8082, 8107, 8127, 8146, 8315, 8339, 8487, 8516, 8583, 8601, 8619, 8637, 8655, 8669, -8683, 8697, 8711, 8726, 8741, 8755, 8772, 8791, }; - -static NCURSES_CONST char ** ptr_strfnames = 0; - -static const short _nc_offset_strnames[] = { -1397, 1410, 1419, 1438, 1463, 1482, 1501, -1512, 1523, 1542, 1566, 1585, 1602, 1619, 1642, 1659, 1684, 1704, -1722, 1738, 1753, 1774, 1796, 1812, 1832, 1850, 1879, 1902, 1923, -1943, 1966, 1985, 2008, 2032, 2058, 2081, 2106, 2132, 2148, 2176, -2201, 2220, 2242, 2264, 2288, 2313, 2332, 2345, 2366, 2383, 2400, -2417, 2430, 2452, 2468, 2486, 2504, 2519, 2534, 2549, 2562, 2574, -2589, 2603, 2615, 2627, 2638, 2649, 2662, 2673, 2684, 2695, 2706, -2717, 2728, 2739, 2750, 2765, 2778, 2790, 2805, 2816, 2830, 2844, -2860, 2872, 2883, 2897, 2910, 2928, 2945, 2956, 2967, 2980, 2991, -3002, 3013, 3024, 3035, 3046, 3057, 3068, 3081, 3093, 3105, 3118, -3131, 3151, 3172, 3185, 3201, 3221, 3242, 3264, 3280, 3299, 3314, -3331, 3345, 3362, 3375, 3387, 3403, 3421, 3439, 3457, 3471, 3489, -3505, 3520, 3539, 3557, 3576, 3588, 3604, 3611, 3630, 3648, 3664, -3680, 3691, 3702, 3713, 3724, 3735, 3749, 3766, 3781, 3795, 3809, -3830, 3850, 3869, 3887, 3906, 3927, 3941, 3955, 3970, 3983, 3999, -4014, 4031, 4045, 4061, 4074, 4089, 4103, 4117, 4131, 4145, 4162, -4176, 4190, 4204, 4221, 4239, 4254, 4268, 4287, 4304, 4321, 4338, -4354, 4368, 4385, 4399, 4413, 4430, 4448, 4463, 4480, 4492, 4504, -4520, 4534, 4548, 4563, 4578, 4593, 4608, 4620, 4635, 4653, 4668, -4683, 4701, 4720, 4736, 4751, 4769, 4785, 4801, 4816, 4834, 4849, -4867, 4880, 4893, 4906, 4919, 4932, 4945, 4958, 4971, 4984, 4997, -5010, 5023, 5036, 5049, 5062, 5075, 5088, 5101, 5114, 5127, 5140, -5153, 5166, 5179, 5192, 5205, 5218, 5231, 5244, 5257, 5270, 5283, -5296, 5309, 5322, 5335, 5348, 5361, 5374, 5387, 5400, 5413, 5426, -5439, 5452, 5465, 5478, 5491, 5504, 5517, 5530, 5543, 5556, 5568, -5586, 5607, 5629, 5646, 5661, 5680, 5699, 5718, 5736, 5747, 5763, -5780, 5790, 5802, 5818, 5836, 5851, 5860, 5869, 5878, 5887, 5896, -5905, 5914, 5923, 5932, 5941, 5954, 5969, 5992, 6014, 6033, 6053, -6073, 6095, 6117, 6137, 6157, 6174, 6202, 6228, 6252, 6276, 6299, -6330, 6357, 6380, 6407, 6436, 6458, 6485, 6508, 6531, 6553, 6575, -6601, 6629, 6650, 6676, 6693, 6710, 6728, 6751, 6766, 6787, 6808, -6829, 6851, 6870, 6890, 6913, 6942, 6969, 6997, 7017, 7043, 7064, -7088, 7108, 7131, 7158, 7187, 7207, 7225, 7245, 7261, 7278, 7298, -7313, 7336, 7359, 7374, 7391, 7410, 7428, 7446, 7464, 7482, 7502, -7522, 7545, 7569, 7600, 7620, 7650, 7677, 7701, 7724, 7746, 7774, -7801, 7826, 7850, 7872, 7894, 7917, 7948, 7973, 7998, 8024, 8048, -8077, 8099, 8122, 8141, 8310, -8334, 8482, 8511, 8578, -8596, 8614, 8632, 8650, 8664, 8678, 8692, 8706, 8721, 8736, 8750, -8767, 8786, }; - -static NCURSES_CONST char ** ptr_strnames = 0; - - -static IT * -alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size) -{ - if (*value == 0) { - if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) { - unsigned n; - for (n = 0; n < size; ++n) { - (*value)[n] = (NCURSES_CONST char *) _nc_name_blob + offsets[n]; - } - } - } - return *value; -} - -#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); } - -FIX(boolnames) -FIX(boolfnames) -FIX(numnames) -FIX(numfnames) -FIX(strnames) -FIX(strfnames) - - -#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); } - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_names_leaks(void) -{ -FREE_FIX(boolnames) -FREE_FIX(boolfnames) -FREE_FIX(numnames) -FREE_FIX(numfnames) -FREE_FIX(strnames) -FREE_FIX(strfnames) -} -#endif - -#else - -#define DCL(it) NCURSES_EXPORT_VAR(IT) it[] - -DCL(boolnames) = { - "bw", - "am", - "xsb", - "xhp", - "xenl", - "eo", - "gn", - "hc", - "km", - "hs", - "in", - "da", - "db", - "mir", - "msgr", - "os", - "eslok", - "xt", - "hz", - "ul", - "xon", - "nxon", - "mc5i", - "chts", - "nrrmc", - "npc", - "ndscr", - "ccc", - "bce", - "hls", - "xhpa", - "crxm", - "daisy", - "xvpa", - "sam", - "cpix", - "lpix", - "OTbs", - "OTns", - "OTnc", - "OTMT", - "OTNL", - "OTpt", - "OTxr", - - (NCURSES_CONST char *)0, -}; - -DCL(boolfnames) = { - "auto_left_margin", - "auto_right_margin", - "no_esc_ctlc", - "ceol_standout_glitch", - "eat_newline_glitch", - "erase_overstrike", - "generic_type", - "hard_copy", - "has_meta_key", - "has_status_line", - "insert_null_glitch", - "memory_above", - "memory_below", - "move_insert_mode", - "move_standout_mode", - "over_strike", - "status_line_esc_ok", - "dest_tabs_magic_smso", - "tilde_glitch", - "transparent_underline", - "xon_xoff", - "needs_xon_xoff", - "prtr_silent", - "hard_cursor", - "non_rev_rmcup", - "no_pad_char", - "non_dest_scroll_region", - "can_change", - "back_color_erase", - "hue_lightness_saturation", - "col_addr_glitch", - "cr_cancels_micro_mode", - "has_print_wheel", - "row_addr_glitch", - "semi_auto_right_margin", - "cpi_changes_res", - "lpi_changes_res", - "backspaces_with_bs", - "crt_no_scrolling", - "no_correctly_working_cr", - "gnu_has_meta_key", - "linefeed_is_newline", - "has_hardware_tabs", - "return_does_clr_eol", - - (NCURSES_CONST char *)0, -}; - -DCL(numnames) = { - "cols", - "it", - "lines", - "lm", - "xmc", - "pb", - "vt", - "wsl", - "nlab", - "lh", - "lw", - "ma", - "wnum", - "colors", - "pairs", - "ncv", - "bufsz", - "spinv", - "spinh", - "maddr", - "mjump", - "mcs", - "mls", - "npins", - "orc", - "orl", - "orhi", - "orvi", - "cps", - "widcs", - "btns", - "bitwin", - "bitype", - "OTug", - "OTdC", - "OTdN", - "OTdB", - "OTdT", - "OTkn", - - (NCURSES_CONST char *)0, -}; - -DCL(numfnames) = { - "columns", - "init_tabs", - "lines", - "lines_of_memory", - "magic_cookie_glitch", - "padding_baud_rate", - "virtual_terminal", - "width_status_line", - "num_labels", - "label_height", - "label_width", - "max_attributes", - "maximum_windows", - "max_colors", - "max_pairs", - "no_color_video", - "buffer_capacity", - "dot_vert_spacing", - "dot_horz_spacing", - "max_micro_address", - "max_micro_jump", - "micro_col_size", - "micro_line_size", - "number_of_pins", - "output_res_char", - "output_res_line", - "output_res_horz_inch", - "output_res_vert_inch", - "print_rate", - "wide_char_size", - "buttons", - "bit_image_entwining", - "bit_image_type", - "magic_cookie_glitch_ul", - "carriage_return_delay", - "new_line_delay", - "backspace_delay", - "horizontal_tab_delay", - "number_of_function_keys", - - (NCURSES_CONST char *)0, -}; - -DCL(strnames) = { - "cbt", - "bel", - "cr", - "csr", - "tbc", - "clear", - "el", - "ed", - "hpa", - "cmdch", - "cup", - "cud1", - "home", - "civis", - "cub1", - "mrcup", - "cnorm", - "cuf1", - "ll", - "cuu1", - "cvvis", - "dch1", - "dl1", - "dsl", - "hd", - "smacs", - "blink", - "bold", - "smcup", - "smdc", - "dim", - "smir", - "invis", - "prot", - "rev", - "smso", - "smul", - "ech", - "rmacs", - "sgr0", - "rmcup", - "rmdc", - "rmir", - "rmso", - "rmul", - "flash", - "ff", - "fsl", - "is1", - "is2", - "is3", - "if", - "ich1", - "il1", - "ip", - "kbs", - "ktbc", - "kclr", - "kctab", - "kdch1", - "kdl1", - "kcud1", - "krmir", - "kel", - "ked", - "kf0", - "kf1", - "kf10", - "kf2", - "kf3", - "kf4", - "kf5", - "kf6", - "kf7", - "kf8", - "kf9", - "khome", - "kich1", - "kil1", - "kcub1", - "kll", - "knp", - "kpp", - "kcuf1", - "kind", - "kri", - "khts", - "kcuu1", - "rmkx", - "smkx", - "lf0", - "lf1", - "lf10", - "lf2", - "lf3", - "lf4", - "lf5", - "lf6", - "lf7", - "lf8", - "lf9", - "rmm", - "smm", - "nel", - "pad", - "dch", - "dl", - "cud", - "ich", - "indn", - "il", - "cub", - "cuf", - "rin", - "cuu", - "pfkey", - "pfloc", - "pfx", - "mc0", - "mc4", - "mc5", - "rep", - "rs1", - "rs2", - "rs3", - "rf", - "rc", - "vpa", - "sc", - "ind", - "ri", - "sgr", - "hts", - "wind", - "ht", - "tsl", - "uc", - "hu", - "iprog", - "ka1", - "ka3", - "kb2", - "kc1", - "kc3", - "mc5p", - "rmp", - "acsc", - "pln", - "kcbt", - "smxon", - "rmxon", - "smam", - "rmam", - "xonc", - "xoffc", - "enacs", - "smln", - "rmln", - "kbeg", - "kcan", - "kclo", - "kcmd", - "kcpy", - "kcrt", - "kend", - "kent", - "kext", - "kfnd", - "khlp", - "kmrk", - "kmsg", - "kmov", - "knxt", - "kopn", - "kopt", - "kprv", - "kprt", - "krdo", - "kref", - "krfr", - "krpl", - "krst", - "kres", - "ksav", - "kspd", - "kund", - "kBEG", - "kCAN", - "kCMD", - "kCPY", - "kCRT", - "kDC", - "kDL", - "kslt", - "kEND", - "kEOL", - "kEXT", - "kFND", - "kHLP", - "kHOM", - "kIC", - "kLFT", - "kMSG", - "kMOV", - "kNXT", - "kOPT", - "kPRV", - "kPRT", - "kRDO", - "kRPL", - "kRIT", - "kRES", - "kSAV", - "kSPD", - "kUND", - "rfi", - "kf11", - "kf12", - "kf13", - "kf14", - "kf15", - "kf16", - "kf17", - "kf18", - "kf19", - "kf20", - "kf21", - "kf22", - "kf23", - "kf24", - "kf25", - "kf26", - "kf27", - "kf28", - "kf29", - "kf30", - "kf31", - "kf32", - "kf33", - "kf34", - "kf35", - "kf36", - "kf37", - "kf38", - "kf39", - "kf40", - "kf41", - "kf42", - "kf43", - "kf44", - "kf45", - "kf46", - "kf47", - "kf48", - "kf49", - "kf50", - "kf51", - "kf52", - "kf53", - "kf54", - "kf55", - "kf56", - "kf57", - "kf58", - "kf59", - "kf60", - "kf61", - "kf62", - "kf63", - "el1", - "mgc", - "smgl", - "smgr", - "fln", - "sclk", - "dclk", - "rmclk", - "cwin", - "wingo", - "hup", - "dial", - "qdial", - "tone", - "pulse", - "hook", - "pause", - "wait", - "u0", - "u1", - "u2", - "u3", - "u4", - "u5", - "u6", - "u7", - "u8", - "u9", - "op", - "oc", - "initc", - "initp", - "scp", - "setf", - "setb", - "cpi", - "lpi", - "chr", - "cvr", - "defc", - "swidm", - "sdrfq", - "sitm", - "slm", - "smicm", - "snlq", - "snrmq", - "sshm", - "ssubm", - "ssupm", - "sum", - "rwidm", - "ritm", - "rlm", - "rmicm", - "rshm", - "rsubm", - "rsupm", - "rum", - "mhpa", - "mcud1", - "mcub1", - "mcuf1", - "mvpa", - "mcuu1", - "porder", - "mcud", - "mcub", - "mcuf", - "mcuu", - "scs", - "smgb", - "smgbp", - "smglp", - "smgrp", - "smgt", - "smgtp", - "sbim", - "scsd", - "rbim", - "rcsd", - "subcs", - "supcs", - "docr", - "zerom", - "csnm", - "kmous", - "minfo", - "reqmp", - "getm", - "setaf", - "setab", - "pfxl", - "devt", - "csin", - "s0ds", - "s1ds", - "s2ds", - "s3ds", - "smglr", - "smgtb", - "birep", - "binel", - "bicr", - "colornm", - "defbi", - "endbi", - "setcolor", - "slines", - "dispc", - "smpch", - "rmpch", - "smsc", - "rmsc", - "pctrm", - "scesc", - "scesa", - "ehhlm", - "elhlm", - "elohlm", - "erhlm", - "ethlm", - "evhlm", - "sgr1", - "slength", - "OTi2", - "OTrs", - "OTnl", - "OTbc", - "OTko", - "OTma", - "OTG2", - "OTG3", - "OTG1", - "OTG4", - "OTGR", - "OTGL", - "OTGU", - "OTGD", - "OTGH", - "OTGV", - "OTGC", - "meml", - "memu", - "box1", - - (NCURSES_CONST char *)0, -}; - -DCL(strfnames) = { - "back_tab", - "bell", - "carriage_return", - "change_scroll_region", - "clear_all_tabs", - "clear_screen", - "clr_eol", - "clr_eos", - "column_address", - "command_character", - "cursor_address", - "cursor_down", - "cursor_home", - "cursor_invisible", - "cursor_left", - "cursor_mem_address", - "cursor_normal", - "cursor_right", - "cursor_to_ll", - "cursor_up", - "cursor_visible", - "delete_character", - "delete_line", - "dis_status_line", - "down_half_line", - "enter_alt_charset_mode", - "enter_blink_mode", - "enter_bold_mode", - "enter_ca_mode", - "enter_delete_mode", - "enter_dim_mode", - "enter_insert_mode", - "enter_secure_mode", - "enter_protected_mode", - "enter_reverse_mode", - "enter_standout_mode", - "enter_underline_mode", - "erase_chars", - "exit_alt_charset_mode", - "exit_attribute_mode", - "exit_ca_mode", - "exit_delete_mode", - "exit_insert_mode", - "exit_standout_mode", - "exit_underline_mode", - "flash_screen", - "form_feed", - "from_status_line", - "init_1string", - "init_2string", - "init_3string", - "init_file", - "insert_character", - "insert_line", - "insert_padding", - "key_backspace", - "key_catab", - "key_clear", - "key_ctab", - "key_dc", - "key_dl", - "key_down", - "key_eic", - "key_eol", - "key_eos", - "key_f0", - "key_f1", - "key_f10", - "key_f2", - "key_f3", - "key_f4", - "key_f5", - "key_f6", - "key_f7", - "key_f8", - "key_f9", - "key_home", - "key_ic", - "key_il", - "key_left", - "key_ll", - "key_npage", - "key_ppage", - "key_right", - "key_sf", - "key_sr", - "key_stab", - "key_up", - "keypad_local", - "keypad_xmit", - "lab_f0", - "lab_f1", - "lab_f10", - "lab_f2", - "lab_f3", - "lab_f4", - "lab_f5", - "lab_f6", - "lab_f7", - "lab_f8", - "lab_f9", - "meta_off", - "meta_on", - "newline", - "pad_char", - "parm_dch", - "parm_delete_line", - "parm_down_cursor", - "parm_ich", - "parm_index", - "parm_insert_line", - "parm_left_cursor", - "parm_right_cursor", - "parm_rindex", - "parm_up_cursor", - "pkey_key", - "pkey_local", - "pkey_xmit", - "print_screen", - "prtr_off", - "prtr_on", - "repeat_char", - "reset_1string", - "reset_2string", - "reset_3string", - "reset_file", - "restore_cursor", - "row_address", - "save_cursor", - "scroll_forward", - "scroll_reverse", - "set_attributes", - "set_tab", - "set_window", - "tab", - "to_status_line", - "underline_char", - "up_half_line", - "init_prog", - "key_a1", - "key_a3", - "key_b2", - "key_c1", - "key_c3", - "prtr_non", - "char_padding", - "acs_chars", - "plab_norm", - "key_btab", - "enter_xon_mode", - "exit_xon_mode", - "enter_am_mode", - "exit_am_mode", - "xon_character", - "xoff_character", - "ena_acs", - "label_on", - "label_off", - "key_beg", - "key_cancel", - "key_close", - "key_command", - "key_copy", - "key_create", - "key_end", - "key_enter", - "key_exit", - "key_find", - "key_help", - "key_mark", - "key_message", - "key_move", - "key_next", - "key_open", - "key_options", - "key_previous", - "key_print", - "key_redo", - "key_reference", - "key_refresh", - "key_replace", - "key_restart", - "key_resume", - "key_save", - "key_suspend", - "key_undo", - "key_sbeg", - "key_scancel", - "key_scommand", - "key_scopy", - "key_screate", - "key_sdc", - "key_sdl", - "key_select", - "key_send", - "key_seol", - "key_sexit", - "key_sfind", - "key_shelp", - "key_shome", - "key_sic", - "key_sleft", - "key_smessage", - "key_smove", - "key_snext", - "key_soptions", - "key_sprevious", - "key_sprint", - "key_sredo", - "key_sreplace", - "key_sright", - "key_srsume", - "key_ssave", - "key_ssuspend", - "key_sundo", - "req_for_input", - "key_f11", - "key_f12", - "key_f13", - "key_f14", - "key_f15", - "key_f16", - "key_f17", - "key_f18", - "key_f19", - "key_f20", - "key_f21", - "key_f22", - "key_f23", - "key_f24", - "key_f25", - "key_f26", - "key_f27", - "key_f28", - "key_f29", - "key_f30", - "key_f31", - "key_f32", - "key_f33", - "key_f34", - "key_f35", - "key_f36", - "key_f37", - "key_f38", - "key_f39", - "key_f40", - "key_f41", - "key_f42", - "key_f43", - "key_f44", - "key_f45", - "key_f46", - "key_f47", - "key_f48", - "key_f49", - "key_f50", - "key_f51", - "key_f52", - "key_f53", - "key_f54", - "key_f55", - "key_f56", - "key_f57", - "key_f58", - "key_f59", - "key_f60", - "key_f61", - "key_f62", - "key_f63", - "clr_bol", - "clear_margins", - "set_left_margin", - "set_right_margin", - "label_format", - "set_clock", - "display_clock", - "remove_clock", - "create_window", - "goto_window", - "hangup", - "dial_phone", - "quick_dial", - "tone", - "pulse", - "flash_hook", - "fixed_pause", - "wait_tone", - "user0", - "user1", - "user2", - "user3", - "user4", - "user5", - "user6", - "user7", - "user8", - "user9", - "orig_pair", - "orig_colors", - "initialize_color", - "initialize_pair", - "set_color_pair", - "set_foreground", - "set_background", - "change_char_pitch", - "change_line_pitch", - "change_res_horz", - "change_res_vert", - "define_char", - "enter_doublewide_mode", - "enter_draft_quality", - "enter_italics_mode", - "enter_leftward_mode", - "enter_micro_mode", - "enter_near_letter_quality", - "enter_normal_quality", - "enter_shadow_mode", - "enter_subscript_mode", - "enter_superscript_mode", - "enter_upward_mode", - "exit_doublewide_mode", - "exit_italics_mode", - "exit_leftward_mode", - "exit_micro_mode", - "exit_shadow_mode", - "exit_subscript_mode", - "exit_superscript_mode", - "exit_upward_mode", - "micro_column_address", - "micro_down", - "micro_left", - "micro_right", - "micro_row_address", - "micro_up", - "order_of_pins", - "parm_down_micro", - "parm_left_micro", - "parm_right_micro", - "parm_up_micro", - "select_char_set", - "set_bottom_margin", - "set_bottom_margin_parm", - "set_left_margin_parm", - "set_right_margin_parm", - "set_top_margin", - "set_top_margin_parm", - "start_bit_image", - "start_char_set_def", - "stop_bit_image", - "stop_char_set_def", - "subscript_characters", - "superscript_characters", - "these_cause_cr", - "zero_motion", - "char_set_names", - "key_mouse", - "mouse_info", - "req_mouse_pos", - "get_mouse", - "set_a_foreground", - "set_a_background", - "pkey_plab", - "device_type", - "code_set_init", - "set0_des_seq", - "set1_des_seq", - "set2_des_seq", - "set3_des_seq", - "set_lr_margin", - "set_tb_margin", - "bit_image_repeat", - "bit_image_newline", - "bit_image_carriage_return", - "color_names", - "define_bit_image_region", - "end_bit_image_region", - "set_color_band", - "set_page_length", - "display_pc_char", - "enter_pc_charset_mode", - "exit_pc_charset_mode", - "enter_scancode_mode", - "exit_scancode_mode", - "pc_term_options", - "scancode_escape", - "alt_scancode_esc", - "enter_horizontal_hl_mode", - "enter_left_hl_mode", - "enter_low_hl_mode", - "enter_right_hl_mode", - "enter_top_hl_mode", - "enter_vertical_hl_mode", - "set_a_attributes", - "set_pglen_inch", - "termcap_init2", - "termcap_reset", - "linefeed_if_not_lf", - "backspace_if_not_bs", - "other_non_function_keys", - "arrow_key_map", - "acs_ulcorner", - "acs_llcorner", - "acs_urcorner", - "acs_lrcorner", - "acs_ltee", - "acs_rtee", - "acs_btee", - "acs_ttee", - "acs_hline", - "acs_vline", - "acs_plus", - "memory_lock", - "memory_unlock", - "box_chars_1", - - (NCURSES_CONST char *)0, -}; - - -#endif /* BROKEN_LINKER */ diff --git a/ncurses/ncurses/names.c.h b/ncurses/ncurses/names.c.h deleted file mode 100644 index 360e733..0000000 --- a/ncurses/ncurses/names.c.h +++ /dev/null @@ -1,1365 +0,0 @@ -/* This file was generated by MKnames.awk */ - -#include - -#define IT NCURSES_CONST char * const - - -#if BROKEN_LINKER || USE_REENTRANT - -#include - -static const char _nc_name_blob[] = -"bw\0" "auto_left_margin\0" "am\0" "auto_right_margin\0" "xsb\0" "no_esc_ctlc\0" \ -"xhp\0" "ceol_standout_glitch\0" "xenl\0" "eat_newline_glitch\0" "eo\0" \ -"erase_overstrike\0" "gn\0" "generic_type\0" "hc\0" "hard_copy\0" "km\0" \ -"has_meta_key\0" "hs\0" "has_status_line\0" "in\0" "insert_null_glitch\0" \ -"da\0" "memory_above\0" "db\0" "memory_below\0" "mir\0" "move_insert_mode\0" \ -"msgr\0" "move_standout_mode\0" "os\0" "over_strike\0" "eslok\0" "status_line_esc_ok\0" \ -"xt\0" "dest_tabs_magic_smso\0" "hz\0" "tilde_glitch\0" "ul\0" "transparent_underline\0" \ -"xon\0" "xon_xoff\0" "nxon\0" "needs_xon_xoff\0" "mc5i\0" "prtr_silent\0" \ -"chts\0" "hard_cursor\0" "nrrmc\0" "non_rev_rmcup\0" "npc\0" "no_pad_char\0" \ -"ndscr\0" "non_dest_scroll_region\0" "ccc\0" "can_change\0" "bce\0" "back_color_erase\0" \ -"hls\0" "hue_lightness_saturation\0" "xhpa\0" "col_addr_glitch\0" "crxm\0" \ -"cr_cancels_micro_mode\0" "daisy\0" "has_print_wheel\0" "xvpa\0" "row_addr_glitch\0" \ -"sam\0" "semi_auto_right_margin\0" "cpix\0" "cpi_changes_res\0" "lpix\0" \ -"lpi_changes_res\0" "cols\0" "columns\0" "it\0" "init_tabs\0" "lines\0" \ -"lines\0" "lm\0" "lines_of_memory\0" "xmc\0" "magic_cookie_glitch\0" "pb\0" \ -"padding_baud_rate\0" "vt\0" "virtual_terminal\0" "wsl\0" "width_status_line\0" \ -"nlab\0" "num_labels\0" "lh\0" "label_height\0" "lw\0" "label_width\0" \ -"ma\0" "max_attributes\0" "wnum\0" "maximum_windows\0" "colors\0" "max_colors\0" \ -"pairs\0" "max_pairs\0" "ncv\0" "no_color_video\0" "bufsz\0" "buffer_capacity\0" \ -"spinv\0" "dot_vert_spacing\0" "spinh\0" "dot_horz_spacing\0" "maddr\0" \ -"max_micro_address\0" "mjump\0" "max_micro_jump\0" "mcs\0" "micro_col_size\0" \ -"mls\0" "micro_line_size\0" "npins\0" "number_of_pins\0" "orc\0" "output_res_char\0" \ -"orl\0" "output_res_line\0" "orhi\0" "output_res_horz_inch\0" "orvi\0" \ -"output_res_vert_inch\0" "cps\0" "print_rate\0" "widcs\0" "wide_char_size\0" \ -"btns\0" "buttons\0" "bitwin\0" "bit_image_entwining\0" "bitype\0" "bit_image_type\0" \ -"cbt\0" "back_tab\0" "bel\0" "bell\0" "cr\0" "carriage_return\0" "csr\0" \ -"change_scroll_region\0" "tbc\0" "clear_all_tabs\0" "clear\0" "clear_screen\0" \ -"el\0" "clr_eol\0" "ed\0" "clr_eos\0" "hpa\0" "column_address\0" "cmdch\0" \ -"command_character\0" "cup\0" "cursor_address\0" "cud1\0" "cursor_down\0" \ -"home\0" "cursor_home\0" "civis\0" "cursor_invisible\0" "cub1\0" "cursor_left\0" \ -"mrcup\0" "cursor_mem_address\0" "cnorm\0" "cursor_normal\0" "cuf1\0" "cursor_right\0" \ -"ll\0" "cursor_to_ll\0" "cuu1\0" "cursor_up\0" "cvvis\0" "cursor_visible\0" \ -"dch1\0" "delete_character\0" "dl1\0" "delete_line\0" "dsl\0" "dis_status_line\0" \ -"hd\0" "down_half_line\0" "smacs\0" "enter_alt_charset_mode\0" "blink\0" \ -"enter_blink_mode\0" "bold\0" "enter_bold_mode\0" "smcup\0" "enter_ca_mode\0" \ -"smdc\0" "enter_delete_mode\0" "dim\0" "enter_dim_mode\0" "smir\0" "enter_insert_mode\0" \ -"invis\0" "enter_secure_mode\0" "prot\0" "enter_protected_mode\0" "rev\0" \ -"enter_reverse_mode\0" "smso\0" "enter_standout_mode\0" "smul\0" "enter_underline_mode\0" \ -"ech\0" "erase_chars\0" "rmacs\0" "exit_alt_charset_mode\0" "sgr0\0" "exit_attribute_mode\0" \ -"rmcup\0" "exit_ca_mode\0" "rmdc\0" "exit_delete_mode\0" "rmir\0" "exit_insert_mode\0" \ -"rmso\0" "exit_standout_mode\0" "rmul\0" "exit_underline_mode\0" "flash\0" \ -"flash_screen\0" "ff\0" "form_feed\0" "fsl\0" "from_status_line\0" "is1\0" \ -"init_1string\0" "is2\0" "init_2string\0" "is3\0" "init_3string\0" "if\0" \ -"init_file\0" "ich1\0" "insert_character\0" "il1\0" "insert_line\0" "ip\0" \ -"insert_padding\0" "kbs\0" "key_backspace\0" "ktbc\0" "key_catab\0" "kclr\0" \ -"key_clear\0" "kctab\0" "key_ctab\0" "kdch1\0" "key_dc\0" "kdl1\0" "key_dl\0" \ -"kcud1\0" "key_down\0" "krmir\0" "key_eic\0" "kel\0" "key_eol\0" "ked\0" \ -"key_eos\0" "kf0\0" "key_f0\0" "kf1\0" "key_f1\0" "kf10\0" "key_f10\0" \ -"kf2\0" "key_f2\0" "kf3\0" "key_f3\0" "kf4\0" "key_f4\0" "kf5\0" "key_f5\0" \ -"kf6\0" "key_f6\0" "kf7\0" "key_f7\0" "kf8\0" "key_f8\0" "kf9\0" "key_f9\0" \ -"khome\0" "key_home\0" "kich1\0" "key_ic\0" "kil1\0" "key_il\0" "kcub1\0" \ -"key_left\0" "kll\0" "key_ll\0" "knp\0" "key_npage\0" "kpp\0" "key_ppage\0" \ -"kcuf1\0" "key_right\0" "kind\0" "key_sf\0" "kri\0" "key_sr\0" "khts\0" \ -"key_stab\0" "kcuu1\0" "key_up\0" "rmkx\0" "keypad_local\0" "smkx\0" "keypad_xmit\0" \ -"lf0\0" "lab_f0\0" "lf1\0" "lab_f1\0" "lf10\0" "lab_f10\0" "lf2\0" "lab_f2\0" \ -"lf3\0" "lab_f3\0" "lf4\0" "lab_f4\0" "lf5\0" "lab_f5\0" "lf6\0" "lab_f6\0" \ -"lf7\0" "lab_f7\0" "lf8\0" "lab_f8\0" "lf9\0" "lab_f9\0" "rmm\0" "meta_off\0" \ -"smm\0" "meta_on\0" "nel\0" "newline\0" "pad\0" "pad_char\0" "dch\0" "parm_dch\0" \ -"dl\0" "parm_delete_line\0" "cud\0" "parm_down_cursor\0" "ich\0" "parm_ich\0" \ -"indn\0" "parm_index\0" "il\0" "parm_insert_line\0" "cub\0" "parm_left_cursor\0" \ -"cuf\0" "parm_right_cursor\0" "rin\0" "parm_rindex\0" "cuu\0" "parm_up_cursor\0" \ -"pfkey\0" "pkey_key\0" "pfloc\0" "pkey_local\0" "pfx\0" "pkey_xmit\0" "mc0\0" \ -"print_screen\0" "mc4\0" "prtr_off\0" "mc5\0" "prtr_on\0" "rep\0" "repeat_char\0" \ -"rs1\0" "reset_1string\0" "rs2\0" "reset_2string\0" "rs3\0" "reset_3string\0" \ -"rf\0" "reset_file\0" "rc\0" "restore_cursor\0" "vpa\0" "row_address\0" \ -"sc\0" "save_cursor\0" "ind\0" "scroll_forward\0" "ri\0" "scroll_reverse\0" \ -"sgr\0" "set_attributes\0" "hts\0" "set_tab\0" "wind\0" "set_window\0" \ -"ht\0" "tab\0" "tsl\0" "to_status_line\0" "uc\0" "underline_char\0" "hu\0" \ -"up_half_line\0" "iprog\0" "init_prog\0" "ka1\0" "key_a1\0" "ka3\0" "key_a3\0" \ -"kb2\0" "key_b2\0" "kc1\0" "key_c1\0" "kc3\0" "key_c3\0" "mc5p\0" "prtr_non\0" \ -"rmp\0" "char_padding\0" "acsc\0" "acs_chars\0" "pln\0" "plab_norm\0" "kcbt\0" \ -"key_btab\0" "smxon\0" "enter_xon_mode\0" "rmxon\0" "exit_xon_mode\0" "smam\0" \ -"enter_am_mode\0" "rmam\0" "exit_am_mode\0" "xonc\0" "xon_character\0" \ -"xoffc\0" "xoff_character\0" "enacs\0" "ena_acs\0" "smln\0" "label_on\0" \ -"rmln\0" "label_off\0" "kbeg\0" "key_beg\0" "kcan\0" "key_cancel\0" "kclo\0" \ -"key_close\0" "kcmd\0" "key_command\0" "kcpy\0" "key_copy\0" "kcrt\0" "key_create\0" \ -"kend\0" "key_end\0" "kent\0" "key_enter\0" "kext\0" "key_exit\0" "kfnd\0" \ -"key_find\0" "khlp\0" "key_help\0" "kmrk\0" "key_mark\0" "kmsg\0" "key_message\0" \ -"kmov\0" "key_move\0" "knxt\0" "key_next\0" "kopn\0" "key_open\0" "kopt\0" \ -"key_options\0" "kprv\0" "key_previous\0" "kprt\0" "key_print\0" "krdo\0" \ -"key_redo\0" "kref\0" "key_reference\0" "krfr\0" "key_refresh\0" "krpl\0" \ -"key_replace\0" "krst\0" "key_restart\0" "kres\0" "key_resume\0" "ksav\0" \ -"key_save\0" "kspd\0" "key_suspend\0" "kund\0" "key_undo\0" "kBEG\0" "key_sbeg\0" \ -"kCAN\0" "key_scancel\0" "kCMD\0" "key_scommand\0" "kCPY\0" "key_scopy\0" \ -"kCRT\0" "key_screate\0" "kDC\0" "key_sdc\0" "kDL\0" "key_sdl\0" "kslt\0" \ -"key_select\0" "kEND\0" "key_send\0" "kEOL\0" "key_seol\0" "kEXT\0" "key_sexit\0" \ -"kFND\0" "key_sfind\0" "kHLP\0" "key_shelp\0" "kHOM\0" "key_shome\0" "kIC\0" \ -"key_sic\0" "kLFT\0" "key_sleft\0" "kMSG\0" "key_smessage\0" "kMOV\0" "key_smove\0" \ -"kNXT\0" "key_snext\0" "kOPT\0" "key_soptions\0" "kPRV\0" "key_sprevious\0" \ -"kPRT\0" "key_sprint\0" "kRDO\0" "key_sredo\0" "kRPL\0" "key_sreplace\0" \ -"kRIT\0" "key_sright\0" "kRES\0" "key_srsume\0" "kSAV\0" "key_ssave\0" \ -"kSPD\0" "key_ssuspend\0" "kUND\0" "key_sundo\0" "rfi\0" "req_for_input\0" \ -"kf11\0" "key_f11\0" "kf12\0" "key_f12\0" "kf13\0" "key_f13\0" "kf14\0" \ -"key_f14\0" "kf15\0" "key_f15\0" "kf16\0" "key_f16\0" "kf17\0" "key_f17\0" \ -"kf18\0" "key_f18\0" "kf19\0" "key_f19\0" "kf20\0" "key_f20\0" "kf21\0" \ -"key_f21\0" "kf22\0" "key_f22\0" "kf23\0" "key_f23\0" "kf24\0" "key_f24\0" \ -"kf25\0" "key_f25\0" "kf26\0" "key_f26\0" "kf27\0" "key_f27\0" "kf28\0" \ -"key_f28\0" "kf29\0" "key_f29\0" "kf30\0" "key_f30\0" "kf31\0" "key_f31\0" \ -"kf32\0" "key_f32\0" "kf33\0" "key_f33\0" "kf34\0" "key_f34\0" "kf35\0" \ -"key_f35\0" "kf36\0" "key_f36\0" "kf37\0" "key_f37\0" "kf38\0" "key_f38\0" \ -"kf39\0" "key_f39\0" "kf40\0" "key_f40\0" "kf41\0" "key_f41\0" "kf42\0" \ -"key_f42\0" "kf43\0" "key_f43\0" "kf44\0" "key_f44\0" "kf45\0" "key_f45\0" \ -"kf46\0" "key_f46\0" "kf47\0" "key_f47\0" "kf48\0" "key_f48\0" "kf49\0" \ -"key_f49\0" "kf50\0" "key_f50\0" "kf51\0" "key_f51\0" "kf52\0" "key_f52\0" \ -"kf53\0" "key_f53\0" "kf54\0" "key_f54\0" "kf55\0" "key_f55\0" "kf56\0" \ -"key_f56\0" "kf57\0" "key_f57\0" "kf58\0" "key_f58\0" "kf59\0" "key_f59\0" \ -"kf60\0" "key_f60\0" "kf61\0" "key_f61\0" "kf62\0" "key_f62\0" "kf63\0" \ -"key_f63\0" "el1\0" "clr_bol\0" "mgc\0" "clear_margins\0" "smgl\0" "set_left_margin\0" \ -"smgr\0" "set_right_margin\0" "fln\0" "label_format\0" "sclk\0" "set_clock\0" \ -"dclk\0" "display_clock\0" "rmclk\0" "remove_clock\0" "cwin\0" "create_window\0" \ -"wingo\0" "goto_window\0" "hup\0" "hangup\0" "dial\0" "dial_phone\0" "qdial\0" \ -"quick_dial\0" "tone\0" "tone\0" "pulse\0" "pulse\0" "hook\0" "flash_hook\0" \ -"pause\0" "fixed_pause\0" "wait\0" "wait_tone\0" "u0\0" "user0\0" "u1\0" \ -"user1\0" "u2\0" "user2\0" "u3\0" "user3\0" "u4\0" "user4\0" "u5\0" "user5\0" \ -"u6\0" "user6\0" "u7\0" "user7\0" "u8\0" "user8\0" "u9\0" "user9\0" "op\0" \ -"orig_pair\0" "oc\0" "orig_colors\0" "initc\0" "initialize_color\0" "initp\0" \ -"initialize_pair\0" "scp\0" "set_color_pair\0" "setf\0" "set_foreground\0" \ -"setb\0" "set_background\0" "cpi\0" "change_char_pitch\0" "lpi\0" "change_line_pitch\0" \ -"chr\0" "change_res_horz\0" "cvr\0" "change_res_vert\0" "defc\0" "define_char\0" \ -"swidm\0" "enter_doublewide_mode\0" "sdrfq\0" "enter_draft_quality\0" "sitm\0" \ -"enter_italics_mode\0" "slm\0" "enter_leftward_mode\0" "smicm\0" "enter_micro_mode\0" \ -"snlq\0" "enter_near_letter_quality\0" "snrmq\0" "enter_normal_quality\0" \ -"sshm\0" "enter_shadow_mode\0" "ssubm\0" "enter_subscript_mode\0" "ssupm\0" \ -"enter_superscript_mode\0" "sum\0" "enter_upward_mode\0" "rwidm\0" "exit_doublewide_mode\0" \ -"ritm\0" "exit_italics_mode\0" "rlm\0" "exit_leftward_mode\0" "rmicm\0" \ -"exit_micro_mode\0" "rshm\0" "exit_shadow_mode\0" "rsubm\0" "exit_subscript_mode\0" \ -"rsupm\0" "exit_superscript_mode\0" "rum\0" "exit_upward_mode\0" "mhpa\0" \ -"micro_column_address\0" "mcud1\0" "micro_down\0" "mcub1\0" "micro_left\0" \ -"mcuf1\0" "micro_right\0" "mvpa\0" "micro_row_address\0" "mcuu1\0" "micro_up\0" \ -"porder\0" "order_of_pins\0" "mcud\0" "parm_down_micro\0" "mcub\0" "parm_left_micro\0" \ -"mcuf\0" "parm_right_micro\0" "mcuu\0" "parm_up_micro\0" "scs\0" "select_char_set\0" \ -"smgb\0" "set_bottom_margin\0" "smgbp\0" "set_bottom_margin_parm\0" "smglp\0" \ -"set_left_margin_parm\0" "smgrp\0" "set_right_margin_parm\0" "smgt\0" "set_top_margin\0" \ -"smgtp\0" "set_top_margin_parm\0" "sbim\0" "start_bit_image\0" "scsd\0" \ -"start_char_set_def\0" "rbim\0" "stop_bit_image\0" "rcsd\0" "stop_char_set_def\0" \ -"subcs\0" "subscript_characters\0" "supcs\0" "superscript_characters\0" \ -"docr\0" "these_cause_cr\0" "zerom\0" "zero_motion\0" "csnm\0" "char_set_names\0" \ -"kmous\0" "key_mouse\0" "minfo\0" "mouse_info\0" "reqmp\0" "req_mouse_pos\0" \ -"getm\0" "get_mouse\0" "setaf\0" "set_a_foreground\0" "setab\0" "set_a_background\0" \ -"pfxl\0" "pkey_plab\0" "devt\0" "device_type\0" "csin\0" "code_set_init\0" \ -"s0ds\0" "set0_des_seq\0" "s1ds\0" "set1_des_seq\0" "s2ds\0" "set2_des_seq\0" \ -"s3ds\0" "set3_des_seq\0" "smglr\0" "set_lr_margin\0" "smgtb\0" "set_tb_margin\0" \ -"birep\0" "bit_image_repeat\0" "binel\0" "bit_image_newline\0" "bicr\0" \ -"bit_image_carriage_return\0" "colornm\0" "color_names\0" "defbi\0" "define_bit_image_region\0" \ -"endbi\0" "end_bit_image_region\0" "setcolor\0" "set_color_band\0" "slines\0" \ -"set_page_length\0" "dispc\0" "display_pc_char\0" "smpch\0" "enter_pc_charset_mode\0" \ -"rmpch\0" "exit_pc_charset_mode\0" "smsc\0" "enter_scancode_mode\0" "rmsc\0" \ -"exit_scancode_mode\0" "pctrm\0" "pc_term_options\0" "scesc\0" "scancode_escape\0" \ -"scesa\0" "alt_scancode_esc\0" "ehhlm\0" "enter_horizontal_hl_mode\0" "elhlm\0" \ -"enter_left_hl_mode\0" "elohlm\0" "enter_low_hl_mode\0" "erhlm\0" "enter_right_hl_mode\0" \ -"ethlm\0" "enter_top_hl_mode\0" "evhlm\0" "enter_vertical_hl_mode\0" "sgr1\0" \ -"set_a_attributes\0" "slength\0" "set_pglen_inch\0" "OTi2\0" "termcap_init2\0" \ -"OTrs\0" "termcap_reset\0" "OTug\0" "magic_cookie_glitch_ul\0" "OTbs\0" \ -"backspaces_with_bs\0" "OTns\0" "crt_no_scrolling\0" "OTnc\0" "no_correctly_working_cr\0" \ -"OTdC\0" "carriage_return_delay\0" "OTdN\0" "new_line_delay\0" "OTnl\0" \ -"linefeed_if_not_lf\0" "OTbc\0" "backspace_if_not_bs\0" "OTMT\0" "gnu_has_meta_key\0" \ -"OTNL\0" "linefeed_is_newline\0" "OTdB\0" "backspace_delay\0" "OTdT\0" \ -"horizontal_tab_delay\0" "OTkn\0" "number_of_function_keys\0" "OTko\0" \ -"other_non_function_keys\0" "OTma\0" "arrow_key_map\0" "OTpt\0" "has_hardware_tabs\0" \ -"OTxr\0" "return_does_clr_eol\0" "OTG2\0" "acs_ulcorner\0" "OTG3\0" "acs_llcorner\0" \ -"OTG1\0" "acs_urcorner\0" "OTG4\0" "acs_lrcorner\0" "OTGR\0" "acs_ltee\0" \ -"OTGL\0" "acs_rtee\0" "OTGU\0" "acs_btee\0" "OTGD\0" "acs_ttee\0" "OTGH\0" \ -"acs_hline\0" "OTGV\0" "acs_vline\0" "OTGC\0" "acs_plus\0" "meml\0" "memory_lock\0" \ -"memu\0" "memory_unlock\0" "box1\0" "box_chars_1\0" ; -static const short _nc_offset_boolfnames[] = { -3, 23, 45, 61, 87, 109, 129, -145, 158, 174, 193, 215, 231, -248, 270, 292, 310, 332, 356, -372, 398, 412, 432, 449, 467, -485, 503, 530, 545, 566, 596, -617, 645, 666, 686, 714, 735, -8193, 8217, 8239, 8364, 8386, 8535, 8558, }; - -static NCURSES_CONST char ** ptr_boolfnames = 0; - -static const short _nc_offset_boolnames[] = { -0, 20, 41, 57, 82, 106, 126, 142, 155, 171, 190, 212, 228, 244, 265, 289, 304, 329, 353, 369, 394, 407, 427, 444, 461, 481, 497, 526, 541, 562, 591, 612, 639, 661, 682, 709, 730, 8188, 8212, 8234, 8359, 8381, 8530, 8553, }; - -static NCURSES_CONST char ** ptr_boolnames = 0; - -static const short _nc_offset_numfnames[] = { -756, 767, 783, 792, 812, 835, -856, 877, 900, 914, 930, 945, -965, 988, 1005, 1019, 1040, 1062, 1085, 1108, 1132, 1151, 1170, -1192, 1211, 1231, 1252, 1278, 1303, 1320, 1340, 1355, 1382, 8165, -8268, 8295, 8411, 8432, -8458, }; - -static NCURSES_CONST char ** ptr_numfnames = 0; - -static const short _nc_offset_numnames[] = { -751, 764, 777, 789, 808, 832, 853, 873, 895, 911, 927, 942, 960, 981, 999, 1015, 1034, 1056, -1079, 1102, 1126, 1147, 1166, 1186, 1207, 1227, 1247, 1273, 1299, -1314, 1335, 1348, 1375, 8160, 8263, 8290, 8406, 8427, 8453, }; - -static NCURSES_CONST char ** ptr_numnames = 0; - -static const short _nc_offset_strfnames[] = { -1401, -1414, 1422, 1442, 1467, 1488, 1504, 1515, 1527, 1548, 1570, 1590, -1607, 1625, 1647, 1665, 1690, 1709, 1725, 1743, 1759, 1779, 1800, -1816, 1835, 1856, 1885, 1907, 1929, 1948, 1970, 1990, 2014, 2037, -2062, 2086, 2111, 2136, 2154, 2181, 2207, 2225, 2247, 2269, 2293, -2319, 2335, 2349, 2370, 2387, 2404, 2420, 2435, 2456, 2471, 2490, -2509, 2524, 2540, 2555, 2567, 2580, 2595, 2607, 2619, 2631, 2642, -2654, 2666, 2677, 2688, 2699, 2710, 2721, 2732, 2743, 2756, 2771, -2783, 2796, 2809, 2820, 2834, 2850, 2865, 2876, 2888, 2903, 2915, -2933, 2949, 2960, 2972, 2984, 2995, 3006, 3017, 3028, 3039, 3050, -3061, 3072, 3085, 3097, 3109, 3122, 3134, 3155, 3176, 3190, 3204, -3225, 3246, 3268, 3284, 3305, 3320, 3335, 3349, 3366, 3379, 3391, -3407, 3425, 3443, 3460, 3474, 3493, 3508, 3524, 3542, 3561, 3580, -3593, 3607, 3615, 3633, 3651, 3670, 3684, 3695, 3706, 3717, 3728, -3740, 3753, 3771, 3785, 3800, 3815, 3836, 3855, 3874, 3892, 3912, -3933, 3946, 3960, 3975, 3988, 4004, 4019, 4036, 4050, 4066, 4079, -4094, 4108, 4122, 4136, 4150, 4167, 4181, 4195, 4209, 4226, 4244, -4259, 4273, 4292, 4309, 4326, 4343, 4359, 4373, 4390, 4404, 4418, -4435, 4453, 4468, 4484, 4496, 4509, 4525, 4539, 4553, 4568, 4583, -4598, 4612, 4625, 4640, 4658, 4673, 4688, 4706, 4725, 4741, 4756, -4774, 4790, 4806, 4821, 4839, 4853, 4872, 4885, 4898, 4911, 4924, -4937, 4950, 4963, 4976, 4989, 5002, 5015, 5028, 5041, 5054, 5067, -5080, 5093, 5106, 5119, 5132, 5145, 5158, 5171, 5184, 5197, 5210, -5223, 5236, 5249, 5262, 5275, 5288, 5301, 5314, 5327, 5340, 5353, -5366, 5379, 5392, 5405, 5418, 5431, 5444, 5457, 5470, 5483, 5496, -5509, 5522, 5535, 5548, 5560, 5572, 5591, 5612, 5633, 5651, 5666, -5686, 5704, 5724, 5740, 5752, 5769, 5785, 5796, 5807, 5824, 5841, -5854, 5863, 5872, 5881, 5890, 5899, 5908, 5917, 5926, 5935, 5944, -5957, 5975, 5998, 6018, 6038, 6058, 6077, 6099, 6121, 6141, 6162, -6180, 6208, 6233, 6256, 6282, 6304, 6336, 6362, 6386, 6413, 6440, -6464, 6490, 6512, 6537, 6558, 6581, 6607, 6633, 6655, 6682, 6699, -6716, 6733, 6757, 6773, 6792, 6813, 6834, 6856, 6874, 6895, 6919, -6948, 6975, 7002, 7023, 7048, 7069, 7093, 7113, 7137, 7164, 7192, -7213, 7230, 7251, 7267, 7284, 7303, 7319, 7342, 7364, 7379, 7396, -7415, 7433, 7451, 7469, 7488, 7508, 7528, 7551, 7574, 7608, 7626, -7656, 7686, 7708, 7730, 7752, 7780, 7806, 7831, 7856, 7878, 7900, -7923, 7954, 7980, 8004, 8030, 8054, 8082, 8107, 8127, 8146, 8315, 8339, 8487, 8516, 8583, 8601, 8619, 8637, 8655, 8669, -8683, 8697, 8711, 8726, 8741, 8755, 8772, 8791, }; - -static NCURSES_CONST char ** ptr_strfnames = 0; - -static const short _nc_offset_strnames[] = { -1397, 1410, 1419, 1438, 1463, 1482, 1501, -1512, 1523, 1542, 1566, 1585, 1602, 1619, 1642, 1659, 1684, 1704, -1722, 1738, 1753, 1774, 1796, 1812, 1832, 1850, 1879, 1902, 1923, -1943, 1966, 1985, 2008, 2032, 2058, 2081, 2106, 2132, 2148, 2176, -2201, 2220, 2242, 2264, 2288, 2313, 2332, 2345, 2366, 2383, 2400, -2417, 2430, 2452, 2468, 2486, 2504, 2519, 2534, 2549, 2562, 2574, -2589, 2603, 2615, 2627, 2638, 2649, 2662, 2673, 2684, 2695, 2706, -2717, 2728, 2739, 2750, 2765, 2778, 2790, 2805, 2816, 2830, 2844, -2860, 2872, 2883, 2897, 2910, 2928, 2945, 2956, 2967, 2980, 2991, -3002, 3013, 3024, 3035, 3046, 3057, 3068, 3081, 3093, 3105, 3118, -3131, 3151, 3172, 3185, 3201, 3221, 3242, 3264, 3280, 3299, 3314, -3331, 3345, 3362, 3375, 3387, 3403, 3421, 3439, 3457, 3471, 3489, -3505, 3520, 3539, 3557, 3576, 3588, 3604, 3611, 3630, 3648, 3664, -3680, 3691, 3702, 3713, 3724, 3735, 3749, 3766, 3781, 3795, 3809, -3830, 3850, 3869, 3887, 3906, 3927, 3941, 3955, 3970, 3983, 3999, -4014, 4031, 4045, 4061, 4074, 4089, 4103, 4117, 4131, 4145, 4162, -4176, 4190, 4204, 4221, 4239, 4254, 4268, 4287, 4304, 4321, 4338, -4354, 4368, 4385, 4399, 4413, 4430, 4448, 4463, 4480, 4492, 4504, -4520, 4534, 4548, 4563, 4578, 4593, 4608, 4620, 4635, 4653, 4668, -4683, 4701, 4720, 4736, 4751, 4769, 4785, 4801, 4816, 4834, 4849, -4867, 4880, 4893, 4906, 4919, 4932, 4945, 4958, 4971, 4984, 4997, -5010, 5023, 5036, 5049, 5062, 5075, 5088, 5101, 5114, 5127, 5140, -5153, 5166, 5179, 5192, 5205, 5218, 5231, 5244, 5257, 5270, 5283, -5296, 5309, 5322, 5335, 5348, 5361, 5374, 5387, 5400, 5413, 5426, -5439, 5452, 5465, 5478, 5491, 5504, 5517, 5530, 5543, 5556, 5568, -5586, 5607, 5629, 5646, 5661, 5680, 5699, 5718, 5736, 5747, 5763, -5780, 5790, 5802, 5818, 5836, 5851, 5860, 5869, 5878, 5887, 5896, -5905, 5914, 5923, 5932, 5941, 5954, 5969, 5992, 6014, 6033, 6053, -6073, 6095, 6117, 6137, 6157, 6174, 6202, 6228, 6252, 6276, 6299, -6330, 6357, 6380, 6407, 6436, 6458, 6485, 6508, 6531, 6553, 6575, -6601, 6629, 6650, 6676, 6693, 6710, 6728, 6751, 6766, 6787, 6808, -6829, 6851, 6870, 6890, 6913, 6942, 6969, 6997, 7017, 7043, 7064, -7088, 7108, 7131, 7158, 7187, 7207, 7225, 7245, 7261, 7278, 7298, -7313, 7336, 7359, 7374, 7391, 7410, 7428, 7446, 7464, 7482, 7502, -7522, 7545, 7569, 7600, 7620, 7650, 7677, 7701, 7724, 7746, 7774, -7801, 7826, 7850, 7872, 7894, 7917, 7948, 7973, 7998, 8024, 8048, -8077, 8099, 8122, 8141, 8310, -8334, 8482, 8511, 8578, -8596, 8614, 8632, 8650, 8664, 8678, 8692, 8706, 8721, 8736, 8750, -8767, 8786, }; - -static NCURSES_CONST char ** ptr_strnames = 0; - - -static IT * -alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size) -{ - if (*value == 0) { - if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) { - unsigned n; - for (n = 0; n < size; ++n) { - (*value)[n] = (NCURSES_CONST char *) _nc_name_blob + offsets[n]; - } - } - } - return *value; -} - -#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API _nc_##it(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); } - -FIX(boolnames) -FIX(boolfnames) -FIX(numnames) -FIX(numfnames) -FIX(strnames) -FIX(strfnames) - - -#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); } - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_names_leaks(void) -{ -FREE_FIX(boolnames) -FREE_FIX(boolfnames) -FREE_FIX(numnames) -FREE_FIX(numfnames) -FREE_FIX(strnames) -FREE_FIX(strfnames) -} -#endif - -#else - -#define DCL(it) NCURSES_EXPORT_VAR(IT) it[] - -DCL(boolnames) = { - "bw", - "am", - "xsb", - "xhp", - "xenl", - "eo", - "gn", - "hc", - "km", - "hs", - "in", - "da", - "db", - "mir", - "msgr", - "os", - "eslok", - "xt", - "hz", - "ul", - "xon", - "nxon", - "mc5i", - "chts", - "nrrmc", - "npc", - "ndscr", - "ccc", - "bce", - "hls", - "xhpa", - "crxm", - "daisy", - "xvpa", - "sam", - "cpix", - "lpix", - "OTbs", - "OTns", - "OTnc", - "OTMT", - "OTNL", - "OTpt", - "OTxr", - - (NCURSES_CONST char *)0, -}; - -DCL(boolfnames) = { - "auto_left_margin", - "auto_right_margin", - "no_esc_ctlc", - "ceol_standout_glitch", - "eat_newline_glitch", - "erase_overstrike", - "generic_type", - "hard_copy", - "has_meta_key", - "has_status_line", - "insert_null_glitch", - "memory_above", - "memory_below", - "move_insert_mode", - "move_standout_mode", - "over_strike", - "status_line_esc_ok", - "dest_tabs_magic_smso", - "tilde_glitch", - "transparent_underline", - "xon_xoff", - "needs_xon_xoff", - "prtr_silent", - "hard_cursor", - "non_rev_rmcup", - "no_pad_char", - "non_dest_scroll_region", - "can_change", - "back_color_erase", - "hue_lightness_saturation", - "col_addr_glitch", - "cr_cancels_micro_mode", - "has_print_wheel", - "row_addr_glitch", - "semi_auto_right_margin", - "cpi_changes_res", - "lpi_changes_res", - "backspaces_with_bs", - "crt_no_scrolling", - "no_correctly_working_cr", - "gnu_has_meta_key", - "linefeed_is_newline", - "has_hardware_tabs", - "return_does_clr_eol", - - (NCURSES_CONST char *)0, -}; - -DCL(numnames) = { - "cols", - "it", - "lines", - "lm", - "xmc", - "pb", - "vt", - "wsl", - "nlab", - "lh", - "lw", - "ma", - "wnum", - "colors", - "pairs", - "ncv", - "bufsz", - "spinv", - "spinh", - "maddr", - "mjump", - "mcs", - "mls", - "npins", - "orc", - "orl", - "orhi", - "orvi", - "cps", - "widcs", - "btns", - "bitwin", - "bitype", - "OTug", - "OTdC", - "OTdN", - "OTdB", - "OTdT", - "OTkn", - - (NCURSES_CONST char *)0, -}; - -DCL(numfnames) = { - "columns", - "init_tabs", - "lines", - "lines_of_memory", - "magic_cookie_glitch", - "padding_baud_rate", - "virtual_terminal", - "width_status_line", - "num_labels", - "label_height", - "label_width", - "max_attributes", - "maximum_windows", - "max_colors", - "max_pairs", - "no_color_video", - "buffer_capacity", - "dot_vert_spacing", - "dot_horz_spacing", - "max_micro_address", - "max_micro_jump", - "micro_col_size", - "micro_line_size", - "number_of_pins", - "output_res_char", - "output_res_line", - "output_res_horz_inch", - "output_res_vert_inch", - "print_rate", - "wide_char_size", - "buttons", - "bit_image_entwining", - "bit_image_type", - "magic_cookie_glitch_ul", - "carriage_return_delay", - "new_line_delay", - "backspace_delay", - "horizontal_tab_delay", - "number_of_function_keys", - - (NCURSES_CONST char *)0, -}; - -DCL(strnames) = { - "cbt", - "bel", - "cr", - "csr", - "tbc", - "clear", - "el", - "ed", - "hpa", - "cmdch", - "cup", - "cud1", - "home", - "civis", - "cub1", - "mrcup", - "cnorm", - "cuf1", - "ll", - "cuu1", - "cvvis", - "dch1", - "dl1", - "dsl", - "hd", - "smacs", - "blink", - "bold", - "smcup", - "smdc", - "dim", - "smir", - "invis", - "prot", - "rev", - "smso", - "smul", - "ech", - "rmacs", - "sgr0", - "rmcup", - "rmdc", - "rmir", - "rmso", - "rmul", - "flash", - "ff", - "fsl", - "is1", - "is2", - "is3", - "if", - "ich1", - "il1", - "ip", - "kbs", - "ktbc", - "kclr", - "kctab", - "kdch1", - "kdl1", - "kcud1", - "krmir", - "kel", - "ked", - "kf0", - "kf1", - "kf10", - "kf2", - "kf3", - "kf4", - "kf5", - "kf6", - "kf7", - "kf8", - "kf9", - "khome", - "kich1", - "kil1", - "kcub1", - "kll", - "knp", - "kpp", - "kcuf1", - "kind", - "kri", - "khts", - "kcuu1", - "rmkx", - "smkx", - "lf0", - "lf1", - "lf10", - "lf2", - "lf3", - "lf4", - "lf5", - "lf6", - "lf7", - "lf8", - "lf9", - "rmm", - "smm", - "nel", - "pad", - "dch", - "dl", - "cud", - "ich", - "indn", - "il", - "cub", - "cuf", - "rin", - "cuu", - "pfkey", - "pfloc", - "pfx", - "mc0", - "mc4", - "mc5", - "rep", - "rs1", - "rs2", - "rs3", - "rf", - "rc", - "vpa", - "sc", - "ind", - "ri", - "sgr", - "hts", - "wind", - "ht", - "tsl", - "uc", - "hu", - "iprog", - "ka1", - "ka3", - "kb2", - "kc1", - "kc3", - "mc5p", - "rmp", - "acsc", - "pln", - "kcbt", - "smxon", - "rmxon", - "smam", - "rmam", - "xonc", - "xoffc", - "enacs", - "smln", - "rmln", - "kbeg", - "kcan", - "kclo", - "kcmd", - "kcpy", - "kcrt", - "kend", - "kent", - "kext", - "kfnd", - "khlp", - "kmrk", - "kmsg", - "kmov", - "knxt", - "kopn", - "kopt", - "kprv", - "kprt", - "krdo", - "kref", - "krfr", - "krpl", - "krst", - "kres", - "ksav", - "kspd", - "kund", - "kBEG", - "kCAN", - "kCMD", - "kCPY", - "kCRT", - "kDC", - "kDL", - "kslt", - "kEND", - "kEOL", - "kEXT", - "kFND", - "kHLP", - "kHOM", - "kIC", - "kLFT", - "kMSG", - "kMOV", - "kNXT", - "kOPT", - "kPRV", - "kPRT", - "kRDO", - "kRPL", - "kRIT", - "kRES", - "kSAV", - "kSPD", - "kUND", - "rfi", - "kf11", - "kf12", - "kf13", - "kf14", - "kf15", - "kf16", - "kf17", - "kf18", - "kf19", - "kf20", - "kf21", - "kf22", - "kf23", - "kf24", - "kf25", - "kf26", - "kf27", - "kf28", - "kf29", - "kf30", - "kf31", - "kf32", - "kf33", - "kf34", - "kf35", - "kf36", - "kf37", - "kf38", - "kf39", - "kf40", - "kf41", - "kf42", - "kf43", - "kf44", - "kf45", - "kf46", - "kf47", - "kf48", - "kf49", - "kf50", - "kf51", - "kf52", - "kf53", - "kf54", - "kf55", - "kf56", - "kf57", - "kf58", - "kf59", - "kf60", - "kf61", - "kf62", - "kf63", - "el1", - "mgc", - "smgl", - "smgr", - "fln", - "sclk", - "dclk", - "rmclk", - "cwin", - "wingo", - "hup", - "dial", - "qdial", - "tone", - "pulse", - "hook", - "pause", - "wait", - "u0", - "u1", - "u2", - "u3", - "u4", - "u5", - "u6", - "u7", - "u8", - "u9", - "op", - "oc", - "initc", - "initp", - "scp", - "setf", - "setb", - "cpi", - "lpi", - "chr", - "cvr", - "defc", - "swidm", - "sdrfq", - "sitm", - "slm", - "smicm", - "snlq", - "snrmq", - "sshm", - "ssubm", - "ssupm", - "sum", - "rwidm", - "ritm", - "rlm", - "rmicm", - "rshm", - "rsubm", - "rsupm", - "rum", - "mhpa", - "mcud1", - "mcub1", - "mcuf1", - "mvpa", - "mcuu1", - "porder", - "mcud", - "mcub", - "mcuf", - "mcuu", - "scs", - "smgb", - "smgbp", - "smglp", - "smgrp", - "smgt", - "smgtp", - "sbim", - "scsd", - "rbim", - "rcsd", - "subcs", - "supcs", - "docr", - "zerom", - "csnm", - "kmous", - "minfo", - "reqmp", - "getm", - "setaf", - "setab", - "pfxl", - "devt", - "csin", - "s0ds", - "s1ds", - "s2ds", - "s3ds", - "smglr", - "smgtb", - "birep", - "binel", - "bicr", - "colornm", - "defbi", - "endbi", - "setcolor", - "slines", - "dispc", - "smpch", - "rmpch", - "smsc", - "rmsc", - "pctrm", - "scesc", - "scesa", - "ehhlm", - "elhlm", - "elohlm", - "erhlm", - "ethlm", - "evhlm", - "sgr1", - "slength", - "OTi2", - "OTrs", - "OTnl", - "OTbc", - "OTko", - "OTma", - "OTG2", - "OTG3", - "OTG1", - "OTG4", - "OTGR", - "OTGL", - "OTGU", - "OTGD", - "OTGH", - "OTGV", - "OTGC", - "meml", - "memu", - "box1", - - (NCURSES_CONST char *)0, -}; - -DCL(strfnames) = { - "back_tab", - "bell", - "carriage_return", - "change_scroll_region", - "clear_all_tabs", - "clear_screen", - "clr_eol", - "clr_eos", - "column_address", - "command_character", - "cursor_address", - "cursor_down", - "cursor_home", - "cursor_invisible", - "cursor_left", - "cursor_mem_address", - "cursor_normal", - "cursor_right", - "cursor_to_ll", - "cursor_up", - "cursor_visible", - "delete_character", - "delete_line", - "dis_status_line", - "down_half_line", - "enter_alt_charset_mode", - "enter_blink_mode", - "enter_bold_mode", - "enter_ca_mode", - "enter_delete_mode", - "enter_dim_mode", - "enter_insert_mode", - "enter_secure_mode", - "enter_protected_mode", - "enter_reverse_mode", - "enter_standout_mode", - "enter_underline_mode", - "erase_chars", - "exit_alt_charset_mode", - "exit_attribute_mode", - "exit_ca_mode", - "exit_delete_mode", - "exit_insert_mode", - "exit_standout_mode", - "exit_underline_mode", - "flash_screen", - "form_feed", - "from_status_line", - "init_1string", - "init_2string", - "init_3string", - "init_file", - "insert_character", - "insert_line", - "insert_padding", - "key_backspace", - "key_catab", - "key_clear", - "key_ctab", - "key_dc", - "key_dl", - "key_down", - "key_eic", - "key_eol", - "key_eos", - "key_f0", - "key_f1", - "key_f10", - "key_f2", - "key_f3", - "key_f4", - "key_f5", - "key_f6", - "key_f7", - "key_f8", - "key_f9", - "key_home", - "key_ic", - "key_il", - "key_left", - "key_ll", - "key_npage", - "key_ppage", - "key_right", - "key_sf", - "key_sr", - "key_stab", - "key_up", - "keypad_local", - "keypad_xmit", - "lab_f0", - "lab_f1", - "lab_f10", - "lab_f2", - "lab_f3", - "lab_f4", - "lab_f5", - "lab_f6", - "lab_f7", - "lab_f8", - "lab_f9", - "meta_off", - "meta_on", - "newline", - "pad_char", - "parm_dch", - "parm_delete_line", - "parm_down_cursor", - "parm_ich", - "parm_index", - "parm_insert_line", - "parm_left_cursor", - "parm_right_cursor", - "parm_rindex", - "parm_up_cursor", - "pkey_key", - "pkey_local", - "pkey_xmit", - "print_screen", - "prtr_off", - "prtr_on", - "repeat_char", - "reset_1string", - "reset_2string", - "reset_3string", - "reset_file", - "restore_cursor", - "row_address", - "save_cursor", - "scroll_forward", - "scroll_reverse", - "set_attributes", - "set_tab", - "set_window", - "tab", - "to_status_line", - "underline_char", - "up_half_line", - "init_prog", - "key_a1", - "key_a3", - "key_b2", - "key_c1", - "key_c3", - "prtr_non", - "char_padding", - "acs_chars", - "plab_norm", - "key_btab", - "enter_xon_mode", - "exit_xon_mode", - "enter_am_mode", - "exit_am_mode", - "xon_character", - "xoff_character", - "ena_acs", - "label_on", - "label_off", - "key_beg", - "key_cancel", - "key_close", - "key_command", - "key_copy", - "key_create", - "key_end", - "key_enter", - "key_exit", - "key_find", - "key_help", - "key_mark", - "key_message", - "key_move", - "key_next", - "key_open", - "key_options", - "key_previous", - "key_print", - "key_redo", - "key_reference", - "key_refresh", - "key_replace", - "key_restart", - "key_resume", - "key_save", - "key_suspend", - "key_undo", - "key_sbeg", - "key_scancel", - "key_scommand", - "key_scopy", - "key_screate", - "key_sdc", - "key_sdl", - "key_select", - "key_send", - "key_seol", - "key_sexit", - "key_sfind", - "key_shelp", - "key_shome", - "key_sic", - "key_sleft", - "key_smessage", - "key_smove", - "key_snext", - "key_soptions", - "key_sprevious", - "key_sprint", - "key_sredo", - "key_sreplace", - "key_sright", - "key_srsume", - "key_ssave", - "key_ssuspend", - "key_sundo", - "req_for_input", - "key_f11", - "key_f12", - "key_f13", - "key_f14", - "key_f15", - "key_f16", - "key_f17", - "key_f18", - "key_f19", - "key_f20", - "key_f21", - "key_f22", - "key_f23", - "key_f24", - "key_f25", - "key_f26", - "key_f27", - "key_f28", - "key_f29", - "key_f30", - "key_f31", - "key_f32", - "key_f33", - "key_f34", - "key_f35", - "key_f36", - "key_f37", - "key_f38", - "key_f39", - "key_f40", - "key_f41", - "key_f42", - "key_f43", - "key_f44", - "key_f45", - "key_f46", - "key_f47", - "key_f48", - "key_f49", - "key_f50", - "key_f51", - "key_f52", - "key_f53", - "key_f54", - "key_f55", - "key_f56", - "key_f57", - "key_f58", - "key_f59", - "key_f60", - "key_f61", - "key_f62", - "key_f63", - "clr_bol", - "clear_margins", - "set_left_margin", - "set_right_margin", - "label_format", - "set_clock", - "display_clock", - "remove_clock", - "create_window", - "goto_window", - "hangup", - "dial_phone", - "quick_dial", - "tone", - "pulse", - "flash_hook", - "fixed_pause", - "wait_tone", - "user0", - "user1", - "user2", - "user3", - "user4", - "user5", - "user6", - "user7", - "user8", - "user9", - "orig_pair", - "orig_colors", - "initialize_color", - "initialize_pair", - "set_color_pair", - "set_foreground", - "set_background", - "change_char_pitch", - "change_line_pitch", - "change_res_horz", - "change_res_vert", - "define_char", - "enter_doublewide_mode", - "enter_draft_quality", - "enter_italics_mode", - "enter_leftward_mode", - "enter_micro_mode", - "enter_near_letter_quality", - "enter_normal_quality", - "enter_shadow_mode", - "enter_subscript_mode", - "enter_superscript_mode", - "enter_upward_mode", - "exit_doublewide_mode", - "exit_italics_mode", - "exit_leftward_mode", - "exit_micro_mode", - "exit_shadow_mode", - "exit_subscript_mode", - "exit_superscript_mode", - "exit_upward_mode", - "micro_column_address", - "micro_down", - "micro_left", - "micro_right", - "micro_row_address", - "micro_up", - "order_of_pins", - "parm_down_micro", - "parm_left_micro", - "parm_right_micro", - "parm_up_micro", - "select_char_set", - "set_bottom_margin", - "set_bottom_margin_parm", - "set_left_margin_parm", - "set_right_margin_parm", - "set_top_margin", - "set_top_margin_parm", - "start_bit_image", - "start_char_set_def", - "stop_bit_image", - "stop_char_set_def", - "subscript_characters", - "superscript_characters", - "these_cause_cr", - "zero_motion", - "char_set_names", - "key_mouse", - "mouse_info", - "req_mouse_pos", - "get_mouse", - "set_a_foreground", - "set_a_background", - "pkey_plab", - "device_type", - "code_set_init", - "set0_des_seq", - "set1_des_seq", - "set2_des_seq", - "set3_des_seq", - "set_lr_margin", - "set_tb_margin", - "bit_image_repeat", - "bit_image_newline", - "bit_image_carriage_return", - "color_names", - "define_bit_image_region", - "end_bit_image_region", - "set_color_band", - "set_page_length", - "display_pc_char", - "enter_pc_charset_mode", - "exit_pc_charset_mode", - "enter_scancode_mode", - "exit_scancode_mode", - "pc_term_options", - "scancode_escape", - "alt_scancode_esc", - "enter_horizontal_hl_mode", - "enter_left_hl_mode", - "enter_low_hl_mode", - "enter_right_hl_mode", - "enter_top_hl_mode", - "enter_vertical_hl_mode", - "set_a_attributes", - "set_pglen_inch", - "termcap_init2", - "termcap_reset", - "linefeed_if_not_lf", - "backspace_if_not_bs", - "other_non_function_keys", - "arrow_key_map", - "acs_ulcorner", - "acs_llcorner", - "acs_urcorner", - "acs_lrcorner", - "acs_ltee", - "acs_rtee", - "acs_btee", - "acs_ttee", - "acs_hline", - "acs_vline", - "acs_plus", - "memory_lock", - "memory_unlock", - "box_chars_1", - - (NCURSES_CONST char *)0, -}; - - -#endif /* BROKEN_LINKER */ diff --git a/ncurses/ncurses/tty/lib_mvcur.c b/ncurses/ncurses/tty/lib_mvcur.c index 8e66fa3..693203e 100644 --- a/ncurses/ncurses/tty/lib_mvcur.c +++ b/ncurses/ncurses/tty/lib_mvcur.c @@ -1244,6 +1244,10 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) return (0); } +#else + +NCURSES_EXPORT_VAR(const char *) _nc_progname = NULL; + #endif /* MAIN */ /* lib_mvcur.c ends here */ diff --git a/ncurses/progs/termsort.c b/ncurses/progs/termsort.c deleted file mode 100644 index 9cd80f8..0000000 --- a/ncurses/progs/termsort.c +++ /dev/null @@ -1,2163 +0,0 @@ -/* - * termsort.c --- sort order arrays for use by infocmp. - * - * Note: this file is generated using MKtermsort.sh, do not edit by hand. - */ -static const PredIdx bool_terminfo_sort[] = { - 40 , /* OTMT */ - 41 , /* OTNL */ - 37 , /* OTbs */ - 39 , /* OTnc */ - 38 , /* OTns */ - 42 , /* OTpt */ - 43 , /* OTxr */ - 1 , /* am */ - 28 , /* bce */ - 0 , /* bw */ - 27 , /* ccc */ - 23 , /* chts */ - 35 , /* cpix */ - 31 , /* crxm */ - 11 , /* da */ - 32 , /* daisy */ - 12 , /* db */ - 5 , /* eo */ - 16 , /* eslok */ - 6 , /* gn */ - 7 , /* hc */ - 29 , /* hls */ - 9 , /* hs */ - 18 , /* hz */ - 10 , /* in */ - 8 , /* km */ - 36 , /* lpix */ - 22 , /* mc5i */ - 13 , /* mir */ - 14 , /* msgr */ - 26 , /* ndscr */ - 25 , /* npc */ - 24 , /* nrrmc */ - 21 , /* nxon */ - 15 , /* os */ - 34 , /* sam */ - 19 , /* ul */ - 4 , /* xenl */ - 3 , /* xhp */ - 30 , /* xhpa */ - 20 , /* xon */ - 2 , /* xsb */ - 17 , /* xt */ - 33 , /* xvpa */ -}; - -static const PredIdx num_terminfo_sort[] = { - 36 , /* OTdB */ - 34 , /* OTdC */ - 35 , /* OTdN */ - 37 , /* OTdT */ - 38 , /* OTkn */ - 33 , /* OTug */ - 31 , /* bitwin */ - 32 , /* bitype */ - 30 , /* btns */ - 16 , /* bufsz */ - 13 , /* colors */ - 0 , /* cols */ - 28 , /* cps */ - 1 , /* it */ - 9 , /* lh */ - 2 , /* lines */ - 3 , /* lm */ - 10 , /* lw */ - 11 , /* ma */ - 19 , /* maddr */ - 21 , /* mcs */ - 20 , /* mjump */ - 22 , /* mls */ - 15 , /* ncv */ - 8 , /* nlab */ - 23 , /* npins */ - 24 , /* orc */ - 26 , /* orhi */ - 25 , /* orl */ - 27 , /* orvi */ - 14 , /* pairs */ - 5 , /* pb */ - 18 , /* spinh */ - 17 , /* spinv */ - 6 , /* vt */ - 29 , /* widcs */ - 12 , /* wnum */ - 7 , /* wsl */ - 4 , /* xmc */ -}; - -static const PredIdx str_terminfo_sort[] = { - 402 , /* OTG1 */ - 400 , /* OTG2 */ - 401 , /* OTG3 */ - 403 , /* OTG4 */ - 410 , /* OTGC */ - 407 , /* OTGD */ - 408 , /* OTGH */ - 405 , /* OTGL */ - 404 , /* OTGR */ - 406 , /* OTGU */ - 409 , /* OTGV */ - 397 , /* OTbc */ - 394 , /* OTi2 */ - 398 , /* OTko */ - 399 , /* OTma */ - 396 , /* OTnl */ - 395 , /* OTrs */ - 146 , /* acsc */ - 1 , /* bel */ - 372 , /* bicr */ - 371 , /* binel */ - 370 , /* birep */ - 26 , /* blink */ - 27 , /* bold */ - 413 , /* box1 */ - 0 , /* cbt */ - 306 , /* chr */ - 13 , /* civis */ - 5 , /* clear */ - 9 , /* cmdch */ - 16 , /* cnorm */ - 373 , /* colornm */ - 304 , /* cpi */ - 2 , /* cr */ - 363 , /* csin */ - 354 , /* csnm */ - 3 , /* csr */ - 111 , /* cub */ - 14 , /* cub1 */ - 107 , /* cud */ - 11 , /* cud1 */ - 112 , /* cuf */ - 17 , /* cuf1 */ - 10 , /* cup */ - 114 , /* cuu */ - 19 , /* cuu1 */ - 307 , /* cvr */ - 20 , /* cvvis */ - 277 , /* cwin */ - 105 , /* dch */ - 21 , /* dch1 */ - 275 , /* dclk */ - 374 , /* defbi */ - 308 , /* defc */ - 362 , /* devt */ - 280 , /* dial */ - 30 , /* dim */ - 378 , /* dispc */ - 106 , /* dl */ - 22 , /* dl1 */ - 352 , /* docr */ - 23 , /* dsl */ - 37 , /* ech */ - 7 , /* ed */ - 386 , /* ehhlm */ - 6 , /* el */ - 269 , /* el1 */ - 387 , /* elhlm */ - 388 , /* elohlm */ - 155 , /* enacs */ - 375 , /* endbi */ - 389 , /* erhlm */ - 390 , /* ethlm */ - 391 , /* evhlm */ - 46 , /* ff */ - 45 , /* flash */ - 273 , /* fln */ - 47 , /* fsl */ - 358 , /* getm */ - 24 , /* hd */ - 12 , /* home */ - 284 , /* hook */ - 8 , /* hpa */ - 134 , /* ht */ - 132 , /* hts */ - 137 , /* hu */ - 279 , /* hup */ - 108 , /* ich */ - 52 , /* ich1 */ - 51 , /* if */ - 110 , /* il */ - 53 , /* il1 */ - 129 , /* ind */ - 109 , /* indn */ - 299 , /* initc */ - 300 , /* initp */ - 32 , /* invis */ - 54 , /* ip */ - 138 , /* iprog */ - 48 , /* is1 */ - 49 , /* is2 */ - 50 , /* is3 */ - 186 , /* kBEG */ - 187 , /* kCAN */ - 188 , /* kCMD */ - 189 , /* kCPY */ - 190 , /* kCRT */ - 191 , /* kDC */ - 192 , /* kDL */ - 194 , /* kEND */ - 195 , /* kEOL */ - 196 , /* kEXT */ - 197 , /* kFND */ - 198 , /* kHLP */ - 199 , /* kHOM */ - 200 , /* kIC */ - 201 , /* kLFT */ - 203 , /* kMOV */ - 202 , /* kMSG */ - 204 , /* kNXT */ - 205 , /* kOPT */ - 207 , /* kPRT */ - 206 , /* kPRV */ - 208 , /* kRDO */ - 211 , /* kRES */ - 210 , /* kRIT */ - 209 , /* kRPL */ - 212 , /* kSAV */ - 213 , /* kSPD */ - 214 , /* kUND */ - 139 , /* ka1 */ - 140 , /* ka3 */ - 141 , /* kb2 */ - 158 , /* kbeg */ - 55 , /* kbs */ - 142 , /* kc1 */ - 143 , /* kc3 */ - 159 , /* kcan */ - 148 , /* kcbt */ - 160 , /* kclo */ - 57 , /* kclr */ - 161 , /* kcmd */ - 162 , /* kcpy */ - 163 , /* kcrt */ - 58 , /* kctab */ - 79 , /* kcub1 */ - 61 , /* kcud1 */ - 83 , /* kcuf1 */ - 87 , /* kcuu1 */ - 59 , /* kdch1 */ - 60 , /* kdl1 */ - 64 , /* ked */ - 63 , /* kel */ - 164 , /* kend */ - 165 , /* kent */ - 166 , /* kext */ - 65 , /* kf0 */ - 66 , /* kf1 */ - 67 , /* kf10 */ - 216 , /* kf11 */ - 217 , /* kf12 */ - 218 , /* kf13 */ - 219 , /* kf14 */ - 220 , /* kf15 */ - 221 , /* kf16 */ - 222 , /* kf17 */ - 223 , /* kf18 */ - 224 , /* kf19 */ - 68 , /* kf2 */ - 225 , /* kf20 */ - 226 , /* kf21 */ - 227 , /* kf22 */ - 228 , /* kf23 */ - 229 , /* kf24 */ - 230 , /* kf25 */ - 231 , /* kf26 */ - 232 , /* kf27 */ - 233 , /* kf28 */ - 234 , /* kf29 */ - 69 , /* kf3 */ - 235 , /* kf30 */ - 236 , /* kf31 */ - 237 , /* kf32 */ - 238 , /* kf33 */ - 239 , /* kf34 */ - 240 , /* kf35 */ - 241 , /* kf36 */ - 242 , /* kf37 */ - 243 , /* kf38 */ - 244 , /* kf39 */ - 70 , /* kf4 */ - 245 , /* kf40 */ - 246 , /* kf41 */ - 247 , /* kf42 */ - 248 , /* kf43 */ - 249 , /* kf44 */ - 250 , /* kf45 */ - 251 , /* kf46 */ - 252 , /* kf47 */ - 253 , /* kf48 */ - 254 , /* kf49 */ - 71 , /* kf5 */ - 255 , /* kf50 */ - 256 , /* kf51 */ - 257 , /* kf52 */ - 258 , /* kf53 */ - 259 , /* kf54 */ - 260 , /* kf55 */ - 261 , /* kf56 */ - 262 , /* kf57 */ - 263 , /* kf58 */ - 264 , /* kf59 */ - 72 , /* kf6 */ - 265 , /* kf60 */ - 266 , /* kf61 */ - 267 , /* kf62 */ - 268 , /* kf63 */ - 73 , /* kf7 */ - 74 , /* kf8 */ - 75 , /* kf9 */ - 167 , /* kfnd */ - 168 , /* khlp */ - 76 , /* khome */ - 86 , /* khts */ - 77 , /* kich1 */ - 78 , /* kil1 */ - 84 , /* kind */ - 80 , /* kll */ - 355 , /* kmous */ - 171 , /* kmov */ - 169 , /* kmrk */ - 170 , /* kmsg */ - 81 , /* knp */ - 172 , /* knxt */ - 173 , /* kopn */ - 174 , /* kopt */ - 82 , /* kpp */ - 176 , /* kprt */ - 175 , /* kprv */ - 177 , /* krdo */ - 178 , /* kref */ - 182 , /* kres */ - 179 , /* krfr */ - 85 , /* kri */ - 62 , /* krmir */ - 180 , /* krpl */ - 181 , /* krst */ - 183 , /* ksav */ - 193 , /* kslt */ - 184 , /* kspd */ - 56 , /* ktbc */ - 185 , /* kund */ - 90 , /* lf0 */ - 91 , /* lf1 */ - 92 , /* lf10 */ - 93 , /* lf2 */ - 94 , /* lf3 */ - 95 , /* lf4 */ - 96 , /* lf5 */ - 97 , /* lf6 */ - 98 , /* lf7 */ - 99 , /* lf8 */ - 100 , /* lf9 */ - 18 , /* ll */ - 305 , /* lpi */ - 118 , /* mc0 */ - 119 , /* mc4 */ - 120 , /* mc5 */ - 144 , /* mc5p */ - 336 , /* mcub */ - 330 , /* mcub1 */ - 335 , /* mcud */ - 329 , /* mcud1 */ - 337 , /* mcuf */ - 331 , /* mcuf1 */ - 338 , /* mcuu */ - 333 , /* mcuu1 */ - 411 , /* meml */ - 412 , /* memu */ - 270 , /* mgc */ - 328 , /* mhpa */ - 356 , /* minfo */ - 15 , /* mrcup */ - 332 , /* mvpa */ - 103 , /* nel */ - 298 , /* oc */ - 297 , /* op */ - 104 , /* pad */ - 285 , /* pause */ - 383 , /* pctrm */ - 115 , /* pfkey */ - 116 , /* pfloc */ - 117 , /* pfx */ - 361 , /* pfxl */ - 147 , /* pln */ - 334 , /* porder */ - 33 , /* prot */ - 283 , /* pulse */ - 281 , /* qdial */ - 348 , /* rbim */ - 126 , /* rc */ - 349 , /* rcsd */ - 121 , /* rep */ - 357 , /* reqmp */ - 34 , /* rev */ - 125 , /* rf */ - 215 , /* rfi */ - 130 , /* ri */ - 113 , /* rin */ - 321 , /* ritm */ - 322 , /* rlm */ - 38 , /* rmacs */ - 152 , /* rmam */ - 276 , /* rmclk */ - 40 , /* rmcup */ - 41 , /* rmdc */ - 323 , /* rmicm */ - 42 , /* rmir */ - 88 , /* rmkx */ - 157 , /* rmln */ - 101 , /* rmm */ - 145 , /* rmp */ - 380 , /* rmpch */ - 382 , /* rmsc */ - 43 , /* rmso */ - 44 , /* rmul */ - 150 , /* rmxon */ - 122 , /* rs1 */ - 123 , /* rs2 */ - 124 , /* rs3 */ - 324 , /* rshm */ - 325 , /* rsubm */ - 326 , /* rsupm */ - 327 , /* rum */ - 320 , /* rwidm */ - 364 , /* s0ds */ - 365 , /* s1ds */ - 366 , /* s2ds */ - 367 , /* s3ds */ - 346 , /* sbim */ - 128 , /* sc */ - 385 , /* scesa */ - 384 , /* scesc */ - 274 , /* sclk */ - 301 , /* scp */ - 339 , /* scs */ - 347 , /* scsd */ - 310 , /* sdrfq */ - 360 , /* setab */ - 359 , /* setaf */ - 303 , /* setb */ - 376 , /* setcolor */ - 302 , /* setf */ - 131 , /* sgr */ - 39 , /* sgr0 */ - 392 , /* sgr1 */ - 311 , /* sitm */ - 393 , /* slength */ - 377 , /* slines */ - 312 , /* slm */ - 25 , /* smacs */ - 151 , /* smam */ - 28 , /* smcup */ - 29 , /* smdc */ - 340 , /* smgb */ - 341 , /* smgbp */ - 271 , /* smgl */ - 342 , /* smglp */ - 368 , /* smglr */ - 272 , /* smgr */ - 343 , /* smgrp */ - 344 , /* smgt */ - 369 , /* smgtb */ - 345 , /* smgtp */ - 313 , /* smicm */ - 31 , /* smir */ - 89 , /* smkx */ - 156 , /* smln */ - 102 , /* smm */ - 379 , /* smpch */ - 381 , /* smsc */ - 35 , /* smso */ - 36 , /* smul */ - 149 , /* smxon */ - 314 , /* snlq */ - 315 , /* snrmq */ - 316 , /* sshm */ - 317 , /* ssubm */ - 318 , /* ssupm */ - 350 , /* subcs */ - 319 , /* sum */ - 351 , /* supcs */ - 309 , /* swidm */ - 4 , /* tbc */ - 282 , /* tone */ - 135 , /* tsl */ - 287 , /* u0 */ - 288 , /* u1 */ - 289 , /* u2 */ - 290 , /* u3 */ - 291 , /* u4 */ - 292 , /* u5 */ - 293 , /* u6 */ - 294 , /* u7 */ - 295 , /* u8 */ - 296 , /* u9 */ - 136 , /* uc */ - 127 , /* vpa */ - 286 , /* wait */ - 133 , /* wind */ - 278 , /* wingo */ - 154 , /* xoffc */ - 153 , /* xonc */ - 353 , /* zerom */ -}; - -static const PredIdx bool_variable_sort[] = { - 0 , /* auto_left_margin */ - 1 , /* auto_right_margin */ - 28 , /* back_color_erase */ - 37 , /* backspaces_with_bs */ - 27 , /* can_change */ - 3 , /* ceol_standout_glitch */ - 30 , /* col_addr_glitch */ - 35 , /* cpi_changes_res */ - 31 , /* cr_cancels_micro_mode */ - 38 , /* crt_no_scrolling */ - 17 , /* dest_tabs_magic_smso */ - 4 , /* eat_newline_glitch */ - 5 , /* erase_overstrike */ - 6 , /* generic_type */ - 40 , /* gnu_has_meta_key */ - 7 , /* hard_copy */ - 23 , /* hard_cursor */ - 42 , /* has_hardware_tabs */ - 8 , /* has_meta_key */ - 32 , /* has_print_wheel */ - 9 , /* has_status_line */ - 29 , /* hue_lightness_saturation */ - 10 , /* insert_null_glitch */ - 41 , /* linefeed_is_newline */ - 36 , /* lpi_changes_res */ - 11 , /* memory_above */ - 12 , /* memory_below */ - 13 , /* move_insert_mode */ - 14 , /* move_standout_mode */ - 21 , /* needs_xon_xoff */ - 39 , /* no_correctly_working_cr */ - 2 , /* no_esc_ctlc */ - 25 , /* no_pad_char */ - 26 , /* non_dest_scroll_region */ - 24 , /* non_rev_rmcup */ - 15 , /* over_strike */ - 22 , /* prtr_silent */ - 43 , /* return_does_clr_eol */ - 33 , /* row_addr_glitch */ - 34 , /* semi_auto_right_margin */ - 16 , /* status_line_esc_ok */ - 18 , /* tilde_glitch */ - 19 , /* transparent_underline */ - 20 , /* xon_xoff */ -}; - -static const PredIdx num_variable_sort[] = { - 36 , /* backspace_delay */ - 31 , /* bit_image_entwining */ - 32 , /* bit_image_type */ - 16 , /* buffer_capacity */ - 30 , /* buttons */ - 34 , /* carriage_return_delay */ - 0 , /* columns */ - 18 , /* dot_horz_spacing */ - 17 , /* dot_vert_spacing */ - 37 , /* horizontal_tab_delay */ - 1 , /* init_tabs */ - 9 , /* label_height */ - 10 , /* label_width */ - 2 , /* lines */ - 3 , /* lines_of_memory */ - 4 , /* magic_cookie_glitch */ - 33 , /* magic_cookie_glitch_ul */ - 11 , /* max_attributes */ - 13 , /* max_colors */ - 19 , /* max_micro_address */ - 20 , /* max_micro_jump */ - 14 , /* max_pairs */ - 12 , /* maximum_windows */ - 21 , /* micro_col_size */ - 22 , /* micro_line_size */ - 35 , /* new_line_delay */ - 15 , /* no_color_video */ - 8 , /* num_labels */ - 38 , /* number_of_function_keys */ - 23 , /* number_of_pins */ - 24 , /* output_res_char */ - 26 , /* output_res_horz_inch */ - 25 , /* output_res_line */ - 27 , /* output_res_vert_inch */ - 5 , /* padding_baud_rate */ - 28 , /* print_rate */ - 6 , /* virtual_terminal */ - 29 , /* wide_char_size */ - 7 , /* width_status_line */ -}; - -static const PredIdx str_variable_sort[] = { - 406 , /* acs_btee */ - 146 , /* acs_chars */ - 408 , /* acs_hline */ - 401 , /* acs_llcorner */ - 403 , /* acs_lrcorner */ - 404 , /* acs_ltee */ - 410 , /* acs_plus */ - 405 , /* acs_rtee */ - 407 , /* acs_ttee */ - 400 , /* acs_ulcorner */ - 402 , /* acs_urcorner */ - 409 , /* acs_vline */ - 385 , /* alt_scancode_esc */ - 399 , /* arrow_key_map */ - 0 , /* back_tab */ - 397 , /* backspace_if_not_bs */ - 1 , /* bell */ - 372 , /* bit_image_carriage_return */ - 371 , /* bit_image_newline */ - 370 , /* bit_image_repeat */ - 413 , /* box_chars_1 */ - 2 , /* carriage_return */ - 304 , /* change_char_pitch */ - 305 , /* change_line_pitch */ - 306 , /* change_res_horz */ - 307 , /* change_res_vert */ - 3 , /* change_scroll_region */ - 145 , /* char_padding */ - 354 , /* char_set_names */ - 4 , /* clear_all_tabs */ - 270 , /* clear_margins */ - 5 , /* clear_screen */ - 269 , /* clr_bol */ - 6 , /* clr_eol */ - 7 , /* clr_eos */ - 363 , /* code_set_init */ - 373 , /* color_names */ - 8 , /* column_address */ - 9 , /* command_character */ - 277 , /* create_window */ - 10 , /* cursor_address */ - 11 , /* cursor_down */ - 12 , /* cursor_home */ - 13 , /* cursor_invisible */ - 14 , /* cursor_left */ - 15 , /* cursor_mem_address */ - 16 , /* cursor_normal */ - 17 , /* cursor_right */ - 18 , /* cursor_to_ll */ - 19 , /* cursor_up */ - 20 , /* cursor_visible */ - 374 , /* define_bit_image_region */ - 308 , /* define_char */ - 21 , /* delete_character */ - 22 , /* delete_line */ - 362 , /* device_type */ - 280 , /* dial_phone */ - 23 , /* dis_status_line */ - 275 , /* display_clock */ - 378 , /* display_pc_char */ - 24 , /* down_half_line */ - 155 , /* ena_acs */ - 375 , /* end_bit_image_region */ - 25 , /* enter_alt_charset_mode */ - 151 , /* enter_am_mode */ - 26 , /* enter_blink_mode */ - 27 , /* enter_bold_mode */ - 28 , /* enter_ca_mode */ - 29 , /* enter_delete_mode */ - 30 , /* enter_dim_mode */ - 309 , /* enter_doublewide_mode */ - 310 , /* enter_draft_quality */ - 386 , /* enter_horizontal_hl_mode */ - 31 , /* enter_insert_mode */ - 311 , /* enter_italics_mode */ - 387 , /* enter_left_hl_mode */ - 312 , /* enter_leftward_mode */ - 388 , /* enter_low_hl_mode */ - 313 , /* enter_micro_mode */ - 314 , /* enter_near_letter_quality */ - 315 , /* enter_normal_quality */ - 379 , /* enter_pc_charset_mode */ - 33 , /* enter_protected_mode */ - 34 , /* enter_reverse_mode */ - 389 , /* enter_right_hl_mode */ - 381 , /* enter_scancode_mode */ - 32 , /* enter_secure_mode */ - 316 , /* enter_shadow_mode */ - 35 , /* enter_standout_mode */ - 317 , /* enter_subscript_mode */ - 318 , /* enter_superscript_mode */ - 390 , /* enter_top_hl_mode */ - 36 , /* enter_underline_mode */ - 319 , /* enter_upward_mode */ - 391 , /* enter_vertical_hl_mode */ - 149 , /* enter_xon_mode */ - 37 , /* erase_chars */ - 38 , /* exit_alt_charset_mode */ - 152 , /* exit_am_mode */ - 39 , /* exit_attribute_mode */ - 40 , /* exit_ca_mode */ - 41 , /* exit_delete_mode */ - 320 , /* exit_doublewide_mode */ - 42 , /* exit_insert_mode */ - 321 , /* exit_italics_mode */ - 322 , /* exit_leftward_mode */ - 323 , /* exit_micro_mode */ - 380 , /* exit_pc_charset_mode */ - 382 , /* exit_scancode_mode */ - 324 , /* exit_shadow_mode */ - 43 , /* exit_standout_mode */ - 325 , /* exit_subscript_mode */ - 326 , /* exit_superscript_mode */ - 44 , /* exit_underline_mode */ - 327 , /* exit_upward_mode */ - 150 , /* exit_xon_mode */ - 285 , /* fixed_pause */ - 284 , /* flash_hook */ - 45 , /* flash_screen */ - 46 , /* form_feed */ - 47 , /* from_status_line */ - 358 , /* get_mouse */ - 278 , /* goto_window */ - 279 , /* hangup */ - 48 , /* init_1string */ - 49 , /* init_2string */ - 50 , /* init_3string */ - 51 , /* init_file */ - 138 , /* init_prog */ - 299 , /* initialize_color */ - 300 , /* initialize_pair */ - 52 , /* insert_character */ - 53 , /* insert_line */ - 54 , /* insert_padding */ - 139 , /* key_a1 */ - 140 , /* key_a3 */ - 141 , /* key_b2 */ - 55 , /* key_backspace */ - 158 , /* key_beg */ - 148 , /* key_btab */ - 142 , /* key_c1 */ - 143 , /* key_c3 */ - 159 , /* key_cancel */ - 56 , /* key_catab */ - 57 , /* key_clear */ - 160 , /* key_close */ - 161 , /* key_command */ - 162 , /* key_copy */ - 163 , /* key_create */ - 58 , /* key_ctab */ - 59 , /* key_dc */ - 60 , /* key_dl */ - 61 , /* key_down */ - 62 , /* key_eic */ - 164 , /* key_end */ - 165 , /* key_enter */ - 63 , /* key_eol */ - 64 , /* key_eos */ - 166 , /* key_exit */ - 65 , /* key_f0 */ - 66 , /* key_f1 */ - 67 , /* key_f10 */ - 216 , /* key_f11 */ - 217 , /* key_f12 */ - 218 , /* key_f13 */ - 219 , /* key_f14 */ - 220 , /* key_f15 */ - 221 , /* key_f16 */ - 222 , /* key_f17 */ - 223 , /* key_f18 */ - 224 , /* key_f19 */ - 68 , /* key_f2 */ - 225 , /* key_f20 */ - 226 , /* key_f21 */ - 227 , /* key_f22 */ - 228 , /* key_f23 */ - 229 , /* key_f24 */ - 230 , /* key_f25 */ - 231 , /* key_f26 */ - 232 , /* key_f27 */ - 233 , /* key_f28 */ - 234 , /* key_f29 */ - 69 , /* key_f3 */ - 235 , /* key_f30 */ - 236 , /* key_f31 */ - 237 , /* key_f32 */ - 238 , /* key_f33 */ - 239 , /* key_f34 */ - 240 , /* key_f35 */ - 241 , /* key_f36 */ - 242 , /* key_f37 */ - 243 , /* key_f38 */ - 244 , /* key_f39 */ - 70 , /* key_f4 */ - 245 , /* key_f40 */ - 246 , /* key_f41 */ - 247 , /* key_f42 */ - 248 , /* key_f43 */ - 249 , /* key_f44 */ - 250 , /* key_f45 */ - 251 , /* key_f46 */ - 252 , /* key_f47 */ - 253 , /* key_f48 */ - 254 , /* key_f49 */ - 71 , /* key_f5 */ - 255 , /* key_f50 */ - 256 , /* key_f51 */ - 257 , /* key_f52 */ - 258 , /* key_f53 */ - 259 , /* key_f54 */ - 260 , /* key_f55 */ - 261 , /* key_f56 */ - 262 , /* key_f57 */ - 263 , /* key_f58 */ - 264 , /* key_f59 */ - 72 , /* key_f6 */ - 265 , /* key_f60 */ - 266 , /* key_f61 */ - 267 , /* key_f62 */ - 268 , /* key_f63 */ - 73 , /* key_f7 */ - 74 , /* key_f8 */ - 75 , /* key_f9 */ - 167 , /* key_find */ - 168 , /* key_help */ - 76 , /* key_home */ - 77 , /* key_ic */ - 78 , /* key_il */ - 79 , /* key_left */ - 80 , /* key_ll */ - 169 , /* key_mark */ - 170 , /* key_message */ - 355 , /* key_mouse */ - 171 , /* key_move */ - 172 , /* key_next */ - 81 , /* key_npage */ - 173 , /* key_open */ - 174 , /* key_options */ - 82 , /* key_ppage */ - 175 , /* key_previous */ - 176 , /* key_print */ - 177 , /* key_redo */ - 178 , /* key_reference */ - 179 , /* key_refresh */ - 180 , /* key_replace */ - 181 , /* key_restart */ - 182 , /* key_resume */ - 83 , /* key_right */ - 183 , /* key_save */ - 186 , /* key_sbeg */ - 187 , /* key_scancel */ - 188 , /* key_scommand */ - 189 , /* key_scopy */ - 190 , /* key_screate */ - 191 , /* key_sdc */ - 192 , /* key_sdl */ - 193 , /* key_select */ - 194 , /* key_send */ - 195 , /* key_seol */ - 196 , /* key_sexit */ - 84 , /* key_sf */ - 197 , /* key_sfind */ - 198 , /* key_shelp */ - 199 , /* key_shome */ - 200 , /* key_sic */ - 201 , /* key_sleft */ - 202 , /* key_smessage */ - 203 , /* key_smove */ - 204 , /* key_snext */ - 205 , /* key_soptions */ - 206 , /* key_sprevious */ - 207 , /* key_sprint */ - 85 , /* key_sr */ - 208 , /* key_sredo */ - 209 , /* key_sreplace */ - 210 , /* key_sright */ - 211 , /* key_srsume */ - 212 , /* key_ssave */ - 213 , /* key_ssuspend */ - 86 , /* key_stab */ - 214 , /* key_sundo */ - 184 , /* key_suspend */ - 185 , /* key_undo */ - 87 , /* key_up */ - 88 , /* keypad_local */ - 89 , /* keypad_xmit */ - 90 , /* lab_f0 */ - 91 , /* lab_f1 */ - 92 , /* lab_f10 */ - 93 , /* lab_f2 */ - 94 , /* lab_f3 */ - 95 , /* lab_f4 */ - 96 , /* lab_f5 */ - 97 , /* lab_f6 */ - 98 , /* lab_f7 */ - 99 , /* lab_f8 */ - 100 , /* lab_f9 */ - 273 , /* label_format */ - 157 , /* label_off */ - 156 , /* label_on */ - 396 , /* linefeed_if_not_lf */ - 411 , /* memory_lock */ - 412 , /* memory_unlock */ - 101 , /* meta_off */ - 102 , /* meta_on */ - 328 , /* micro_column_address */ - 329 , /* micro_down */ - 330 , /* micro_left */ - 331 , /* micro_right */ - 332 , /* micro_row_address */ - 333 , /* micro_up */ - 356 , /* mouse_info */ - 103 , /* newline */ - 334 , /* order_of_pins */ - 298 , /* orig_colors */ - 297 , /* orig_pair */ - 398 , /* other_non_function_keys */ - 104 , /* pad_char */ - 105 , /* parm_dch */ - 106 , /* parm_delete_line */ - 107 , /* parm_down_cursor */ - 335 , /* parm_down_micro */ - 108 , /* parm_ich */ - 109 , /* parm_index */ - 110 , /* parm_insert_line */ - 111 , /* parm_left_cursor */ - 336 , /* parm_left_micro */ - 112 , /* parm_right_cursor */ - 337 , /* parm_right_micro */ - 113 , /* parm_rindex */ - 114 , /* parm_up_cursor */ - 338 , /* parm_up_micro */ - 383 , /* pc_term_options */ - 115 , /* pkey_key */ - 116 , /* pkey_local */ - 361 , /* pkey_plab */ - 117 , /* pkey_xmit */ - 147 , /* plab_norm */ - 118 , /* print_screen */ - 144 , /* prtr_non */ - 119 , /* prtr_off */ - 120 , /* prtr_on */ - 283 , /* pulse */ - 281 , /* quick_dial */ - 276 , /* remove_clock */ - 121 , /* repeat_char */ - 215 , /* req_for_input */ - 357 , /* req_mouse_pos */ - 122 , /* reset_1string */ - 123 , /* reset_2string */ - 124 , /* reset_3string */ - 125 , /* reset_file */ - 126 , /* restore_cursor */ - 127 , /* row_address */ - 128 , /* save_cursor */ - 384 , /* scancode_escape */ - 129 , /* scroll_forward */ - 130 , /* scroll_reverse */ - 339 , /* select_char_set */ - 364 , /* set0_des_seq */ - 365 , /* set1_des_seq */ - 366 , /* set2_des_seq */ - 367 , /* set3_des_seq */ - 392 , /* set_a_attributes */ - 360 , /* set_a_background */ - 359 , /* set_a_foreground */ - 131 , /* set_attributes */ - 303 , /* set_background */ - 340 , /* set_bottom_margin */ - 341 , /* set_bottom_margin_parm */ - 274 , /* set_clock */ - 376 , /* set_color_band */ - 301 , /* set_color_pair */ - 302 , /* set_foreground */ - 271 , /* set_left_margin */ - 342 , /* set_left_margin_parm */ - 368 , /* set_lr_margin */ - 377 , /* set_page_length */ - 393 , /* set_pglen_inch */ - 272 , /* set_right_margin */ - 343 , /* set_right_margin_parm */ - 132 , /* set_tab */ - 369 , /* set_tb_margin */ - 344 , /* set_top_margin */ - 345 , /* set_top_margin_parm */ - 133 , /* set_window */ - 346 , /* start_bit_image */ - 347 , /* start_char_set_def */ - 348 , /* stop_bit_image */ - 349 , /* stop_char_set_def */ - 350 , /* subscript_characters */ - 351 , /* superscript_characters */ - 134 , /* tab */ - 394 , /* termcap_init2 */ - 395 , /* termcap_reset */ - 352 , /* these_cause_cr */ - 135 , /* to_status_line */ - 282 , /* tone */ - 136 , /* underline_char */ - 137 , /* up_half_line */ - 287 , /* user0 */ - 288 , /* user1 */ - 289 , /* user2 */ - 290 , /* user3 */ - 291 , /* user4 */ - 292 , /* user5 */ - 293 , /* user6 */ - 294 , /* user7 */ - 295 , /* user8 */ - 296 , /* user9 */ - 286 , /* wait_tone */ - 154 , /* xoff_character */ - 153 , /* xon_character */ - 353 , /* zero_motion */ -}; - -static const PredIdx bool_termcap_sort[] = { - 22 , /* 5i */ - 23 , /* HC */ - 40 , /* MT */ - 26 , /* ND */ - 41 , /* NL */ - 25 , /* NP */ - 24 , /* NR */ - 30 , /* YA */ - 31 , /* YB */ - 32 , /* YC */ - 33 , /* YD */ - 34 , /* YE */ - 35 , /* YF */ - 36 , /* YG */ - 1 , /* am */ - 37 , /* bs */ - 0 , /* bw */ - 27 , /* cc */ - 11 , /* da */ - 12 , /* db */ - 5 , /* eo */ - 16 , /* es */ - 6 , /* gn */ - 7 , /* hc */ - 29 , /* hl */ - 9 , /* hs */ - 18 , /* hz */ - 10 , /* in */ - 8 , /* km */ - 13 , /* mi */ - 14 , /* ms */ - 39 , /* nc */ - 38 , /* ns */ - 21 , /* nx */ - 15 , /* os */ - 42 , /* pt */ - 19 , /* ul */ - 28 , /* ut */ - 2 , /* xb */ - 4 , /* xn */ - 20 , /* xo */ - 43 , /* xr */ - 3 , /* xs */ - 17 , /* xt */ -}; - -static const PredIdx num_termcap_sort[] = { - 30 , /* BT */ - 13 , /* Co */ - 12 , /* MW */ - 15 , /* NC */ - 8 , /* Nl */ - 16 , /* Ya */ - 17 , /* Yb */ - 18 , /* Yc */ - 19 , /* Yd */ - 20 , /* Ye */ - 21 , /* Yf */ - 22 , /* Yg */ - 23 , /* Yh */ - 24 , /* Yi */ - 25 , /* Yj */ - 26 , /* Yk */ - 27 , /* Yl */ - 28 , /* Ym */ - 29 , /* Yn */ - 31 , /* Yo */ - 32 , /* Yp */ - 0 , /* co */ - 36 , /* dB */ - 34 , /* dC */ - 35 , /* dN */ - 37 , /* dT */ - 1 , /* it */ - 38 , /* kn */ - 9 , /* lh */ - 2 , /* li */ - 3 , /* lm */ - 10 , /* lw */ - 11 , /* ma */ - 14 , /* pa */ - 5 , /* pb */ - 4 , /* sg */ - 33 , /* ug */ - 6 , /* vt */ - 7 , /* ws */ -}; - -static const PredIdx str_termcap_sort[] = { - 212 , /* !1 */ - 213 , /* !2 */ - 214 , /* !3 */ - 198 , /* #1 */ - 199 , /* #2 */ - 200 , /* #3 */ - 201 , /* #4 */ - 177 , /* %0 */ - 168 , /* %1 */ - 169 , /* %2 */ - 170 , /* %3 */ - 171 , /* %4 */ - 172 , /* %5 */ - 173 , /* %6 */ - 174 , /* %7 */ - 175 , /* %8 */ - 176 , /* %9 */ - 202 , /* %a */ - 203 , /* %b */ - 204 , /* %c */ - 205 , /* %d */ - 206 , /* %e */ - 207 , /* %f */ - 208 , /* %g */ - 209 , /* %h */ - 210 , /* %i */ - 211 , /* %j */ - 187 , /* &0 */ - 178 , /* &1 */ - 179 , /* &2 */ - 180 , /* &3 */ - 181 , /* &4 */ - 182 , /* &5 */ - 183 , /* &6 */ - 184 , /* &7 */ - 185 , /* &8 */ - 186 , /* &9 */ - 197 , /* *0 */ - 188 , /* *1 */ - 189 , /* *2 */ - 190 , /* *3 */ - 191 , /* *4 */ - 192 , /* *5 */ - 193 , /* *6 */ - 194 , /* *7 */ - 195 , /* *8 */ - 196 , /* *9 */ - 167 , /* @0 */ - 158 , /* @1 */ - 159 , /* @2 */ - 160 , /* @3 */ - 161 , /* @4 */ - 162 , /* @5 */ - 163 , /* @6 */ - 164 , /* @7 */ - 165 , /* @8 */ - 166 , /* @9 */ - 360 , /* AB */ - 359 , /* AF */ - 110 , /* AL */ - 9 , /* CC */ - 15 , /* CM */ - 277 , /* CW */ - 105 , /* DC */ - 280 , /* DI */ - 275 , /* DK */ - 106 , /* DL */ - 107 , /* DO */ - 216 , /* F1 */ - 217 , /* F2 */ - 218 , /* F3 */ - 219 , /* F4 */ - 220 , /* F5 */ - 221 , /* F6 */ - 222 , /* F7 */ - 223 , /* F8 */ - 224 , /* F9 */ - 225 , /* FA */ - 226 , /* FB */ - 227 , /* FC */ - 228 , /* FD */ - 229 , /* FE */ - 230 , /* FF */ - 231 , /* FG */ - 232 , /* FH */ - 233 , /* FI */ - 234 , /* FJ */ - 235 , /* FK */ - 236 , /* FL */ - 237 , /* FM */ - 238 , /* FN */ - 239 , /* FO */ - 240 , /* FP */ - 241 , /* FQ */ - 242 , /* FR */ - 243 , /* FS */ - 244 , /* FT */ - 245 , /* FU */ - 246 , /* FV */ - 247 , /* FW */ - 248 , /* FX */ - 249 , /* FY */ - 250 , /* FZ */ - 251 , /* Fa */ - 252 , /* Fb */ - 253 , /* Fc */ - 254 , /* Fd */ - 255 , /* Fe */ - 256 , /* Ff */ - 257 , /* Fg */ - 258 , /* Fh */ - 259 , /* Fi */ - 260 , /* Fj */ - 261 , /* Fk */ - 262 , /* Fl */ - 263 , /* Fm */ - 264 , /* Fn */ - 265 , /* Fo */ - 266 , /* Fp */ - 267 , /* Fq */ - 268 , /* Fr */ - 402 , /* G1 */ - 400 , /* G2 */ - 401 , /* G3 */ - 403 , /* G4 */ - 410 , /* GC */ - 407 , /* GD */ - 408 , /* GH */ - 405 , /* GL */ - 404 , /* GR */ - 406 , /* GU */ - 409 , /* GV */ - 358 , /* Gm */ - 279 , /* HU */ - 108 , /* IC */ - 299 , /* Ic */ - 300 , /* Ip */ - 139 , /* K1 */ - 141 , /* K2 */ - 140 , /* K3 */ - 142 , /* K4 */ - 143 , /* K5 */ - 355 , /* Km */ - 111 , /* LE */ - 157 , /* LF */ - 156 , /* LO */ - 273 , /* Lf */ - 270 , /* MC */ - 271 , /* ML */ - 368 , /* ML */ - 272 , /* MR */ - 369 , /* MT */ - 356 , /* Mi */ - 285 , /* PA */ - 283 , /* PU */ - 281 , /* QD */ - 152 , /* RA */ - 276 , /* RC */ - 215 , /* RF */ - 112 , /* RI */ - 357 , /* RQ */ - 150 , /* RX */ - 378 , /* S1 */ - 379 , /* S2 */ - 380 , /* S3 */ - 381 , /* S4 */ - 382 , /* S5 */ - 383 , /* S6 */ - 384 , /* S7 */ - 385 , /* S8 */ - 151 , /* SA */ - 274 , /* SC */ - 109 , /* SF */ - 113 , /* SR */ - 149 , /* SX */ - 303 , /* Sb */ - 302 , /* Sf */ - 282 , /* TO */ - 114 , /* UP */ - 286 , /* WA */ - 278 , /* WG */ - 154 , /* XF */ - 153 , /* XN */ - 386 , /* Xh */ - 387 , /* Xl */ - 388 , /* Xo */ - 389 , /* Xr */ - 390 , /* Xt */ - 391 , /* Xv */ - 370 , /* Xy */ - 377 , /* YZ */ - 372 , /* Yv */ - 373 , /* Yw */ - 374 , /* Yx */ - 375 , /* Yy */ - 376 , /* Yz */ - 304 , /* ZA */ - 305 , /* ZB */ - 306 , /* ZC */ - 307 , /* ZD */ - 308 , /* ZE */ - 309 , /* ZF */ - 310 , /* ZG */ - 311 , /* ZH */ - 312 , /* ZI */ - 313 , /* ZJ */ - 314 , /* ZK */ - 315 , /* ZL */ - 316 , /* ZM */ - 317 , /* ZN */ - 318 , /* ZO */ - 319 , /* ZP */ - 320 , /* ZQ */ - 321 , /* ZR */ - 322 , /* ZS */ - 323 , /* ZT */ - 324 , /* ZU */ - 325 , /* ZV */ - 326 , /* ZW */ - 327 , /* ZX */ - 328 , /* ZY */ - 329 , /* ZZ */ - 330 , /* Za */ - 331 , /* Zb */ - 332 , /* Zc */ - 333 , /* Zd */ - 334 , /* Ze */ - 335 , /* Zf */ - 336 , /* Zg */ - 337 , /* Zh */ - 338 , /* Zi */ - 339 , /* Zj */ - 340 , /* Zk */ - 341 , /* Zl */ - 342 , /* Zm */ - 343 , /* Zn */ - 344 , /* Zo */ - 345 , /* Zp */ - 346 , /* Zq */ - 347 , /* Zr */ - 348 , /* Zs */ - 349 , /* Zt */ - 350 , /* Zu */ - 351 , /* Zv */ - 352 , /* Zw */ - 353 , /* Zx */ - 354 , /* Zy */ - 371 , /* Zz */ - 146 , /* ac */ - 38 , /* ae */ - 53 , /* al */ - 25 , /* as */ - 397 , /* bc */ - 1 , /* bl */ - 0 , /* bt */ - 413 , /* bx */ - 269 , /* cb */ - 7 , /* cd */ - 6 , /* ce */ - 8 , /* ch */ - 363 , /* ci */ - 5 , /* cl */ - 10 , /* cm */ - 2 , /* cr */ - 3 , /* cs */ - 4 , /* ct */ - 127 , /* cv */ - 21 , /* dc */ - 22 , /* dl */ - 29 , /* dm */ - 11 , /* do */ - 23 , /* ds */ - 362 , /* dv */ - 155 , /* eA */ - 37 , /* ec */ - 41 , /* ed */ - 42 , /* ei */ - 46 , /* ff */ - 284 , /* fh */ - 47 , /* fs */ - 24 , /* hd */ - 12 , /* ho */ - 137 , /* hu */ - 48 , /* i1 */ - 394 , /* i2 */ - 50 , /* i3 */ - 138 , /* iP */ - 52 , /* ic */ - 51 , /* if */ - 31 , /* im */ - 54 , /* ip */ - 49 , /* is */ - 65 , /* k0 */ - 66 , /* k1 */ - 68 , /* k2 */ - 69 , /* k3 */ - 70 , /* k4 */ - 71 , /* k5 */ - 72 , /* k6 */ - 73 , /* k7 */ - 74 , /* k8 */ - 75 , /* k9 */ - 67 , /* k; */ - 78 , /* kA */ - 148 , /* kB */ - 57 , /* kC */ - 59 , /* kD */ - 63 , /* kE */ - 84 , /* kF */ - 80 , /* kH */ - 77 , /* kI */ - 60 , /* kL */ - 62 , /* kM */ - 81 , /* kN */ - 82 , /* kP */ - 85 , /* kR */ - 64 , /* kS */ - 86 , /* kT */ - 56 , /* ka */ - 55 , /* kb */ - 61 , /* kd */ - 88 , /* ke */ - 76 , /* kh */ - 79 , /* kl */ - 398 , /* ko */ - 83 , /* kr */ - 89 , /* ks */ - 58 , /* kt */ - 87 , /* ku */ - 90 , /* l0 */ - 91 , /* l1 */ - 93 , /* l2 */ - 94 , /* l3 */ - 95 , /* l4 */ - 96 , /* l5 */ - 97 , /* l6 */ - 98 , /* l7 */ - 99 , /* l8 */ - 100 , /* l9 */ - 92 , /* la */ - 14 , /* le */ - 18 , /* ll */ - 399 , /* ma */ - 26 , /* mb */ - 27 , /* md */ - 39 , /* me */ - 30 , /* mh */ - 32 , /* mk */ - 411 , /* ml */ - 102 , /* mm */ - 101 , /* mo */ - 33 , /* mp */ - 34 , /* mr */ - 412 , /* mu */ - 17 , /* nd */ - 396 , /* nl */ - 103 , /* nw */ - 298 , /* oc */ - 297 , /* op */ - 144 , /* pO */ - 104 , /* pc */ - 119 , /* pf */ - 115 , /* pk */ - 116 , /* pl */ - 147 , /* pn */ - 120 , /* po */ - 118 , /* ps */ - 117 , /* px */ - 122 , /* r1 */ - 123 , /* r2 */ - 124 , /* r3 */ - 145 , /* rP */ - 126 , /* rc */ - 125 , /* rf */ - 121 , /* rp */ - 395 , /* rs */ - 364 , /* s0 */ - 365 , /* s1 */ - 366 , /* s2 */ - 367 , /* s3 */ - 392 , /* sA */ - 393 , /* sL */ - 131 , /* sa */ - 128 , /* sc */ - 43 , /* se */ - 129 , /* sf */ - 35 , /* so */ - 301 , /* sp */ - 130 , /* sr */ - 132 , /* st */ - 134 , /* ta */ - 40 , /* te */ - 28 , /* ti */ - 135 , /* ts */ - 287 , /* u0 */ - 288 , /* u1 */ - 289 , /* u2 */ - 290 , /* u3 */ - 291 , /* u4 */ - 292 , /* u5 */ - 293 , /* u6 */ - 294 , /* u7 */ - 295 , /* u8 */ - 296 , /* u9 */ - 136 , /* uc */ - 44 , /* ue */ - 19 , /* up */ - 36 , /* us */ - 45 , /* vb */ - 16 , /* ve */ - 13 , /* vi */ - 20 , /* vs */ - 133 , /* wi */ - 361 , /* xl */ -}; - -static const bool bool_from_termcap[] = { - TRUE, /* bw */ - TRUE, /* am */ - TRUE, /* xsb */ - TRUE, /* xhp */ - TRUE, /* xenl */ - TRUE, /* eo */ - TRUE, /* gn */ - TRUE, /* hc */ - TRUE, /* km */ - TRUE, /* hs */ - TRUE, /* in */ - TRUE, /* da */ - TRUE, /* db */ - TRUE, /* mir */ - TRUE, /* msgr */ - TRUE, /* os */ - TRUE, /* eslok */ - TRUE, /* xt */ - TRUE, /* hz */ - TRUE, /* ul */ - TRUE, /* xon */ - FALSE, /* nxon */ - FALSE, /* mc5i */ - FALSE, /* chts */ - FALSE, /* nrrmc */ - FALSE, /* npc */ - FALSE, /* ndscr */ - FALSE, /* ccc */ - FALSE, /* bce */ - FALSE, /* hls */ - FALSE, /* xhpa */ - FALSE, /* crxm */ - FALSE, /* daisy */ - FALSE, /* xvpa */ - FALSE, /* sam */ - FALSE, /* cpix */ - FALSE, /* lpix */ - TRUE, /* OTbs */ - TRUE, /* OTns */ - TRUE, /* OTnc */ - FALSE, /* OTMT */ - TRUE, /* OTNL */ - TRUE, /* OTpt */ - TRUE, /* OTxr */ -}; - -static const bool num_from_termcap[] = { - TRUE, /* cols */ - TRUE, /* it */ - TRUE, /* lines */ - TRUE, /* lm */ - TRUE, /* xmc */ - TRUE, /* pb */ - TRUE, /* vt */ - TRUE, /* wsl */ - FALSE, /* nlab */ - FALSE, /* lh */ - FALSE, /* lw */ - TRUE, /* ma */ - FALSE, /* wnum */ - FALSE, /* colors */ - FALSE, /* pairs */ - FALSE, /* ncv */ - FALSE, /* bufsz */ - FALSE, /* spinv */ - FALSE, /* spinh */ - FALSE, /* maddr */ - FALSE, /* mjump */ - FALSE, /* mcs */ - FALSE, /* mls */ - FALSE, /* npins */ - FALSE, /* orc */ - FALSE, /* orl */ - FALSE, /* orhi */ - FALSE, /* orvi */ - FALSE, /* cps */ - FALSE, /* widcs */ - FALSE, /* btns */ - FALSE, /* bitwin */ - FALSE, /* bitype */ - TRUE, /* OTug */ - TRUE, /* OTdC */ - TRUE, /* OTdN */ - TRUE, /* OTdB */ - TRUE, /* OTdT */ - FALSE, /* OTkn */ -}; - -static const bool str_from_termcap[] = { - TRUE, /* cbt */ - TRUE, /* bel */ - TRUE, /* cr */ - TRUE, /* csr */ - TRUE, /* tbc */ - TRUE, /* clear */ - TRUE, /* el */ - TRUE, /* ed */ - FALSE, /* hpa */ - TRUE, /* cmdch */ - TRUE, /* cup */ - TRUE, /* cud1 */ - TRUE, /* home */ - TRUE, /* civis */ - TRUE, /* cub1 */ - TRUE, /* mrcup */ - TRUE, /* cnorm */ - TRUE, /* cuf1 */ - TRUE, /* ll */ - TRUE, /* cuu1 */ - TRUE, /* cvvis */ - TRUE, /* dch1 */ - TRUE, /* dl1 */ - TRUE, /* dsl */ - TRUE, /* hd */ - TRUE, /* smacs */ - TRUE, /* blink */ - TRUE, /* bold */ - TRUE, /* smcup */ - TRUE, /* smdc */ - TRUE, /* dim */ - TRUE, /* smir */ - FALSE, /* invis */ - FALSE, /* prot */ - TRUE, /* rev */ - TRUE, /* smso */ - TRUE, /* smul */ - TRUE, /* ech */ - TRUE, /* rmacs */ - TRUE, /* sgr0 */ - TRUE, /* rmcup */ - TRUE, /* rmdc */ - TRUE, /* rmir */ - TRUE, /* rmso */ - TRUE, /* rmul */ - TRUE, /* flash */ - TRUE, /* ff */ - TRUE, /* fsl */ - TRUE, /* is1 */ - TRUE, /* is2 */ - TRUE, /* is3 */ - TRUE, /* if */ - TRUE, /* ich1 */ - TRUE, /* il1 */ - TRUE, /* ip */ - TRUE, /* kbs */ - FALSE, /* ktbc */ - FALSE, /* kclr */ - FALSE, /* kctab */ - TRUE, /* kdch1 */ - FALSE, /* kdl1 */ - TRUE, /* kcud1 */ - FALSE, /* krmir */ - FALSE, /* kel */ - FALSE, /* ked */ - TRUE, /* kf0 */ - TRUE, /* kf1 */ - FALSE, /* kf10 */ - TRUE, /* kf2 */ - TRUE, /* kf3 */ - TRUE, /* kf4 */ - TRUE, /* kf5 */ - TRUE, /* kf6 */ - TRUE, /* kf7 */ - TRUE, /* kf8 */ - TRUE, /* kf9 */ - TRUE, /* khome */ - TRUE, /* kich1 */ - FALSE, /* kil1 */ - TRUE, /* kcub1 */ - TRUE, /* kll */ - TRUE, /* knp */ - TRUE, /* kpp */ - TRUE, /* kcuf1 */ - FALSE, /* kind */ - FALSE, /* kri */ - FALSE, /* khts */ - TRUE, /* kcuu1 */ - TRUE, /* rmkx */ - TRUE, /* smkx */ - FALSE, /* lf0 */ - FALSE, /* lf1 */ - FALSE, /* lf10 */ - FALSE, /* lf2 */ - FALSE, /* lf3 */ - FALSE, /* lf4 */ - FALSE, /* lf5 */ - FALSE, /* lf6 */ - FALSE, /* lf7 */ - FALSE, /* lf8 */ - FALSE, /* lf9 */ - TRUE, /* rmm */ - TRUE, /* smm */ - TRUE, /* nel */ - TRUE, /* pad */ - TRUE, /* dch */ - TRUE, /* dl */ - TRUE, /* cud */ - TRUE, /* ich */ - TRUE, /* indn */ - TRUE, /* il */ - TRUE, /* cub */ - TRUE, /* cuf */ - TRUE, /* rin */ - TRUE, /* cuu */ - FALSE, /* pfkey */ - FALSE, /* pfloc */ - FALSE, /* pfx */ - FALSE, /* mc0 */ - FALSE, /* mc4 */ - FALSE, /* mc5 */ - TRUE, /* rep */ - FALSE, /* rs1 */ - FALSE, /* rs2 */ - FALSE, /* rs3 */ - FALSE, /* rf */ - TRUE, /* rc */ - FALSE, /* vpa */ - TRUE, /* sc */ - TRUE, /* ind */ - TRUE, /* ri */ - TRUE, /* sgr */ - TRUE, /* hts */ - FALSE, /* wind */ - TRUE, /* ht */ - TRUE, /* tsl */ - TRUE, /* uc */ - TRUE, /* hu */ - FALSE, /* iprog */ - TRUE, /* ka1 */ - TRUE, /* ka3 */ - TRUE, /* kb2 */ - TRUE, /* kc1 */ - TRUE, /* kc3 */ - FALSE, /* mc5p */ - FALSE, /* rmp */ - FALSE, /* acsc */ - FALSE, /* pln */ - FALSE, /* kcbt */ - FALSE, /* smxon */ - FALSE, /* rmxon */ - FALSE, /* smam */ - FALSE, /* rmam */ - FALSE, /* xonc */ - FALSE, /* xoffc */ - FALSE, /* enacs */ - FALSE, /* smln */ - FALSE, /* rmln */ - FALSE, /* kbeg */ - FALSE, /* kcan */ - FALSE, /* kclo */ - FALSE, /* kcmd */ - FALSE, /* kcpy */ - FALSE, /* kcrt */ - FALSE, /* kend */ - FALSE, /* kent */ - FALSE, /* kext */ - FALSE, /* kfnd */ - FALSE, /* khlp */ - FALSE, /* kmrk */ - FALSE, /* kmsg */ - FALSE, /* kmov */ - FALSE, /* knxt */ - FALSE, /* kopn */ - FALSE, /* kopt */ - FALSE, /* kprv */ - FALSE, /* kprt */ - FALSE, /* krdo */ - FALSE, /* kref */ - FALSE, /* krfr */ - FALSE, /* krpl */ - FALSE, /* krst */ - FALSE, /* kres */ - FALSE, /* ksav */ - FALSE, /* kspd */ - FALSE, /* kund */ - FALSE, /* kBEG */ - FALSE, /* kCAN */ - FALSE, /* kCMD */ - FALSE, /* kCPY */ - FALSE, /* kCRT */ - FALSE, /* kDC */ - FALSE, /* kDL */ - FALSE, /* kslt */ - FALSE, /* kEND */ - FALSE, /* kEOL */ - FALSE, /* kEXT */ - FALSE, /* kFND */ - FALSE, /* kHLP */ - FALSE, /* kHOM */ - FALSE, /* kIC */ - FALSE, /* kLFT */ - FALSE, /* kMSG */ - FALSE, /* kMOV */ - FALSE, /* kNXT */ - FALSE, /* kOPT */ - FALSE, /* kPRV */ - FALSE, /* kPRT */ - FALSE, /* kRDO */ - FALSE, /* kRPL */ - FALSE, /* kRIT */ - FALSE, /* kRES */ - FALSE, /* kSAV */ - FALSE, /* kSPD */ - FALSE, /* kUND */ - FALSE, /* rfi */ - FALSE, /* kf11 */ - FALSE, /* kf12 */ - FALSE, /* kf13 */ - FALSE, /* kf14 */ - FALSE, /* kf15 */ - FALSE, /* kf16 */ - FALSE, /* kf17 */ - FALSE, /* kf18 */ - FALSE, /* kf19 */ - FALSE, /* kf20 */ - FALSE, /* kf21 */ - FALSE, /* kf22 */ - FALSE, /* kf23 */ - FALSE, /* kf24 */ - FALSE, /* kf25 */ - FALSE, /* kf26 */ - FALSE, /* kf27 */ - FALSE, /* kf28 */ - FALSE, /* kf29 */ - FALSE, /* kf30 */ - FALSE, /* kf31 */ - FALSE, /* kf32 */ - FALSE, /* kf33 */ - FALSE, /* kf34 */ - FALSE, /* kf35 */ - FALSE, /* kf36 */ - FALSE, /* kf37 */ - FALSE, /* kf38 */ - FALSE, /* kf39 */ - FALSE, /* kf40 */ - FALSE, /* kf41 */ - FALSE, /* kf42 */ - FALSE, /* kf43 */ - FALSE, /* kf44 */ - FALSE, /* kf45 */ - FALSE, /* kf46 */ - FALSE, /* kf47 */ - FALSE, /* kf48 */ - FALSE, /* kf49 */ - FALSE, /* kf50 */ - FALSE, /* kf51 */ - FALSE, /* kf52 */ - FALSE, /* kf53 */ - FALSE, /* kf54 */ - FALSE, /* kf55 */ - FALSE, /* kf56 */ - FALSE, /* kf57 */ - FALSE, /* kf58 */ - FALSE, /* kf59 */ - FALSE, /* kf60 */ - FALSE, /* kf61 */ - FALSE, /* kf62 */ - FALSE, /* kf63 */ - FALSE, /* el1 */ - FALSE, /* mgc */ - FALSE, /* smgl */ - FALSE, /* smgr */ - FALSE, /* fln */ - FALSE, /* sclk */ - FALSE, /* dclk */ - FALSE, /* rmclk */ - FALSE, /* cwin */ - FALSE, /* wingo */ - FALSE, /* hup */ - FALSE, /* dial */ - FALSE, /* qdial */ - FALSE, /* tone */ - FALSE, /* pulse */ - FALSE, /* hook */ - FALSE, /* pause */ - FALSE, /* wait */ - FALSE, /* u0 */ - FALSE, /* u1 */ - FALSE, /* u2 */ - FALSE, /* u3 */ - FALSE, /* u4 */ - FALSE, /* u5 */ - FALSE, /* u6 */ - FALSE, /* u7 */ - FALSE, /* u8 */ - FALSE, /* u9 */ - FALSE, /* op */ - FALSE, /* oc */ - FALSE, /* initc */ - FALSE, /* initp */ - FALSE, /* scp */ - FALSE, /* setf */ - FALSE, /* setb */ - FALSE, /* cpi */ - FALSE, /* lpi */ - FALSE, /* chr */ - FALSE, /* cvr */ - FALSE, /* defc */ - FALSE, /* swidm */ - FALSE, /* sdrfq */ - FALSE, /* sitm */ - FALSE, /* slm */ - FALSE, /* smicm */ - FALSE, /* snlq */ - FALSE, /* snrmq */ - FALSE, /* sshm */ - FALSE, /* ssubm */ - FALSE, /* ssupm */ - FALSE, /* sum */ - FALSE, /* rwidm */ - FALSE, /* ritm */ - FALSE, /* rlm */ - FALSE, /* rmicm */ - FALSE, /* rshm */ - FALSE, /* rsubm */ - FALSE, /* rsupm */ - FALSE, /* rum */ - FALSE, /* mhpa */ - FALSE, /* mcud1 */ - FALSE, /* mcub1 */ - FALSE, /* mcuf1 */ - FALSE, /* mvpa */ - FALSE, /* mcuu1 */ - FALSE, /* porder */ - FALSE, /* mcud */ - FALSE, /* mcub */ - FALSE, /* mcuf */ - FALSE, /* mcuu */ - FALSE, /* scs */ - FALSE, /* smgb */ - FALSE, /* smgbp */ - FALSE, /* smglp */ - FALSE, /* smgrp */ - FALSE, /* smgt */ - FALSE, /* smgtp */ - FALSE, /* sbim */ - FALSE, /* scsd */ - FALSE, /* rbim */ - FALSE, /* rcsd */ - FALSE, /* subcs */ - FALSE, /* supcs */ - FALSE, /* docr */ - FALSE, /* zerom */ - FALSE, /* csnm */ - FALSE, /* kmous */ - FALSE, /* minfo */ - FALSE, /* reqmp */ - FALSE, /* getm */ - FALSE, /* setaf */ - FALSE, /* setab */ - FALSE, /* pfxl */ - FALSE, /* devt */ - FALSE, /* csin */ - FALSE, /* s0ds */ - FALSE, /* s1ds */ - FALSE, /* s2ds */ - FALSE, /* s3ds */ - FALSE, /* smglr */ - FALSE, /* smgtb */ - FALSE, /* birep */ - FALSE, /* binel */ - FALSE, /* bicr */ - FALSE, /* colornm */ - FALSE, /* defbi */ - FALSE, /* endbi */ - FALSE, /* setcolor */ - FALSE, /* slines */ - FALSE, /* dispc */ - FALSE, /* smpch */ - FALSE, /* rmpch */ - FALSE, /* smsc */ - FALSE, /* rmsc */ - FALSE, /* pctrm */ - FALSE, /* scesc */ - FALSE, /* scesa */ - FALSE, /* ehhlm */ - FALSE, /* elhlm */ - FALSE, /* elohlm */ - FALSE, /* erhlm */ - FALSE, /* ethlm */ - FALSE, /* evhlm */ - FALSE, /* sgr1 */ - FALSE, /* slength */ - TRUE, /* OTi2 */ - TRUE, /* OTrs */ - TRUE, /* OTnl */ - TRUE, /* OTbc */ - FALSE, /* OTko */ - TRUE, /* OTma */ - FALSE, /* OTG2 */ - FALSE, /* OTG3 */ - FALSE, /* OTG1 */ - FALSE, /* OTG4 */ - FALSE, /* OTGR */ - FALSE, /* OTGL */ - FALSE, /* OTGU */ - FALSE, /* OTGD */ - FALSE, /* OTGH */ - FALSE, /* OTGV */ - FALSE, /* OTGC */ - FALSE, /* meml */ - FALSE, /* memu */ - FALSE, /* pln */ - FALSE, /* smln */ - FALSE, /* rmln */ - FALSE, /* kf11 */ - FALSE, /* kf12 */ - FALSE, /* kf13 */ - FALSE, /* kf14 */ - FALSE, /* kf15 */ - FALSE, /* kf16 */ - FALSE, /* kf17 */ - FALSE, /* kf18 */ - FALSE, /* kf19 */ - FALSE, /* kf20 */ - FALSE, /* kf21 */ - FALSE, /* kf22 */ - FALSE, /* kf23 */ - FALSE, /* kf24 */ - FALSE, /* kf25 */ - FALSE, /* kf26 */ - FALSE, /* kf27 */ - FALSE, /* kf28 */ - FALSE, /* kf29 */ - FALSE, /* kf30 */ - FALSE, /* kf31 */ - FALSE, /* kf32 */ - FALSE, /* kf33 */ - FALSE, /* kf34 */ - FALSE, /* kf35 */ - FALSE, /* kf36 */ - FALSE, /* kf37 */ - FALSE, /* kf38 */ - FALSE, /* kf39 */ - FALSE, /* kf40 */ - FALSE, /* kf41 */ - FALSE, /* kf42 */ - FALSE, /* kf43 */ - FALSE, /* kf44 */ - FALSE, /* kf45 */ - FALSE, /* kf46 */ - FALSE, /* kf47 */ - FALSE, /* kf48 */ - FALSE, /* kf49 */ - FALSE, /* kf50 */ - FALSE, /* kf51 */ - FALSE, /* kf52 */ - FALSE, /* kf53 */ - FALSE, /* kf54 */ - FALSE, /* kf55 */ - FALSE, /* kf56 */ - FALSE, /* kf57 */ - FALSE, /* kf58 */ - FALSE, /* kf59 */ - FALSE, /* kf60 */ - FALSE, /* kf61 */ - FALSE, /* kf62 */ - FALSE, /* kf63 */ - FALSE, /* box1 */ - FALSE, /* box2 */ - FALSE, /* batt1 */ - FALSE, /* batt2 */ - FALSE, /* colb0 */ - FALSE, /* colb1 */ - FALSE, /* colb2 */ - FALSE, /* colb3 */ - FALSE, /* colb4 */ - FALSE, /* colb5 */ - FALSE, /* colb6 */ - FALSE, /* colb7 */ - FALSE, /* colf0 */ - FALSE, /* colf1 */ - FALSE, /* colf2 */ - FALSE, /* colf3 */ - FALSE, /* colf4 */ - FALSE, /* colf5 */ - FALSE, /* colf6 */ - FALSE, /* colf7 */ - FALSE, /* font0 */ - FALSE, /* font1 */ - FALSE, /* font2 */ - FALSE, /* font3 */ - FALSE, /* font4 */ - FALSE, /* font5 */ - FALSE, /* font6 */ - FALSE, /* font7 */ - FALSE, /* kbtab */ - FALSE, /* kdo */ - FALSE, /* kcmd */ - FALSE, /* kcpn */ - FALSE, /* kend */ - FALSE, /* khlp */ - FALSE, /* knl */ - FALSE, /* knpn */ - FALSE, /* kppn */ - FALSE, /* kppn */ - FALSE, /* kquit */ - FALSE, /* ksel */ - FALSE, /* kscl */ - FALSE, /* kscr */ - FALSE, /* ktab */ - FALSE, /* kmpf1 */ - FALSE, /* kmpt1 */ - FALSE, /* kmpf2 */ - FALSE, /* kmpt2 */ - FALSE, /* kmpf3 */ - FALSE, /* kmpt3 */ - FALSE, /* kmpf4 */ - FALSE, /* kmpt4 */ - FALSE, /* kmpf5 */ - FALSE, /* kmpt5 */ - FALSE, /* apstr */ - FALSE, /* kmpf6 */ - FALSE, /* kmpt6 */ - FALSE, /* kmpf7 */ - FALSE, /* kmpt7 */ - FALSE, /* kmpf8 */ - FALSE, /* kmpt8 */ - FALSE, /* kmpf9 */ - FALSE, /* kmpt9 */ - FALSE, /* ksf1 */ - FALSE, /* ksf2 */ - FALSE, /* ksf3 */ - FALSE, /* ksf4 */ - FALSE, /* ksf5 */ - FALSE, /* ksf6 */ - FALSE, /* ksf7 */ - FALSE, /* ksf8 */ - FALSE, /* ksf9 */ - FALSE, /* ksf10 */ - FALSE, /* kf11 */ - FALSE, /* kf12 */ - FALSE, /* kact */ - FALSE, /* topl */ - FALSE, /* btml */ - FALSE, /* rvert */ - FALSE, /* lvert */ -}; - diff --git a/ncurses/progs/transform.h b/ncurses/progs/transform.h deleted file mode 100644 index a2e7e43..0000000 --- a/ncurses/progs/transform.h +++ /dev/null @@ -1,4 +0,0 @@ -#define PROG_CAPTOINFO "captoinfo" -#define PROG_INFOTOCAP "infotocap" -#define PROG_RESET "reset" -#define PROG_INIT "init" diff --git a/ncurses/terminfo/31/1178 b/ncurses/terminfo/31/1178 deleted file mode 100644 index 9941d01..0000000 Binary files a/ncurses/terminfo/31/1178 and /dev/null differ diff --git a/ncurses/terminfo/31/1730-lm b/ncurses/terminfo/31/1730-lm deleted file mode 100644 index 5f36015..0000000 Binary files a/ncurses/terminfo/31/1730-lm and /dev/null differ diff --git a/ncurses/terminfo/32/2621 b/ncurses/terminfo/32/2621 deleted file mode 100644 index fb718ab..0000000 Binary files a/ncurses/terminfo/32/2621 and /dev/null differ diff --git a/ncurses/terminfo/32/2621-wl b/ncurses/terminfo/32/2621-wl deleted file mode 100644 index fb718ab..0000000 Binary files a/ncurses/terminfo/32/2621-wl and /dev/null differ diff --git a/ncurses/terminfo/32/2621a b/ncurses/terminfo/32/2621a deleted file mode 100644 index fb718ab..0000000 Binary files a/ncurses/terminfo/32/2621a and /dev/null differ diff --git a/ncurses/terminfo/33/386at b/ncurses/terminfo/33/386at deleted file mode 100644 index c380d11..0000000 Binary files a/ncurses/terminfo/33/386at and /dev/null differ diff --git a/ncurses/terminfo/33/3b1 b/ncurses/terminfo/33/3b1 deleted file mode 100644 index b41843d..0000000 Binary files a/ncurses/terminfo/33/3b1 and /dev/null differ diff --git a/ncurses/terminfo/34/4025ex b/ncurses/terminfo/34/4025ex deleted file mode 100644 index 294c1f3..0000000 Binary files a/ncurses/terminfo/34/4025ex and /dev/null differ diff --git a/ncurses/terminfo/34/4027ex b/ncurses/terminfo/34/4027ex deleted file mode 100644 index 294c1f3..0000000 Binary files a/ncurses/terminfo/34/4027ex and /dev/null differ diff --git a/ncurses/terminfo/34/4410-w b/ncurses/terminfo/34/4410-w deleted file mode 100644 index 78d96ef..0000000 Binary files a/ncurses/terminfo/34/4410-w and /dev/null differ diff --git a/ncurses/terminfo/35/5051 b/ncurses/terminfo/35/5051 deleted file mode 100644 index ec3766c..0000000 Binary files a/ncurses/terminfo/35/5051 and /dev/null differ diff --git a/ncurses/terminfo/35/5410-w b/ncurses/terminfo/35/5410-w deleted file mode 100644 index 78d96ef..0000000 Binary files a/ncurses/terminfo/35/5410-w and /dev/null differ diff --git a/ncurses/terminfo/35/5620 b/ncurses/terminfo/35/5620 deleted file mode 100644 index d096883..0000000 Binary files a/ncurses/terminfo/35/5620 and /dev/null differ diff --git a/ncurses/terminfo/35/5630-24 b/ncurses/terminfo/35/5630-24 deleted file mode 100644 index aad3963..0000000 Binary files a/ncurses/terminfo/35/5630-24 and /dev/null differ diff --git a/ncurses/terminfo/35/5630DMD-24 b/ncurses/terminfo/35/5630DMD-24 deleted file mode 100644 index aad3963..0000000 Binary files a/ncurses/terminfo/35/5630DMD-24 and /dev/null differ diff --git a/ncurses/terminfo/36/6053 b/ncurses/terminfo/36/6053 deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/36/6053 and /dev/null differ diff --git a/ncurses/terminfo/36/6053-dg b/ncurses/terminfo/36/6053-dg deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/36/6053-dg and /dev/null differ diff --git a/ncurses/terminfo/36/605x b/ncurses/terminfo/36/605x deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/36/605x and /dev/null differ diff --git a/ncurses/terminfo/36/605x-dg b/ncurses/terminfo/36/605x-dg deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/36/605x-dg and /dev/null differ diff --git a/ncurses/terminfo/36/630-lm b/ncurses/terminfo/36/630-lm deleted file mode 100644 index 5f36015..0000000 Binary files a/ncurses/terminfo/36/630-lm and /dev/null differ diff --git a/ncurses/terminfo/36/630MTG-24 b/ncurses/terminfo/36/630MTG-24 deleted file mode 100644 index aad3963..0000000 Binary files a/ncurses/terminfo/36/630MTG-24 and /dev/null differ diff --git a/ncurses/terminfo/37/730MTG-24 b/ncurses/terminfo/37/730MTG-24 deleted file mode 100644 index 0e0e652..0000000 Binary files a/ncurses/terminfo/37/730MTG-24 and /dev/null differ diff --git a/ncurses/terminfo/37/730MTG-41 b/ncurses/terminfo/37/730MTG-41 deleted file mode 100644 index 084540e..0000000 Binary files a/ncurses/terminfo/37/730MTG-41 and /dev/null differ diff --git a/ncurses/terminfo/37/730MTG-41r b/ncurses/terminfo/37/730MTG-41r deleted file mode 100644 index 1a901e7..0000000 Binary files a/ncurses/terminfo/37/730MTG-41r and /dev/null differ diff --git a/ncurses/terminfo/37/730MTGr b/ncurses/terminfo/37/730MTGr deleted file mode 100644 index b13723d..0000000 Binary files a/ncurses/terminfo/37/730MTGr and /dev/null differ diff --git a/ncurses/terminfo/37/730MTGr-24 b/ncurses/terminfo/37/730MTGr-24 deleted file mode 100644 index 71558c8..0000000 Binary files a/ncurses/terminfo/37/730MTGr-24 and /dev/null differ diff --git a/ncurses/terminfo/38/8510 b/ncurses/terminfo/38/8510 deleted file mode 100644 index 7dae7f0..0000000 Binary files a/ncurses/terminfo/38/8510 and /dev/null differ diff --git a/ncurses/terminfo/39/955-hb b/ncurses/terminfo/39/955-hb deleted file mode 100644 index 1a6ab87..0000000 Binary files a/ncurses/terminfo/39/955-hb and /dev/null differ diff --git a/ncurses/terminfo/39/955-w b/ncurses/terminfo/39/955-w deleted file mode 100644 index a4da667..0000000 Binary files a/ncurses/terminfo/39/955-w and /dev/null differ diff --git a/ncurses/terminfo/39/9term b/ncurses/terminfo/39/9term deleted file mode 100644 index 10f5595..0000000 Binary files a/ncurses/terminfo/39/9term and /dev/null differ diff --git a/ncurses/terminfo/41/Apple_Terminal b/ncurses/terminfo/41/Apple_Terminal deleted file mode 100644 index 0d14f37..0000000 Binary files a/ncurses/terminfo/41/Apple_Terminal and /dev/null differ diff --git a/ncurses/terminfo/45/Eterm b/ncurses/terminfo/45/Eterm deleted file mode 100644 index c7caa24..0000000 Binary files a/ncurses/terminfo/45/Eterm and /dev/null differ diff --git a/ncurses/terminfo/45/Eterm-256color b/ncurses/terminfo/45/Eterm-256color deleted file mode 100644 index 6e89e28..0000000 Binary files a/ncurses/terminfo/45/Eterm-256color and /dev/null differ diff --git a/ncurses/terminfo/45/Eterm-88color b/ncurses/terminfo/45/Eterm-88color deleted file mode 100644 index 25f0951..0000000 Binary files a/ncurses/terminfo/45/Eterm-88color and /dev/null differ diff --git a/ncurses/terminfo/45/Eterm-color b/ncurses/terminfo/45/Eterm-color deleted file mode 100644 index c7caa24..0000000 Binary files a/ncurses/terminfo/45/Eterm-color and /dev/null differ diff --git a/ncurses/terminfo/4c/LFT-PC850 b/ncurses/terminfo/4c/LFT-PC850 deleted file mode 100644 index 20c5b42..0000000 Binary files a/ncurses/terminfo/4c/LFT-PC850 and /dev/null differ diff --git a/ncurses/terminfo/4d/MtxOrb b/ncurses/terminfo/4d/MtxOrb deleted file mode 100644 index e7da241..0000000 Binary files a/ncurses/terminfo/4d/MtxOrb and /dev/null differ diff --git a/ncurses/terminfo/4d/MtxOrb162 b/ncurses/terminfo/4d/MtxOrb162 deleted file mode 100644 index e009b47..0000000 Binary files a/ncurses/terminfo/4d/MtxOrb162 and /dev/null differ diff --git a/ncurses/terminfo/4d/MtxOrb204 b/ncurses/terminfo/4d/MtxOrb204 deleted file mode 100644 index 62e49b6..0000000 Binary files a/ncurses/terminfo/4d/MtxOrb204 and /dev/null differ diff --git a/ncurses/terminfo/4e/NCR260VT300WPP b/ncurses/terminfo/4e/NCR260VT300WPP deleted file mode 100644 index c325e44..0000000 Binary files a/ncurses/terminfo/4e/NCR260VT300WPP and /dev/null differ diff --git a/ncurses/terminfo/4e/NCRVT100WPP b/ncurses/terminfo/4e/NCRVT100WPP deleted file mode 100644 index 7e0ad59..0000000 Binary files a/ncurses/terminfo/4e/NCRVT100WPP and /dev/null differ diff --git a/ncurses/terminfo/50/P12 b/ncurses/terminfo/50/P12 deleted file mode 100644 index 257f59a..0000000 Binary files a/ncurses/terminfo/50/P12 and /dev/null differ diff --git a/ncurses/terminfo/50/P12-M b/ncurses/terminfo/50/P12-M deleted file mode 100644 index c4dd321..0000000 Binary files a/ncurses/terminfo/50/P12-M and /dev/null differ diff --git a/ncurses/terminfo/50/P12-M-W b/ncurses/terminfo/50/P12-M-W deleted file mode 100644 index 7a52b60..0000000 Binary files a/ncurses/terminfo/50/P12-M-W and /dev/null differ diff --git a/ncurses/terminfo/50/P12-W b/ncurses/terminfo/50/P12-W deleted file mode 100644 index a81dae8..0000000 Binary files a/ncurses/terminfo/50/P12-W and /dev/null differ diff --git a/ncurses/terminfo/50/P14 b/ncurses/terminfo/50/P14 deleted file mode 100644 index 3286427..0000000 Binary files a/ncurses/terminfo/50/P14 and /dev/null differ diff --git a/ncurses/terminfo/50/P14-M b/ncurses/terminfo/50/P14-M deleted file mode 100644 index 39dd310..0000000 Binary files a/ncurses/terminfo/50/P14-M and /dev/null differ diff --git a/ncurses/terminfo/50/P14-M-W b/ncurses/terminfo/50/P14-M-W deleted file mode 100644 index 5b6475d..0000000 Binary files a/ncurses/terminfo/50/P14-M-W and /dev/null differ diff --git a/ncurses/terminfo/50/P14-W b/ncurses/terminfo/50/P14-W deleted file mode 100644 index 26e8db0..0000000 Binary files a/ncurses/terminfo/50/P14-W and /dev/null differ diff --git a/ncurses/terminfo/50/P4 b/ncurses/terminfo/50/P4 deleted file mode 100644 index 1d53e48..0000000 Binary files a/ncurses/terminfo/50/P4 and /dev/null differ diff --git a/ncurses/terminfo/50/P5 b/ncurses/terminfo/50/P5 deleted file mode 100644 index f1848d0..0000000 Binary files a/ncurses/terminfo/50/P5 and /dev/null differ diff --git a/ncurses/terminfo/50/P7 b/ncurses/terminfo/50/P7 deleted file mode 100644 index 539b4ff..0000000 Binary files a/ncurses/terminfo/50/P7 and /dev/null differ diff --git a/ncurses/terminfo/50/P8 b/ncurses/terminfo/50/P8 deleted file mode 100644 index 12fd9e6..0000000 Binary files a/ncurses/terminfo/50/P8 and /dev/null differ diff --git a/ncurses/terminfo/50/P8-W b/ncurses/terminfo/50/P8-W deleted file mode 100644 index 8f254d3..0000000 Binary files a/ncurses/terminfo/50/P8-W and /dev/null differ diff --git a/ncurses/terminfo/50/P9 b/ncurses/terminfo/50/P9 deleted file mode 100644 index 6e17dee..0000000 Binary files a/ncurses/terminfo/50/P9 and /dev/null differ diff --git a/ncurses/terminfo/50/P9-8 b/ncurses/terminfo/50/P9-8 deleted file mode 100644 index 8191a9b..0000000 Binary files a/ncurses/terminfo/50/P9-8 and /dev/null differ diff --git a/ncurses/terminfo/50/P9-8-W b/ncurses/terminfo/50/P9-8-W deleted file mode 100644 index 93e3da9..0000000 Binary files a/ncurses/terminfo/50/P9-8-W and /dev/null differ diff --git a/ncurses/terminfo/50/P9-W b/ncurses/terminfo/50/P9-W deleted file mode 100644 index f835090..0000000 Binary files a/ncurses/terminfo/50/P9-W and /dev/null differ diff --git a/ncurses/terminfo/51/Q306-8-pc b/ncurses/terminfo/51/Q306-8-pc deleted file mode 100644 index ad8af62..0000000 Binary files a/ncurses/terminfo/51/Q306-8-pc and /dev/null differ diff --git a/ncurses/terminfo/51/Q310-vip-H b/ncurses/terminfo/51/Q310-vip-H deleted file mode 100644 index 8cf4e92..0000000 Binary files a/ncurses/terminfo/51/Q310-vip-H and /dev/null differ diff --git a/ncurses/terminfo/51/Q310-vip-H-am b/ncurses/terminfo/51/Q310-vip-H-am deleted file mode 100644 index 8cf4e92..0000000 Binary files a/ncurses/terminfo/51/Q310-vip-H-am and /dev/null differ diff --git a/ncurses/terminfo/51/Q310-vip-Hw b/ncurses/terminfo/51/Q310-vip-Hw deleted file mode 100644 index 4b09f03..0000000 Binary files a/ncurses/terminfo/51/Q310-vip-Hw and /dev/null differ diff --git a/ncurses/terminfo/51/Q310-vip-w b/ncurses/terminfo/51/Q310-vip-w deleted file mode 100644 index b710a2a..0000000 Binary files a/ncurses/terminfo/51/Q310-vip-w and /dev/null differ diff --git a/ncurses/terminfo/51/Q310-vip-w-am b/ncurses/terminfo/51/Q310-vip-w-am deleted file mode 100644 index b710a2a..0000000 Binary files a/ncurses/terminfo/51/Q310-vip-w-am and /dev/null differ diff --git a/ncurses/terminfo/58/X-hpterm b/ncurses/terminfo/58/X-hpterm deleted file mode 100644 index abccffb..0000000 Binary files a/ncurses/terminfo/58/X-hpterm and /dev/null differ diff --git a/ncurses/terminfo/61/a210 b/ncurses/terminfo/61/a210 deleted file mode 100644 index 32e3138..0000000 Binary files a/ncurses/terminfo/61/a210 and /dev/null differ diff --git a/ncurses/terminfo/61/a80 b/ncurses/terminfo/61/a80 deleted file mode 100644 index 2db99c5..0000000 Binary files a/ncurses/terminfo/61/a80 and /dev/null differ diff --git a/ncurses/terminfo/61/a980 b/ncurses/terminfo/61/a980 deleted file mode 100644 index 086c5a7..0000000 Binary files a/ncurses/terminfo/61/a980 and /dev/null differ diff --git a/ncurses/terminfo/61/aa4080 b/ncurses/terminfo/61/aa4080 deleted file mode 100644 index fba1e48..0000000 Binary files a/ncurses/terminfo/61/aa4080 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa b/ncurses/terminfo/61/aaa deleted file mode 100644 index f19d4d3..0000000 Binary files a/ncurses/terminfo/61/aaa and /dev/null differ diff --git a/ncurses/terminfo/61/aaa+dec b/ncurses/terminfo/61/aaa+dec deleted file mode 100644 index 26514d7..0000000 Binary files a/ncurses/terminfo/61/aaa+dec and /dev/null differ diff --git a/ncurses/terminfo/61/aaa+rv b/ncurses/terminfo/61/aaa+rv deleted file mode 100644 index fb0bd53..0000000 Binary files a/ncurses/terminfo/61/aaa+rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa+unk b/ncurses/terminfo/61/aaa+unk deleted file mode 100644 index e946171..0000000 Binary files a/ncurses/terminfo/61/aaa+unk and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-18 b/ncurses/terminfo/61/aaa-18 deleted file mode 100644 index 0603aec..0000000 Binary files a/ncurses/terminfo/61/aaa-18 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-18-rv b/ncurses/terminfo/61/aaa-18-rv deleted file mode 100644 index 7e8c84a..0000000 Binary files a/ncurses/terminfo/61/aaa-18-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-20 b/ncurses/terminfo/61/aaa-20 deleted file mode 100644 index 267bb2d..0000000 Binary files a/ncurses/terminfo/61/aaa-20 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-22 b/ncurses/terminfo/61/aaa-22 deleted file mode 100644 index a4c62a1..0000000 Binary files a/ncurses/terminfo/61/aaa-22 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-24 b/ncurses/terminfo/61/aaa-24 deleted file mode 100644 index 7060b46..0000000 Binary files a/ncurses/terminfo/61/aaa-24 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-24-rv b/ncurses/terminfo/61/aaa-24-rv deleted file mode 100644 index c45a51e..0000000 Binary files a/ncurses/terminfo/61/aaa-24-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-26 b/ncurses/terminfo/61/aaa-26 deleted file mode 100644 index 6e455f6..0000000 Binary files a/ncurses/terminfo/61/aaa-26 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-28 b/ncurses/terminfo/61/aaa-28 deleted file mode 100644 index c9a799f..0000000 Binary files a/ncurses/terminfo/61/aaa-28 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30 b/ncurses/terminfo/61/aaa-30 deleted file mode 100644 index f19d4d3..0000000 Binary files a/ncurses/terminfo/61/aaa-30 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-ctxt b/ncurses/terminfo/61/aaa-30-ctxt deleted file mode 100644 index b86df1a..0000000 Binary files a/ncurses/terminfo/61/aaa-30-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-rv b/ncurses/terminfo/61/aaa-30-rv deleted file mode 100644 index 0aed755..0000000 Binary files a/ncurses/terminfo/61/aaa-30-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-rv-ctxt b/ncurses/terminfo/61/aaa-30-rv-ctxt deleted file mode 100644 index 79e2bf2..0000000 Binary files a/ncurses/terminfo/61/aaa-30-rv-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-s b/ncurses/terminfo/61/aaa-30-s deleted file mode 100644 index 8c9b8c4..0000000 Binary files a/ncurses/terminfo/61/aaa-30-s and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-s-ctxt b/ncurses/terminfo/61/aaa-30-s-ctxt deleted file mode 100644 index 888a9ad..0000000 Binary files a/ncurses/terminfo/61/aaa-30-s-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-s-rv b/ncurses/terminfo/61/aaa-30-s-rv deleted file mode 100644 index b79b147..0000000 Binary files a/ncurses/terminfo/61/aaa-30-s-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-30-s-rv-ct b/ncurses/terminfo/61/aaa-30-s-rv-ct deleted file mode 100644 index d3d433b..0000000 Binary files a/ncurses/terminfo/61/aaa-30-s-rv-ct and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-36 b/ncurses/terminfo/61/aaa-36 deleted file mode 100644 index bde87d2..0000000 Binary files a/ncurses/terminfo/61/aaa-36 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-36-rv b/ncurses/terminfo/61/aaa-36-rv deleted file mode 100644 index f43941a..0000000 Binary files a/ncurses/terminfo/61/aaa-36-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-40 b/ncurses/terminfo/61/aaa-40 deleted file mode 100644 index 7cb0edc..0000000 Binary files a/ncurses/terminfo/61/aaa-40 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-40-rv b/ncurses/terminfo/61/aaa-40-rv deleted file mode 100644 index ec6c377..0000000 Binary files a/ncurses/terminfo/61/aaa-40-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-48 b/ncurses/terminfo/61/aaa-48 deleted file mode 100644 index 0265357..0000000 Binary files a/ncurses/terminfo/61/aaa-48 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-48-rv b/ncurses/terminfo/61/aaa-48-rv deleted file mode 100644 index 587305d..0000000 Binary files a/ncurses/terminfo/61/aaa-48-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-60 b/ncurses/terminfo/61/aaa-60 deleted file mode 100644 index 8e71696..0000000 Binary files a/ncurses/terminfo/61/aaa-60 and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-60-dec-rv b/ncurses/terminfo/61/aaa-60-dec-rv deleted file mode 100644 index 4f3012c..0000000 Binary files a/ncurses/terminfo/61/aaa-60-dec-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-60-rv b/ncurses/terminfo/61/aaa-60-rv deleted file mode 100644 index 2453547..0000000 Binary files a/ncurses/terminfo/61/aaa-60-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-60-s b/ncurses/terminfo/61/aaa-60-s deleted file mode 100644 index 5b1c2f7..0000000 Binary files a/ncurses/terminfo/61/aaa-60-s and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-60-s-rv b/ncurses/terminfo/61/aaa-60-s-rv deleted file mode 100644 index 6649c1f..0000000 Binary files a/ncurses/terminfo/61/aaa-60-s-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-ctxt b/ncurses/terminfo/61/aaa-ctxt deleted file mode 100644 index b86df1a..0000000 Binary files a/ncurses/terminfo/61/aaa-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-db b/ncurses/terminfo/61/aaa-db deleted file mode 100644 index c988902..0000000 Binary files a/ncurses/terminfo/61/aaa-db and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-rv b/ncurses/terminfo/61/aaa-rv deleted file mode 100644 index 0aed755..0000000 Binary files a/ncurses/terminfo/61/aaa-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-rv-ctxt b/ncurses/terminfo/61/aaa-rv-ctxt deleted file mode 100644 index 79e2bf2..0000000 Binary files a/ncurses/terminfo/61/aaa-rv-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-rv-unk b/ncurses/terminfo/61/aaa-rv-unk deleted file mode 100644 index 06b90a7..0000000 Binary files a/ncurses/terminfo/61/aaa-rv-unk and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-s b/ncurses/terminfo/61/aaa-s deleted file mode 100644 index 8c9b8c4..0000000 Binary files a/ncurses/terminfo/61/aaa-s and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-s-ctxt b/ncurses/terminfo/61/aaa-s-ctxt deleted file mode 100644 index 888a9ad..0000000 Binary files a/ncurses/terminfo/61/aaa-s-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-s-rv b/ncurses/terminfo/61/aaa-s-rv deleted file mode 100644 index b79b147..0000000 Binary files a/ncurses/terminfo/61/aaa-s-rv and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-s-rv-ctxt b/ncurses/terminfo/61/aaa-s-rv-ctxt deleted file mode 100644 index d3d433b..0000000 Binary files a/ncurses/terminfo/61/aaa-s-rv-ctxt and /dev/null differ diff --git a/ncurses/terminfo/61/aaa-unk b/ncurses/terminfo/61/aaa-unk deleted file mode 100644 index e946171..0000000 Binary files a/ncurses/terminfo/61/aaa-unk and /dev/null differ diff --git a/ncurses/terminfo/61/aas1901 b/ncurses/terminfo/61/aas1901 deleted file mode 100644 index 6dcde9d..0000000 Binary files a/ncurses/terminfo/61/aas1901 and /dev/null differ diff --git a/ncurses/terminfo/61/abm80 b/ncurses/terminfo/61/abm80 deleted file mode 100644 index 8cbee81..0000000 Binary files a/ncurses/terminfo/61/abm80 and /dev/null differ diff --git a/ncurses/terminfo/61/abm85 b/ncurses/terminfo/61/abm85 deleted file mode 100644 index f1e8657..0000000 Binary files a/ncurses/terminfo/61/abm85 and /dev/null differ diff --git a/ncurses/terminfo/61/abm85e b/ncurses/terminfo/61/abm85e deleted file mode 100644 index b381dec..0000000 Binary files a/ncurses/terminfo/61/abm85e and /dev/null differ diff --git a/ncurses/terminfo/61/abm85h b/ncurses/terminfo/61/abm85h deleted file mode 100644 index ebcfed8..0000000 Binary files a/ncurses/terminfo/61/abm85h and /dev/null differ diff --git a/ncurses/terminfo/61/abm85h-old b/ncurses/terminfo/61/abm85h-old deleted file mode 100644 index c499d3e..0000000 Binary files a/ncurses/terminfo/61/abm85h-old and /dev/null differ diff --git a/ncurses/terminfo/61/act4 b/ncurses/terminfo/61/act4 deleted file mode 100644 index b24bd13..0000000 Binary files a/ncurses/terminfo/61/act4 and /dev/null differ diff --git a/ncurses/terminfo/61/act5 b/ncurses/terminfo/61/act5 deleted file mode 100644 index 66b296f..0000000 Binary files a/ncurses/terminfo/61/act5 and /dev/null differ diff --git a/ncurses/terminfo/61/addrinfo b/ncurses/terminfo/61/addrinfo deleted file mode 100644 index 3b651ab..0000000 Binary files a/ncurses/terminfo/61/addrinfo and /dev/null differ diff --git a/ncurses/terminfo/61/adds980 b/ncurses/terminfo/61/adds980 deleted file mode 100644 index 086c5a7..0000000 Binary files a/ncurses/terminfo/61/adds980 and /dev/null differ diff --git a/ncurses/terminfo/61/addsviewpoint b/ncurses/terminfo/61/addsviewpoint deleted file mode 100644 index 46b5a90..0000000 Binary files a/ncurses/terminfo/61/addsviewpoint and /dev/null differ diff --git a/ncurses/terminfo/61/addsvp60 b/ncurses/terminfo/61/addsvp60 deleted file mode 100644 index 030858d..0000000 Binary files a/ncurses/terminfo/61/addsvp60 and /dev/null differ diff --git a/ncurses/terminfo/61/adm+sgr b/ncurses/terminfo/61/adm+sgr deleted file mode 100644 index afbc99e..0000000 Binary files a/ncurses/terminfo/61/adm+sgr and /dev/null differ diff --git a/ncurses/terminfo/61/adm1 b/ncurses/terminfo/61/adm1 deleted file mode 100644 index ffb8220..0000000 Binary files a/ncurses/terminfo/61/adm1 and /dev/null differ diff --git a/ncurses/terminfo/61/adm11 b/ncurses/terminfo/61/adm11 deleted file mode 100644 index d464b5b..0000000 Binary files a/ncurses/terminfo/61/adm11 and /dev/null differ diff --git a/ncurses/terminfo/61/adm1178 b/ncurses/terminfo/61/adm1178 deleted file mode 100644 index 9941d01..0000000 Binary files a/ncurses/terminfo/61/adm1178 and /dev/null differ diff --git a/ncurses/terminfo/61/adm12 b/ncurses/terminfo/61/adm12 deleted file mode 100644 index 741f128..0000000 Binary files a/ncurses/terminfo/61/adm12 and /dev/null differ diff --git a/ncurses/terminfo/61/adm1a b/ncurses/terminfo/61/adm1a deleted file mode 100644 index ffb8220..0000000 Binary files a/ncurses/terminfo/61/adm1a and /dev/null differ diff --git a/ncurses/terminfo/61/adm2 b/ncurses/terminfo/61/adm2 deleted file mode 100644 index 2b9cd74..0000000 Binary files a/ncurses/terminfo/61/adm2 and /dev/null differ diff --git a/ncurses/terminfo/61/adm20 b/ncurses/terminfo/61/adm20 deleted file mode 100644 index 2957f84..0000000 Binary files a/ncurses/terminfo/61/adm20 and /dev/null differ diff --git a/ncurses/terminfo/61/adm21 b/ncurses/terminfo/61/adm21 deleted file mode 100644 index 14c33c3..0000000 Binary files a/ncurses/terminfo/61/adm21 and /dev/null differ diff --git a/ncurses/terminfo/61/adm22 b/ncurses/terminfo/61/adm22 deleted file mode 100644 index 7c13056..0000000 Binary files a/ncurses/terminfo/61/adm22 and /dev/null differ diff --git a/ncurses/terminfo/61/adm3 b/ncurses/terminfo/61/adm3 deleted file mode 100644 index 6a8e9ec..0000000 Binary files a/ncurses/terminfo/61/adm3 and /dev/null differ diff --git a/ncurses/terminfo/61/adm31 b/ncurses/terminfo/61/adm31 deleted file mode 100644 index 27f2a98..0000000 Binary files a/ncurses/terminfo/61/adm31 and /dev/null differ diff --git a/ncurses/terminfo/61/adm31-old b/ncurses/terminfo/61/adm31-old deleted file mode 100644 index fb6d9e6..0000000 Binary files a/ncurses/terminfo/61/adm31-old and /dev/null differ diff --git a/ncurses/terminfo/61/adm36 b/ncurses/terminfo/61/adm36 deleted file mode 100644 index 0dd7518..0000000 Binary files a/ncurses/terminfo/61/adm36 and /dev/null differ diff --git a/ncurses/terminfo/61/adm3a b/ncurses/terminfo/61/adm3a deleted file mode 100644 index 87048fb..0000000 Binary files a/ncurses/terminfo/61/adm3a and /dev/null differ diff --git a/ncurses/terminfo/61/adm3a+ b/ncurses/terminfo/61/adm3a+ deleted file mode 100644 index 4a74c19..0000000 Binary files a/ncurses/terminfo/61/adm3a+ and /dev/null differ diff --git a/ncurses/terminfo/61/adm42 b/ncurses/terminfo/61/adm42 deleted file mode 100644 index 0225bf7..0000000 Binary files a/ncurses/terminfo/61/adm42 and /dev/null differ diff --git a/ncurses/terminfo/61/adm42-ns b/ncurses/terminfo/61/adm42-ns deleted file mode 100644 index f5b45fb..0000000 Binary files a/ncurses/terminfo/61/adm42-ns and /dev/null differ diff --git a/ncurses/terminfo/61/adm5 b/ncurses/terminfo/61/adm5 deleted file mode 100644 index f3efef5..0000000 Binary files a/ncurses/terminfo/61/adm5 and /dev/null differ diff --git a/ncurses/terminfo/61/aepro b/ncurses/terminfo/61/aepro deleted file mode 100644 index bfcff58..0000000 Binary files a/ncurses/terminfo/61/aepro and /dev/null differ diff --git a/ncurses/terminfo/61/aixterm b/ncurses/terminfo/61/aixterm deleted file mode 100644 index 9a29aa6..0000000 Binary files a/ncurses/terminfo/61/aixterm and /dev/null differ diff --git a/ncurses/terminfo/61/aixterm-16color b/ncurses/terminfo/61/aixterm-16color deleted file mode 100644 index f2c61eb..0000000 Binary files a/ncurses/terminfo/61/aixterm-16color and /dev/null differ diff --git a/ncurses/terminfo/61/aixterm-m b/ncurses/terminfo/61/aixterm-m deleted file mode 100644 index 6584a80..0000000 Binary files a/ncurses/terminfo/61/aixterm-m and /dev/null differ diff --git a/ncurses/terminfo/61/aixterm-m-old b/ncurses/terminfo/61/aixterm-m-old deleted file mode 100644 index 96949c9..0000000 Binary files a/ncurses/terminfo/61/aixterm-m-old and /dev/null differ diff --git a/ncurses/terminfo/61/aj b/ncurses/terminfo/61/aj deleted file mode 100644 index 4db61f6..0000000 Binary files a/ncurses/terminfo/61/aj and /dev/null differ diff --git a/ncurses/terminfo/61/aj510 b/ncurses/terminfo/61/aj510 deleted file mode 100644 index bcde941..0000000 Binary files a/ncurses/terminfo/61/aj510 and /dev/null differ diff --git a/ncurses/terminfo/61/aj830 b/ncurses/terminfo/61/aj830 deleted file mode 100644 index 4db61f6..0000000 Binary files a/ncurses/terminfo/61/aj830 and /dev/null differ diff --git a/ncurses/terminfo/61/aj832 b/ncurses/terminfo/61/aj832 deleted file mode 100644 index 4db61f6..0000000 Binary files a/ncurses/terminfo/61/aj832 and /dev/null differ diff --git a/ncurses/terminfo/61/alt2 b/ncurses/terminfo/61/alt2 deleted file mode 100644 index 27afbb4..0000000 Binary files a/ncurses/terminfo/61/alt2 and /dev/null differ diff --git a/ncurses/terminfo/61/alt3 b/ncurses/terminfo/61/alt3 deleted file mode 100644 index ff5f3c9..0000000 Binary files a/ncurses/terminfo/61/alt3 and /dev/null differ diff --git a/ncurses/terminfo/61/alt4 b/ncurses/terminfo/61/alt4 deleted file mode 100644 index 6ec5bb4..0000000 Binary files a/ncurses/terminfo/61/alt4 and /dev/null differ diff --git a/ncurses/terminfo/61/alt5 b/ncurses/terminfo/61/alt5 deleted file mode 100644 index ff5f3c9..0000000 Binary files a/ncurses/terminfo/61/alt5 and /dev/null differ diff --git a/ncurses/terminfo/61/alt7 b/ncurses/terminfo/61/alt7 deleted file mode 100644 index 0021ef3..0000000 Binary files a/ncurses/terminfo/61/alt7 and /dev/null differ diff --git a/ncurses/terminfo/61/alt7pc b/ncurses/terminfo/61/alt7pc deleted file mode 100644 index ec41171..0000000 Binary files a/ncurses/terminfo/61/alt7pc and /dev/null differ diff --git a/ncurses/terminfo/61/alto-h19 b/ncurses/terminfo/61/alto-h19 deleted file mode 100644 index 358e1da..0000000 Binary files a/ncurses/terminfo/61/alto-h19 and /dev/null differ diff --git a/ncurses/terminfo/61/alto-heath b/ncurses/terminfo/61/alto-heath deleted file mode 100644 index 358e1da..0000000 Binary files a/ncurses/terminfo/61/alto-heath and /dev/null differ diff --git a/ncurses/terminfo/61/altoh19 b/ncurses/terminfo/61/altoh19 deleted file mode 100644 index 358e1da..0000000 Binary files a/ncurses/terminfo/61/altoh19 and /dev/null differ diff --git a/ncurses/terminfo/61/altoheath b/ncurses/terminfo/61/altoheath deleted file mode 100644 index 358e1da..0000000 Binary files a/ncurses/terminfo/61/altoheath and /dev/null differ diff --git a/ncurses/terminfo/61/altos-2 b/ncurses/terminfo/61/altos-2 deleted file mode 100644 index 27afbb4..0000000 Binary files a/ncurses/terminfo/61/altos-2 and /dev/null differ diff --git a/ncurses/terminfo/61/altos-3 b/ncurses/terminfo/61/altos-3 deleted file mode 100644 index ff5f3c9..0000000 Binary files a/ncurses/terminfo/61/altos-3 and /dev/null differ diff --git a/ncurses/terminfo/61/altos-4 b/ncurses/terminfo/61/altos-4 deleted file mode 100644 index 6ec5bb4..0000000 Binary files a/ncurses/terminfo/61/altos-4 and /dev/null differ diff --git a/ncurses/terminfo/61/altos-5 b/ncurses/terminfo/61/altos-5 deleted file mode 100644 index ff5f3c9..0000000 Binary files a/ncurses/terminfo/61/altos-5 and /dev/null differ diff --git a/ncurses/terminfo/61/altos2 b/ncurses/terminfo/61/altos2 deleted file mode 100644 index 27afbb4..0000000 Binary files a/ncurses/terminfo/61/altos2 and /dev/null differ diff --git a/ncurses/terminfo/61/altos3 b/ncurses/terminfo/61/altos3 deleted file mode 100644 index ff5f3c9..0000000 Binary files a/ncurses/terminfo/61/altos3 and /dev/null differ diff --git a/ncurses/terminfo/61/altos4 b/ncurses/terminfo/61/altos4 deleted file mode 100644 index 6ec5bb4..0000000 Binary files a/ncurses/terminfo/61/altos4 and /dev/null differ diff --git a/ncurses/terminfo/61/altos5 b/ncurses/terminfo/61/altos5 deleted file mode 100644 index ff5f3c9..0000000 Binary files a/ncurses/terminfo/61/altos5 and /dev/null differ diff --git a/ncurses/terminfo/61/altos7 b/ncurses/terminfo/61/altos7 deleted file mode 100644 index 0021ef3..0000000 Binary files a/ncurses/terminfo/61/altos7 and /dev/null differ diff --git a/ncurses/terminfo/61/altos7pc b/ncurses/terminfo/61/altos7pc deleted file mode 100644 index ec41171..0000000 Binary files a/ncurses/terminfo/61/altos7pc and /dev/null differ diff --git a/ncurses/terminfo/61/ambas b/ncurses/terminfo/61/ambas deleted file mode 100644 index f19d4d3..0000000 Binary files a/ncurses/terminfo/61/ambas and /dev/null differ diff --git a/ncurses/terminfo/61/ambassador b/ncurses/terminfo/61/ambassador deleted file mode 100644 index f19d4d3..0000000 Binary files a/ncurses/terminfo/61/ambassador and /dev/null differ diff --git a/ncurses/terminfo/61/amiga b/ncurses/terminfo/61/amiga deleted file mode 100644 index 6233d1c..0000000 Binary files a/ncurses/terminfo/61/amiga and /dev/null differ diff --git a/ncurses/terminfo/61/amiga-8bit b/ncurses/terminfo/61/amiga-8bit deleted file mode 100644 index 5faf757..0000000 Binary files a/ncurses/terminfo/61/amiga-8bit and /dev/null differ diff --git a/ncurses/terminfo/61/amiga-h b/ncurses/terminfo/61/amiga-h deleted file mode 100644 index 9668879..0000000 Binary files a/ncurses/terminfo/61/amiga-h and /dev/null differ diff --git a/ncurses/terminfo/61/amiga-vnc b/ncurses/terminfo/61/amiga-vnc deleted file mode 100644 index e1ebe0c..0000000 Binary files a/ncurses/terminfo/61/amiga-vnc and /dev/null differ diff --git a/ncurses/terminfo/61/amp219 b/ncurses/terminfo/61/amp219 deleted file mode 100644 index ec0490f..0000000 Binary files a/ncurses/terminfo/61/amp219 and /dev/null differ diff --git a/ncurses/terminfo/61/amp219w b/ncurses/terminfo/61/amp219w deleted file mode 100644 index d45bd64..0000000 Binary files a/ncurses/terminfo/61/amp219w and /dev/null differ diff --git a/ncurses/terminfo/61/ampex-219 b/ncurses/terminfo/61/ampex-219 deleted file mode 100644 index ec0490f..0000000 Binary files a/ncurses/terminfo/61/ampex-219 and /dev/null differ diff --git a/ncurses/terminfo/61/ampex-219w b/ncurses/terminfo/61/ampex-219w deleted file mode 100644 index d45bd64..0000000 Binary files a/ncurses/terminfo/61/ampex-219w and /dev/null differ diff --git a/ncurses/terminfo/61/ampex-232 b/ncurses/terminfo/61/ampex-232 deleted file mode 100644 index 698c33d..0000000 Binary files a/ncurses/terminfo/61/ampex-232 and /dev/null differ diff --git a/ncurses/terminfo/61/ampex175 b/ncurses/terminfo/61/ampex175 deleted file mode 100644 index 77e0311..0000000 Binary files a/ncurses/terminfo/61/ampex175 and /dev/null differ diff --git a/ncurses/terminfo/61/ampex175-b b/ncurses/terminfo/61/ampex175-b deleted file mode 100644 index c26466c..0000000 Binary files a/ncurses/terminfo/61/ampex175-b and /dev/null differ diff --git a/ncurses/terminfo/61/ampex210 b/ncurses/terminfo/61/ampex210 deleted file mode 100644 index 32e3138..0000000 Binary files a/ncurses/terminfo/61/ampex210 and /dev/null differ diff --git a/ncurses/terminfo/61/ampex219 b/ncurses/terminfo/61/ampex219 deleted file mode 100644 index ec0490f..0000000 Binary files a/ncurses/terminfo/61/ampex219 and /dev/null differ diff --git a/ncurses/terminfo/61/ampex219w b/ncurses/terminfo/61/ampex219w deleted file mode 100644 index d45bd64..0000000 Binary files a/ncurses/terminfo/61/ampex219w and /dev/null differ diff --git a/ncurses/terminfo/61/ampex232 b/ncurses/terminfo/61/ampex232 deleted file mode 100644 index 698c33d..0000000 Binary files a/ncurses/terminfo/61/ampex232 and /dev/null differ diff --git a/ncurses/terminfo/61/ampex232w b/ncurses/terminfo/61/ampex232w deleted file mode 100644 index 2efbbde..0000000 Binary files a/ncurses/terminfo/61/ampex232w and /dev/null differ diff --git a/ncurses/terminfo/61/ampex80 b/ncurses/terminfo/61/ampex80 deleted file mode 100644 index 2db99c5..0000000 Binary files a/ncurses/terminfo/61/ampex80 and /dev/null differ diff --git a/ncurses/terminfo/61/annarbor4080 b/ncurses/terminfo/61/annarbor4080 deleted file mode 100644 index fba1e48..0000000 Binary files a/ncurses/terminfo/61/annarbor4080 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi b/ncurses/terminfo/61/ansi deleted file mode 100644 index 52e58b2..0000000 Binary files a/ncurses/terminfo/61/ansi and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+arrows b/ncurses/terminfo/61/ansi+arrows deleted file mode 100644 index 3482995..0000000 Binary files a/ncurses/terminfo/61/ansi+arrows and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+csr b/ncurses/terminfo/61/ansi+csr deleted file mode 100644 index 4196f37..0000000 Binary files a/ncurses/terminfo/61/ansi+csr and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+cup b/ncurses/terminfo/61/ansi+cup deleted file mode 100644 index 5d28d73..0000000 Binary files a/ncurses/terminfo/61/ansi+cup and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+enq b/ncurses/terminfo/61/ansi+enq deleted file mode 100644 index 8103d30..0000000 Binary files a/ncurses/terminfo/61/ansi+enq and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+erase b/ncurses/terminfo/61/ansi+erase deleted file mode 100644 index 8724be3..0000000 Binary files a/ncurses/terminfo/61/ansi+erase and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+idc b/ncurses/terminfo/61/ansi+idc deleted file mode 100644 index b4f8e22..0000000 Binary files a/ncurses/terminfo/61/ansi+idc and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+idl b/ncurses/terminfo/61/ansi+idl deleted file mode 100644 index fda884b..0000000 Binary files a/ncurses/terminfo/61/ansi+idl and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+idl1 b/ncurses/terminfo/61/ansi+idl1 deleted file mode 100644 index b42537d..0000000 Binary files a/ncurses/terminfo/61/ansi+idl1 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+inittabs b/ncurses/terminfo/61/ansi+inittabs deleted file mode 100644 index 6e221df..0000000 Binary files a/ncurses/terminfo/61/ansi+inittabs and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+local b/ncurses/terminfo/61/ansi+local deleted file mode 100644 index 91a2248..0000000 Binary files a/ncurses/terminfo/61/ansi+local and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+local1 b/ncurses/terminfo/61/ansi+local1 deleted file mode 100644 index b802ddb..0000000 Binary files a/ncurses/terminfo/61/ansi+local1 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+pp b/ncurses/terminfo/61/ansi+pp deleted file mode 100644 index efce828..0000000 Binary files a/ncurses/terminfo/61/ansi+pp and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+rca b/ncurses/terminfo/61/ansi+rca deleted file mode 100644 index 3ea5312..0000000 Binary files a/ncurses/terminfo/61/ansi+rca and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+rep b/ncurses/terminfo/61/ansi+rep deleted file mode 100644 index bc0dc7f..0000000 Binary files a/ncurses/terminfo/61/ansi+rep and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+sgr b/ncurses/terminfo/61/ansi+sgr deleted file mode 100644 index 4eccc02..0000000 Binary files a/ncurses/terminfo/61/ansi+sgr and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+sgrbold b/ncurses/terminfo/61/ansi+sgrbold deleted file mode 100644 index 96773e3..0000000 Binary files a/ncurses/terminfo/61/ansi+sgrbold and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+sgrdim b/ncurses/terminfo/61/ansi+sgrdim deleted file mode 100644 index 2aa9419..0000000 Binary files a/ncurses/terminfo/61/ansi+sgrdim and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+sgrso b/ncurses/terminfo/61/ansi+sgrso deleted file mode 100644 index 8bd56a2..0000000 Binary files a/ncurses/terminfo/61/ansi+sgrso and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+sgrul b/ncurses/terminfo/61/ansi+sgrul deleted file mode 100644 index 8e66853..0000000 Binary files a/ncurses/terminfo/61/ansi+sgrul and /dev/null differ diff --git a/ncurses/terminfo/61/ansi+tabs b/ncurses/terminfo/61/ansi+tabs deleted file mode 100644 index d93cef1..0000000 Binary files a/ncurses/terminfo/61/ansi+tabs and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-color-2-emx b/ncurses/terminfo/61/ansi-color-2-emx deleted file mode 100644 index c5cfba8..0000000 Binary files a/ncurses/terminfo/61/ansi-color-2-emx and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-color-3-emx b/ncurses/terminfo/61/ansi-color-3-emx deleted file mode 100644 index 72e0ef5..0000000 Binary files a/ncurses/terminfo/61/ansi-color-3-emx and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-emx b/ncurses/terminfo/61/ansi-emx deleted file mode 100644 index e6343f6..0000000 Binary files a/ncurses/terminfo/61/ansi-emx and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-generic b/ncurses/terminfo/61/ansi-generic deleted file mode 100644 index e07e3fc..0000000 Binary files a/ncurses/terminfo/61/ansi-generic and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-m b/ncurses/terminfo/61/ansi-m deleted file mode 100644 index b72d5d8..0000000 Binary files a/ncurses/terminfo/61/ansi-m and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-mini b/ncurses/terminfo/61/ansi-mini deleted file mode 100644 index c61fb7a..0000000 Binary files a/ncurses/terminfo/61/ansi-mini and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-mono b/ncurses/terminfo/61/ansi-mono deleted file mode 100644 index b72d5d8..0000000 Binary files a/ncurses/terminfo/61/ansi-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-mr b/ncurses/terminfo/61/ansi-mr deleted file mode 100644 index de221e8..0000000 Binary files a/ncurses/terminfo/61/ansi-mr and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-mtabs b/ncurses/terminfo/61/ansi-mtabs deleted file mode 100644 index 3ed30df..0000000 Binary files a/ncurses/terminfo/61/ansi-mtabs and /dev/null differ diff --git a/ncurses/terminfo/61/ansi-nt b/ncurses/terminfo/61/ansi-nt deleted file mode 100644 index b6bc8b8..0000000 Binary files a/ncurses/terminfo/61/ansi-nt and /dev/null differ diff --git a/ncurses/terminfo/61/ansi.sys b/ncurses/terminfo/61/ansi.sys deleted file mode 100644 index c00a33b..0000000 Binary files a/ncurses/terminfo/61/ansi.sys and /dev/null differ diff --git a/ncurses/terminfo/61/ansi.sys-old b/ncurses/terminfo/61/ansi.sys-old deleted file mode 100644 index 44cfa2c..0000000 Binary files a/ncurses/terminfo/61/ansi.sys-old and /dev/null differ diff --git a/ncurses/terminfo/61/ansi.sysk b/ncurses/terminfo/61/ansi.sysk deleted file mode 100644 index ee48413..0000000 Binary files a/ncurses/terminfo/61/ansi.sysk and /dev/null differ diff --git a/ncurses/terminfo/61/ansi43m b/ncurses/terminfo/61/ansi43m deleted file mode 100644 index a1d04b1..0000000 Binary files a/ncurses/terminfo/61/ansi43m and /dev/null differ diff --git a/ncurses/terminfo/61/ansi77 b/ncurses/terminfo/61/ansi77 deleted file mode 100644 index 0970f33..0000000 Binary files a/ncurses/terminfo/61/ansi77 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x25 b/ncurses/terminfo/61/ansi80x25 deleted file mode 100644 index 09d473c..0000000 Binary files a/ncurses/terminfo/61/ansi80x25 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x25-mono b/ncurses/terminfo/61/ansi80x25-mono deleted file mode 100644 index 1fb9e09..0000000 Binary files a/ncurses/terminfo/61/ansi80x25-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x25-raw b/ncurses/terminfo/61/ansi80x25-raw deleted file mode 100644 index 886114b..0000000 Binary files a/ncurses/terminfo/61/ansi80x25-raw and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x30 b/ncurses/terminfo/61/ansi80x30 deleted file mode 100644 index 492e466..0000000 Binary files a/ncurses/terminfo/61/ansi80x30 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x30-mono b/ncurses/terminfo/61/ansi80x30-mono deleted file mode 100644 index 2d47a8d..0000000 Binary files a/ncurses/terminfo/61/ansi80x30-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x43 b/ncurses/terminfo/61/ansi80x43 deleted file mode 100644 index a7c0ff6..0000000 Binary files a/ncurses/terminfo/61/ansi80x43 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x43-mono b/ncurses/terminfo/61/ansi80x43-mono deleted file mode 100644 index 4c9883c..0000000 Binary files a/ncurses/terminfo/61/ansi80x43-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x50 b/ncurses/terminfo/61/ansi80x50 deleted file mode 100644 index 49b8cf3..0000000 Binary files a/ncurses/terminfo/61/ansi80x50 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x50-mono b/ncurses/terminfo/61/ansi80x50-mono deleted file mode 100644 index fbea5f1..0000000 Binary files a/ncurses/terminfo/61/ansi80x50-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x60 b/ncurses/terminfo/61/ansi80x60 deleted file mode 100644 index 07cedc6..0000000 Binary files a/ncurses/terminfo/61/ansi80x60 and /dev/null differ diff --git a/ncurses/terminfo/61/ansi80x60-mono b/ncurses/terminfo/61/ansi80x60-mono deleted file mode 100644 index 7db73de..0000000 Binary files a/ncurses/terminfo/61/ansi80x60-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansil b/ncurses/terminfo/61/ansil deleted file mode 100644 index 49b8cf3..0000000 Binary files a/ncurses/terminfo/61/ansil and /dev/null differ diff --git a/ncurses/terminfo/61/ansil-mono b/ncurses/terminfo/61/ansil-mono deleted file mode 100644 index fbea5f1..0000000 Binary files a/ncurses/terminfo/61/ansil-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansis b/ncurses/terminfo/61/ansis deleted file mode 100644 index 09d473c..0000000 Binary files a/ncurses/terminfo/61/ansis and /dev/null differ diff --git a/ncurses/terminfo/61/ansis-mono b/ncurses/terminfo/61/ansis-mono deleted file mode 100644 index 1fb9e09..0000000 Binary files a/ncurses/terminfo/61/ansis-mono and /dev/null differ diff --git a/ncurses/terminfo/61/ansisysk b/ncurses/terminfo/61/ansisysk deleted file mode 100644 index ee48413..0000000 Binary files a/ncurses/terminfo/61/ansisysk and /dev/null differ diff --git a/ncurses/terminfo/61/ansiw b/ncurses/terminfo/61/ansiw deleted file mode 100644 index 886114b..0000000 Binary files a/ncurses/terminfo/61/ansiw and /dev/null differ diff --git a/ncurses/terminfo/61/ap-vm80 b/ncurses/terminfo/61/ap-vm80 deleted file mode 100644 index def8dfd..0000000 Binary files a/ncurses/terminfo/61/ap-vm80 and /dev/null differ diff --git a/ncurses/terminfo/61/apl b/ncurses/terminfo/61/apl deleted file mode 100644 index 679a574..0000000 Binary files a/ncurses/terminfo/61/apl and /dev/null differ diff --git a/ncurses/terminfo/61/apollo b/ncurses/terminfo/61/apollo deleted file mode 100644 index 88a3565..0000000 Binary files a/ncurses/terminfo/61/apollo and /dev/null differ diff --git a/ncurses/terminfo/61/apollo_15P b/ncurses/terminfo/61/apollo_15P deleted file mode 100644 index 9284739..0000000 Binary files a/ncurses/terminfo/61/apollo_15P and /dev/null differ diff --git a/ncurses/terminfo/61/apollo_19L b/ncurses/terminfo/61/apollo_19L deleted file mode 100644 index 092d358..0000000 Binary files a/ncurses/terminfo/61/apollo_19L and /dev/null differ diff --git a/ncurses/terminfo/61/apollo_color b/ncurses/terminfo/61/apollo_color deleted file mode 100644 index e117f2d..0000000 Binary files a/ncurses/terminfo/61/apollo_color and /dev/null differ diff --git a/ncurses/terminfo/61/apple-80 b/ncurses/terminfo/61/apple-80 deleted file mode 100644 index f45c5c5..0000000 Binary files a/ncurses/terminfo/61/apple-80 and /dev/null differ diff --git a/ncurses/terminfo/61/apple-ae b/ncurses/terminfo/61/apple-ae deleted file mode 100644 index a5a2335..0000000 Binary files a/ncurses/terminfo/61/apple-ae and /dev/null differ diff --git a/ncurses/terminfo/61/apple-soroc b/ncurses/terminfo/61/apple-soroc deleted file mode 100644 index ea5fcb8..0000000 Binary files a/ncurses/terminfo/61/apple-soroc and /dev/null differ diff --git a/ncurses/terminfo/61/apple-uterm b/ncurses/terminfo/61/apple-uterm deleted file mode 100644 index eceebf4..0000000 Binary files a/ncurses/terminfo/61/apple-uterm and /dev/null differ diff --git a/ncurses/terminfo/61/apple-uterm-vb b/ncurses/terminfo/61/apple-uterm-vb deleted file mode 100644 index 047855e..0000000 Binary files a/ncurses/terminfo/61/apple-uterm-vb and /dev/null differ diff --git a/ncurses/terminfo/61/apple-videx b/ncurses/terminfo/61/apple-videx deleted file mode 100644 index 9ab2869..0000000 Binary files a/ncurses/terminfo/61/apple-videx and /dev/null differ diff --git a/ncurses/terminfo/61/apple-videx2 b/ncurses/terminfo/61/apple-videx2 deleted file mode 100644 index 62d35b2..0000000 Binary files a/ncurses/terminfo/61/apple-videx2 and /dev/null differ diff --git a/ncurses/terminfo/61/apple-videx3 b/ncurses/terminfo/61/apple-videx3 deleted file mode 100644 index 6629e81..0000000 Binary files a/ncurses/terminfo/61/apple-videx3 and /dev/null differ diff --git a/ncurses/terminfo/61/apple-vm80 b/ncurses/terminfo/61/apple-vm80 deleted file mode 100644 index def8dfd..0000000 Binary files a/ncurses/terminfo/61/apple-vm80 and /dev/null differ diff --git a/ncurses/terminfo/61/apple2e b/ncurses/terminfo/61/apple2e deleted file mode 100644 index 34cca2b..0000000 Binary files a/ncurses/terminfo/61/apple2e and /dev/null differ diff --git a/ncurses/terminfo/61/apple2e-p b/ncurses/terminfo/61/apple2e-p deleted file mode 100644 index d968266..0000000 Binary files a/ncurses/terminfo/61/apple2e-p and /dev/null differ diff --git a/ncurses/terminfo/61/apple80p b/ncurses/terminfo/61/apple80p deleted file mode 100644 index 60c92c6..0000000 Binary files a/ncurses/terminfo/61/apple80p and /dev/null differ diff --git a/ncurses/terminfo/61/appleII b/ncurses/terminfo/61/appleII deleted file mode 100644 index 987478b..0000000 Binary files a/ncurses/terminfo/61/appleII and /dev/null differ diff --git a/ncurses/terminfo/61/appleIIc b/ncurses/terminfo/61/appleIIc deleted file mode 100644 index 1311b90..0000000 Binary files a/ncurses/terminfo/61/appleIIc and /dev/null differ diff --git a/ncurses/terminfo/61/appleIIe b/ncurses/terminfo/61/appleIIe deleted file mode 100644 index 1311b90..0000000 Binary files a/ncurses/terminfo/61/appleIIe and /dev/null differ diff --git a/ncurses/terminfo/61/appleIIgs b/ncurses/terminfo/61/appleIIgs deleted file mode 100644 index 1311b90..0000000 Binary files a/ncurses/terminfo/61/appleIIgs and /dev/null differ diff --git a/ncurses/terminfo/61/arm100 b/ncurses/terminfo/61/arm100 deleted file mode 100644 index 2729a3d..0000000 Binary files a/ncurses/terminfo/61/arm100 and /dev/null differ diff --git a/ncurses/terminfo/61/arm100-am b/ncurses/terminfo/61/arm100-am deleted file mode 100644 index 2729a3d..0000000 Binary files a/ncurses/terminfo/61/arm100-am and /dev/null differ diff --git a/ncurses/terminfo/61/arm100-w b/ncurses/terminfo/61/arm100-w deleted file mode 100644 index c19035a..0000000 Binary files a/ncurses/terminfo/61/arm100-w and /dev/null differ diff --git a/ncurses/terminfo/61/arm100-wam b/ncurses/terminfo/61/arm100-wam deleted file mode 100644 index c19035a..0000000 Binary files a/ncurses/terminfo/61/arm100-wam and /dev/null differ diff --git a/ncurses/terminfo/61/at386 b/ncurses/terminfo/61/at386 deleted file mode 100644 index c380d11..0000000 Binary files a/ncurses/terminfo/61/at386 and /dev/null differ diff --git a/ncurses/terminfo/61/atari b/ncurses/terminfo/61/atari deleted file mode 100644 index e691880..0000000 Binary files a/ncurses/terminfo/61/atari and /dev/null differ diff --git a/ncurses/terminfo/61/aterm b/ncurses/terminfo/61/aterm deleted file mode 100644 index 3c48b5d..0000000 Binary files a/ncurses/terminfo/61/aterm and /dev/null differ diff --git a/ncurses/terminfo/61/att2300 b/ncurses/terminfo/61/att2300 deleted file mode 100644 index 7ff7d52..0000000 Binary files a/ncurses/terminfo/61/att2300 and /dev/null differ diff --git a/ncurses/terminfo/61/att2350 b/ncurses/terminfo/61/att2350 deleted file mode 100644 index f06fa9b..0000000 Binary files a/ncurses/terminfo/61/att2350 and /dev/null differ diff --git a/ncurses/terminfo/61/att4410 b/ncurses/terminfo/61/att4410 deleted file mode 100644 index 53bbdce..0000000 Binary files a/ncurses/terminfo/61/att4410 and /dev/null differ diff --git a/ncurses/terminfo/61/att4410-w b/ncurses/terminfo/61/att4410-w deleted file mode 100644 index 78d96ef..0000000 Binary files a/ncurses/terminfo/61/att4410-w and /dev/null differ diff --git a/ncurses/terminfo/61/att4410v1 b/ncurses/terminfo/61/att4410v1 deleted file mode 100644 index 9f7672f..0000000 Binary files a/ncurses/terminfo/61/att4410v1 and /dev/null differ diff --git a/ncurses/terminfo/61/att4410v1-w b/ncurses/terminfo/61/att4410v1-w deleted file mode 100644 index b849088..0000000 Binary files a/ncurses/terminfo/61/att4410v1-w and /dev/null differ diff --git a/ncurses/terminfo/61/att4415 b/ncurses/terminfo/61/att4415 deleted file mode 100644 index 358fb0e..0000000 Binary files a/ncurses/terminfo/61/att4415 and /dev/null differ diff --git a/ncurses/terminfo/61/att4415+nl b/ncurses/terminfo/61/att4415+nl deleted file mode 100644 index b9a8de8..0000000 Binary files a/ncurses/terminfo/61/att4415+nl and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-nl b/ncurses/terminfo/61/att4415-nl deleted file mode 100644 index de22b13..0000000 Binary files a/ncurses/terminfo/61/att4415-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-rv b/ncurses/terminfo/61/att4415-rv deleted file mode 100644 index 09673bb..0000000 Binary files a/ncurses/terminfo/61/att4415-rv and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-rv-nl b/ncurses/terminfo/61/att4415-rv-nl deleted file mode 100644 index b38f9ab..0000000 Binary files a/ncurses/terminfo/61/att4415-rv-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-w b/ncurses/terminfo/61/att4415-w deleted file mode 100644 index 3316d0a..0000000 Binary files a/ncurses/terminfo/61/att4415-w and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-w-nl b/ncurses/terminfo/61/att4415-w-nl deleted file mode 100644 index d505169..0000000 Binary files a/ncurses/terminfo/61/att4415-w-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-w-rv b/ncurses/terminfo/61/att4415-w-rv deleted file mode 100644 index 2ae6d86..0000000 Binary files a/ncurses/terminfo/61/att4415-w-rv and /dev/null differ diff --git a/ncurses/terminfo/61/att4415-w-rv-n b/ncurses/terminfo/61/att4415-w-rv-n deleted file mode 100644 index 8e6691d..0000000 Binary files a/ncurses/terminfo/61/att4415-w-rv-n and /dev/null differ diff --git a/ncurses/terminfo/61/att4418 b/ncurses/terminfo/61/att4418 deleted file mode 100644 index 4901347..0000000 Binary files a/ncurses/terminfo/61/att4418 and /dev/null differ diff --git a/ncurses/terminfo/61/att4418-w b/ncurses/terminfo/61/att4418-w deleted file mode 100644 index aac2f03..0000000 Binary files a/ncurses/terminfo/61/att4418-w and /dev/null differ diff --git a/ncurses/terminfo/61/att4420 b/ncurses/terminfo/61/att4420 deleted file mode 100644 index bed9e68..0000000 Binary files a/ncurses/terminfo/61/att4420 and /dev/null differ diff --git a/ncurses/terminfo/61/att4424 b/ncurses/terminfo/61/att4424 deleted file mode 100644 index 879bc82..0000000 Binary files a/ncurses/terminfo/61/att4424 and /dev/null differ diff --git a/ncurses/terminfo/61/att4424-1 b/ncurses/terminfo/61/att4424-1 deleted file mode 100644 index 6ef2858..0000000 Binary files a/ncurses/terminfo/61/att4424-1 and /dev/null differ diff --git a/ncurses/terminfo/61/att4424m b/ncurses/terminfo/61/att4424m deleted file mode 100644 index 54671e3..0000000 Binary files a/ncurses/terminfo/61/att4424m and /dev/null differ diff --git a/ncurses/terminfo/61/att4425 b/ncurses/terminfo/61/att4425 deleted file mode 100644 index c602b5f..0000000 Binary files a/ncurses/terminfo/61/att4425 and /dev/null differ diff --git a/ncurses/terminfo/61/att4425-nl b/ncurses/terminfo/61/att4425-nl deleted file mode 100644 index 0d2e70b..0000000 Binary files a/ncurses/terminfo/61/att4425-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att4425-w b/ncurses/terminfo/61/att4425-w deleted file mode 100644 index 6b47075..0000000 Binary files a/ncurses/terminfo/61/att4425-w and /dev/null differ diff --git a/ncurses/terminfo/61/att4426 b/ncurses/terminfo/61/att4426 deleted file mode 100644 index f75f204..0000000 Binary files a/ncurses/terminfo/61/att4426 and /dev/null differ diff --git a/ncurses/terminfo/61/att500 b/ncurses/terminfo/61/att500 deleted file mode 100644 index 76def43..0000000 Binary files a/ncurses/terminfo/61/att500 and /dev/null differ diff --git a/ncurses/terminfo/61/att505 b/ncurses/terminfo/61/att505 deleted file mode 100644 index 92dffac..0000000 Binary files a/ncurses/terminfo/61/att505 and /dev/null differ diff --git a/ncurses/terminfo/61/att505-24 b/ncurses/terminfo/61/att505-24 deleted file mode 100644 index bcccaaa..0000000 Binary files a/ncurses/terminfo/61/att505-24 and /dev/null differ diff --git a/ncurses/terminfo/61/att510a b/ncurses/terminfo/61/att510a deleted file mode 100644 index 630de8d..0000000 Binary files a/ncurses/terminfo/61/att510a and /dev/null differ diff --git a/ncurses/terminfo/61/att510d b/ncurses/terminfo/61/att510d deleted file mode 100644 index 847c897..0000000 Binary files a/ncurses/terminfo/61/att510d and /dev/null differ diff --git a/ncurses/terminfo/61/att513 b/ncurses/terminfo/61/att513 deleted file mode 100644 index 76def43..0000000 Binary files a/ncurses/terminfo/61/att513 and /dev/null differ diff --git a/ncurses/terminfo/61/att5310 b/ncurses/terminfo/61/att5310 deleted file mode 100644 index fd5f22e..0000000 Binary files a/ncurses/terminfo/61/att5310 and /dev/null differ diff --git a/ncurses/terminfo/61/att5320 b/ncurses/terminfo/61/att5320 deleted file mode 100644 index fd5f22e..0000000 Binary files a/ncurses/terminfo/61/att5320 and /dev/null differ diff --git a/ncurses/terminfo/61/att5410 b/ncurses/terminfo/61/att5410 deleted file mode 100644 index 53bbdce..0000000 Binary files a/ncurses/terminfo/61/att5410 and /dev/null differ diff --git a/ncurses/terminfo/61/att5410-w b/ncurses/terminfo/61/att5410-w deleted file mode 100644 index 78d96ef..0000000 Binary files a/ncurses/terminfo/61/att5410-w and /dev/null differ diff --git a/ncurses/terminfo/61/att5410v1 b/ncurses/terminfo/61/att5410v1 deleted file mode 100644 index 9f7672f..0000000 Binary files a/ncurses/terminfo/61/att5410v1 and /dev/null differ diff --git a/ncurses/terminfo/61/att5410v1-w b/ncurses/terminfo/61/att5410v1-w deleted file mode 100644 index b849088..0000000 Binary files a/ncurses/terminfo/61/att5410v1-w and /dev/null differ diff --git a/ncurses/terminfo/61/att5418 b/ncurses/terminfo/61/att5418 deleted file mode 100644 index 4901347..0000000 Binary files a/ncurses/terminfo/61/att5418 and /dev/null differ diff --git a/ncurses/terminfo/61/att5418-w b/ncurses/terminfo/61/att5418-w deleted file mode 100644 index aac2f03..0000000 Binary files a/ncurses/terminfo/61/att5418-w and /dev/null differ diff --git a/ncurses/terminfo/61/att5420 b/ncurses/terminfo/61/att5420 deleted file mode 100644 index 358fb0e..0000000 Binary files a/ncurses/terminfo/61/att5420 and /dev/null differ diff --git a/ncurses/terminfo/61/att5420+nl b/ncurses/terminfo/61/att5420+nl deleted file mode 100644 index b9a8de8..0000000 Binary files a/ncurses/terminfo/61/att5420+nl and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-nl b/ncurses/terminfo/61/att5420-nl deleted file mode 100644 index de22b13..0000000 Binary files a/ncurses/terminfo/61/att5420-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-rv b/ncurses/terminfo/61/att5420-rv deleted file mode 100644 index 09673bb..0000000 Binary files a/ncurses/terminfo/61/att5420-rv and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-rv-nl b/ncurses/terminfo/61/att5420-rv-nl deleted file mode 100644 index b38f9ab..0000000 Binary files a/ncurses/terminfo/61/att5420-rv-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-w b/ncurses/terminfo/61/att5420-w deleted file mode 100644 index 3316d0a..0000000 Binary files a/ncurses/terminfo/61/att5420-w and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-w-nl b/ncurses/terminfo/61/att5420-w-nl deleted file mode 100644 index d505169..0000000 Binary files a/ncurses/terminfo/61/att5420-w-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-w-rv b/ncurses/terminfo/61/att5420-w-rv deleted file mode 100644 index 2ae6d86..0000000 Binary files a/ncurses/terminfo/61/att5420-w-rv and /dev/null differ diff --git a/ncurses/terminfo/61/att5420-w-rv-n b/ncurses/terminfo/61/att5420-w-rv-n deleted file mode 100644 index 8e6691d..0000000 Binary files a/ncurses/terminfo/61/att5420-w-rv-n and /dev/null differ diff --git a/ncurses/terminfo/61/att5420_2 b/ncurses/terminfo/61/att5420_2 deleted file mode 100644 index 78839d6..0000000 Binary files a/ncurses/terminfo/61/att5420_2 and /dev/null differ diff --git a/ncurses/terminfo/61/att5420_2-w b/ncurses/terminfo/61/att5420_2-w deleted file mode 100644 index 28cfb72..0000000 Binary files a/ncurses/terminfo/61/att5420_2-w and /dev/null differ diff --git a/ncurses/terminfo/61/att5425 b/ncurses/terminfo/61/att5425 deleted file mode 100644 index c602b5f..0000000 Binary files a/ncurses/terminfo/61/att5425 and /dev/null differ diff --git a/ncurses/terminfo/61/att5425-nl b/ncurses/terminfo/61/att5425-nl deleted file mode 100644 index 0d2e70b..0000000 Binary files a/ncurses/terminfo/61/att5425-nl and /dev/null differ diff --git a/ncurses/terminfo/61/att5425-w b/ncurses/terminfo/61/att5425-w deleted file mode 100644 index 6b47075..0000000 Binary files a/ncurses/terminfo/61/att5425-w and /dev/null differ diff --git a/ncurses/terminfo/61/att5430 b/ncurses/terminfo/61/att5430 deleted file mode 100644 index 92dffac..0000000 Binary files a/ncurses/terminfo/61/att5430 and /dev/null differ diff --git a/ncurses/terminfo/61/att5620 b/ncurses/terminfo/61/att5620 deleted file mode 100644 index d096883..0000000 Binary files a/ncurses/terminfo/61/att5620 and /dev/null differ diff --git a/ncurses/terminfo/61/att5620-1 b/ncurses/terminfo/61/att5620-1 deleted file mode 100644 index 7212c7a..0000000 Binary files a/ncurses/terminfo/61/att5620-1 and /dev/null differ diff --git a/ncurses/terminfo/61/att5620-24 b/ncurses/terminfo/61/att5620-24 deleted file mode 100644 index c812b62..0000000 Binary files a/ncurses/terminfo/61/att5620-24 and /dev/null differ diff --git a/ncurses/terminfo/61/att5620-34 b/ncurses/terminfo/61/att5620-34 deleted file mode 100644 index 5e60f0b..0000000 Binary files a/ncurses/terminfo/61/att5620-34 and /dev/null differ diff --git a/ncurses/terminfo/61/att5620-s b/ncurses/terminfo/61/att5620-s deleted file mode 100644 index b313bcc..0000000 Binary files a/ncurses/terminfo/61/att5620-s and /dev/null differ diff --git a/ncurses/terminfo/61/att605 b/ncurses/terminfo/61/att605 deleted file mode 100644 index 3436ffe..0000000 Binary files a/ncurses/terminfo/61/att605 and /dev/null differ diff --git a/ncurses/terminfo/61/att605-pc b/ncurses/terminfo/61/att605-pc deleted file mode 100644 index 8c11b42..0000000 Binary files a/ncurses/terminfo/61/att605-pc and /dev/null differ diff --git a/ncurses/terminfo/61/att605-w b/ncurses/terminfo/61/att605-w deleted file mode 100644 index 6c6eb54..0000000 Binary files a/ncurses/terminfo/61/att605-w and /dev/null differ diff --git a/ncurses/terminfo/61/att610 b/ncurses/terminfo/61/att610 deleted file mode 100644 index 07d4094..0000000 Binary files a/ncurses/terminfo/61/att610 and /dev/null differ diff --git a/ncurses/terminfo/61/att610-103k b/ncurses/terminfo/61/att610-103k deleted file mode 100644 index 114b82a..0000000 Binary files a/ncurses/terminfo/61/att610-103k and /dev/null differ diff --git a/ncurses/terminfo/61/att610-103k-w b/ncurses/terminfo/61/att610-103k-w deleted file mode 100644 index 5058bb4..0000000 Binary files a/ncurses/terminfo/61/att610-103k-w and /dev/null differ diff --git a/ncurses/terminfo/61/att610-w b/ncurses/terminfo/61/att610-w deleted file mode 100644 index 747bf8b..0000000 Binary files a/ncurses/terminfo/61/att610-w and /dev/null differ diff --git a/ncurses/terminfo/61/att615 b/ncurses/terminfo/61/att615 deleted file mode 100644 index 210e673..0000000 Binary files a/ncurses/terminfo/61/att615 and /dev/null differ diff --git a/ncurses/terminfo/61/att615-103k b/ncurses/terminfo/61/att615-103k deleted file mode 100644 index d15d062..0000000 Binary files a/ncurses/terminfo/61/att615-103k and /dev/null differ diff --git a/ncurses/terminfo/61/att615-103k-w b/ncurses/terminfo/61/att615-103k-w deleted file mode 100644 index b7df78d..0000000 Binary files a/ncurses/terminfo/61/att615-103k-w and /dev/null differ diff --git a/ncurses/terminfo/61/att615-w b/ncurses/terminfo/61/att615-w deleted file mode 100644 index 9114794..0000000 Binary files a/ncurses/terminfo/61/att615-w and /dev/null differ diff --git a/ncurses/terminfo/61/att620 b/ncurses/terminfo/61/att620 deleted file mode 100644 index f6dc6d6..0000000 Binary files a/ncurses/terminfo/61/att620 and /dev/null differ diff --git a/ncurses/terminfo/61/att620-103k b/ncurses/terminfo/61/att620-103k deleted file mode 100644 index ae48c6e..0000000 Binary files a/ncurses/terminfo/61/att620-103k and /dev/null differ diff --git a/ncurses/terminfo/61/att620-103k-w b/ncurses/terminfo/61/att620-103k-w deleted file mode 100644 index d4c7cc6..0000000 Binary files a/ncurses/terminfo/61/att620-103k-w and /dev/null differ diff --git a/ncurses/terminfo/61/att620-w b/ncurses/terminfo/61/att620-w deleted file mode 100644 index 5465fb4..0000000 Binary files a/ncurses/terminfo/61/att620-w and /dev/null differ diff --git a/ncurses/terminfo/61/att630 b/ncurses/terminfo/61/att630 deleted file mode 100644 index 3dfdb7c..0000000 Binary files a/ncurses/terminfo/61/att630 and /dev/null differ diff --git a/ncurses/terminfo/61/att630-24 b/ncurses/terminfo/61/att630-24 deleted file mode 100644 index aad3963..0000000 Binary files a/ncurses/terminfo/61/att630-24 and /dev/null differ diff --git a/ncurses/terminfo/61/att6386 b/ncurses/terminfo/61/att6386 deleted file mode 100644 index c380d11..0000000 Binary files a/ncurses/terminfo/61/att6386 and /dev/null differ diff --git a/ncurses/terminfo/61/att700 b/ncurses/terminfo/61/att700 deleted file mode 100644 index b7c1c84..0000000 Binary files a/ncurses/terminfo/61/att700 and /dev/null differ diff --git a/ncurses/terminfo/61/att730 b/ncurses/terminfo/61/att730 deleted file mode 100644 index 6d51ac9..0000000 Binary files a/ncurses/terminfo/61/att730 and /dev/null differ diff --git a/ncurses/terminfo/61/att730-24 b/ncurses/terminfo/61/att730-24 deleted file mode 100644 index 0e0e652..0000000 Binary files a/ncurses/terminfo/61/att730-24 and /dev/null differ diff --git a/ncurses/terminfo/61/att730-41 b/ncurses/terminfo/61/att730-41 deleted file mode 100644 index 084540e..0000000 Binary files a/ncurses/terminfo/61/att730-41 and /dev/null differ diff --git a/ncurses/terminfo/61/att7300 b/ncurses/terminfo/61/att7300 deleted file mode 100644 index b41843d..0000000 Binary files a/ncurses/terminfo/61/att7300 and /dev/null differ diff --git a/ncurses/terminfo/61/att730r b/ncurses/terminfo/61/att730r deleted file mode 100644 index b13723d..0000000 Binary files a/ncurses/terminfo/61/att730r and /dev/null differ diff --git a/ncurses/terminfo/61/att730r-24 b/ncurses/terminfo/61/att730r-24 deleted file mode 100644 index 71558c8..0000000 Binary files a/ncurses/terminfo/61/att730r-24 and /dev/null differ diff --git a/ncurses/terminfo/61/att730r-41 b/ncurses/terminfo/61/att730r-41 deleted file mode 100644 index 1a901e7..0000000 Binary files a/ncurses/terminfo/61/att730r-41 and /dev/null differ diff --git a/ncurses/terminfo/61/avatar b/ncurses/terminfo/61/avatar deleted file mode 100644 index 15b4ae0..0000000 Binary files a/ncurses/terminfo/61/avatar and /dev/null differ diff --git a/ncurses/terminfo/61/avatar0 b/ncurses/terminfo/61/avatar0 deleted file mode 100644 index 4a3f7f9..0000000 Binary files a/ncurses/terminfo/61/avatar0 and /dev/null differ diff --git a/ncurses/terminfo/61/avatar0+ b/ncurses/terminfo/61/avatar0+ deleted file mode 100644 index 664cd0d..0000000 Binary files a/ncurses/terminfo/61/avatar0+ and /dev/null differ diff --git a/ncurses/terminfo/61/avatar1 b/ncurses/terminfo/61/avatar1 deleted file mode 100644 index 15b4ae0..0000000 Binary files a/ncurses/terminfo/61/avatar1 and /dev/null differ diff --git a/ncurses/terminfo/61/avt b/ncurses/terminfo/61/avt deleted file mode 100644 index d9bb2e0..0000000 Binary files a/ncurses/terminfo/61/avt and /dev/null differ diff --git a/ncurses/terminfo/61/avt+s b/ncurses/terminfo/61/avt+s deleted file mode 100644 index 2c0c983..0000000 Binary files a/ncurses/terminfo/61/avt+s and /dev/null differ diff --git a/ncurses/terminfo/61/avt-ns b/ncurses/terminfo/61/avt-ns deleted file mode 100644 index 05e4065..0000000 Binary files a/ncurses/terminfo/61/avt-ns and /dev/null differ diff --git a/ncurses/terminfo/61/avt-rv b/ncurses/terminfo/61/avt-rv deleted file mode 100644 index 69ab1b7..0000000 Binary files a/ncurses/terminfo/61/avt-rv and /dev/null differ diff --git a/ncurses/terminfo/61/avt-rv-ns b/ncurses/terminfo/61/avt-rv-ns deleted file mode 100644 index a682325..0000000 Binary files a/ncurses/terminfo/61/avt-rv-ns and /dev/null differ diff --git a/ncurses/terminfo/61/avt-rv-s b/ncurses/terminfo/61/avt-rv-s deleted file mode 100644 index 69ab1b7..0000000 Binary files a/ncurses/terminfo/61/avt-rv-s and /dev/null differ diff --git a/ncurses/terminfo/61/avt-s b/ncurses/terminfo/61/avt-s deleted file mode 100644 index d9bb2e0..0000000 Binary files a/ncurses/terminfo/61/avt-s and /dev/null differ diff --git a/ncurses/terminfo/61/avt-w b/ncurses/terminfo/61/avt-w deleted file mode 100644 index aa567d8..0000000 Binary files a/ncurses/terminfo/61/avt-w and /dev/null differ diff --git a/ncurses/terminfo/61/avt-w-ns b/ncurses/terminfo/61/avt-w-ns deleted file mode 100644 index 88c872c..0000000 Binary files a/ncurses/terminfo/61/avt-w-ns and /dev/null differ diff --git a/ncurses/terminfo/61/avt-w-rv b/ncurses/terminfo/61/avt-w-rv deleted file mode 100644 index d0dd3ac..0000000 Binary files a/ncurses/terminfo/61/avt-w-rv and /dev/null differ diff --git a/ncurses/terminfo/61/avt-w-rv-ns b/ncurses/terminfo/61/avt-w-rv-ns deleted file mode 100644 index c328add..0000000 Binary files a/ncurses/terminfo/61/avt-w-rv-ns and /dev/null differ diff --git a/ncurses/terminfo/61/avt-w-rv-s b/ncurses/terminfo/61/avt-w-rv-s deleted file mode 100644 index d0dd3ac..0000000 Binary files a/ncurses/terminfo/61/avt-w-rv-s and /dev/null differ diff --git a/ncurses/terminfo/61/avt-w-s b/ncurses/terminfo/61/avt-w-s deleted file mode 100644 index aa567d8..0000000 Binary files a/ncurses/terminfo/61/avt-w-s and /dev/null differ diff --git a/ncurses/terminfo/61/aws b/ncurses/terminfo/61/aws deleted file mode 100644 index 68946fa..0000000 Binary files a/ncurses/terminfo/61/aws and /dev/null differ diff --git a/ncurses/terminfo/61/awsc b/ncurses/terminfo/61/awsc deleted file mode 100644 index 14400e7..0000000 Binary files a/ncurses/terminfo/61/awsc and /dev/null differ diff --git a/ncurses/terminfo/62/b-128 b/ncurses/terminfo/62/b-128 deleted file mode 100644 index 775ba09..0000000 Binary files a/ncurses/terminfo/62/b-128 and /dev/null differ diff --git a/ncurses/terminfo/62/bantam b/ncurses/terminfo/62/bantam deleted file mode 100644 index 30ec005..0000000 Binary files a/ncurses/terminfo/62/bantam and /dev/null differ diff --git a/ncurses/terminfo/62/basic4 b/ncurses/terminfo/62/basic4 deleted file mode 100644 index 5c29b8c..0000000 Binary files a/ncurses/terminfo/62/basic4 and /dev/null differ diff --git a/ncurses/terminfo/62/basis b/ncurses/terminfo/62/basis deleted file mode 100644 index ff450f7..0000000 Binary files a/ncurses/terminfo/62/basis and /dev/null differ diff --git a/ncurses/terminfo/62/bct510a b/ncurses/terminfo/62/bct510a deleted file mode 100644 index 630de8d..0000000 Binary files a/ncurses/terminfo/62/bct510a and /dev/null differ diff --git a/ncurses/terminfo/62/bct510d b/ncurses/terminfo/62/bct510d deleted file mode 100644 index 847c897..0000000 Binary files a/ncurses/terminfo/62/bct510d and /dev/null differ diff --git a/ncurses/terminfo/62/beacon b/ncurses/terminfo/62/beacon deleted file mode 100644 index ff01303..0000000 Binary files a/ncurses/terminfo/62/beacon and /dev/null differ diff --git a/ncurses/terminfo/62/bee b/ncurses/terminfo/62/bee deleted file mode 100644 index 24de02b..0000000 Binary files a/ncurses/terminfo/62/bee and /dev/null differ diff --git a/ncurses/terminfo/62/beehive b/ncurses/terminfo/62/beehive deleted file mode 100644 index 24de02b..0000000 Binary files a/ncurses/terminfo/62/beehive and /dev/null differ diff --git a/ncurses/terminfo/62/beehive3 b/ncurses/terminfo/62/beehive3 deleted file mode 100644 index 462bc16..0000000 Binary files a/ncurses/terminfo/62/beehive3 and /dev/null differ diff --git a/ncurses/terminfo/62/beehive4 b/ncurses/terminfo/62/beehive4 deleted file mode 100644 index e506654..0000000 Binary files a/ncurses/terminfo/62/beehive4 and /dev/null differ diff --git a/ncurses/terminfo/62/beehiveIIIm b/ncurses/terminfo/62/beehiveIIIm deleted file mode 100644 index 462bc16..0000000 Binary files a/ncurses/terminfo/62/beehiveIIIm and /dev/null differ diff --git a/ncurses/terminfo/62/beterm b/ncurses/terminfo/62/beterm deleted file mode 100644 index 7a897e1..0000000 Binary files a/ncurses/terminfo/62/beterm and /dev/null differ diff --git a/ncurses/terminfo/62/bg1.25 b/ncurses/terminfo/62/bg1.25 deleted file mode 100644 index fad06c2..0000000 Binary files a/ncurses/terminfo/62/bg1.25 and /dev/null differ diff --git a/ncurses/terminfo/62/bg1.25nv b/ncurses/terminfo/62/bg1.25nv deleted file mode 100644 index de218ae..0000000 Binary files a/ncurses/terminfo/62/bg1.25nv and /dev/null differ diff --git a/ncurses/terminfo/62/bg1.25rv b/ncurses/terminfo/62/bg1.25rv deleted file mode 100644 index d2323ea..0000000 Binary files a/ncurses/terminfo/62/bg1.25rv and /dev/null differ diff --git a/ncurses/terminfo/62/bg2.0 b/ncurses/terminfo/62/bg2.0 deleted file mode 100644 index 89d3ae0..0000000 Binary files a/ncurses/terminfo/62/bg2.0 and /dev/null differ diff --git a/ncurses/terminfo/62/bg2.0nv b/ncurses/terminfo/62/bg2.0nv deleted file mode 100644 index b145bf5..0000000 Binary files a/ncurses/terminfo/62/bg2.0nv and /dev/null differ diff --git a/ncurses/terminfo/62/bg2.0rv b/ncurses/terminfo/62/bg2.0rv deleted file mode 100644 index f365612..0000000 Binary files a/ncurses/terminfo/62/bg2.0rv and /dev/null differ diff --git a/ncurses/terminfo/62/bg3.10 b/ncurses/terminfo/62/bg3.10 deleted file mode 100644 index 89d3ae0..0000000 Binary files a/ncurses/terminfo/62/bg3.10 and /dev/null differ diff --git a/ncurses/terminfo/62/bg3.10nv b/ncurses/terminfo/62/bg3.10nv deleted file mode 100644 index b145bf5..0000000 Binary files a/ncurses/terminfo/62/bg3.10nv and /dev/null differ diff --git a/ncurses/terminfo/62/bg3.10rv b/ncurses/terminfo/62/bg3.10rv deleted file mode 100644 index f365612..0000000 Binary files a/ncurses/terminfo/62/bg3.10rv and /dev/null differ diff --git a/ncurses/terminfo/62/bh3m b/ncurses/terminfo/62/bh3m deleted file mode 100644 index 462bc16..0000000 Binary files a/ncurses/terminfo/62/bh3m and /dev/null differ diff --git a/ncurses/terminfo/62/bh4 b/ncurses/terminfo/62/bh4 deleted file mode 100644 index e506654..0000000 Binary files a/ncurses/terminfo/62/bh4 and /dev/null differ diff --git a/ncurses/terminfo/62/bitgraph b/ncurses/terminfo/62/bitgraph deleted file mode 100644 index b145bf5..0000000 Binary files a/ncurses/terminfo/62/bitgraph and /dev/null differ diff --git a/ncurses/terminfo/62/blit b/ncurses/terminfo/62/blit deleted file mode 100644 index 36a565f..0000000 Binary files a/ncurses/terminfo/62/blit and /dev/null differ diff --git a/ncurses/terminfo/62/bobcat b/ncurses/terminfo/62/bobcat deleted file mode 100644 index a0ed4ab..0000000 Binary files a/ncurses/terminfo/62/bobcat and /dev/null differ diff --git a/ncurses/terminfo/62/bq300 b/ncurses/terminfo/62/bq300 deleted file mode 100644 index 8e05308..0000000 Binary files a/ncurses/terminfo/62/bq300 and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8 b/ncurses/terminfo/62/bq300-8 deleted file mode 100644 index 10b0a39..0000000 Binary files a/ncurses/terminfo/62/bq300-8 and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8-pc b/ncurses/terminfo/62/bq300-8-pc deleted file mode 100644 index ad8af62..0000000 Binary files a/ncurses/terminfo/62/bq300-8-pc and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8-pc-rv b/ncurses/terminfo/62/bq300-8-pc-rv deleted file mode 100644 index 8d745db..0000000 Binary files a/ncurses/terminfo/62/bq300-8-pc-rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8-pc-w b/ncurses/terminfo/62/bq300-8-pc-w deleted file mode 100644 index 72bcbdd..0000000 Binary files a/ncurses/terminfo/62/bq300-8-pc-w and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8-pc-w-rv b/ncurses/terminfo/62/bq300-8-pc-w-rv deleted file mode 100644 index c9ce7d9..0000000 Binary files a/ncurses/terminfo/62/bq300-8-pc-w-rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8rv b/ncurses/terminfo/62/bq300-8rv deleted file mode 100644 index 1ef549b..0000000 Binary files a/ncurses/terminfo/62/bq300-8rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-8w b/ncurses/terminfo/62/bq300-8w deleted file mode 100644 index d5906ea..0000000 Binary files a/ncurses/terminfo/62/bq300-8w and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-pc b/ncurses/terminfo/62/bq300-pc deleted file mode 100644 index 8cb6820..0000000 Binary files a/ncurses/terminfo/62/bq300-pc and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-pc-rv b/ncurses/terminfo/62/bq300-pc-rv deleted file mode 100644 index 948a8bf..0000000 Binary files a/ncurses/terminfo/62/bq300-pc-rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-pc-w b/ncurses/terminfo/62/bq300-pc-w deleted file mode 100644 index b6983e4..0000000 Binary files a/ncurses/terminfo/62/bq300-pc-w and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-pc-w-rv b/ncurses/terminfo/62/bq300-pc-w-rv deleted file mode 100644 index c02aeb2..0000000 Binary files a/ncurses/terminfo/62/bq300-pc-w-rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-rv b/ncurses/terminfo/62/bq300-rv deleted file mode 100644 index ee3c62d..0000000 Binary files a/ncurses/terminfo/62/bq300-rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-w b/ncurses/terminfo/62/bq300-w deleted file mode 100644 index afe5f9a..0000000 Binary files a/ncurses/terminfo/62/bq300-w and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-w-8rv b/ncurses/terminfo/62/bq300-w-8rv deleted file mode 100644 index de44e68..0000000 Binary files a/ncurses/terminfo/62/bq300-w-8rv and /dev/null differ diff --git a/ncurses/terminfo/62/bq300-w-rv b/ncurses/terminfo/62/bq300-w-rv deleted file mode 100644 index 4b5eaeb..0000000 Binary files a/ncurses/terminfo/62/bq300-w-rv and /dev/null differ diff --git a/ncurses/terminfo/62/bsdos-pc b/ncurses/terminfo/62/bsdos-pc deleted file mode 100644 index e998a54..0000000 Binary files a/ncurses/terminfo/62/bsdos-pc and /dev/null differ diff --git a/ncurses/terminfo/62/bsdos-pc-m b/ncurses/terminfo/62/bsdos-pc-m deleted file mode 100644 index 5ea4c19..0000000 Binary files a/ncurses/terminfo/62/bsdos-pc-m and /dev/null differ diff --git a/ncurses/terminfo/62/bsdos-pc-mono b/ncurses/terminfo/62/bsdos-pc-mono deleted file mode 100644 index 5ea4c19..0000000 Binary files a/ncurses/terminfo/62/bsdos-pc-mono and /dev/null differ diff --git a/ncurses/terminfo/62/bsdos-pc-nobold b/ncurses/terminfo/62/bsdos-pc-nobold deleted file mode 100644 index 3c56fae..0000000 Binary files a/ncurses/terminfo/62/bsdos-pc-nobold and /dev/null differ diff --git a/ncurses/terminfo/62/bsdos-ppc b/ncurses/terminfo/62/bsdos-ppc deleted file mode 100644 index 319db16..0000000 Binary files a/ncurses/terminfo/62/bsdos-ppc and /dev/null differ diff --git a/ncurses/terminfo/62/bsdos-sparc b/ncurses/terminfo/62/bsdos-sparc deleted file mode 100644 index ab78e3a..0000000 Binary files a/ncurses/terminfo/62/bsdos-sparc and /dev/null differ diff --git a/ncurses/terminfo/63/c100 b/ncurses/terminfo/63/c100 deleted file mode 100644 index dafa53c..0000000 Binary files a/ncurses/terminfo/63/c100 and /dev/null differ diff --git a/ncurses/terminfo/63/c100-1p b/ncurses/terminfo/63/c100-1p deleted file mode 100644 index d388733..0000000 Binary files a/ncurses/terminfo/63/c100-1p and /dev/null differ diff --git a/ncurses/terminfo/63/c100-4p b/ncurses/terminfo/63/c100-4p deleted file mode 100644 index dafa53c..0000000 Binary files a/ncurses/terminfo/63/c100-4p and /dev/null differ diff --git a/ncurses/terminfo/63/c100-rv b/ncurses/terminfo/63/c100-rv deleted file mode 100644 index 4437a1a..0000000 Binary files a/ncurses/terminfo/63/c100-rv and /dev/null differ diff --git a/ncurses/terminfo/63/c100-rv-4p b/ncurses/terminfo/63/c100-rv-4p deleted file mode 100644 index 4437a1a..0000000 Binary files a/ncurses/terminfo/63/c100-rv-4p and /dev/null differ diff --git a/ncurses/terminfo/63/c104 b/ncurses/terminfo/63/c104 deleted file mode 100644 index dafa53c..0000000 Binary files a/ncurses/terminfo/63/c104 and /dev/null differ diff --git a/ncurses/terminfo/63/c108 b/ncurses/terminfo/63/c108 deleted file mode 100644 index b232759..0000000 Binary files a/ncurses/terminfo/63/c108 and /dev/null differ diff --git a/ncurses/terminfo/63/c108-4p b/ncurses/terminfo/63/c108-4p deleted file mode 100644 index 9193ee6..0000000 Binary files a/ncurses/terminfo/63/c108-4p and /dev/null differ diff --git a/ncurses/terminfo/63/c108-8p b/ncurses/terminfo/63/c108-8p deleted file mode 100644 index b232759..0000000 Binary files a/ncurses/terminfo/63/c108-8p and /dev/null differ diff --git a/ncurses/terminfo/63/c108-rv b/ncurses/terminfo/63/c108-rv deleted file mode 100644 index bdacbb1..0000000 Binary files a/ncurses/terminfo/63/c108-rv and /dev/null differ diff --git a/ncurses/terminfo/63/c108-rv-4p b/ncurses/terminfo/63/c108-rv-4p deleted file mode 100644 index ca2dcc6..0000000 Binary files a/ncurses/terminfo/63/c108-rv-4p and /dev/null differ diff --git a/ncurses/terminfo/63/c108-rv-8p b/ncurses/terminfo/63/c108-rv-8p deleted file mode 100644 index bdacbb1..0000000 Binary files a/ncurses/terminfo/63/c108-rv-8p and /dev/null differ diff --git a/ncurses/terminfo/63/c108-w b/ncurses/terminfo/63/c108-w deleted file mode 100644 index c9e0e31..0000000 Binary files a/ncurses/terminfo/63/c108-w and /dev/null differ diff --git a/ncurses/terminfo/63/c108-w-8p b/ncurses/terminfo/63/c108-w-8p deleted file mode 100644 index c9e0e31..0000000 Binary files a/ncurses/terminfo/63/c108-w-8p and /dev/null differ diff --git a/ncurses/terminfo/63/c300 b/ncurses/terminfo/63/c300 deleted file mode 100644 index 8b4ec9c..0000000 Binary files a/ncurses/terminfo/63/c300 and /dev/null differ diff --git a/ncurses/terminfo/63/c301 b/ncurses/terminfo/63/c301 deleted file mode 100644 index d5228f9..0000000 Binary files a/ncurses/terminfo/63/c301 and /dev/null differ diff --git a/ncurses/terminfo/63/c321 b/ncurses/terminfo/63/c321 deleted file mode 100644 index d5228f9..0000000 Binary files a/ncurses/terminfo/63/c321 and /dev/null differ diff --git a/ncurses/terminfo/63/ca22851 b/ncurses/terminfo/63/ca22851 deleted file mode 100644 index 40b5cf8..0000000 Binary files a/ncurses/terminfo/63/ca22851 and /dev/null differ diff --git a/ncurses/terminfo/63/cad68-2 b/ncurses/terminfo/63/cad68-2 deleted file mode 100644 index d513db5..0000000 Binary files a/ncurses/terminfo/63/cad68-2 and /dev/null differ diff --git a/ncurses/terminfo/63/cad68-3 b/ncurses/terminfo/63/cad68-3 deleted file mode 100644 index 726319e..0000000 Binary files a/ncurses/terminfo/63/cad68-3 and /dev/null differ diff --git a/ncurses/terminfo/63/cbblit b/ncurses/terminfo/63/cbblit deleted file mode 100644 index 1e1d2da..0000000 Binary files a/ncurses/terminfo/63/cbblit and /dev/null differ diff --git a/ncurses/terminfo/63/cbunix b/ncurses/terminfo/63/cbunix deleted file mode 100644 index e5e9677..0000000 Binary files a/ncurses/terminfo/63/cbunix and /dev/null differ diff --git a/ncurses/terminfo/63/cci b/ncurses/terminfo/63/cci deleted file mode 100644 index c99e7b0..0000000 Binary files a/ncurses/terminfo/63/cci and /dev/null differ diff --git a/ncurses/terminfo/63/cci1 b/ncurses/terminfo/63/cci1 deleted file mode 100644 index c99e7b0..0000000 Binary files a/ncurses/terminfo/63/cci1 and /dev/null differ diff --git a/ncurses/terminfo/63/cdc456 b/ncurses/terminfo/63/cdc456 deleted file mode 100644 index e9c2503..0000000 Binary files a/ncurses/terminfo/63/cdc456 and /dev/null differ diff --git a/ncurses/terminfo/63/cdc721 b/ncurses/terminfo/63/cdc721 deleted file mode 100644 index 09aa5d9..0000000 Binary files a/ncurses/terminfo/63/cdc721 and /dev/null differ diff --git a/ncurses/terminfo/63/cdc721-esc b/ncurses/terminfo/63/cdc721-esc deleted file mode 100644 index a5f4b0c..0000000 Binary files a/ncurses/terminfo/63/cdc721-esc and /dev/null differ diff --git a/ncurses/terminfo/63/cdc721ll b/ncurses/terminfo/63/cdc721ll deleted file mode 100644 index 7c18609..0000000 Binary files a/ncurses/terminfo/63/cdc721ll and /dev/null differ diff --git a/ncurses/terminfo/63/cdc752 b/ncurses/terminfo/63/cdc752 deleted file mode 100644 index 442a609..0000000 Binary files a/ncurses/terminfo/63/cdc752 and /dev/null differ diff --git a/ncurses/terminfo/63/cdc756 b/ncurses/terminfo/63/cdc756 deleted file mode 100644 index 9753985..0000000 Binary files a/ncurses/terminfo/63/cdc756 and /dev/null differ diff --git a/ncurses/terminfo/63/cg7900 b/ncurses/terminfo/63/cg7900 deleted file mode 100644 index 935a1cf..0000000 Binary files a/ncurses/terminfo/63/cg7900 and /dev/null differ diff --git a/ncurses/terminfo/63/cgc2 b/ncurses/terminfo/63/cgc2 deleted file mode 100644 index d513db5..0000000 Binary files a/ncurses/terminfo/63/cgc2 and /dev/null differ diff --git a/ncurses/terminfo/63/cgc3 b/ncurses/terminfo/63/cgc3 deleted file mode 100644 index 726319e..0000000 Binary files a/ncurses/terminfo/63/cgc3 and /dev/null differ diff --git a/ncurses/terminfo/63/chromatics b/ncurses/terminfo/63/chromatics deleted file mode 100644 index 935a1cf..0000000 Binary files a/ncurses/terminfo/63/chromatics and /dev/null differ diff --git a/ncurses/terminfo/63/ci8510 b/ncurses/terminfo/63/ci8510 deleted file mode 100644 index 7dae7f0..0000000 Binary files a/ncurses/terminfo/63/ci8510 and /dev/null differ diff --git a/ncurses/terminfo/63/cit-80 b/ncurses/terminfo/63/cit-80 deleted file mode 100644 index 9abaea2..0000000 Binary files a/ncurses/terminfo/63/cit-80 and /dev/null differ diff --git a/ncurses/terminfo/63/cit101 b/ncurses/terminfo/63/cit101 deleted file mode 100644 index b0807b9..0000000 Binary files a/ncurses/terminfo/63/cit101 and /dev/null differ diff --git a/ncurses/terminfo/63/cit101e b/ncurses/terminfo/63/cit101e deleted file mode 100644 index 6332dd8..0000000 Binary files a/ncurses/terminfo/63/cit101e and /dev/null differ diff --git a/ncurses/terminfo/63/cit101e-132 b/ncurses/terminfo/63/cit101e-132 deleted file mode 100644 index a42014c..0000000 Binary files a/ncurses/terminfo/63/cit101e-132 and /dev/null differ diff --git a/ncurses/terminfo/63/cit101e-n b/ncurses/terminfo/63/cit101e-n deleted file mode 100644 index 4177bff..0000000 Binary files a/ncurses/terminfo/63/cit101e-n and /dev/null differ diff --git a/ncurses/terminfo/63/cit101e-n132 b/ncurses/terminfo/63/cit101e-n132 deleted file mode 100644 index 9ee1a5d..0000000 Binary files a/ncurses/terminfo/63/cit101e-n132 and /dev/null differ diff --git a/ncurses/terminfo/63/cit101e-rv b/ncurses/terminfo/63/cit101e-rv deleted file mode 100644 index c25901d..0000000 Binary files a/ncurses/terminfo/63/cit101e-rv and /dev/null differ diff --git a/ncurses/terminfo/63/cit500 b/ncurses/terminfo/63/cit500 deleted file mode 100644 index 69047cd..0000000 Binary files a/ncurses/terminfo/63/cit500 and /dev/null differ diff --git a/ncurses/terminfo/63/cit80 b/ncurses/terminfo/63/cit80 deleted file mode 100644 index 9abaea2..0000000 Binary files a/ncurses/terminfo/63/cit80 and /dev/null differ diff --git a/ncurses/terminfo/63/citc b/ncurses/terminfo/63/citc deleted file mode 100644 index b0807b9..0000000 Binary files a/ncurses/terminfo/63/citc and /dev/null differ diff --git a/ncurses/terminfo/63/citoh b/ncurses/terminfo/63/citoh deleted file mode 100644 index 7dae7f0..0000000 Binary files a/ncurses/terminfo/63/citoh and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-6lpi b/ncurses/terminfo/63/citoh-6lpi deleted file mode 100644 index 3f1f3c1..0000000 Binary files a/ncurses/terminfo/63/citoh-6lpi and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-8lpi b/ncurses/terminfo/63/citoh-8lpi deleted file mode 100644 index a8d2ed0..0000000 Binary files a/ncurses/terminfo/63/citoh-8lpi and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-comp b/ncurses/terminfo/63/citoh-comp deleted file mode 100644 index b1bb631..0000000 Binary files a/ncurses/terminfo/63/citoh-comp and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-elite b/ncurses/terminfo/63/citoh-elite deleted file mode 100644 index 9f70d7a..0000000 Binary files a/ncurses/terminfo/63/citoh-elite and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-pica b/ncurses/terminfo/63/citoh-pica deleted file mode 100644 index 83f0e01..0000000 Binary files a/ncurses/terminfo/63/citoh-pica and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-prop b/ncurses/terminfo/63/citoh-prop deleted file mode 100644 index 2caacb2..0000000 Binary files a/ncurses/terminfo/63/citoh-prop and /dev/null differ diff --git a/ncurses/terminfo/63/citoh-ps b/ncurses/terminfo/63/citoh-ps deleted file mode 100644 index 2caacb2..0000000 Binary files a/ncurses/terminfo/63/citoh-ps and /dev/null differ diff --git a/ncurses/terminfo/63/coco3 b/ncurses/terminfo/63/coco3 deleted file mode 100644 index 9d523da..0000000 Binary files a/ncurses/terminfo/63/coco3 and /dev/null differ diff --git a/ncurses/terminfo/63/coherent b/ncurses/terminfo/63/coherent deleted file mode 100644 index e6e3856..0000000 Binary files a/ncurses/terminfo/63/coherent and /dev/null differ diff --git a/ncurses/terminfo/63/color_xterm b/ncurses/terminfo/63/color_xterm deleted file mode 100644 index c0255dc..0000000 Binary files a/ncurses/terminfo/63/color_xterm and /dev/null differ diff --git a/ncurses/terminfo/63/colorscan b/ncurses/terminfo/63/colorscan deleted file mode 100644 index ca8d9ed..0000000 Binary files a/ncurses/terminfo/63/colorscan and /dev/null differ diff --git a/ncurses/terminfo/63/commodore b/ncurses/terminfo/63/commodore deleted file mode 100644 index 775ba09..0000000 Binary files a/ncurses/terminfo/63/commodore and /dev/null differ diff --git a/ncurses/terminfo/63/concept b/ncurses/terminfo/63/concept deleted file mode 100644 index dafa53c..0000000 Binary files a/ncurses/terminfo/63/concept and /dev/null differ diff --git a/ncurses/terminfo/63/concept-avt b/ncurses/terminfo/63/concept-avt deleted file mode 100644 index d9bb2e0..0000000 Binary files a/ncurses/terminfo/63/concept-avt and /dev/null differ diff --git a/ncurses/terminfo/63/concept100 b/ncurses/terminfo/63/concept100 deleted file mode 100644 index dafa53c..0000000 Binary files a/ncurses/terminfo/63/concept100 and /dev/null differ diff --git a/ncurses/terminfo/63/concept100-rv b/ncurses/terminfo/63/concept100-rv deleted file mode 100644 index 4437a1a..0000000 Binary files a/ncurses/terminfo/63/concept100-rv and /dev/null differ diff --git a/ncurses/terminfo/63/concept108 b/ncurses/terminfo/63/concept108 deleted file mode 100644 index b232759..0000000 Binary files a/ncurses/terminfo/63/concept108 and /dev/null differ diff --git a/ncurses/terminfo/63/concept108-4p b/ncurses/terminfo/63/concept108-4p deleted file mode 100644 index 9193ee6..0000000 Binary files a/ncurses/terminfo/63/concept108-4p and /dev/null differ diff --git a/ncurses/terminfo/63/concept108-8p b/ncurses/terminfo/63/concept108-8p deleted file mode 100644 index b232759..0000000 Binary files a/ncurses/terminfo/63/concept108-8p and /dev/null differ diff --git a/ncurses/terminfo/63/concept108-w-8 b/ncurses/terminfo/63/concept108-w-8 deleted file mode 100644 index c9e0e31..0000000 Binary files a/ncurses/terminfo/63/concept108-w-8 and /dev/null differ diff --git a/ncurses/terminfo/63/concept108-w8p b/ncurses/terminfo/63/concept108-w8p deleted file mode 100644 index c9e0e31..0000000 Binary files a/ncurses/terminfo/63/concept108-w8p and /dev/null differ diff --git a/ncurses/terminfo/63/concept108rv4p b/ncurses/terminfo/63/concept108rv4p deleted file mode 100644 index ca2dcc6..0000000 Binary files a/ncurses/terminfo/63/concept108rv4p and /dev/null differ diff --git a/ncurses/terminfo/63/cons25 b/ncurses/terminfo/63/cons25 deleted file mode 100644 index 09d473c..0000000 Binary files a/ncurses/terminfo/63/cons25 and /dev/null differ diff --git a/ncurses/terminfo/63/cons25-iso-m b/ncurses/terminfo/63/cons25-iso-m deleted file mode 100644 index e523d83..0000000 Binary files a/ncurses/terminfo/63/cons25-iso-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons25-iso8859 b/ncurses/terminfo/63/cons25-iso8859 deleted file mode 100644 index a665c88..0000000 Binary files a/ncurses/terminfo/63/cons25-iso8859 and /dev/null differ diff --git a/ncurses/terminfo/63/cons25-koi8-r b/ncurses/terminfo/63/cons25-koi8-r deleted file mode 100644 index 97db1c8..0000000 Binary files a/ncurses/terminfo/63/cons25-koi8-r and /dev/null differ diff --git a/ncurses/terminfo/63/cons25-koi8r-m b/ncurses/terminfo/63/cons25-koi8r-m deleted file mode 100644 index fa8a54e..0000000 Binary files a/ncurses/terminfo/63/cons25-koi8r-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons25-m b/ncurses/terminfo/63/cons25-m deleted file mode 100644 index 1fb9e09..0000000 Binary files a/ncurses/terminfo/63/cons25-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons25l1 b/ncurses/terminfo/63/cons25l1 deleted file mode 100644 index a665c88..0000000 Binary files a/ncurses/terminfo/63/cons25l1 and /dev/null differ diff --git a/ncurses/terminfo/63/cons25l1-m b/ncurses/terminfo/63/cons25l1-m deleted file mode 100644 index e523d83..0000000 Binary files a/ncurses/terminfo/63/cons25l1-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons25r b/ncurses/terminfo/63/cons25r deleted file mode 100644 index 97db1c8..0000000 Binary files a/ncurses/terminfo/63/cons25r and /dev/null differ diff --git a/ncurses/terminfo/63/cons25r-m b/ncurses/terminfo/63/cons25r-m deleted file mode 100644 index fa8a54e..0000000 Binary files a/ncurses/terminfo/63/cons25r-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons25w b/ncurses/terminfo/63/cons25w deleted file mode 100644 index 886114b..0000000 Binary files a/ncurses/terminfo/63/cons25w and /dev/null differ diff --git a/ncurses/terminfo/63/cons30 b/ncurses/terminfo/63/cons30 deleted file mode 100644 index 492e466..0000000 Binary files a/ncurses/terminfo/63/cons30 and /dev/null differ diff --git a/ncurses/terminfo/63/cons30-m b/ncurses/terminfo/63/cons30-m deleted file mode 100644 index 2d47a8d..0000000 Binary files a/ncurses/terminfo/63/cons30-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons43 b/ncurses/terminfo/63/cons43 deleted file mode 100644 index a7c0ff6..0000000 Binary files a/ncurses/terminfo/63/cons43 and /dev/null differ diff --git a/ncurses/terminfo/63/cons43-m b/ncurses/terminfo/63/cons43-m deleted file mode 100644 index 4c9883c..0000000 Binary files a/ncurses/terminfo/63/cons43-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons50 b/ncurses/terminfo/63/cons50 deleted file mode 100644 index 49b8cf3..0000000 Binary files a/ncurses/terminfo/63/cons50 and /dev/null differ diff --git a/ncurses/terminfo/63/cons50-iso-m b/ncurses/terminfo/63/cons50-iso-m deleted file mode 100644 index 62cd8c1..0000000 Binary files a/ncurses/terminfo/63/cons50-iso-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons50-iso8859 b/ncurses/terminfo/63/cons50-iso8859 deleted file mode 100644 index a521893..0000000 Binary files a/ncurses/terminfo/63/cons50-iso8859 and /dev/null differ diff --git a/ncurses/terminfo/63/cons50-koi8r b/ncurses/terminfo/63/cons50-koi8r deleted file mode 100644 index 35e36fa..0000000 Binary files a/ncurses/terminfo/63/cons50-koi8r and /dev/null differ diff --git a/ncurses/terminfo/63/cons50-koi8r-m b/ncurses/terminfo/63/cons50-koi8r-m deleted file mode 100644 index b6d46a7..0000000 Binary files a/ncurses/terminfo/63/cons50-koi8r-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons50-m b/ncurses/terminfo/63/cons50-m deleted file mode 100644 index fbea5f1..0000000 Binary files a/ncurses/terminfo/63/cons50-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons50l1 b/ncurses/terminfo/63/cons50l1 deleted file mode 100644 index a521893..0000000 Binary files a/ncurses/terminfo/63/cons50l1 and /dev/null differ diff --git a/ncurses/terminfo/63/cons50l1-m b/ncurses/terminfo/63/cons50l1-m deleted file mode 100644 index 62cd8c1..0000000 Binary files a/ncurses/terminfo/63/cons50l1-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons50r b/ncurses/terminfo/63/cons50r deleted file mode 100644 index 35e36fa..0000000 Binary files a/ncurses/terminfo/63/cons50r and /dev/null differ diff --git a/ncurses/terminfo/63/cons50r-m b/ncurses/terminfo/63/cons50r-m deleted file mode 100644 index b6d46a7..0000000 Binary files a/ncurses/terminfo/63/cons50r-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons60 b/ncurses/terminfo/63/cons60 deleted file mode 100644 index 07cedc6..0000000 Binary files a/ncurses/terminfo/63/cons60 and /dev/null differ diff --git a/ncurses/terminfo/63/cons60-iso b/ncurses/terminfo/63/cons60-iso deleted file mode 100644 index 4d47fdb..0000000 Binary files a/ncurses/terminfo/63/cons60-iso and /dev/null differ diff --git a/ncurses/terminfo/63/cons60-iso-m b/ncurses/terminfo/63/cons60-iso-m deleted file mode 100644 index f627d2b..0000000 Binary files a/ncurses/terminfo/63/cons60-iso-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons60-koi8r b/ncurses/terminfo/63/cons60-koi8r deleted file mode 100644 index 844c584..0000000 Binary files a/ncurses/terminfo/63/cons60-koi8r and /dev/null differ diff --git a/ncurses/terminfo/63/cons60-koi8r-m b/ncurses/terminfo/63/cons60-koi8r-m deleted file mode 100644 index 51bb96f..0000000 Binary files a/ncurses/terminfo/63/cons60-koi8r-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons60-m b/ncurses/terminfo/63/cons60-m deleted file mode 100644 index 7db73de..0000000 Binary files a/ncurses/terminfo/63/cons60-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons60l1 b/ncurses/terminfo/63/cons60l1 deleted file mode 100644 index 4d47fdb..0000000 Binary files a/ncurses/terminfo/63/cons60l1 and /dev/null differ diff --git a/ncurses/terminfo/63/cons60l1-m b/ncurses/terminfo/63/cons60l1-m deleted file mode 100644 index f627d2b..0000000 Binary files a/ncurses/terminfo/63/cons60l1-m and /dev/null differ diff --git a/ncurses/terminfo/63/cons60r b/ncurses/terminfo/63/cons60r deleted file mode 100644 index 844c584..0000000 Binary files a/ncurses/terminfo/63/cons60r and /dev/null differ diff --git a/ncurses/terminfo/63/cons60r-m b/ncurses/terminfo/63/cons60r-m deleted file mode 100644 index 51bb96f..0000000 Binary files a/ncurses/terminfo/63/cons60r-m and /dev/null differ diff --git a/ncurses/terminfo/63/contel300 b/ncurses/terminfo/63/contel300 deleted file mode 100644 index 8b4ec9c..0000000 Binary files a/ncurses/terminfo/63/contel300 and /dev/null differ diff --git a/ncurses/terminfo/63/contel301 b/ncurses/terminfo/63/contel301 deleted file mode 100644 index d5228f9..0000000 Binary files a/ncurses/terminfo/63/contel301 and /dev/null differ diff --git a/ncurses/terminfo/63/contel320 b/ncurses/terminfo/63/contel320 deleted file mode 100644 index 8b4ec9c..0000000 Binary files a/ncurses/terminfo/63/contel320 and /dev/null differ diff --git a/ncurses/terminfo/63/contel321 b/ncurses/terminfo/63/contel321 deleted file mode 100644 index d5228f9..0000000 Binary files a/ncurses/terminfo/63/contel321 and /dev/null differ diff --git a/ncurses/terminfo/63/cops b/ncurses/terminfo/63/cops deleted file mode 100644 index 2370fc9..0000000 Binary files a/ncurses/terminfo/63/cops and /dev/null differ diff --git a/ncurses/terminfo/63/cops-10 b/ncurses/terminfo/63/cops-10 deleted file mode 100644 index 2370fc9..0000000 Binary files a/ncurses/terminfo/63/cops-10 and /dev/null differ diff --git a/ncurses/terminfo/63/cops10 b/ncurses/terminfo/63/cops10 deleted file mode 100644 index 2370fc9..0000000 Binary files a/ncurses/terminfo/63/cops10 and /dev/null differ diff --git a/ncurses/terminfo/63/crt b/ncurses/terminfo/63/crt deleted file mode 100644 index 84e61ae..0000000 Binary files a/ncurses/terminfo/63/crt and /dev/null differ diff --git a/ncurses/terminfo/63/crt-vt220 b/ncurses/terminfo/63/crt-vt220 deleted file mode 100644 index 84e61ae..0000000 Binary files a/ncurses/terminfo/63/crt-vt220 and /dev/null differ diff --git a/ncurses/terminfo/63/cs10 b/ncurses/terminfo/63/cs10 deleted file mode 100644 index ca8d9ed..0000000 Binary files a/ncurses/terminfo/63/cs10 and /dev/null differ diff --git a/ncurses/terminfo/63/cs10-w b/ncurses/terminfo/63/cs10-w deleted file mode 100644 index 0b39156..0000000 Binary files a/ncurses/terminfo/63/cs10-w and /dev/null differ diff --git a/ncurses/terminfo/63/ct82 b/ncurses/terminfo/63/ct82 deleted file mode 100644 index b594d3a..0000000 Binary files a/ncurses/terminfo/63/ct82 and /dev/null differ diff --git a/ncurses/terminfo/63/ct8500 b/ncurses/terminfo/63/ct8500 deleted file mode 100644 index 9522a78..0000000 Binary files a/ncurses/terminfo/63/ct8500 and /dev/null differ diff --git a/ncurses/terminfo/63/ctrm b/ncurses/terminfo/63/ctrm deleted file mode 100644 index 799ed14..0000000 Binary files a/ncurses/terminfo/63/ctrm and /dev/null differ diff --git a/ncurses/terminfo/63/cx b/ncurses/terminfo/63/cx deleted file mode 100644 index c0255dc..0000000 Binary files a/ncurses/terminfo/63/cx and /dev/null differ diff --git a/ncurses/terminfo/63/cx100 b/ncurses/terminfo/63/cx100 deleted file mode 100644 index c0255dc..0000000 Binary files a/ncurses/terminfo/63/cx100 and /dev/null differ diff --git a/ncurses/terminfo/63/cyb110 b/ncurses/terminfo/63/cyb110 deleted file mode 100644 index 9f62ce5..0000000 Binary files a/ncurses/terminfo/63/cyb110 and /dev/null differ diff --git a/ncurses/terminfo/63/cyb83 b/ncurses/terminfo/63/cyb83 deleted file mode 100644 index 11e1f9f..0000000 Binary files a/ncurses/terminfo/63/cyb83 and /dev/null differ diff --git a/ncurses/terminfo/63/cygwin b/ncurses/terminfo/63/cygwin deleted file mode 100644 index 3d72886..0000000 Binary files a/ncurses/terminfo/63/cygwin and /dev/null differ diff --git a/ncurses/terminfo/63/cygwinB19 b/ncurses/terminfo/63/cygwinB19 deleted file mode 100644 index 5ba8441..0000000 Binary files a/ncurses/terminfo/63/cygwinB19 and /dev/null differ diff --git a/ncurses/terminfo/63/cygwinDBG b/ncurses/terminfo/63/cygwinDBG deleted file mode 100644 index 214d308..0000000 Binary files a/ncurses/terminfo/63/cygwinDBG and /dev/null differ diff --git a/ncurses/terminfo/64/d132 b/ncurses/terminfo/64/d132 deleted file mode 100644 index e566750..0000000 Binary files a/ncurses/terminfo/64/d132 and /dev/null differ diff --git a/ncurses/terminfo/64/d2 b/ncurses/terminfo/64/d2 deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/64/d2 and /dev/null differ diff --git a/ncurses/terminfo/64/d2-dg b/ncurses/terminfo/64/d2-dg deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/64/d2-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d200 b/ncurses/terminfo/64/d200 deleted file mode 100644 index 5544606..0000000 Binary files a/ncurses/terminfo/64/d200 and /dev/null differ diff --git a/ncurses/terminfo/64/d200-dg b/ncurses/terminfo/64/d200-dg deleted file mode 100644 index 5544606..0000000 Binary files a/ncurses/terminfo/64/d200-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d210 b/ncurses/terminfo/64/d210 deleted file mode 100644 index 5a59424..0000000 Binary files a/ncurses/terminfo/64/d210 and /dev/null differ diff --git a/ncurses/terminfo/64/d210-dg b/ncurses/terminfo/64/d210-dg deleted file mode 100644 index 6d1e831..0000000 Binary files a/ncurses/terminfo/64/d210-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d211 b/ncurses/terminfo/64/d211 deleted file mode 100644 index af8398a..0000000 Binary files a/ncurses/terminfo/64/d211 and /dev/null differ diff --git a/ncurses/terminfo/64/d211-7b b/ncurses/terminfo/64/d211-7b deleted file mode 100644 index 0b8c19d..0000000 Binary files a/ncurses/terminfo/64/d211-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d211-dg b/ncurses/terminfo/64/d211-dg deleted file mode 100644 index a0ff6fc..0000000 Binary files a/ncurses/terminfo/64/d211-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d214 b/ncurses/terminfo/64/d214 deleted file mode 100644 index 5a59424..0000000 Binary files a/ncurses/terminfo/64/d214 and /dev/null differ diff --git a/ncurses/terminfo/64/d214-dg b/ncurses/terminfo/64/d214-dg deleted file mode 100644 index 6d1e831..0000000 Binary files a/ncurses/terminfo/64/d214-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d215 b/ncurses/terminfo/64/d215 deleted file mode 100644 index af8398a..0000000 Binary files a/ncurses/terminfo/64/d215 and /dev/null differ diff --git a/ncurses/terminfo/64/d215-7b b/ncurses/terminfo/64/d215-7b deleted file mode 100644 index 0b8c19d..0000000 Binary files a/ncurses/terminfo/64/d215-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d215-dg b/ncurses/terminfo/64/d215-dg deleted file mode 100644 index a0ff6fc..0000000 Binary files a/ncurses/terminfo/64/d215-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d216+ b/ncurses/terminfo/64/d216+ deleted file mode 100644 index c4c16b4..0000000 Binary files a/ncurses/terminfo/64/d216+ and /dev/null differ diff --git a/ncurses/terminfo/64/d216+25 b/ncurses/terminfo/64/d216+25 deleted file mode 100644 index faf415a..0000000 Binary files a/ncurses/terminfo/64/d216+25 and /dev/null differ diff --git a/ncurses/terminfo/64/d216+dg b/ncurses/terminfo/64/d216+dg deleted file mode 100644 index 5b3edb1..0000000 Binary files a/ncurses/terminfo/64/d216+dg and /dev/null differ diff --git a/ncurses/terminfo/64/d216-dg b/ncurses/terminfo/64/d216-dg deleted file mode 100644 index 5b3edb1..0000000 Binary files a/ncurses/terminfo/64/d216-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d216-unix b/ncurses/terminfo/64/d216-unix deleted file mode 100644 index c4c16b4..0000000 Binary files a/ncurses/terminfo/64/d216-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d216-unix-25 b/ncurses/terminfo/64/d216-unix-25 deleted file mode 100644 index faf415a..0000000 Binary files a/ncurses/terminfo/64/d216-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d216e+ b/ncurses/terminfo/64/d216e+ deleted file mode 100644 index c4c16b4..0000000 Binary files a/ncurses/terminfo/64/d216e+ and /dev/null differ diff --git a/ncurses/terminfo/64/d216e+dg b/ncurses/terminfo/64/d216e+dg deleted file mode 100644 index 5b3edb1..0000000 Binary files a/ncurses/terminfo/64/d216e+dg and /dev/null differ diff --git a/ncurses/terminfo/64/d216e-dg b/ncurses/terminfo/64/d216e-dg deleted file mode 100644 index 5b3edb1..0000000 Binary files a/ncurses/terminfo/64/d216e-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d216e-unix b/ncurses/terminfo/64/d216e-unix deleted file mode 100644 index c4c16b4..0000000 Binary files a/ncurses/terminfo/64/d216e-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d217-dg b/ncurses/terminfo/64/d217-dg deleted file mode 100644 index 5b3edb1..0000000 Binary files a/ncurses/terminfo/64/d217-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d217-unix b/ncurses/terminfo/64/d217-unix deleted file mode 100644 index 9e55d79..0000000 Binary files a/ncurses/terminfo/64/d217-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d217-unix-25 b/ncurses/terminfo/64/d217-unix-25 deleted file mode 100644 index ebbaabf..0000000 Binary files a/ncurses/terminfo/64/d217-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d220 b/ncurses/terminfo/64/d220 deleted file mode 100644 index 496c477..0000000 Binary files a/ncurses/terminfo/64/d220 and /dev/null differ diff --git a/ncurses/terminfo/64/d220-7b b/ncurses/terminfo/64/d220-7b deleted file mode 100644 index 8e0baf9..0000000 Binary files a/ncurses/terminfo/64/d220-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d220-dg b/ncurses/terminfo/64/d220-dg deleted file mode 100644 index 90763df..0000000 Binary files a/ncurses/terminfo/64/d220-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d230 b/ncurses/terminfo/64/d230 deleted file mode 100644 index e1de0d4..0000000 Binary files a/ncurses/terminfo/64/d230 and /dev/null differ diff --git a/ncurses/terminfo/64/d230-dg b/ncurses/terminfo/64/d230-dg deleted file mode 100644 index 48bc33a..0000000 Binary files a/ncurses/terminfo/64/d230-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d230c b/ncurses/terminfo/64/d230c deleted file mode 100644 index e1de0d4..0000000 Binary files a/ncurses/terminfo/64/d230c and /dev/null differ diff --git a/ncurses/terminfo/64/d230c-dg b/ncurses/terminfo/64/d230c-dg deleted file mode 100644 index 48bc33a..0000000 Binary files a/ncurses/terminfo/64/d230c-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d400 b/ncurses/terminfo/64/d400 deleted file mode 100644 index f604db9..0000000 Binary files a/ncurses/terminfo/64/d400 and /dev/null differ diff --git a/ncurses/terminfo/64/d400-dg b/ncurses/terminfo/64/d400-dg deleted file mode 100644 index f604db9..0000000 Binary files a/ncurses/terminfo/64/d400-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d410 b/ncurses/terminfo/64/d410 deleted file mode 100644 index 692c931..0000000 Binary files a/ncurses/terminfo/64/d410 and /dev/null differ diff --git a/ncurses/terminfo/64/d410-7b b/ncurses/terminfo/64/d410-7b deleted file mode 100644 index 2c18a43..0000000 Binary files a/ncurses/terminfo/64/d410-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d410-7b-w b/ncurses/terminfo/64/d410-7b-w deleted file mode 100644 index 8059cf6..0000000 Binary files a/ncurses/terminfo/64/d410-7b-w and /dev/null differ diff --git a/ncurses/terminfo/64/d410-dg b/ncurses/terminfo/64/d410-dg deleted file mode 100644 index 13727ca..0000000 Binary files a/ncurses/terminfo/64/d410-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d410-w b/ncurses/terminfo/64/d410-w deleted file mode 100644 index 5ba0355..0000000 Binary files a/ncurses/terminfo/64/d410-w and /dev/null differ diff --git a/ncurses/terminfo/64/d411 b/ncurses/terminfo/64/d411 deleted file mode 100644 index 692c931..0000000 Binary files a/ncurses/terminfo/64/d411 and /dev/null differ diff --git a/ncurses/terminfo/64/d411-7b b/ncurses/terminfo/64/d411-7b deleted file mode 100644 index 2c18a43..0000000 Binary files a/ncurses/terminfo/64/d411-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d411-7b-w b/ncurses/terminfo/64/d411-7b-w deleted file mode 100644 index 8059cf6..0000000 Binary files a/ncurses/terminfo/64/d411-7b-w and /dev/null differ diff --git a/ncurses/terminfo/64/d411-dg b/ncurses/terminfo/64/d411-dg deleted file mode 100644 index 13727ca..0000000 Binary files a/ncurses/terminfo/64/d411-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d411-w b/ncurses/terminfo/64/d411-w deleted file mode 100644 index 5ba0355..0000000 Binary files a/ncurses/terminfo/64/d411-w and /dev/null differ diff --git a/ncurses/terminfo/64/d412+ b/ncurses/terminfo/64/d412+ deleted file mode 100644 index 2b44c59..0000000 Binary files a/ncurses/terminfo/64/d412+ and /dev/null differ diff --git a/ncurses/terminfo/64/d412+25 b/ncurses/terminfo/64/d412+25 deleted file mode 100644 index 35535f5..0000000 Binary files a/ncurses/terminfo/64/d412+25 and /dev/null differ diff --git a/ncurses/terminfo/64/d412+dg b/ncurses/terminfo/64/d412+dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d412+dg and /dev/null differ diff --git a/ncurses/terminfo/64/d412+s b/ncurses/terminfo/64/d412+s deleted file mode 100644 index ba50cb6..0000000 Binary files a/ncurses/terminfo/64/d412+s and /dev/null differ diff --git a/ncurses/terminfo/64/d412+sr b/ncurses/terminfo/64/d412+sr deleted file mode 100644 index 206aa74..0000000 Binary files a/ncurses/terminfo/64/d412+sr and /dev/null differ diff --git a/ncurses/terminfo/64/d412+w b/ncurses/terminfo/64/d412+w deleted file mode 100644 index f2ffa2b..0000000 Binary files a/ncurses/terminfo/64/d412+w and /dev/null differ diff --git a/ncurses/terminfo/64/d412-dg b/ncurses/terminfo/64/d412-dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d412-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d412-unix b/ncurses/terminfo/64/d412-unix deleted file mode 100644 index 2b44c59..0000000 Binary files a/ncurses/terminfo/64/d412-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d412-unix-25 b/ncurses/terminfo/64/d412-unix-25 deleted file mode 100644 index 35535f5..0000000 Binary files a/ncurses/terminfo/64/d412-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d412-unix-s b/ncurses/terminfo/64/d412-unix-s deleted file mode 100644 index ba50cb6..0000000 Binary files a/ncurses/terminfo/64/d412-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d412-unix-sr b/ncurses/terminfo/64/d412-unix-sr deleted file mode 100644 index 206aa74..0000000 Binary files a/ncurses/terminfo/64/d412-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d412-unix-w b/ncurses/terminfo/64/d412-unix-w deleted file mode 100644 index f2ffa2b..0000000 Binary files a/ncurses/terminfo/64/d412-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d413-dg b/ncurses/terminfo/64/d413-dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d413-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d413-unix b/ncurses/terminfo/64/d413-unix deleted file mode 100644 index 307399a..0000000 Binary files a/ncurses/terminfo/64/d413-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d413-unix-25 b/ncurses/terminfo/64/d413-unix-25 deleted file mode 100644 index 7bc88ec..0000000 Binary files a/ncurses/terminfo/64/d413-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d413-unix-s b/ncurses/terminfo/64/d413-unix-s deleted file mode 100644 index 70868c4..0000000 Binary files a/ncurses/terminfo/64/d413-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d413-unix-sr b/ncurses/terminfo/64/d413-unix-sr deleted file mode 100644 index b85e480..0000000 Binary files a/ncurses/terminfo/64/d413-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d413-unix-w b/ncurses/terminfo/64/d413-unix-w deleted file mode 100644 index 5f30d68..0000000 Binary files a/ncurses/terminfo/64/d413-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d414-unix b/ncurses/terminfo/64/d414-unix deleted file mode 100644 index f16031a..0000000 Binary files a/ncurses/terminfo/64/d414-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d414-unix-25 b/ncurses/terminfo/64/d414-unix-25 deleted file mode 100644 index db8d411..0000000 Binary files a/ncurses/terminfo/64/d414-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d414-unix-s b/ncurses/terminfo/64/d414-unix-s deleted file mode 100644 index 4147d9d..0000000 Binary files a/ncurses/terminfo/64/d414-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d414-unix-sr b/ncurses/terminfo/64/d414-unix-sr deleted file mode 100644 index 31a5a65..0000000 Binary files a/ncurses/terminfo/64/d414-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d414-unix-w b/ncurses/terminfo/64/d414-unix-w deleted file mode 100644 index 4ea96d2..0000000 Binary files a/ncurses/terminfo/64/d414-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d430-dg b/ncurses/terminfo/64/d430-dg deleted file mode 100644 index 5fa5997..0000000 Binary files a/ncurses/terminfo/64/d430-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d430-dg-ccc b/ncurses/terminfo/64/d430-dg-ccc deleted file mode 100644 index 69c9e52..0000000 Binary files a/ncurses/terminfo/64/d430-dg-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix b/ncurses/terminfo/64/d430-unix deleted file mode 100644 index 0035471..0000000 Binary files a/ncurses/terminfo/64/d430-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-25 b/ncurses/terminfo/64/d430-unix-25 deleted file mode 100644 index 3dc6bb8..0000000 Binary files a/ncurses/terminfo/64/d430-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-25-ccc b/ncurses/terminfo/64/d430-unix-25-ccc deleted file mode 100644 index 0bb371f..0000000 Binary files a/ncurses/terminfo/64/d430-unix-25-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-ccc b/ncurses/terminfo/64/d430-unix-ccc deleted file mode 100644 index 9fc7165..0000000 Binary files a/ncurses/terminfo/64/d430-unix-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-s b/ncurses/terminfo/64/d430-unix-s deleted file mode 100644 index f2a7372..0000000 Binary files a/ncurses/terminfo/64/d430-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-s-ccc b/ncurses/terminfo/64/d430-unix-s-ccc deleted file mode 100644 index b32f381..0000000 Binary files a/ncurses/terminfo/64/d430-unix-s-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-sr b/ncurses/terminfo/64/d430-unix-sr deleted file mode 100644 index 8741b2c..0000000 Binary files a/ncurses/terminfo/64/d430-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-sr-ccc b/ncurses/terminfo/64/d430-unix-sr-ccc deleted file mode 100644 index 9e44dcb..0000000 Binary files a/ncurses/terminfo/64/d430-unix-sr-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-w b/ncurses/terminfo/64/d430-unix-w deleted file mode 100644 index b259b4c..0000000 Binary files a/ncurses/terminfo/64/d430-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d430-unix-w-ccc b/ncurses/terminfo/64/d430-unix-w-ccc deleted file mode 100644 index 15f2745..0000000 Binary files a/ncurses/terminfo/64/d430-unix-w-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-dg b/ncurses/terminfo/64/d430c-dg deleted file mode 100644 index 5fa5997..0000000 Binary files a/ncurses/terminfo/64/d430c-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-dg-ccc b/ncurses/terminfo/64/d430c-dg-ccc deleted file mode 100644 index 69c9e52..0000000 Binary files a/ncurses/terminfo/64/d430c-dg-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix b/ncurses/terminfo/64/d430c-unix deleted file mode 100644 index 0035471..0000000 Binary files a/ncurses/terminfo/64/d430c-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-25 b/ncurses/terminfo/64/d430c-unix-25 deleted file mode 100644 index 3dc6bb8..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-25-ccc b/ncurses/terminfo/64/d430c-unix-25-ccc deleted file mode 100644 index 0bb371f..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-25-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-ccc b/ncurses/terminfo/64/d430c-unix-ccc deleted file mode 100644 index 9fc7165..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-s b/ncurses/terminfo/64/d430c-unix-s deleted file mode 100644 index f2a7372..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-s-ccc b/ncurses/terminfo/64/d430c-unix-s-ccc deleted file mode 100644 index b32f381..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-s-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-sr b/ncurses/terminfo/64/d430c-unix-sr deleted file mode 100644 index 8741b2c..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-sr-ccc b/ncurses/terminfo/64/d430c-unix-sr-ccc deleted file mode 100644 index 9e44dcb..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-sr-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-w b/ncurses/terminfo/64/d430c-unix-w deleted file mode 100644 index b259b4c..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d430c-unix-w-ccc b/ncurses/terminfo/64/d430c-unix-w-ccc deleted file mode 100644 index 15f2745..0000000 Binary files a/ncurses/terminfo/64/d430c-unix-w-ccc and /dev/null differ diff --git a/ncurses/terminfo/64/d450 b/ncurses/terminfo/64/d450 deleted file mode 100644 index f604db9..0000000 Binary files a/ncurses/terminfo/64/d450 and /dev/null differ diff --git a/ncurses/terminfo/64/d450-dg b/ncurses/terminfo/64/d450-dg deleted file mode 100644 index f604db9..0000000 Binary files a/ncurses/terminfo/64/d450-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d460 b/ncurses/terminfo/64/d460 deleted file mode 100644 index 692c931..0000000 Binary files a/ncurses/terminfo/64/d460 and /dev/null differ diff --git a/ncurses/terminfo/64/d460-7b b/ncurses/terminfo/64/d460-7b deleted file mode 100644 index 2c18a43..0000000 Binary files a/ncurses/terminfo/64/d460-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d460-7b-w b/ncurses/terminfo/64/d460-7b-w deleted file mode 100644 index 8059cf6..0000000 Binary files a/ncurses/terminfo/64/d460-7b-w and /dev/null differ diff --git a/ncurses/terminfo/64/d460-dg b/ncurses/terminfo/64/d460-dg deleted file mode 100644 index 13727ca..0000000 Binary files a/ncurses/terminfo/64/d460-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d460-w b/ncurses/terminfo/64/d460-w deleted file mode 100644 index 5ba0355..0000000 Binary files a/ncurses/terminfo/64/d460-w and /dev/null differ diff --git a/ncurses/terminfo/64/d461 b/ncurses/terminfo/64/d461 deleted file mode 100644 index 692c931..0000000 Binary files a/ncurses/terminfo/64/d461 and /dev/null differ diff --git a/ncurses/terminfo/64/d461-7b b/ncurses/terminfo/64/d461-7b deleted file mode 100644 index 2c18a43..0000000 Binary files a/ncurses/terminfo/64/d461-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d461-7b-w b/ncurses/terminfo/64/d461-7b-w deleted file mode 100644 index 8059cf6..0000000 Binary files a/ncurses/terminfo/64/d461-7b-w and /dev/null differ diff --git a/ncurses/terminfo/64/d461-dg b/ncurses/terminfo/64/d461-dg deleted file mode 100644 index 13727ca..0000000 Binary files a/ncurses/terminfo/64/d461-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d461-w b/ncurses/terminfo/64/d461-w deleted file mode 100644 index 5ba0355..0000000 Binary files a/ncurses/terminfo/64/d461-w and /dev/null differ diff --git a/ncurses/terminfo/64/d462+ b/ncurses/terminfo/64/d462+ deleted file mode 100644 index 2b44c59..0000000 Binary files a/ncurses/terminfo/64/d462+ and /dev/null differ diff --git a/ncurses/terminfo/64/d462+25 b/ncurses/terminfo/64/d462+25 deleted file mode 100644 index 35535f5..0000000 Binary files a/ncurses/terminfo/64/d462+25 and /dev/null differ diff --git a/ncurses/terminfo/64/d462+dg b/ncurses/terminfo/64/d462+dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d462+dg and /dev/null differ diff --git a/ncurses/terminfo/64/d462+s b/ncurses/terminfo/64/d462+s deleted file mode 100644 index ba50cb6..0000000 Binary files a/ncurses/terminfo/64/d462+s and /dev/null differ diff --git a/ncurses/terminfo/64/d462+sr b/ncurses/terminfo/64/d462+sr deleted file mode 100644 index 206aa74..0000000 Binary files a/ncurses/terminfo/64/d462+sr and /dev/null differ diff --git a/ncurses/terminfo/64/d462+w b/ncurses/terminfo/64/d462+w deleted file mode 100644 index f2ffa2b..0000000 Binary files a/ncurses/terminfo/64/d462+w and /dev/null differ diff --git a/ncurses/terminfo/64/d462-dg b/ncurses/terminfo/64/d462-dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d462-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d462-unix b/ncurses/terminfo/64/d462-unix deleted file mode 100644 index 2b44c59..0000000 Binary files a/ncurses/terminfo/64/d462-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d462-unix-25 b/ncurses/terminfo/64/d462-unix-25 deleted file mode 100644 index 35535f5..0000000 Binary files a/ncurses/terminfo/64/d462-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d462-unix-s b/ncurses/terminfo/64/d462-unix-s deleted file mode 100644 index ba50cb6..0000000 Binary files a/ncurses/terminfo/64/d462-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d462-unix-sr b/ncurses/terminfo/64/d462-unix-sr deleted file mode 100644 index 206aa74..0000000 Binary files a/ncurses/terminfo/64/d462-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d462-unix-w b/ncurses/terminfo/64/d462-unix-w deleted file mode 100644 index f2ffa2b..0000000 Binary files a/ncurses/terminfo/64/d462-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d462e-dg b/ncurses/terminfo/64/d462e-dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d462e-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d463-dg b/ncurses/terminfo/64/d463-dg deleted file mode 100644 index 11f5601..0000000 Binary files a/ncurses/terminfo/64/d463-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d463-unix b/ncurses/terminfo/64/d463-unix deleted file mode 100644 index 307399a..0000000 Binary files a/ncurses/terminfo/64/d463-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d463-unix-25 b/ncurses/terminfo/64/d463-unix-25 deleted file mode 100644 index 7bc88ec..0000000 Binary files a/ncurses/terminfo/64/d463-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d463-unix-s b/ncurses/terminfo/64/d463-unix-s deleted file mode 100644 index 70868c4..0000000 Binary files a/ncurses/terminfo/64/d463-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d463-unix-sr b/ncurses/terminfo/64/d463-unix-sr deleted file mode 100644 index b85e480..0000000 Binary files a/ncurses/terminfo/64/d463-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d463-unix-w b/ncurses/terminfo/64/d463-unix-w deleted file mode 100644 index 5f30d68..0000000 Binary files a/ncurses/terminfo/64/d463-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d464-unix b/ncurses/terminfo/64/d464-unix deleted file mode 100644 index f16031a..0000000 Binary files a/ncurses/terminfo/64/d464-unix and /dev/null differ diff --git a/ncurses/terminfo/64/d464-unix-25 b/ncurses/terminfo/64/d464-unix-25 deleted file mode 100644 index db8d411..0000000 Binary files a/ncurses/terminfo/64/d464-unix-25 and /dev/null differ diff --git a/ncurses/terminfo/64/d464-unix-s b/ncurses/terminfo/64/d464-unix-s deleted file mode 100644 index 4147d9d..0000000 Binary files a/ncurses/terminfo/64/d464-unix-s and /dev/null differ diff --git a/ncurses/terminfo/64/d464-unix-sr b/ncurses/terminfo/64/d464-unix-sr deleted file mode 100644 index 31a5a65..0000000 Binary files a/ncurses/terminfo/64/d464-unix-sr and /dev/null differ diff --git a/ncurses/terminfo/64/d464-unix-w b/ncurses/terminfo/64/d464-unix-w deleted file mode 100644 index 4ea96d2..0000000 Binary files a/ncurses/terminfo/64/d464-unix-w and /dev/null differ diff --git a/ncurses/terminfo/64/d470 b/ncurses/terminfo/64/d470 deleted file mode 100644 index 5b62eae..0000000 Binary files a/ncurses/terminfo/64/d470 and /dev/null differ diff --git a/ncurses/terminfo/64/d470-7b b/ncurses/terminfo/64/d470-7b deleted file mode 100644 index a97da9f..0000000 Binary files a/ncurses/terminfo/64/d470-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d470-dg b/ncurses/terminfo/64/d470-dg deleted file mode 100644 index 7c8ae24..0000000 Binary files a/ncurses/terminfo/64/d470-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d470c b/ncurses/terminfo/64/d470c deleted file mode 100644 index 5b62eae..0000000 Binary files a/ncurses/terminfo/64/d470c and /dev/null differ diff --git a/ncurses/terminfo/64/d470c-7b b/ncurses/terminfo/64/d470c-7b deleted file mode 100644 index a97da9f..0000000 Binary files a/ncurses/terminfo/64/d470c-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d470c-dg b/ncurses/terminfo/64/d470c-dg deleted file mode 100644 index 7c8ae24..0000000 Binary files a/ncurses/terminfo/64/d470c-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d555 b/ncurses/terminfo/64/d555 deleted file mode 100644 index d3a2944..0000000 Binary files a/ncurses/terminfo/64/d555 and /dev/null differ diff --git a/ncurses/terminfo/64/d555-7b b/ncurses/terminfo/64/d555-7b deleted file mode 100644 index f3638d9..0000000 Binary files a/ncurses/terminfo/64/d555-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d555-7b-w b/ncurses/terminfo/64/d555-7b-w deleted file mode 100644 index 2cbd751..0000000 Binary files a/ncurses/terminfo/64/d555-7b-w and /dev/null differ diff --git a/ncurses/terminfo/64/d555-dg b/ncurses/terminfo/64/d555-dg deleted file mode 100644 index 95c67cf..0000000 Binary files a/ncurses/terminfo/64/d555-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d555-w b/ncurses/terminfo/64/d555-w deleted file mode 100644 index cb798ae..0000000 Binary files a/ncurses/terminfo/64/d555-w and /dev/null differ diff --git a/ncurses/terminfo/64/d577 b/ncurses/terminfo/64/d577 deleted file mode 100644 index 35c9d4c..0000000 Binary files a/ncurses/terminfo/64/d577 and /dev/null differ diff --git a/ncurses/terminfo/64/d577-7b b/ncurses/terminfo/64/d577-7b deleted file mode 100644 index 7201146..0000000 Binary files a/ncurses/terminfo/64/d577-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d577-7b-w b/ncurses/terminfo/64/d577-7b-w deleted file mode 100644 index 3ec6ec9..0000000 Binary files a/ncurses/terminfo/64/d577-7b-w and /dev/null differ diff --git a/ncurses/terminfo/64/d577-dg b/ncurses/terminfo/64/d577-dg deleted file mode 100644 index ca069ee..0000000 Binary files a/ncurses/terminfo/64/d577-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d577-w b/ncurses/terminfo/64/d577-w deleted file mode 100644 index 7a6b19b..0000000 Binary files a/ncurses/terminfo/64/d577-w and /dev/null differ diff --git a/ncurses/terminfo/64/d578 b/ncurses/terminfo/64/d578 deleted file mode 100644 index ed1236a..0000000 Binary files a/ncurses/terminfo/64/d578 and /dev/null differ diff --git a/ncurses/terminfo/64/d578-7b b/ncurses/terminfo/64/d578-7b deleted file mode 100644 index 27ac610..0000000 Binary files a/ncurses/terminfo/64/d578-7b and /dev/null differ diff --git a/ncurses/terminfo/64/d578-dg b/ncurses/terminfo/64/d578-dg deleted file mode 100644 index ca069ee..0000000 Binary files a/ncurses/terminfo/64/d578-dg and /dev/null differ diff --git a/ncurses/terminfo/64/d80 b/ncurses/terminfo/64/d80 deleted file mode 100644 index 2db99c5..0000000 Binary files a/ncurses/terminfo/64/d80 and /dev/null differ diff --git a/ncurses/terminfo/64/d800 b/ncurses/terminfo/64/d800 deleted file mode 100644 index 7c605c8..0000000 Binary files a/ncurses/terminfo/64/d800 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin b/ncurses/terminfo/64/darwin deleted file mode 100644 index 45b2fb9..0000000 Binary files a/ncurses/terminfo/64/darwin and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-100x37 b/ncurses/terminfo/64/darwin-100x37 deleted file mode 100644 index 8602687..0000000 Binary files a/ncurses/terminfo/64/darwin-100x37 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-100x37-m b/ncurses/terminfo/64/darwin-100x37-m deleted file mode 100644 index ea78270..0000000 Binary files a/ncurses/terminfo/64/darwin-100x37-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-112x37 b/ncurses/terminfo/64/darwin-112x37 deleted file mode 100644 index 0a80408..0000000 Binary files a/ncurses/terminfo/64/darwin-112x37 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-112x37-m b/ncurses/terminfo/64/darwin-112x37-m deleted file mode 100644 index 54bb65f..0000000 Binary files a/ncurses/terminfo/64/darwin-112x37-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-128x40 b/ncurses/terminfo/64/darwin-128x40 deleted file mode 100644 index f471ac0..0000000 Binary files a/ncurses/terminfo/64/darwin-128x40 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-128x40-m b/ncurses/terminfo/64/darwin-128x40-m deleted file mode 100644 index 67c303d..0000000 Binary files a/ncurses/terminfo/64/darwin-128x40-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-128x48 b/ncurses/terminfo/64/darwin-128x48 deleted file mode 100644 index f6425ca..0000000 Binary files a/ncurses/terminfo/64/darwin-128x48 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-128x48-m b/ncurses/terminfo/64/darwin-128x48-m deleted file mode 100644 index da888a6..0000000 Binary files a/ncurses/terminfo/64/darwin-128x48-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-144x48 b/ncurses/terminfo/64/darwin-144x48 deleted file mode 100644 index 8a7557a..0000000 Binary files a/ncurses/terminfo/64/darwin-144x48 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-144x48-m b/ncurses/terminfo/64/darwin-144x48-m deleted file mode 100644 index a700a12..0000000 Binary files a/ncurses/terminfo/64/darwin-144x48-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-160x64 b/ncurses/terminfo/64/darwin-160x64 deleted file mode 100644 index df23b8d..0000000 Binary files a/ncurses/terminfo/64/darwin-160x64 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-160x64-m b/ncurses/terminfo/64/darwin-160x64-m deleted file mode 100644 index e8a4872..0000000 Binary files a/ncurses/terminfo/64/darwin-160x64-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-200x64 b/ncurses/terminfo/64/darwin-200x64 deleted file mode 100644 index 44e3ef1..0000000 Binary files a/ncurses/terminfo/64/darwin-200x64 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-200x64-m b/ncurses/terminfo/64/darwin-200x64-m deleted file mode 100644 index 607b124..0000000 Binary files a/ncurses/terminfo/64/darwin-200x64-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-200x75 b/ncurses/terminfo/64/darwin-200x75 deleted file mode 100644 index 589a104..0000000 Binary files a/ncurses/terminfo/64/darwin-200x75 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-200x75-m b/ncurses/terminfo/64/darwin-200x75-m deleted file mode 100644 index fca6adc..0000000 Binary files a/ncurses/terminfo/64/darwin-200x75-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-256x96 b/ncurses/terminfo/64/darwin-256x96 deleted file mode 100644 index d4d5da4..0000000 Binary files a/ncurses/terminfo/64/darwin-256x96 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-256x96-m b/ncurses/terminfo/64/darwin-256x96-m deleted file mode 100644 index c2af612..0000000 Binary files a/ncurses/terminfo/64/darwin-256x96-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-80x25 b/ncurses/terminfo/64/darwin-80x25 deleted file mode 100644 index 16fe8e4..0000000 Binary files a/ncurses/terminfo/64/darwin-80x25 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-80x25-m b/ncurses/terminfo/64/darwin-80x25-m deleted file mode 100644 index a34e480..0000000 Binary files a/ncurses/terminfo/64/darwin-80x25-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-80x30 b/ncurses/terminfo/64/darwin-80x30 deleted file mode 100644 index 099eead..0000000 Binary files a/ncurses/terminfo/64/darwin-80x30 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-80x30-m b/ncurses/terminfo/64/darwin-80x30-m deleted file mode 100644 index 23f2aa2..0000000 Binary files a/ncurses/terminfo/64/darwin-80x30-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-90x30 b/ncurses/terminfo/64/darwin-90x30 deleted file mode 100644 index 496140c..0000000 Binary files a/ncurses/terminfo/64/darwin-90x30 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-90x30-m b/ncurses/terminfo/64/darwin-90x30-m deleted file mode 100644 index 1e81861..0000000 Binary files a/ncurses/terminfo/64/darwin-90x30-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-b b/ncurses/terminfo/64/darwin-b deleted file mode 100644 index 1edfca5..0000000 Binary files a/ncurses/terminfo/64/darwin-b and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-f b/ncurses/terminfo/64/darwin-f deleted file mode 100644 index f152b10..0000000 Binary files a/ncurses/terminfo/64/darwin-f and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-f2 b/ncurses/terminfo/64/darwin-f2 deleted file mode 100644 index 85ebddc..0000000 Binary files a/ncurses/terminfo/64/darwin-f2 and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-m b/ncurses/terminfo/64/darwin-m deleted file mode 100644 index f2496e8..0000000 Binary files a/ncurses/terminfo/64/darwin-m and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-m-b b/ncurses/terminfo/64/darwin-m-b deleted file mode 100644 index 5f3658c..0000000 Binary files a/ncurses/terminfo/64/darwin-m-b and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-m-f b/ncurses/terminfo/64/darwin-m-f deleted file mode 100644 index 16b0a3e..0000000 Binary files a/ncurses/terminfo/64/darwin-m-f and /dev/null differ diff --git a/ncurses/terminfo/64/darwin-m-f2 b/ncurses/terminfo/64/darwin-m-f2 deleted file mode 100644 index 62febc7..0000000 Binary files a/ncurses/terminfo/64/darwin-m-f2 and /dev/null differ diff --git a/ncurses/terminfo/64/datagraphix b/ncurses/terminfo/64/datagraphix deleted file mode 100644 index e566750..0000000 Binary files a/ncurses/terminfo/64/datagraphix and /dev/null differ diff --git a/ncurses/terminfo/64/datamedia2500 b/ncurses/terminfo/64/datamedia2500 deleted file mode 100644 index 202839f..0000000 Binary files a/ncurses/terminfo/64/datamedia2500 and /dev/null differ diff --git a/ncurses/terminfo/64/datapoint b/ncurses/terminfo/64/datapoint deleted file mode 100644 index 002c6d2..0000000 Binary files a/ncurses/terminfo/64/datapoint and /dev/null differ diff --git a/ncurses/terminfo/64/dataspeed40 b/ncurses/terminfo/64/dataspeed40 deleted file mode 100644 index c75c35b..0000000 Binary files a/ncurses/terminfo/64/dataspeed40 and /dev/null differ diff --git a/ncurses/terminfo/64/dd5000 b/ncurses/terminfo/64/dd5000 deleted file mode 100644 index 97d8591..0000000 Binary files a/ncurses/terminfo/64/dd5000 and /dev/null differ diff --git a/ncurses/terminfo/64/ddr b/ncurses/terminfo/64/ddr deleted file mode 100644 index 4ea5b10..0000000 Binary files a/ncurses/terminfo/64/ddr and /dev/null differ diff --git a/ncurses/terminfo/64/ddr3180 b/ncurses/terminfo/64/ddr3180 deleted file mode 100644 index 4ea5b10..0000000 Binary files a/ncurses/terminfo/64/ddr3180 and /dev/null differ diff --git a/ncurses/terminfo/64/dec-vt100 b/ncurses/terminfo/64/dec-vt100 deleted file mode 100644 index b93848f..0000000 Binary files a/ncurses/terminfo/64/dec-vt100 and /dev/null differ diff --git a/ncurses/terminfo/64/dec-vt220 b/ncurses/terminfo/64/dec-vt220 deleted file mode 100644 index 119aa57..0000000 Binary files a/ncurses/terminfo/64/dec-vt220 and /dev/null differ diff --git a/ncurses/terminfo/64/dec-vt330 b/ncurses/terminfo/64/dec-vt330 deleted file mode 100644 index f712e03..0000000 Binary files a/ncurses/terminfo/64/dec-vt330 and /dev/null differ diff --git a/ncurses/terminfo/64/dec-vt340 b/ncurses/terminfo/64/dec-vt340 deleted file mode 100644 index f712e03..0000000 Binary files a/ncurses/terminfo/64/dec-vt340 and /dev/null differ diff --git a/ncurses/terminfo/64/dec-vt400 b/ncurses/terminfo/64/dec-vt400 deleted file mode 100644 index ec1df65..0000000 Binary files a/ncurses/terminfo/64/dec-vt400 and /dev/null differ diff --git a/ncurses/terminfo/64/decansi b/ncurses/terminfo/64/decansi deleted file mode 100644 index 000cd6d..0000000 Binary files a/ncurses/terminfo/64/decansi and /dev/null differ diff --git a/ncurses/terminfo/64/decpro b/ncurses/terminfo/64/decpro deleted file mode 100644 index 0e65713..0000000 Binary files a/ncurses/terminfo/64/decpro and /dev/null differ diff --git a/ncurses/terminfo/64/decwriter b/ncurses/terminfo/64/decwriter deleted file mode 100644 index 5886d57..0000000 Binary files a/ncurses/terminfo/64/decwriter and /dev/null differ diff --git a/ncurses/terminfo/64/delta b/ncurses/terminfo/64/delta deleted file mode 100644 index 97d8591..0000000 Binary files a/ncurses/terminfo/64/delta and /dev/null differ diff --git a/ncurses/terminfo/64/dg+ccc b/ncurses/terminfo/64/dg+ccc deleted file mode 100644 index dca9e95..0000000 Binary files a/ncurses/terminfo/64/dg+ccc and /dev/null differ diff --git a/ncurses/terminfo/64/dg+color b/ncurses/terminfo/64/dg+color deleted file mode 100644 index 13c20ca..0000000 Binary files a/ncurses/terminfo/64/dg+color and /dev/null differ diff --git a/ncurses/terminfo/64/dg+color8 b/ncurses/terminfo/64/dg+color8 deleted file mode 100644 index f347b40..0000000 Binary files a/ncurses/terminfo/64/dg+color8 and /dev/null differ diff --git a/ncurses/terminfo/64/dg+fixed b/ncurses/terminfo/64/dg+fixed deleted file mode 100644 index 1cb3cd3..0000000 Binary files a/ncurses/terminfo/64/dg+fixed and /dev/null differ diff --git a/ncurses/terminfo/64/dg-ansi b/ncurses/terminfo/64/dg-ansi deleted file mode 100644 index 4d770e2..0000000 Binary files a/ncurses/terminfo/64/dg-ansi and /dev/null differ diff --git a/ncurses/terminfo/64/dg-generic b/ncurses/terminfo/64/dg-generic deleted file mode 100644 index 3723a01..0000000 Binary files a/ncurses/terminfo/64/dg-generic and /dev/null differ diff --git a/ncurses/terminfo/64/dg100 b/ncurses/terminfo/64/dg100 deleted file mode 100644 index 54dff37..0000000 Binary files a/ncurses/terminfo/64/dg100 and /dev/null differ diff --git a/ncurses/terminfo/64/dg200 b/ncurses/terminfo/64/dg200 deleted file mode 100644 index 806536a..0000000 Binary files a/ncurses/terminfo/64/dg200 and /dev/null differ diff --git a/ncurses/terminfo/64/dg210 b/ncurses/terminfo/64/dg210 deleted file mode 100644 index 4d770e2..0000000 Binary files a/ncurses/terminfo/64/dg210 and /dev/null differ diff --git a/ncurses/terminfo/64/dg211 b/ncurses/terminfo/64/dg211 deleted file mode 100644 index acc31c0..0000000 Binary files a/ncurses/terminfo/64/dg211 and /dev/null differ diff --git a/ncurses/terminfo/64/dg450 b/ncurses/terminfo/64/dg450 deleted file mode 100644 index 6539891..0000000 Binary files a/ncurses/terminfo/64/dg450 and /dev/null differ diff --git a/ncurses/terminfo/64/dg460-ansi b/ncurses/terminfo/64/dg460-ansi deleted file mode 100644 index e387c6e..0000000 Binary files a/ncurses/terminfo/64/dg460-ansi and /dev/null differ diff --git a/ncurses/terminfo/64/dg6053 b/ncurses/terminfo/64/dg6053 deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/64/dg6053 and /dev/null differ diff --git a/ncurses/terminfo/64/dg6053-old b/ncurses/terminfo/64/dg6053-old deleted file mode 100644 index 54dff37..0000000 Binary files a/ncurses/terminfo/64/dg6053-old and /dev/null differ diff --git a/ncurses/terminfo/64/dg605x b/ncurses/terminfo/64/dg605x deleted file mode 100644 index ee16edb..0000000 Binary files a/ncurses/terminfo/64/dg605x and /dev/null differ diff --git a/ncurses/terminfo/64/dg6134 b/ncurses/terminfo/64/dg6134 deleted file mode 100644 index 6539891..0000000 Binary files a/ncurses/terminfo/64/dg6134 and /dev/null differ diff --git a/ncurses/terminfo/64/dgkeys+11 b/ncurses/terminfo/64/dgkeys+11 deleted file mode 100644 index b3fa2a3..0000000 Binary files a/ncurses/terminfo/64/dgkeys+11 and /dev/null differ diff --git a/ncurses/terminfo/64/dgkeys+15 b/ncurses/terminfo/64/dgkeys+15 deleted file mode 100644 index 02c3b7e..0000000 Binary files a/ncurses/terminfo/64/dgkeys+15 and /dev/null differ diff --git a/ncurses/terminfo/64/dgkeys+7b b/ncurses/terminfo/64/dgkeys+7b deleted file mode 100644 index d18c507..0000000 Binary files a/ncurses/terminfo/64/dgkeys+7b and /dev/null differ diff --git a/ncurses/terminfo/64/dgkeys+8b b/ncurses/terminfo/64/dgkeys+8b deleted file mode 100644 index d791dd6..0000000 Binary files a/ncurses/terminfo/64/dgkeys+8b and /dev/null differ diff --git a/ncurses/terminfo/64/dgmode+color b/ncurses/terminfo/64/dgmode+color deleted file mode 100644 index 2fc3d8c..0000000 Binary files a/ncurses/terminfo/64/dgmode+color and /dev/null differ diff --git a/ncurses/terminfo/64/dgmode+color8 b/ncurses/terminfo/64/dgmode+color8 deleted file mode 100644 index dc99303..0000000 Binary files a/ncurses/terminfo/64/dgmode+color8 and /dev/null differ diff --git a/ncurses/terminfo/64/dgunix+ccc b/ncurses/terminfo/64/dgunix+ccc deleted file mode 100644 index db47113..0000000 Binary files a/ncurses/terminfo/64/dgunix+ccc and /dev/null differ diff --git a/ncurses/terminfo/64/dgunix+fixed b/ncurses/terminfo/64/dgunix+fixed deleted file mode 100644 index 2fc3ff5..0000000 Binary files a/ncurses/terminfo/64/dgunix+fixed and /dev/null differ diff --git a/ncurses/terminfo/64/diablo b/ncurses/terminfo/64/diablo deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/64/diablo and /dev/null differ diff --git a/ncurses/terminfo/64/diablo-lm b/ncurses/terminfo/64/diablo-lm deleted file mode 100644 index 535f007..0000000 Binary files a/ncurses/terminfo/64/diablo-lm and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1620 b/ncurses/terminfo/64/diablo1620 deleted file mode 100644 index 460faaf..0000000 Binary files a/ncurses/terminfo/64/diablo1620 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1620-m8 b/ncurses/terminfo/64/diablo1620-m8 deleted file mode 100644 index d2e3beb..0000000 Binary files a/ncurses/terminfo/64/diablo1620-m8 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1640 b/ncurses/terminfo/64/diablo1640 deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/64/diablo1640 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1640-lm b/ncurses/terminfo/64/diablo1640-lm deleted file mode 100644 index 535f007..0000000 Binary files a/ncurses/terminfo/64/diablo1640-lm and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1640-m8 b/ncurses/terminfo/64/diablo1640-m8 deleted file mode 100644 index d2e3beb..0000000 Binary files a/ncurses/terminfo/64/diablo1640-m8 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1720 b/ncurses/terminfo/64/diablo1720 deleted file mode 100644 index 460faaf..0000000 Binary files a/ncurses/terminfo/64/diablo1720 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1730 b/ncurses/terminfo/64/diablo1730 deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/64/diablo1730 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1740 b/ncurses/terminfo/64/diablo1740 deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/64/diablo1740 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo1740-lm b/ncurses/terminfo/64/diablo1740-lm deleted file mode 100644 index 5f36015..0000000 Binary files a/ncurses/terminfo/64/diablo1740-lm and /dev/null differ diff --git a/ncurses/terminfo/64/diablo450 b/ncurses/terminfo/64/diablo450 deleted file mode 100644 index 460faaf..0000000 Binary files a/ncurses/terminfo/64/diablo450 and /dev/null differ diff --git a/ncurses/terminfo/64/diablo630 b/ncurses/terminfo/64/diablo630 deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/64/diablo630 and /dev/null differ diff --git a/ncurses/terminfo/64/dialogue b/ncurses/terminfo/64/dialogue deleted file mode 100644 index 2db99c5..0000000 Binary files a/ncurses/terminfo/64/dialogue and /dev/null differ diff --git a/ncurses/terminfo/64/dialogue80 b/ncurses/terminfo/64/dialogue80 deleted file mode 100644 index 2db99c5..0000000 Binary files a/ncurses/terminfo/64/dialogue80 and /dev/null differ diff --git a/ncurses/terminfo/64/digilog b/ncurses/terminfo/64/digilog deleted file mode 100644 index 7c3572b..0000000 Binary files a/ncurses/terminfo/64/digilog and /dev/null differ diff --git a/ncurses/terminfo/64/djgpp b/ncurses/terminfo/64/djgpp deleted file mode 100644 index acadff7..0000000 Binary files a/ncurses/terminfo/64/djgpp and /dev/null differ diff --git a/ncurses/terminfo/64/djgpp203 b/ncurses/terminfo/64/djgpp203 deleted file mode 100644 index 2ac17bc..0000000 Binary files a/ncurses/terminfo/64/djgpp203 and /dev/null differ diff --git a/ncurses/terminfo/64/djgpp204 b/ncurses/terminfo/64/djgpp204 deleted file mode 100644 index f3c1c06..0000000 Binary files a/ncurses/terminfo/64/djgpp204 and /dev/null differ diff --git a/ncurses/terminfo/64/dku7003 b/ncurses/terminfo/64/dku7003 deleted file mode 100644 index 9ae57b4..0000000 Binary files a/ncurses/terminfo/64/dku7003 and /dev/null differ diff --git a/ncurses/terminfo/64/dku7003-dumb b/ncurses/terminfo/64/dku7003-dumb deleted file mode 100644 index e53ba32..0000000 Binary files a/ncurses/terminfo/64/dku7003-dumb and /dev/null differ diff --git a/ncurses/terminfo/64/dku7102 b/ncurses/terminfo/64/dku7102 deleted file mode 100644 index 60eb659..0000000 Binary files a/ncurses/terminfo/64/dku7102 and /dev/null differ diff --git a/ncurses/terminfo/64/dku7102-old b/ncurses/terminfo/64/dku7102-old deleted file mode 100644 index 7389170..0000000 Binary files a/ncurses/terminfo/64/dku7102-old and /dev/null differ diff --git a/ncurses/terminfo/64/dku7102-sna b/ncurses/terminfo/64/dku7102-sna deleted file mode 100644 index 9f580d1..0000000 Binary files a/ncurses/terminfo/64/dku7102-sna and /dev/null differ diff --git a/ncurses/terminfo/64/dku7103-sna b/ncurses/terminfo/64/dku7103-sna deleted file mode 100644 index 82a6af1..0000000 Binary files a/ncurses/terminfo/64/dku7103-sna and /dev/null differ diff --git a/ncurses/terminfo/64/dku7202 b/ncurses/terminfo/64/dku7202 deleted file mode 100644 index d837815..0000000 Binary files a/ncurses/terminfo/64/dku7202 and /dev/null differ diff --git a/ncurses/terminfo/64/dm1520 b/ncurses/terminfo/64/dm1520 deleted file mode 100644 index 22c5d26..0000000 Binary files a/ncurses/terminfo/64/dm1520 and /dev/null differ diff --git a/ncurses/terminfo/64/dm1521 b/ncurses/terminfo/64/dm1521 deleted file mode 100644 index 22c5d26..0000000 Binary files a/ncurses/terminfo/64/dm1521 and /dev/null differ diff --git a/ncurses/terminfo/64/dm2500 b/ncurses/terminfo/64/dm2500 deleted file mode 100644 index 202839f..0000000 Binary files a/ncurses/terminfo/64/dm2500 and /dev/null differ diff --git a/ncurses/terminfo/64/dm3025 b/ncurses/terminfo/64/dm3025 deleted file mode 100644 index cce29eb..0000000 Binary files a/ncurses/terminfo/64/dm3025 and /dev/null differ diff --git a/ncurses/terminfo/64/dm3045 b/ncurses/terminfo/64/dm3045 deleted file mode 100644 index e1f76f5..0000000 Binary files a/ncurses/terminfo/64/dm3045 and /dev/null differ diff --git a/ncurses/terminfo/64/dm80 b/ncurses/terminfo/64/dm80 deleted file mode 100644 index 07a8f5d..0000000 Binary files a/ncurses/terminfo/64/dm80 and /dev/null differ diff --git a/ncurses/terminfo/64/dm80w b/ncurses/terminfo/64/dm80w deleted file mode 100644 index 50d88ba..0000000 Binary files a/ncurses/terminfo/64/dm80w and /dev/null differ diff --git a/ncurses/terminfo/64/dmchat b/ncurses/terminfo/64/dmchat deleted file mode 100644 index 9725b91..0000000 Binary files a/ncurses/terminfo/64/dmchat and /dev/null differ diff --git a/ncurses/terminfo/64/dmd b/ncurses/terminfo/64/dmd deleted file mode 100644 index d096883..0000000 Binary files a/ncurses/terminfo/64/dmd and /dev/null differ diff --git a/ncurses/terminfo/64/dmd-24 b/ncurses/terminfo/64/dmd-24 deleted file mode 100644 index c812b62..0000000 Binary files a/ncurses/terminfo/64/dmd-24 and /dev/null differ diff --git a/ncurses/terminfo/64/dmd-34 b/ncurses/terminfo/64/dmd-34 deleted file mode 100644 index 5e60f0b..0000000 Binary files a/ncurses/terminfo/64/dmd-34 and /dev/null differ diff --git a/ncurses/terminfo/64/dmd1 b/ncurses/terminfo/64/dmd1 deleted file mode 100644 index 7212c7a..0000000 Binary files a/ncurses/terminfo/64/dmd1 and /dev/null differ diff --git a/ncurses/terminfo/64/dmdt80 b/ncurses/terminfo/64/dmdt80 deleted file mode 100644 index 07a8f5d..0000000 Binary files a/ncurses/terminfo/64/dmdt80 and /dev/null differ diff --git a/ncurses/terminfo/64/dmdt80w b/ncurses/terminfo/64/dmdt80w deleted file mode 100644 index 50d88ba..0000000 Binary files a/ncurses/terminfo/64/dmdt80w and /dev/null differ diff --git a/ncurses/terminfo/64/dmterm b/ncurses/terminfo/64/dmterm deleted file mode 100644 index 17fc379..0000000 Binary files a/ncurses/terminfo/64/dmterm and /dev/null differ diff --git a/ncurses/terminfo/64/dp3360 b/ncurses/terminfo/64/dp3360 deleted file mode 100644 index 002c6d2..0000000 Binary files a/ncurses/terminfo/64/dp3360 and /dev/null differ diff --git a/ncurses/terminfo/64/dp8242 b/ncurses/terminfo/64/dp8242 deleted file mode 100644 index 1f972c3..0000000 Binary files a/ncurses/terminfo/64/dp8242 and /dev/null differ diff --git a/ncurses/terminfo/64/ds40 b/ncurses/terminfo/64/ds40 deleted file mode 100644 index c75c35b..0000000 Binary files a/ncurses/terminfo/64/ds40 and /dev/null differ diff --git a/ncurses/terminfo/64/ds40-2 b/ncurses/terminfo/64/ds40-2 deleted file mode 100644 index c75c35b..0000000 Binary files a/ncurses/terminfo/64/ds40-2 and /dev/null differ diff --git a/ncurses/terminfo/64/dt-100 b/ncurses/terminfo/64/dt-100 deleted file mode 100644 index 5792c0a..0000000 Binary files a/ncurses/terminfo/64/dt-100 and /dev/null differ diff --git a/ncurses/terminfo/64/dt-100w b/ncurses/terminfo/64/dt-100w deleted file mode 100644 index b0b0ec2..0000000 Binary files a/ncurses/terminfo/64/dt-100w and /dev/null differ diff --git a/ncurses/terminfo/64/dt100 b/ncurses/terminfo/64/dt100 deleted file mode 100644 index 5792c0a..0000000 Binary files a/ncurses/terminfo/64/dt100 and /dev/null differ diff --git a/ncurses/terminfo/64/dt100w b/ncurses/terminfo/64/dt100w deleted file mode 100644 index b0b0ec2..0000000 Binary files a/ncurses/terminfo/64/dt100w and /dev/null differ diff --git a/ncurses/terminfo/64/dt110 b/ncurses/terminfo/64/dt110 deleted file mode 100644 index 42ca79d..0000000 Binary files a/ncurses/terminfo/64/dt110 and /dev/null differ diff --git a/ncurses/terminfo/64/dt80 b/ncurses/terminfo/64/dt80 deleted file mode 100644 index 07a8f5d..0000000 Binary files a/ncurses/terminfo/64/dt80 and /dev/null differ diff --git a/ncurses/terminfo/64/dt80-sas b/ncurses/terminfo/64/dt80-sas deleted file mode 100644 index b1c406a..0000000 Binary files a/ncurses/terminfo/64/dt80-sas and /dev/null differ diff --git a/ncurses/terminfo/64/dt80w b/ncurses/terminfo/64/dt80w deleted file mode 100644 index 50d88ba..0000000 Binary files a/ncurses/terminfo/64/dt80w and /dev/null differ diff --git a/ncurses/terminfo/64/dtc300s b/ncurses/terminfo/64/dtc300s deleted file mode 100644 index da2b83c..0000000 Binary files a/ncurses/terminfo/64/dtc300s and /dev/null differ diff --git a/ncurses/terminfo/64/dtc382 b/ncurses/terminfo/64/dtc382 deleted file mode 100644 index 4afa383..0000000 Binary files a/ncurses/terminfo/64/dtc382 and /dev/null differ diff --git a/ncurses/terminfo/64/dtterm b/ncurses/terminfo/64/dtterm deleted file mode 100644 index aab7b14..0000000 Binary files a/ncurses/terminfo/64/dtterm and /dev/null differ diff --git a/ncurses/terminfo/64/dumb b/ncurses/terminfo/64/dumb deleted file mode 100644 index fd4091a..0000000 Binary files a/ncurses/terminfo/64/dumb and /dev/null differ diff --git a/ncurses/terminfo/64/dw b/ncurses/terminfo/64/dw deleted file mode 100644 index 5886d57..0000000 Binary files a/ncurses/terminfo/64/dw and /dev/null differ diff --git a/ncurses/terminfo/64/dw1 b/ncurses/terminfo/64/dw1 deleted file mode 100644 index a9f0e6c..0000000 Binary files a/ncurses/terminfo/64/dw1 and /dev/null differ diff --git a/ncurses/terminfo/64/dw2 b/ncurses/terminfo/64/dw2 deleted file mode 100644 index 5886d57..0000000 Binary files a/ncurses/terminfo/64/dw2 and /dev/null differ diff --git a/ncurses/terminfo/64/dw3 b/ncurses/terminfo/64/dw3 deleted file mode 100644 index 00f026b..0000000 Binary files a/ncurses/terminfo/64/dw3 and /dev/null differ diff --git a/ncurses/terminfo/64/dw4 b/ncurses/terminfo/64/dw4 deleted file mode 100644 index 4b0bdc0..0000000 Binary files a/ncurses/terminfo/64/dw4 and /dev/null differ diff --git a/ncurses/terminfo/64/dwk b/ncurses/terminfo/64/dwk deleted file mode 100644 index dbb96d2..0000000 Binary files a/ncurses/terminfo/64/dwk and /dev/null differ diff --git a/ncurses/terminfo/64/dwk-vt b/ncurses/terminfo/64/dwk-vt deleted file mode 100644 index dbb96d2..0000000 Binary files a/ncurses/terminfo/64/dwk-vt and /dev/null differ diff --git a/ncurses/terminfo/65/ecma+color b/ncurses/terminfo/65/ecma+color deleted file mode 100644 index cebfad2..0000000 Binary files a/ncurses/terminfo/65/ecma+color and /dev/null differ diff --git a/ncurses/terminfo/65/ecma+sgr b/ncurses/terminfo/65/ecma+sgr deleted file mode 100644 index d0bf048..0000000 Binary files a/ncurses/terminfo/65/ecma+sgr and /dev/null differ diff --git a/ncurses/terminfo/65/elks b/ncurses/terminfo/65/elks deleted file mode 100644 index 66676df..0000000 Binary files a/ncurses/terminfo/65/elks and /dev/null differ diff --git a/ncurses/terminfo/65/elks-ansi b/ncurses/terminfo/65/elks-ansi deleted file mode 100644 index 12e480a..0000000 Binary files a/ncurses/terminfo/65/elks-ansi and /dev/null differ diff --git a/ncurses/terminfo/65/elks-glasstty b/ncurses/terminfo/65/elks-glasstty deleted file mode 100644 index 3c87714..0000000 Binary files a/ncurses/terminfo/65/elks-glasstty and /dev/null differ diff --git a/ncurses/terminfo/65/elks-vt52 b/ncurses/terminfo/65/elks-vt52 deleted file mode 100644 index 94ab385..0000000 Binary files a/ncurses/terminfo/65/elks-vt52 and /dev/null differ diff --git a/ncurses/terminfo/65/emots b/ncurses/terminfo/65/emots deleted file mode 100644 index 37518ed..0000000 Binary files a/ncurses/terminfo/65/emots and /dev/null differ diff --git a/ncurses/terminfo/65/emu b/ncurses/terminfo/65/emu deleted file mode 100644 index acce5cc..0000000 Binary files a/ncurses/terminfo/65/emu and /dev/null differ diff --git a/ncurses/terminfo/65/emu-220 b/ncurses/terminfo/65/emu-220 deleted file mode 100644 index b934ba2..0000000 Binary files a/ncurses/terminfo/65/emu-220 and /dev/null differ diff --git a/ncurses/terminfo/65/emx-base b/ncurses/terminfo/65/emx-base deleted file mode 100644 index e4c2ec1..0000000 Binary files a/ncurses/terminfo/65/emx-base and /dev/null differ diff --git a/ncurses/terminfo/65/env230 b/ncurses/terminfo/65/env230 deleted file mode 100644 index 3f999ec..0000000 Binary files a/ncurses/terminfo/65/env230 and /dev/null differ diff --git a/ncurses/terminfo/65/envision230 b/ncurses/terminfo/65/envision230 deleted file mode 100644 index 3f999ec..0000000 Binary files a/ncurses/terminfo/65/envision230 and /dev/null differ diff --git a/ncurses/terminfo/65/ep40 b/ncurses/terminfo/65/ep40 deleted file mode 100644 index 6fb53c1..0000000 Binary files a/ncurses/terminfo/65/ep40 and /dev/null differ diff --git a/ncurses/terminfo/65/ep4000 b/ncurses/terminfo/65/ep4000 deleted file mode 100644 index 6fb53c1..0000000 Binary files a/ncurses/terminfo/65/ep4000 and /dev/null differ diff --git a/ncurses/terminfo/65/ep4080 b/ncurses/terminfo/65/ep4080 deleted file mode 100644 index 7f04a5a..0000000 Binary files a/ncurses/terminfo/65/ep4080 and /dev/null differ diff --git a/ncurses/terminfo/65/ep48 b/ncurses/terminfo/65/ep48 deleted file mode 100644 index 7f04a5a..0000000 Binary files a/ncurses/terminfo/65/ep48 and /dev/null differ diff --git a/ncurses/terminfo/65/ergo4000 b/ncurses/terminfo/65/ergo4000 deleted file mode 100644 index 1901344..0000000 Binary files a/ncurses/terminfo/65/ergo4000 and /dev/null differ diff --git a/ncurses/terminfo/65/esprit b/ncurses/terminfo/65/esprit deleted file mode 100644 index 049558b..0000000 Binary files a/ncurses/terminfo/65/esprit and /dev/null differ diff --git a/ncurses/terminfo/65/esprit-am b/ncurses/terminfo/65/esprit-am deleted file mode 100644 index 5d14a63..0000000 Binary files a/ncurses/terminfo/65/esprit-am and /dev/null differ diff --git a/ncurses/terminfo/65/eterm b/ncurses/terminfo/65/eterm deleted file mode 100644 index 6289637..0000000 Binary files a/ncurses/terminfo/65/eterm and /dev/null differ diff --git a/ncurses/terminfo/65/ex155 b/ncurses/terminfo/65/ex155 deleted file mode 100644 index 6c77860..0000000 Binary files a/ncurses/terminfo/65/ex155 and /dev/null differ diff --git a/ncurses/terminfo/65/excel62 b/ncurses/terminfo/65/excel62 deleted file mode 100644 index 4d9176f..0000000 Binary files a/ncurses/terminfo/65/excel62 and /dev/null differ diff --git a/ncurses/terminfo/65/excel62-rv b/ncurses/terminfo/65/excel62-rv deleted file mode 100644 index 0893e5d..0000000 Binary files a/ncurses/terminfo/65/excel62-rv and /dev/null differ diff --git a/ncurses/terminfo/65/excel62-w b/ncurses/terminfo/65/excel62-w deleted file mode 100644 index 65d63f9..0000000 Binary files a/ncurses/terminfo/65/excel62-w and /dev/null differ diff --git a/ncurses/terminfo/65/excel64 b/ncurses/terminfo/65/excel64 deleted file mode 100644 index 4d9176f..0000000 Binary files a/ncurses/terminfo/65/excel64 and /dev/null differ diff --git a/ncurses/terminfo/65/excel64-rv b/ncurses/terminfo/65/excel64-rv deleted file mode 100644 index 0893e5d..0000000 Binary files a/ncurses/terminfo/65/excel64-rv and /dev/null differ diff --git a/ncurses/terminfo/65/excel64-w b/ncurses/terminfo/65/excel64-w deleted file mode 100644 index 65d63f9..0000000 Binary files a/ncurses/terminfo/65/excel64-w and /dev/null differ diff --git a/ncurses/terminfo/65/exec80 b/ncurses/terminfo/65/exec80 deleted file mode 100644 index 49246bb..0000000 Binary files a/ncurses/terminfo/65/exec80 and /dev/null differ diff --git a/ncurses/terminfo/66/f100 b/ncurses/terminfo/66/f100 deleted file mode 100644 index 1e95eca..0000000 Binary files a/ncurses/terminfo/66/f100 and /dev/null differ diff --git a/ncurses/terminfo/66/f100-rv b/ncurses/terminfo/66/f100-rv deleted file mode 100644 index 9e5b92e..0000000 Binary files a/ncurses/terminfo/66/f100-rv and /dev/null differ diff --git a/ncurses/terminfo/66/f110 b/ncurses/terminfo/66/f110 deleted file mode 100644 index 5348499..0000000 Binary files a/ncurses/terminfo/66/f110 and /dev/null differ diff --git a/ncurses/terminfo/66/f110-14 b/ncurses/terminfo/66/f110-14 deleted file mode 100644 index ebec110..0000000 Binary files a/ncurses/terminfo/66/f110-14 and /dev/null differ diff --git a/ncurses/terminfo/66/f110-14w b/ncurses/terminfo/66/f110-14w deleted file mode 100644 index c55b403..0000000 Binary files a/ncurses/terminfo/66/f110-14w and /dev/null differ diff --git a/ncurses/terminfo/66/f110-w b/ncurses/terminfo/66/f110-w deleted file mode 100644 index 48bfe4f..0000000 Binary files a/ncurses/terminfo/66/f110-w and /dev/null differ diff --git a/ncurses/terminfo/66/f1720 b/ncurses/terminfo/66/f1720 deleted file mode 100644 index 13837dc..0000000 Binary files a/ncurses/terminfo/66/f1720 and /dev/null differ diff --git a/ncurses/terminfo/66/f1720a b/ncurses/terminfo/66/f1720a deleted file mode 100644 index 13837dc..0000000 Binary files a/ncurses/terminfo/66/f1720a and /dev/null differ diff --git a/ncurses/terminfo/66/f200 b/ncurses/terminfo/66/f200 deleted file mode 100644 index 70f0882..0000000 Binary files a/ncurses/terminfo/66/f200 and /dev/null differ diff --git a/ncurses/terminfo/66/f200-w b/ncurses/terminfo/66/f200-w deleted file mode 100644 index 4fc1360..0000000 Binary files a/ncurses/terminfo/66/f200-w and /dev/null differ diff --git a/ncurses/terminfo/66/f200vi b/ncurses/terminfo/66/f200vi deleted file mode 100644 index c75c907..0000000 Binary files a/ncurses/terminfo/66/f200vi and /dev/null differ diff --git a/ncurses/terminfo/66/f200vi-w b/ncurses/terminfo/66/f200vi-w deleted file mode 100644 index 0f4fbe6..0000000 Binary files a/ncurses/terminfo/66/f200vi-w and /dev/null differ diff --git a/ncurses/terminfo/66/falco b/ncurses/terminfo/66/falco deleted file mode 100644 index 88dbf93..0000000 Binary files a/ncurses/terminfo/66/falco and /dev/null differ diff --git a/ncurses/terminfo/66/falco-p b/ncurses/terminfo/66/falco-p deleted file mode 100644 index cb65118..0000000 Binary files a/ncurses/terminfo/66/falco-p and /dev/null differ diff --git a/ncurses/terminfo/66/fenix b/ncurses/terminfo/66/fenix deleted file mode 100644 index 7965ed8..0000000 Binary files a/ncurses/terminfo/66/fenix and /dev/null differ diff --git a/ncurses/terminfo/66/fenixw b/ncurses/terminfo/66/fenixw deleted file mode 100644 index 531bc42..0000000 Binary files a/ncurses/terminfo/66/fenixw and /dev/null differ diff --git a/ncurses/terminfo/66/fixterm b/ncurses/terminfo/66/fixterm deleted file mode 100644 index 1e1d2da..0000000 Binary files a/ncurses/terminfo/66/fixterm and /dev/null differ diff --git a/ncurses/terminfo/66/fortune b/ncurses/terminfo/66/fortune deleted file mode 100644 index 518ed94..0000000 Binary files a/ncurses/terminfo/66/fortune and /dev/null differ diff --git a/ncurses/terminfo/66/fos b/ncurses/terminfo/66/fos deleted file mode 100644 index 518ed94..0000000 Binary files a/ncurses/terminfo/66/fos and /dev/null differ diff --git a/ncurses/terminfo/66/fox b/ncurses/terminfo/66/fox deleted file mode 100644 index dfed72c..0000000 Binary files a/ncurses/terminfo/66/fox and /dev/null differ diff --git a/ncurses/terminfo/66/freedom b/ncurses/terminfo/66/freedom deleted file mode 100644 index 1e95eca..0000000 Binary files a/ncurses/terminfo/66/freedom and /dev/null differ diff --git a/ncurses/terminfo/66/freedom-rv b/ncurses/terminfo/66/freedom-rv deleted file mode 100644 index 9e5b92e..0000000 Binary files a/ncurses/terminfo/66/freedom-rv and /dev/null differ diff --git a/ncurses/terminfo/66/freedom100 b/ncurses/terminfo/66/freedom100 deleted file mode 100644 index 1e95eca..0000000 Binary files a/ncurses/terminfo/66/freedom100 and /dev/null differ diff --git a/ncurses/terminfo/66/freedom110 b/ncurses/terminfo/66/freedom110 deleted file mode 100644 index 5348499..0000000 Binary files a/ncurses/terminfo/66/freedom110 and /dev/null differ diff --git a/ncurses/terminfo/66/freedom200 b/ncurses/terminfo/66/freedom200 deleted file mode 100644 index 70f0882..0000000 Binary files a/ncurses/terminfo/66/freedom200 and /dev/null differ diff --git a/ncurses/terminfo/67/gator b/ncurses/terminfo/67/gator deleted file mode 100644 index 1a6fd6c..0000000 Binary files a/ncurses/terminfo/67/gator and /dev/null differ diff --git a/ncurses/terminfo/67/gator-52 b/ncurses/terminfo/67/gator-52 deleted file mode 100644 index b6bf86c..0000000 Binary files a/ncurses/terminfo/67/gator-52 and /dev/null differ diff --git a/ncurses/terminfo/67/gator-52t b/ncurses/terminfo/67/gator-52t deleted file mode 100644 index 5aa0af9..0000000 Binary files a/ncurses/terminfo/67/gator-52t and /dev/null differ diff --git a/ncurses/terminfo/67/gator-t b/ncurses/terminfo/67/gator-t deleted file mode 100644 index 452bf16..0000000 Binary files a/ncurses/terminfo/67/gator-t and /dev/null differ diff --git a/ncurses/terminfo/67/gigi b/ncurses/terminfo/67/gigi deleted file mode 100644 index 7502f57..0000000 Binary files a/ncurses/terminfo/67/gigi and /dev/null differ diff --git a/ncurses/terminfo/67/glasstty b/ncurses/terminfo/67/glasstty deleted file mode 100644 index 53f72cf..0000000 Binary files a/ncurses/terminfo/67/glasstty and /dev/null differ diff --git a/ncurses/terminfo/67/gnome b/ncurses/terminfo/67/gnome deleted file mode 100644 index 4b11e29..0000000 Binary files a/ncurses/terminfo/67/gnome and /dev/null differ diff --git a/ncurses/terminfo/67/gnome+pcfkeys b/ncurses/terminfo/67/gnome+pcfkeys deleted file mode 100644 index 99cbd50..0000000 Binary files a/ncurses/terminfo/67/gnome+pcfkeys and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-2007 b/ncurses/terminfo/67/gnome-2007 deleted file mode 100644 index 72cb6ec..0000000 Binary files a/ncurses/terminfo/67/gnome-2007 and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-2008 b/ncurses/terminfo/67/gnome-2008 deleted file mode 100644 index e3d24f4..0000000 Binary files a/ncurses/terminfo/67/gnome-2008 and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-256color b/ncurses/terminfo/67/gnome-256color deleted file mode 100644 index 29aecf8..0000000 Binary files a/ncurses/terminfo/67/gnome-256color and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-fc5 b/ncurses/terminfo/67/gnome-fc5 deleted file mode 100644 index 95cbb7e..0000000 Binary files a/ncurses/terminfo/67/gnome-fc5 and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-rh62 b/ncurses/terminfo/67/gnome-rh62 deleted file mode 100644 index ceae85e..0000000 Binary files a/ncurses/terminfo/67/gnome-rh62 and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-rh72 b/ncurses/terminfo/67/gnome-rh72 deleted file mode 100644 index 70f74f4..0000000 Binary files a/ncurses/terminfo/67/gnome-rh72 and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-rh80 b/ncurses/terminfo/67/gnome-rh80 deleted file mode 100644 index 3965f57..0000000 Binary files a/ncurses/terminfo/67/gnome-rh80 and /dev/null differ diff --git a/ncurses/terminfo/67/gnome-rh90 b/ncurses/terminfo/67/gnome-rh90 deleted file mode 100644 index 0e98e96..0000000 Binary files a/ncurses/terminfo/67/gnome-rh90 and /dev/null differ diff --git a/ncurses/terminfo/67/go-225 b/ncurses/terminfo/67/go-225 deleted file mode 100644 index be7e3cc..0000000 Binary files a/ncurses/terminfo/67/go-225 and /dev/null differ diff --git a/ncurses/terminfo/67/go140 b/ncurses/terminfo/67/go140 deleted file mode 100644 index 758066a..0000000 Binary files a/ncurses/terminfo/67/go140 and /dev/null differ diff --git a/ncurses/terminfo/67/go140w b/ncurses/terminfo/67/go140w deleted file mode 100644 index eba4029..0000000 Binary files a/ncurses/terminfo/67/go140w and /dev/null differ diff --git a/ncurses/terminfo/67/go225 b/ncurses/terminfo/67/go225 deleted file mode 100644 index be7e3cc..0000000 Binary files a/ncurses/terminfo/67/go225 and /dev/null differ diff --git a/ncurses/terminfo/67/graphos b/ncurses/terminfo/67/graphos deleted file mode 100644 index 7a627b3..0000000 Binary files a/ncurses/terminfo/67/graphos and /dev/null differ diff --git a/ncurses/terminfo/67/graphos-30 b/ncurses/terminfo/67/graphos-30 deleted file mode 100644 index c789400..0000000 Binary files a/ncurses/terminfo/67/graphos-30 and /dev/null differ diff --git a/ncurses/terminfo/67/gs5430 b/ncurses/terminfo/67/gs5430 deleted file mode 100644 index 92dffac..0000000 Binary files a/ncurses/terminfo/67/gs5430 and /dev/null differ diff --git a/ncurses/terminfo/67/gs5430-22 b/ncurses/terminfo/67/gs5430-22 deleted file mode 100644 index e452c35..0000000 Binary files a/ncurses/terminfo/67/gs5430-22 and /dev/null differ diff --git a/ncurses/terminfo/67/gs5430-24 b/ncurses/terminfo/67/gs5430-24 deleted file mode 100644 index bcccaaa..0000000 Binary files a/ncurses/terminfo/67/gs5430-24 and /dev/null differ diff --git a/ncurses/terminfo/67/gs6300 b/ncurses/terminfo/67/gs6300 deleted file mode 100644 index 37518ed..0000000 Binary files a/ncurses/terminfo/67/gs6300 and /dev/null differ diff --git a/ncurses/terminfo/67/gsi b/ncurses/terminfo/67/gsi deleted file mode 100644 index 5e5d970..0000000 Binary files a/ncurses/terminfo/67/gsi and /dev/null differ diff --git a/ncurses/terminfo/67/gt100 b/ncurses/terminfo/67/gt100 deleted file mode 100644 index cc9ff85..0000000 Binary files a/ncurses/terminfo/67/gt100 and /dev/null differ diff --git a/ncurses/terminfo/67/gt100a b/ncurses/terminfo/67/gt100a deleted file mode 100644 index cc9ff85..0000000 Binary files a/ncurses/terminfo/67/gt100a and /dev/null differ diff --git a/ncurses/terminfo/67/gt40 b/ncurses/terminfo/67/gt40 deleted file mode 100644 index fe3314c..0000000 Binary files a/ncurses/terminfo/67/gt40 and /dev/null differ diff --git a/ncurses/terminfo/67/gt42 b/ncurses/terminfo/67/gt42 deleted file mode 100644 index 3c3e2cc..0000000 Binary files a/ncurses/terminfo/67/gt42 and /dev/null differ diff --git a/ncurses/terminfo/67/guru b/ncurses/terminfo/67/guru deleted file mode 100644 index cde793e..0000000 Binary files a/ncurses/terminfo/67/guru and /dev/null differ diff --git a/ncurses/terminfo/67/guru+rv b/ncurses/terminfo/67/guru+rv deleted file mode 100644 index f2c32c0..0000000 Binary files a/ncurses/terminfo/67/guru+rv and /dev/null differ diff --git a/ncurses/terminfo/67/guru+s b/ncurses/terminfo/67/guru+s deleted file mode 100644 index 768593e..0000000 Binary files a/ncurses/terminfo/67/guru+s and /dev/null differ diff --git a/ncurses/terminfo/67/guru+unk b/ncurses/terminfo/67/guru+unk deleted file mode 100644 index cde793e..0000000 Binary files a/ncurses/terminfo/67/guru+unk and /dev/null differ diff --git a/ncurses/terminfo/67/guru-24 b/ncurses/terminfo/67/guru-24 deleted file mode 100644 index c3f1ab5..0000000 Binary files a/ncurses/terminfo/67/guru-24 and /dev/null differ diff --git a/ncurses/terminfo/67/guru-33 b/ncurses/terminfo/67/guru-33 deleted file mode 100644 index cde793e..0000000 Binary files a/ncurses/terminfo/67/guru-33 and /dev/null differ diff --git a/ncurses/terminfo/67/guru-33-rv b/ncurses/terminfo/67/guru-33-rv deleted file mode 100644 index b066297..0000000 Binary files a/ncurses/terminfo/67/guru-33-rv and /dev/null differ diff --git a/ncurses/terminfo/67/guru-33-s b/ncurses/terminfo/67/guru-33-s deleted file mode 100644 index ddc2478..0000000 Binary files a/ncurses/terminfo/67/guru-33-s and /dev/null differ diff --git a/ncurses/terminfo/67/guru-44 b/ncurses/terminfo/67/guru-44 deleted file mode 100644 index 6fd6ac5..0000000 Binary files a/ncurses/terminfo/67/guru-44 and /dev/null differ diff --git a/ncurses/terminfo/67/guru-44-s b/ncurses/terminfo/67/guru-44-s deleted file mode 100644 index 0dc0e4e..0000000 Binary files a/ncurses/terminfo/67/guru-44-s and /dev/null differ diff --git a/ncurses/terminfo/67/guru-76 b/ncurses/terminfo/67/guru-76 deleted file mode 100644 index 2ff21b7..0000000 Binary files a/ncurses/terminfo/67/guru-76 and /dev/null differ diff --git a/ncurses/terminfo/67/guru-76-lp b/ncurses/terminfo/67/guru-76-lp deleted file mode 100644 index a3bd2ab..0000000 Binary files a/ncurses/terminfo/67/guru-76-lp and /dev/null differ diff --git a/ncurses/terminfo/67/guru-76-s b/ncurses/terminfo/67/guru-76-s deleted file mode 100644 index 18005b6..0000000 Binary files a/ncurses/terminfo/67/guru-76-s and /dev/null differ diff --git a/ncurses/terminfo/67/guru-76-w b/ncurses/terminfo/67/guru-76-w deleted file mode 100644 index 8893f73..0000000 Binary files a/ncurses/terminfo/67/guru-76-w and /dev/null differ diff --git a/ncurses/terminfo/67/guru-76-w-s b/ncurses/terminfo/67/guru-76-w-s deleted file mode 100644 index b1828e1..0000000 Binary files a/ncurses/terminfo/67/guru-76-w-s and /dev/null differ diff --git a/ncurses/terminfo/67/guru-76-wm b/ncurses/terminfo/67/guru-76-wm deleted file mode 100644 index e909566..0000000 Binary files a/ncurses/terminfo/67/guru-76-wm and /dev/null differ diff --git a/ncurses/terminfo/67/guru-lp b/ncurses/terminfo/67/guru-lp deleted file mode 100644 index a3bd2ab..0000000 Binary files a/ncurses/terminfo/67/guru-lp and /dev/null differ diff --git a/ncurses/terminfo/67/guru-nctxt b/ncurses/terminfo/67/guru-nctxt deleted file mode 100644 index b3a0266..0000000 Binary files a/ncurses/terminfo/67/guru-nctxt and /dev/null differ diff --git a/ncurses/terminfo/67/guru-rv b/ncurses/terminfo/67/guru-rv deleted file mode 100644 index b066297..0000000 Binary files a/ncurses/terminfo/67/guru-rv and /dev/null differ diff --git a/ncurses/terminfo/67/guru-s b/ncurses/terminfo/67/guru-s deleted file mode 100644 index ddc2478..0000000 Binary files a/ncurses/terminfo/67/guru-s and /dev/null differ diff --git a/ncurses/terminfo/68/h-100 b/ncurses/terminfo/68/h-100 deleted file mode 100644 index f72ecae..0000000 Binary files a/ncurses/terminfo/68/h-100 and /dev/null differ diff --git a/ncurses/terminfo/68/h-100bw b/ncurses/terminfo/68/h-100bw deleted file mode 100644 index d49866e..0000000 Binary files a/ncurses/terminfo/68/h-100bw and /dev/null differ diff --git a/ncurses/terminfo/68/h100 b/ncurses/terminfo/68/h100 deleted file mode 100644 index f72ecae..0000000 Binary files a/ncurses/terminfo/68/h100 and /dev/null differ diff --git a/ncurses/terminfo/68/h100bw b/ncurses/terminfo/68/h100bw deleted file mode 100644 index d49866e..0000000 Binary files a/ncurses/terminfo/68/h100bw and /dev/null differ diff --git a/ncurses/terminfo/68/h19 b/ncurses/terminfo/68/h19 deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/68/h19 and /dev/null differ diff --git a/ncurses/terminfo/68/h19-a b/ncurses/terminfo/68/h19-a deleted file mode 100644 index afa4b5a..0000000 Binary files a/ncurses/terminfo/68/h19-a and /dev/null differ diff --git a/ncurses/terminfo/68/h19-b b/ncurses/terminfo/68/h19-b deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/68/h19-b and /dev/null differ diff --git a/ncurses/terminfo/68/h19-bs b/ncurses/terminfo/68/h19-bs deleted file mode 100644 index ccb948a..0000000 Binary files a/ncurses/terminfo/68/h19-bs and /dev/null differ diff --git a/ncurses/terminfo/68/h19-g b/ncurses/terminfo/68/h19-g deleted file mode 100644 index e7cca3a..0000000 Binary files a/ncurses/terminfo/68/h19-g and /dev/null differ diff --git a/ncurses/terminfo/68/h19-smul b/ncurses/terminfo/68/h19-smul deleted file mode 100644 index 3e2cd33..0000000 Binary files a/ncurses/terminfo/68/h19-smul and /dev/null differ diff --git a/ncurses/terminfo/68/h19-u b/ncurses/terminfo/68/h19-u deleted file mode 100644 index b697f6a..0000000 Binary files a/ncurses/terminfo/68/h19-u and /dev/null differ diff --git a/ncurses/terminfo/68/h19-us b/ncurses/terminfo/68/h19-us deleted file mode 100644 index 3e2cd33..0000000 Binary files a/ncurses/terminfo/68/h19-us and /dev/null differ diff --git a/ncurses/terminfo/68/h19a b/ncurses/terminfo/68/h19a deleted file mode 100644 index afa4b5a..0000000 Binary files a/ncurses/terminfo/68/h19a and /dev/null differ diff --git a/ncurses/terminfo/68/h19g b/ncurses/terminfo/68/h19g deleted file mode 100644 index e7cca3a..0000000 Binary files a/ncurses/terminfo/68/h19g and /dev/null differ diff --git a/ncurses/terminfo/68/h19k b/ncurses/terminfo/68/h19k deleted file mode 100644 index 0a5dd47..0000000 Binary files a/ncurses/terminfo/68/h19k and /dev/null differ diff --git a/ncurses/terminfo/68/h19kermit b/ncurses/terminfo/68/h19kermit deleted file mode 100644 index 0a5dd47..0000000 Binary files a/ncurses/terminfo/68/h19kermit and /dev/null differ diff --git a/ncurses/terminfo/68/h19us b/ncurses/terminfo/68/h19us deleted file mode 100644 index 3e2cd33..0000000 Binary files a/ncurses/terminfo/68/h19us and /dev/null differ diff --git a/ncurses/terminfo/68/h29a-kc-bc b/ncurses/terminfo/68/h29a-kc-bc deleted file mode 100644 index 095b6f7..0000000 Binary files a/ncurses/terminfo/68/h29a-kc-bc and /dev/null differ diff --git a/ncurses/terminfo/68/h29a-kc-uc b/ncurses/terminfo/68/h29a-kc-uc deleted file mode 100644 index 81cd8fc..0000000 Binary files a/ncurses/terminfo/68/h29a-kc-uc and /dev/null differ diff --git a/ncurses/terminfo/68/h29a-nkc-bc b/ncurses/terminfo/68/h29a-nkc-bc deleted file mode 100644 index 4762186..0000000 Binary files a/ncurses/terminfo/68/h29a-nkc-bc and /dev/null differ diff --git a/ncurses/terminfo/68/h29a-nkc-uc b/ncurses/terminfo/68/h29a-nkc-uc deleted file mode 100644 index 96a524c..0000000 Binary files a/ncurses/terminfo/68/h29a-nkc-uc and /dev/null differ diff --git a/ncurses/terminfo/68/h80 b/ncurses/terminfo/68/h80 deleted file mode 100644 index 49246bb..0000000 Binary files a/ncurses/terminfo/68/h80 and /dev/null differ diff --git a/ncurses/terminfo/68/ha8675 b/ncurses/terminfo/68/ha8675 deleted file mode 100644 index 57a995b..0000000 Binary files a/ncurses/terminfo/68/ha8675 and /dev/null differ diff --git a/ncurses/terminfo/68/ha8686 b/ncurses/terminfo/68/ha8686 deleted file mode 100644 index 0a73f16..0000000 Binary files a/ncurses/terminfo/68/ha8686 and /dev/null differ diff --git a/ncurses/terminfo/68/hazel b/ncurses/terminfo/68/hazel deleted file mode 100644 index 49246bb..0000000 Binary files a/ncurses/terminfo/68/hazel and /dev/null differ diff --git a/ncurses/terminfo/68/hds200 b/ncurses/terminfo/68/hds200 deleted file mode 100644 index 95a2612..0000000 Binary files a/ncurses/terminfo/68/hds200 and /dev/null differ diff --git a/ncurses/terminfo/68/he80 b/ncurses/terminfo/68/he80 deleted file mode 100644 index 49246bb..0000000 Binary files a/ncurses/terminfo/68/he80 and /dev/null differ diff --git a/ncurses/terminfo/68/heath b/ncurses/terminfo/68/heath deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/68/heath and /dev/null differ diff --git a/ncurses/terminfo/68/heath-19 b/ncurses/terminfo/68/heath-19 deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/68/heath-19 and /dev/null differ diff --git a/ncurses/terminfo/68/heath-ansi b/ncurses/terminfo/68/heath-ansi deleted file mode 100644 index afa4b5a..0000000 Binary files a/ncurses/terminfo/68/heath-ansi and /dev/null differ diff --git a/ncurses/terminfo/68/heathkit b/ncurses/terminfo/68/heathkit deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/68/heathkit and /dev/null differ diff --git a/ncurses/terminfo/68/heathkit-a b/ncurses/terminfo/68/heathkit-a deleted file mode 100644 index afa4b5a..0000000 Binary files a/ncurses/terminfo/68/heathkit-a and /dev/null differ diff --git a/ncurses/terminfo/68/hft b/ncurses/terminfo/68/hft deleted file mode 100644 index 8229fba..0000000 Binary files a/ncurses/terminfo/68/hft and /dev/null differ diff --git a/ncurses/terminfo/68/hft-c b/ncurses/terminfo/68/hft-c deleted file mode 100644 index 5778800..0000000 Binary files a/ncurses/terminfo/68/hft-c and /dev/null differ diff --git a/ncurses/terminfo/68/hft-c-old b/ncurses/terminfo/68/hft-c-old deleted file mode 100644 index a5eb1c1..0000000 Binary files a/ncurses/terminfo/68/hft-c-old and /dev/null differ diff --git a/ncurses/terminfo/68/hft-old b/ncurses/terminfo/68/hft-old deleted file mode 100644 index ccf948d..0000000 Binary files a/ncurses/terminfo/68/hft-old and /dev/null differ diff --git a/ncurses/terminfo/68/hirez100 b/ncurses/terminfo/68/hirez100 deleted file mode 100644 index 4e156ad..0000000 Binary files a/ncurses/terminfo/68/hirez100 and /dev/null differ diff --git a/ncurses/terminfo/68/hirez100-w b/ncurses/terminfo/68/hirez100-w deleted file mode 100644 index a91af72..0000000 Binary files a/ncurses/terminfo/68/hirez100-w and /dev/null differ diff --git a/ncurses/terminfo/68/hmod1 b/ncurses/terminfo/68/hmod1 deleted file mode 100644 index b8f0d0f..0000000 Binary files a/ncurses/terminfo/68/hmod1 and /dev/null differ diff --git a/ncurses/terminfo/68/hp b/ncurses/terminfo/68/hp deleted file mode 100644 index 6e6886d..0000000 Binary files a/ncurses/terminfo/68/hp and /dev/null differ diff --git a/ncurses/terminfo/68/hp+arrows b/ncurses/terminfo/68/hp+arrows deleted file mode 100644 index dd00a14..0000000 Binary files a/ncurses/terminfo/68/hp+arrows and /dev/null differ diff --git a/ncurses/terminfo/68/hp+color b/ncurses/terminfo/68/hp+color deleted file mode 100644 index ec96452..0000000 Binary files a/ncurses/terminfo/68/hp+color and /dev/null differ diff --git a/ncurses/terminfo/68/hp+labels b/ncurses/terminfo/68/hp+labels deleted file mode 100644 index 39e9a6f..0000000 Binary files a/ncurses/terminfo/68/hp+labels and /dev/null differ diff --git a/ncurses/terminfo/68/hp+pfk+arrows b/ncurses/terminfo/68/hp+pfk+arrows deleted file mode 100644 index a936419..0000000 Binary files a/ncurses/terminfo/68/hp+pfk+arrows and /dev/null differ diff --git a/ncurses/terminfo/68/hp+pfk+cr b/ncurses/terminfo/68/hp+pfk+cr deleted file mode 100644 index db7c3b3..0000000 Binary files a/ncurses/terminfo/68/hp+pfk+cr and /dev/null differ diff --git a/ncurses/terminfo/68/hp+pfk-cr b/ncurses/terminfo/68/hp+pfk-cr deleted file mode 100644 index b3414a4..0000000 Binary files a/ncurses/terminfo/68/hp+pfk-cr and /dev/null differ diff --git a/ncurses/terminfo/68/hp+printer b/ncurses/terminfo/68/hp+printer deleted file mode 100644 index 29ef6e6..0000000 Binary files a/ncurses/terminfo/68/hp+printer and /dev/null differ diff --git a/ncurses/terminfo/68/hp110 b/ncurses/terminfo/68/hp110 deleted file mode 100644 index daf8929..0000000 Binary files a/ncurses/terminfo/68/hp110 and /dev/null differ diff --git a/ncurses/terminfo/68/hp150 b/ncurses/terminfo/68/hp150 deleted file mode 100644 index 7ea74f0..0000000 Binary files a/ncurses/terminfo/68/hp150 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2 b/ncurses/terminfo/68/hp2 deleted file mode 100644 index 66b03cf..0000000 Binary files a/ncurses/terminfo/68/hp2 and /dev/null differ diff --git a/ncurses/terminfo/68/hp236 b/ncurses/terminfo/68/hp236 deleted file mode 100644 index 713202d..0000000 Binary files a/ncurses/terminfo/68/hp236 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2382 b/ncurses/terminfo/68/hp2382 deleted file mode 100644 index 4cf0078..0000000 Binary files a/ncurses/terminfo/68/hp2382 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2382a b/ncurses/terminfo/68/hp2382a deleted file mode 100644 index 4cf0078..0000000 Binary files a/ncurses/terminfo/68/hp2382a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2392 b/ncurses/terminfo/68/hp2392 deleted file mode 100644 index 63fb982..0000000 Binary files a/ncurses/terminfo/68/hp2392 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2397 b/ncurses/terminfo/68/hp2397 deleted file mode 100644 index 8efcaf3..0000000 Binary files a/ncurses/terminfo/68/hp2397 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2397a b/ncurses/terminfo/68/hp2397a deleted file mode 100644 index 8efcaf3..0000000 Binary files a/ncurses/terminfo/68/hp2397a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621 b/ncurses/terminfo/68/hp2621 deleted file mode 100644 index fb718ab..0000000 Binary files a/ncurses/terminfo/68/hp2621 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-48 b/ncurses/terminfo/68/hp2621-48 deleted file mode 100644 index 1f490ae..0000000 Binary files a/ncurses/terminfo/68/hp2621-48 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-a b/ncurses/terminfo/68/hp2621-a deleted file mode 100644 index 6baa75c..0000000 Binary files a/ncurses/terminfo/68/hp2621-a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-ba b/ncurses/terminfo/68/hp2621-ba deleted file mode 100644 index c4cc331..0000000 Binary files a/ncurses/terminfo/68/hp2621-ba and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-fl b/ncurses/terminfo/68/hp2621-fl deleted file mode 100644 index 80b911d..0000000 Binary files a/ncurses/terminfo/68/hp2621-fl and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-k45 b/ncurses/terminfo/68/hp2621-k45 deleted file mode 100644 index 721c09e..0000000 Binary files a/ncurses/terminfo/68/hp2621-k45 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-nl b/ncurses/terminfo/68/hp2621-nl deleted file mode 100644 index a8a3591..0000000 Binary files a/ncurses/terminfo/68/hp2621-nl and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-nt b/ncurses/terminfo/68/hp2621-nt deleted file mode 100644 index b480946..0000000 Binary files a/ncurses/terminfo/68/hp2621-nt and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621-wl b/ncurses/terminfo/68/hp2621-wl deleted file mode 100644 index fb718ab..0000000 Binary files a/ncurses/terminfo/68/hp2621-wl and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621a b/ncurses/terminfo/68/hp2621a deleted file mode 100644 index fb718ab..0000000 Binary files a/ncurses/terminfo/68/hp2621a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621a-a b/ncurses/terminfo/68/hp2621a-a deleted file mode 100644 index 6baa75c..0000000 Binary files a/ncurses/terminfo/68/hp2621a-a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621b b/ncurses/terminfo/68/hp2621b deleted file mode 100644 index fa4fec7..0000000 Binary files a/ncurses/terminfo/68/hp2621b and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621b-kx b/ncurses/terminfo/68/hp2621b-kx deleted file mode 100644 index af4cee6..0000000 Binary files a/ncurses/terminfo/68/hp2621b-kx and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621b-kx-p b/ncurses/terminfo/68/hp2621b-kx-p deleted file mode 100644 index cb8550a..0000000 Binary files a/ncurses/terminfo/68/hp2621b-kx-p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621b-p b/ncurses/terminfo/68/hp2621b-p deleted file mode 100644 index 6b95df7..0000000 Binary files a/ncurses/terminfo/68/hp2621b-p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621k45 b/ncurses/terminfo/68/hp2621k45 deleted file mode 100644 index 721c09e..0000000 Binary files a/ncurses/terminfo/68/hp2621k45 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621p b/ncurses/terminfo/68/hp2621p deleted file mode 100644 index cb82fea..0000000 Binary files a/ncurses/terminfo/68/hp2621p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2621p-a b/ncurses/terminfo/68/hp2621p-a deleted file mode 100644 index 94207bf..0000000 Binary files a/ncurses/terminfo/68/hp2621p-a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2622 b/ncurses/terminfo/68/hp2622 deleted file mode 100644 index 093da8c..0000000 Binary files a/ncurses/terminfo/68/hp2622 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2622a b/ncurses/terminfo/68/hp2622a deleted file mode 100644 index 093da8c..0000000 Binary files a/ncurses/terminfo/68/hp2622a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2623 b/ncurses/terminfo/68/hp2623 deleted file mode 100644 index 41a39a7..0000000 Binary files a/ncurses/terminfo/68/hp2623 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2623a b/ncurses/terminfo/68/hp2623a deleted file mode 100644 index 41a39a7..0000000 Binary files a/ncurses/terminfo/68/hp2623a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624 b/ncurses/terminfo/68/hp2624 deleted file mode 100644 index b5a829a..0000000 Binary files a/ncurses/terminfo/68/hp2624 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624-10p b/ncurses/terminfo/68/hp2624-10p deleted file mode 100644 index 9cb5766..0000000 Binary files a/ncurses/terminfo/68/hp2624-10p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624a b/ncurses/terminfo/68/hp2624a deleted file mode 100644 index b5a829a..0000000 Binary files a/ncurses/terminfo/68/hp2624a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624a-10p b/ncurses/terminfo/68/hp2624a-10p deleted file mode 100644 index 9cb5766..0000000 Binary files a/ncurses/terminfo/68/hp2624a-10p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624b b/ncurses/terminfo/68/hp2624b deleted file mode 100644 index b5a829a..0000000 Binary files a/ncurses/terminfo/68/hp2624b and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624b-10p b/ncurses/terminfo/68/hp2624b-10p deleted file mode 100644 index 9cb5766..0000000 Binary files a/ncurses/terminfo/68/hp2624b-10p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624b-10p-p b/ncurses/terminfo/68/hp2624b-10p-p deleted file mode 100644 index bc348ac..0000000 Binary files a/ncurses/terminfo/68/hp2624b-10p-p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624b-4p b/ncurses/terminfo/68/hp2624b-4p deleted file mode 100644 index b5a829a..0000000 Binary files a/ncurses/terminfo/68/hp2624b-4p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624b-4p-p b/ncurses/terminfo/68/hp2624b-4p-p deleted file mode 100644 index 44d6740..0000000 Binary files a/ncurses/terminfo/68/hp2624b-4p-p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2624b-p b/ncurses/terminfo/68/hp2624b-p deleted file mode 100644 index 44d6740..0000000 Binary files a/ncurses/terminfo/68/hp2624b-p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626 b/ncurses/terminfo/68/hp2626 deleted file mode 100644 index 301dfe7..0000000 Binary files a/ncurses/terminfo/68/hp2626 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626-12 b/ncurses/terminfo/68/hp2626-12 deleted file mode 100644 index 81f663f..0000000 Binary files a/ncurses/terminfo/68/hp2626-12 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626-12-s b/ncurses/terminfo/68/hp2626-12-s deleted file mode 100644 index a584309..0000000 Binary files a/ncurses/terminfo/68/hp2626-12-s and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626-12x40 b/ncurses/terminfo/68/hp2626-12x40 deleted file mode 100644 index 4d16a47..0000000 Binary files a/ncurses/terminfo/68/hp2626-12x40 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626-ns b/ncurses/terminfo/68/hp2626-ns deleted file mode 100644 index 40742b2..0000000 Binary files a/ncurses/terminfo/68/hp2626-ns and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626-s b/ncurses/terminfo/68/hp2626-s deleted file mode 100644 index c1124f4..0000000 Binary files a/ncurses/terminfo/68/hp2626-s and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626-x40 b/ncurses/terminfo/68/hp2626-x40 deleted file mode 100644 index fb13b7f..0000000 Binary files a/ncurses/terminfo/68/hp2626-x40 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626a b/ncurses/terminfo/68/hp2626a deleted file mode 100644 index 301dfe7..0000000 Binary files a/ncurses/terminfo/68/hp2626a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2626p b/ncurses/terminfo/68/hp2626p deleted file mode 100644 index 301dfe7..0000000 Binary files a/ncurses/terminfo/68/hp2626p and /dev/null differ diff --git a/ncurses/terminfo/68/hp2627a b/ncurses/terminfo/68/hp2627a deleted file mode 100644 index eb00534..0000000 Binary files a/ncurses/terminfo/68/hp2627a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2627a-rev b/ncurses/terminfo/68/hp2627a-rev deleted file mode 100644 index f5ba87a..0000000 Binary files a/ncurses/terminfo/68/hp2627a-rev and /dev/null differ diff --git a/ncurses/terminfo/68/hp2627c b/ncurses/terminfo/68/hp2627c deleted file mode 100644 index 2cc5a9b..0000000 Binary files a/ncurses/terminfo/68/hp2627c and /dev/null differ diff --git a/ncurses/terminfo/68/hp262x b/ncurses/terminfo/68/hp262x deleted file mode 100644 index 069aa6a..0000000 Binary files a/ncurses/terminfo/68/hp262x and /dev/null differ diff --git a/ncurses/terminfo/68/hp2640a b/ncurses/terminfo/68/hp2640a deleted file mode 100644 index 4db450d..0000000 Binary files a/ncurses/terminfo/68/hp2640a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2640b b/ncurses/terminfo/68/hp2640b deleted file mode 100644 index 116ede3..0000000 Binary files a/ncurses/terminfo/68/hp2640b and /dev/null differ diff --git a/ncurses/terminfo/68/hp2641a b/ncurses/terminfo/68/hp2641a deleted file mode 100644 index bee3310..0000000 Binary files a/ncurses/terminfo/68/hp2641a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2644a b/ncurses/terminfo/68/hp2644a deleted file mode 100644 index 116ede3..0000000 Binary files a/ncurses/terminfo/68/hp2644a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2645 b/ncurses/terminfo/68/hp2645 deleted file mode 100644 index 9cff16b..0000000 Binary files a/ncurses/terminfo/68/hp2645 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2645a b/ncurses/terminfo/68/hp2645a deleted file mode 100644 index bee3310..0000000 Binary files a/ncurses/terminfo/68/hp2645a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2647a b/ncurses/terminfo/68/hp2647a deleted file mode 100644 index bee3310..0000000 Binary files a/ncurses/terminfo/68/hp2647a and /dev/null differ diff --git a/ncurses/terminfo/68/hp2648 b/ncurses/terminfo/68/hp2648 deleted file mode 100644 index d6208cb..0000000 Binary files a/ncurses/terminfo/68/hp2648 and /dev/null differ diff --git a/ncurses/terminfo/68/hp2648a b/ncurses/terminfo/68/hp2648a deleted file mode 100644 index d6208cb..0000000 Binary files a/ncurses/terminfo/68/hp2648a and /dev/null differ diff --git a/ncurses/terminfo/68/hp300h b/ncurses/terminfo/68/hp300h deleted file mode 100644 index 664cdfe..0000000 Binary files a/ncurses/terminfo/68/hp300h and /dev/null differ diff --git a/ncurses/terminfo/68/hp45 b/ncurses/terminfo/68/hp45 deleted file mode 100644 index 9cff16b..0000000 Binary files a/ncurses/terminfo/68/hp45 and /dev/null differ diff --git a/ncurses/terminfo/68/hp700 b/ncurses/terminfo/68/hp700 deleted file mode 100644 index d7e9766..0000000 Binary files a/ncurses/terminfo/68/hp700 and /dev/null differ diff --git a/ncurses/terminfo/68/hp700-wy b/ncurses/terminfo/68/hp700-wy deleted file mode 100644 index b2b9ede..0000000 Binary files a/ncurses/terminfo/68/hp700-wy and /dev/null differ diff --git a/ncurses/terminfo/68/hp70092 b/ncurses/terminfo/68/hp70092 deleted file mode 100644 index a2d34b5..0000000 Binary files a/ncurses/terminfo/68/hp70092 and /dev/null differ diff --git a/ncurses/terminfo/68/hp70092a b/ncurses/terminfo/68/hp70092a deleted file mode 100644 index a2d34b5..0000000 Binary files a/ncurses/terminfo/68/hp70092a and /dev/null differ diff --git a/ncurses/terminfo/68/hp9837 b/ncurses/terminfo/68/hp9837 deleted file mode 100644 index 7e57ca7..0000000 Binary files a/ncurses/terminfo/68/hp9837 and /dev/null differ diff --git a/ncurses/terminfo/68/hp9845 b/ncurses/terminfo/68/hp9845 deleted file mode 100644 index 1797024..0000000 Binary files a/ncurses/terminfo/68/hp9845 and /dev/null differ diff --git a/ncurses/terminfo/68/hp98550 b/ncurses/terminfo/68/hp98550 deleted file mode 100644 index 0800f97..0000000 Binary files a/ncurses/terminfo/68/hp98550 and /dev/null differ diff --git a/ncurses/terminfo/68/hp98550a b/ncurses/terminfo/68/hp98550a deleted file mode 100644 index 0800f97..0000000 Binary files a/ncurses/terminfo/68/hp98550a and /dev/null differ diff --git a/ncurses/terminfo/68/hp98720 b/ncurses/terminfo/68/hp98720 deleted file mode 100644 index 7e57ca7..0000000 Binary files a/ncurses/terminfo/68/hp98720 and /dev/null differ diff --git a/ncurses/terminfo/68/hp98721 b/ncurses/terminfo/68/hp98721 deleted file mode 100644 index 7e57ca7..0000000 Binary files a/ncurses/terminfo/68/hp98721 and /dev/null differ diff --git a/ncurses/terminfo/68/hpansi b/ncurses/terminfo/68/hpansi deleted file mode 100644 index d7e9766..0000000 Binary files a/ncurses/terminfo/68/hpansi and /dev/null differ diff --git a/ncurses/terminfo/68/hpex b/ncurses/terminfo/68/hpex deleted file mode 100644 index e693ebf..0000000 Binary files a/ncurses/terminfo/68/hpex and /dev/null differ diff --git a/ncurses/terminfo/68/hpex2 b/ncurses/terminfo/68/hpex2 deleted file mode 100644 index 66b03cf..0000000 Binary files a/ncurses/terminfo/68/hpex2 and /dev/null differ diff --git a/ncurses/terminfo/68/hpgeneric b/ncurses/terminfo/68/hpgeneric deleted file mode 100644 index 6e6886d..0000000 Binary files a/ncurses/terminfo/68/hpgeneric and /dev/null differ diff --git a/ncurses/terminfo/68/hpsub b/ncurses/terminfo/68/hpsub deleted file mode 100644 index e8f05e0..0000000 Binary files a/ncurses/terminfo/68/hpsub and /dev/null differ diff --git a/ncurses/terminfo/68/hpterm b/ncurses/terminfo/68/hpterm deleted file mode 100644 index abccffb..0000000 Binary files a/ncurses/terminfo/68/hpterm and /dev/null differ diff --git a/ncurses/terminfo/68/hpterm-color b/ncurses/terminfo/68/hpterm-color deleted file mode 100644 index db2acc9..0000000 Binary files a/ncurses/terminfo/68/hpterm-color and /dev/null differ diff --git a/ncurses/terminfo/68/htx11 b/ncurses/terminfo/68/htx11 deleted file mode 100644 index 9e65d8d..0000000 Binary files a/ncurses/terminfo/68/htx11 and /dev/null differ diff --git a/ncurses/terminfo/68/hurd b/ncurses/terminfo/68/hurd deleted file mode 100644 index b59bca5..0000000 Binary files a/ncurses/terminfo/68/hurd and /dev/null differ diff --git a/ncurses/terminfo/68/hz1000 b/ncurses/terminfo/68/hz1000 deleted file mode 100644 index 902cedd..0000000 Binary files a/ncurses/terminfo/68/hz1000 and /dev/null differ diff --git a/ncurses/terminfo/68/hz1420 b/ncurses/terminfo/68/hz1420 deleted file mode 100644 index 28caf2e..0000000 Binary files a/ncurses/terminfo/68/hz1420 and /dev/null differ diff --git a/ncurses/terminfo/68/hz1500 b/ncurses/terminfo/68/hz1500 deleted file mode 100644 index 193818c..0000000 Binary files a/ncurses/terminfo/68/hz1500 and /dev/null differ diff --git a/ncurses/terminfo/68/hz1510 b/ncurses/terminfo/68/hz1510 deleted file mode 100644 index 69d1bdf..0000000 Binary files a/ncurses/terminfo/68/hz1510 and /dev/null differ diff --git a/ncurses/terminfo/68/hz1520 b/ncurses/terminfo/68/hz1520 deleted file mode 100644 index 32533bc..0000000 Binary files a/ncurses/terminfo/68/hz1520 and /dev/null differ diff --git a/ncurses/terminfo/68/hz1520-noesc b/ncurses/terminfo/68/hz1520-noesc deleted file mode 100644 index 5124b5a..0000000 Binary files a/ncurses/terminfo/68/hz1520-noesc and /dev/null differ diff --git a/ncurses/terminfo/68/hz1552 b/ncurses/terminfo/68/hz1552 deleted file mode 100644 index f85a1d7..0000000 Binary files a/ncurses/terminfo/68/hz1552 and /dev/null differ diff --git a/ncurses/terminfo/68/hz1552-rv b/ncurses/terminfo/68/hz1552-rv deleted file mode 100644 index 2633886..0000000 Binary files a/ncurses/terminfo/68/hz1552-rv and /dev/null differ diff --git a/ncurses/terminfo/68/hz2000 b/ncurses/terminfo/68/hz2000 deleted file mode 100644 index 947795d..0000000 Binary files a/ncurses/terminfo/68/hz2000 and /dev/null differ diff --git a/ncurses/terminfo/69/i100 b/ncurses/terminfo/69/i100 deleted file mode 100644 index cc9ff85..0000000 Binary files a/ncurses/terminfo/69/i100 and /dev/null differ diff --git a/ncurses/terminfo/69/i3101 b/ncurses/terminfo/69/i3101 deleted file mode 100644 index 5c1853e..0000000 Binary files a/ncurses/terminfo/69/i3101 and /dev/null differ diff --git a/ncurses/terminfo/69/i3164 b/ncurses/terminfo/69/i3164 deleted file mode 100644 index 1ca31e7..0000000 Binary files a/ncurses/terminfo/69/i3164 and /dev/null differ diff --git a/ncurses/terminfo/69/i400 b/ncurses/terminfo/69/i400 deleted file mode 100644 index 0ebe858..0000000 Binary files a/ncurses/terminfo/69/i400 and /dev/null differ diff --git a/ncurses/terminfo/69/ibcs2 b/ncurses/terminfo/69/ibcs2 deleted file mode 100644 index fbda72f..0000000 Binary files a/ncurses/terminfo/69/ibcs2 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm+16color b/ncurses/terminfo/69/ibm+16color deleted file mode 100644 index 5641595..0000000 Binary files a/ncurses/terminfo/69/ibm+16color and /dev/null differ diff --git a/ncurses/terminfo/69/ibm+color b/ncurses/terminfo/69/ibm+color deleted file mode 100644 index bb16054..0000000 Binary files a/ncurses/terminfo/69/ibm+color and /dev/null differ diff --git a/ncurses/terminfo/69/ibm-apl b/ncurses/terminfo/69/ibm-apl deleted file mode 100644 index 679a574..0000000 Binary files a/ncurses/terminfo/69/ibm-apl and /dev/null differ diff --git a/ncurses/terminfo/69/ibm-pc b/ncurses/terminfo/69/ibm-pc deleted file mode 100644 index ec3766c..0000000 Binary files a/ncurses/terminfo/69/ibm-pc and /dev/null differ diff --git a/ncurses/terminfo/69/ibm-system1 b/ncurses/terminfo/69/ibm-system1 deleted file mode 100644 index 4bfce21..0000000 Binary files a/ncurses/terminfo/69/ibm-system1 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3101 b/ncurses/terminfo/69/ibm3101 deleted file mode 100644 index 5c1853e..0000000 Binary files a/ncurses/terminfo/69/ibm3101 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3151 b/ncurses/terminfo/69/ibm3151 deleted file mode 100644 index 42f6df4..0000000 Binary files a/ncurses/terminfo/69/ibm3151 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3161 b/ncurses/terminfo/69/ibm3161 deleted file mode 100644 index f1dca19..0000000 Binary files a/ncurses/terminfo/69/ibm3161 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3161-C b/ncurses/terminfo/69/ibm3161-C deleted file mode 100644 index d713eec..0000000 Binary files a/ncurses/terminfo/69/ibm3161-C and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3162 b/ncurses/terminfo/69/ibm3162 deleted file mode 100644 index 5b77e3a..0000000 Binary files a/ncurses/terminfo/69/ibm3162 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3163 b/ncurses/terminfo/69/ibm3163 deleted file mode 100644 index f1dca19..0000000 Binary files a/ncurses/terminfo/69/ibm3163 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm3164 b/ncurses/terminfo/69/ibm3164 deleted file mode 100644 index 1ca31e7..0000000 Binary files a/ncurses/terminfo/69/ibm3164 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm327x b/ncurses/terminfo/69/ibm327x deleted file mode 100644 index 2ba32ca..0000000 Binary files a/ncurses/terminfo/69/ibm327x and /dev/null differ diff --git a/ncurses/terminfo/69/ibm5051 b/ncurses/terminfo/69/ibm5051 deleted file mode 100644 index ec3766c..0000000 Binary files a/ncurses/terminfo/69/ibm5051 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm5081 b/ncurses/terminfo/69/ibm5081 deleted file mode 100644 index 8229fba..0000000 Binary files a/ncurses/terminfo/69/ibm5081 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm5081-c b/ncurses/terminfo/69/ibm5081-c deleted file mode 100644 index abbdc03..0000000 Binary files a/ncurses/terminfo/69/ibm5081-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibm5151 b/ncurses/terminfo/69/ibm5151 deleted file mode 100644 index 377b3a0..0000000 Binary files a/ncurses/terminfo/69/ibm5151 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm5154 b/ncurses/terminfo/69/ibm5154 deleted file mode 100644 index 5d94307..0000000 Binary files a/ncurses/terminfo/69/ibm5154 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm5154-c b/ncurses/terminfo/69/ibm5154-c deleted file mode 100644 index f7fce9a..0000000 Binary files a/ncurses/terminfo/69/ibm5154-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibm6153 b/ncurses/terminfo/69/ibm6153 deleted file mode 100644 index 21615b8..0000000 Binary files a/ncurses/terminfo/69/ibm6153 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm6153-40 b/ncurses/terminfo/69/ibm6153-40 deleted file mode 100644 index bebd569..0000000 Binary files a/ncurses/terminfo/69/ibm6153-40 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm6153-90 b/ncurses/terminfo/69/ibm6153-90 deleted file mode 100644 index df9a691..0000000 Binary files a/ncurses/terminfo/69/ibm6153-90 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm6154 b/ncurses/terminfo/69/ibm6154 deleted file mode 100644 index a723b30..0000000 Binary files a/ncurses/terminfo/69/ibm6154 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm6154-c b/ncurses/terminfo/69/ibm6154-c deleted file mode 100644 index 5f9b30a..0000000 Binary files a/ncurses/terminfo/69/ibm6154-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibm6155 b/ncurses/terminfo/69/ibm6155 deleted file mode 100644 index 8a9fec7..0000000 Binary files a/ncurses/terminfo/69/ibm6155 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8503 b/ncurses/terminfo/69/ibm8503 deleted file mode 100644 index 4870e23..0000000 Binary files a/ncurses/terminfo/69/ibm8503 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8507 b/ncurses/terminfo/69/ibm8507 deleted file mode 100644 index 4870e23..0000000 Binary files a/ncurses/terminfo/69/ibm8507 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8512 b/ncurses/terminfo/69/ibm8512 deleted file mode 100644 index fd97cbe..0000000 Binary files a/ncurses/terminfo/69/ibm8512 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8513 b/ncurses/terminfo/69/ibm8513 deleted file mode 100644 index fd97cbe..0000000 Binary files a/ncurses/terminfo/69/ibm8513 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8514 b/ncurses/terminfo/69/ibm8514 deleted file mode 100644 index 63ddfe3..0000000 Binary files a/ncurses/terminfo/69/ibm8514 and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8514-c b/ncurses/terminfo/69/ibm8514-c deleted file mode 100644 index 5d2de43..0000000 Binary files a/ncurses/terminfo/69/ibm8514-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibm8604 b/ncurses/terminfo/69/ibm8604 deleted file mode 100644 index 4870e23..0000000 Binary files a/ncurses/terminfo/69/ibm8604 and /dev/null differ diff --git a/ncurses/terminfo/69/ibmaed b/ncurses/terminfo/69/ibmaed deleted file mode 100644 index 227d0f1..0000000 Binary files a/ncurses/terminfo/69/ibmaed and /dev/null differ diff --git a/ncurses/terminfo/69/ibmapa16 b/ncurses/terminfo/69/ibmapa16 deleted file mode 100644 index 46bd1af..0000000 Binary files a/ncurses/terminfo/69/ibmapa16 and /dev/null differ diff --git a/ncurses/terminfo/69/ibmapa8 b/ncurses/terminfo/69/ibmapa8 deleted file mode 100644 index 9be7016..0000000 Binary files a/ncurses/terminfo/69/ibmapa8 and /dev/null differ diff --git a/ncurses/terminfo/69/ibmapa8c b/ncurses/terminfo/69/ibmapa8c deleted file mode 100644 index 9be7016..0000000 Binary files a/ncurses/terminfo/69/ibmapa8c and /dev/null differ diff --git a/ncurses/terminfo/69/ibmapa8c-c b/ncurses/terminfo/69/ibmapa8c-c deleted file mode 100644 index 5f9b30a..0000000 Binary files a/ncurses/terminfo/69/ibmapa8c-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibmega b/ncurses/terminfo/69/ibmega deleted file mode 100644 index cf32159..0000000 Binary files a/ncurses/terminfo/69/ibmega and /dev/null differ diff --git a/ncurses/terminfo/69/ibmega-c b/ncurses/terminfo/69/ibmega-c deleted file mode 100644 index f7fce9a..0000000 Binary files a/ncurses/terminfo/69/ibmega-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibmmono b/ncurses/terminfo/69/ibmmono deleted file mode 100644 index 660bbc4..0000000 Binary files a/ncurses/terminfo/69/ibmmono and /dev/null differ diff --git a/ncurses/terminfo/69/ibmmpel-c b/ncurses/terminfo/69/ibmmpel-c deleted file mode 100644 index abbdc03..0000000 Binary files a/ncurses/terminfo/69/ibmmpel-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibmpc b/ncurses/terminfo/69/ibmpc deleted file mode 100644 index 5844719..0000000 Binary files a/ncurses/terminfo/69/ibmpc and /dev/null differ diff --git a/ncurses/terminfo/69/ibmpc3 b/ncurses/terminfo/69/ibmpc3 deleted file mode 100644 index 79d992d..0000000 Binary files a/ncurses/terminfo/69/ibmpc3 and /dev/null differ diff --git a/ncurses/terminfo/69/ibmpc3r b/ncurses/terminfo/69/ibmpc3r deleted file mode 100644 index 97db1c8..0000000 Binary files a/ncurses/terminfo/69/ibmpc3r and /dev/null differ diff --git a/ncurses/terminfo/69/ibmpc3r-mono b/ncurses/terminfo/69/ibmpc3r-mono deleted file mode 100644 index fa8a54e..0000000 Binary files a/ncurses/terminfo/69/ibmpc3r-mono and /dev/null differ diff --git a/ncurses/terminfo/69/ibmpcx b/ncurses/terminfo/69/ibmpcx deleted file mode 100644 index 86e3056..0000000 Binary files a/ncurses/terminfo/69/ibmpcx and /dev/null differ diff --git a/ncurses/terminfo/69/ibmvga b/ncurses/terminfo/69/ibmvga deleted file mode 100644 index 4b94cf1..0000000 Binary files a/ncurses/terminfo/69/ibmvga and /dev/null differ diff --git a/ncurses/terminfo/69/ibmvga-c b/ncurses/terminfo/69/ibmvga-c deleted file mode 100644 index 2cc5b8e..0000000 Binary files a/ncurses/terminfo/69/ibmvga-c and /dev/null differ diff --git a/ncurses/terminfo/69/ibmx b/ncurses/terminfo/69/ibmx deleted file mode 100644 index 86e3056..0000000 Binary files a/ncurses/terminfo/69/ibmx and /dev/null differ diff --git a/ncurses/terminfo/69/icl6402 b/ncurses/terminfo/69/icl6402 deleted file mode 100644 index 4e03f17..0000000 Binary files a/ncurses/terminfo/69/icl6402 and /dev/null differ diff --git a/ncurses/terminfo/69/icl6404 b/ncurses/terminfo/69/icl6404 deleted file mode 100644 index 4e03f17..0000000 Binary files a/ncurses/terminfo/69/icl6404 and /dev/null differ diff --git a/ncurses/terminfo/69/icl6404-w b/ncurses/terminfo/69/icl6404-w deleted file mode 100644 index 478a0b0..0000000 Binary files a/ncurses/terminfo/69/icl6404-w and /dev/null differ diff --git a/ncurses/terminfo/69/ifmr b/ncurses/terminfo/69/ifmr deleted file mode 100644 index 0682dcb..0000000 Binary files a/ncurses/terminfo/69/ifmr and /dev/null differ diff --git a/ncurses/terminfo/69/ims-ansi b/ncurses/terminfo/69/ims-ansi deleted file mode 100644 index 74398e0..0000000 Binary files a/ncurses/terminfo/69/ims-ansi and /dev/null differ diff --git a/ncurses/terminfo/69/ims950 b/ncurses/terminfo/69/ims950 deleted file mode 100644 index 87d978c..0000000 Binary files a/ncurses/terminfo/69/ims950 and /dev/null differ diff --git a/ncurses/terminfo/69/ims950-b b/ncurses/terminfo/69/ims950-b deleted file mode 100644 index 66049a9..0000000 Binary files a/ncurses/terminfo/69/ims950-b and /dev/null differ diff --git a/ncurses/terminfo/69/ims950-rv b/ncurses/terminfo/69/ims950-rv deleted file mode 100644 index 2fb56d2..0000000 Binary files a/ncurses/terminfo/69/ims950-rv and /dev/null differ diff --git a/ncurses/terminfo/69/infoton b/ncurses/terminfo/69/infoton deleted file mode 100644 index ddc509b..0000000 Binary files a/ncurses/terminfo/69/infoton and /dev/null differ diff --git a/ncurses/terminfo/69/interix b/ncurses/terminfo/69/interix deleted file mode 100644 index c3d4d6a..0000000 Binary files a/ncurses/terminfo/69/interix and /dev/null differ diff --git a/ncurses/terminfo/69/interix-nti b/ncurses/terminfo/69/interix-nti deleted file mode 100644 index 02d5716..0000000 Binary files a/ncurses/terminfo/69/interix-nti and /dev/null differ diff --git a/ncurses/terminfo/69/intertec b/ncurses/terminfo/69/intertec deleted file mode 100644 index 5ff0138..0000000 Binary files a/ncurses/terminfo/69/intertec and /dev/null differ diff --git a/ncurses/terminfo/69/intertube b/ncurses/terminfo/69/intertube deleted file mode 100644 index 5ff0138..0000000 Binary files a/ncurses/terminfo/69/intertube and /dev/null differ diff --git a/ncurses/terminfo/69/intertube2 b/ncurses/terminfo/69/intertube2 deleted file mode 100644 index c1bb3b2..0000000 Binary files a/ncurses/terminfo/69/intertube2 and /dev/null differ diff --git a/ncurses/terminfo/69/intext b/ncurses/terminfo/69/intext deleted file mode 100644 index 8f07ba6..0000000 Binary files a/ncurses/terminfo/69/intext and /dev/null differ diff --git a/ncurses/terminfo/69/intext2 b/ncurses/terminfo/69/intext2 deleted file mode 100644 index 9ce8ec0..0000000 Binary files a/ncurses/terminfo/69/intext2 and /dev/null differ diff --git a/ncurses/terminfo/69/intextii b/ncurses/terminfo/69/intextii deleted file mode 100644 index 9ce8ec0..0000000 Binary files a/ncurses/terminfo/69/intextii and /dev/null differ diff --git a/ncurses/terminfo/69/ips b/ncurses/terminfo/69/ips deleted file mode 100644 index 2caacb2..0000000 Binary files a/ncurses/terminfo/69/ips and /dev/null differ diff --git a/ncurses/terminfo/69/ipsi b/ncurses/terminfo/69/ipsi deleted file mode 100644 index 460faaf..0000000 Binary files a/ncurses/terminfo/69/ipsi and /dev/null differ diff --git a/ncurses/terminfo/69/iq120 b/ncurses/terminfo/69/iq120 deleted file mode 100644 index 557a602..0000000 Binary files a/ncurses/terminfo/69/iq120 and /dev/null differ diff --git a/ncurses/terminfo/69/iq140 b/ncurses/terminfo/69/iq140 deleted file mode 100644 index 0a641c4..0000000 Binary files a/ncurses/terminfo/69/iq140 and /dev/null differ diff --git a/ncurses/terminfo/69/iris-ansi b/ncurses/terminfo/69/iris-ansi deleted file mode 100644 index f011423..0000000 Binary files a/ncurses/terminfo/69/iris-ansi and /dev/null differ diff --git a/ncurses/terminfo/69/iris-ansi-ap b/ncurses/terminfo/69/iris-ansi-ap deleted file mode 100644 index 445fc95..0000000 Binary files a/ncurses/terminfo/69/iris-ansi-ap and /dev/null differ diff --git a/ncurses/terminfo/69/iris-ansi-net b/ncurses/terminfo/69/iris-ansi-net deleted file mode 100644 index f011423..0000000 Binary files a/ncurses/terminfo/69/iris-ansi-net and /dev/null differ diff --git a/ncurses/terminfo/69/iris-color b/ncurses/terminfo/69/iris-color deleted file mode 100644 index 166c601..0000000 Binary files a/ncurses/terminfo/69/iris-color and /dev/null differ diff --git a/ncurses/terminfo/69/iris40 b/ncurses/terminfo/69/iris40 deleted file mode 100644 index b9f798e..0000000 Binary files a/ncurses/terminfo/69/iris40 and /dev/null differ diff --git a/ncurses/terminfo/6a/jaixterm b/ncurses/terminfo/6a/jaixterm deleted file mode 100644 index 8a0c3ed..0000000 Binary files a/ncurses/terminfo/6a/jaixterm and /dev/null differ diff --git a/ncurses/terminfo/6a/jaixterm-m b/ncurses/terminfo/6a/jaixterm-m deleted file mode 100644 index 98a0962..0000000 Binary files a/ncurses/terminfo/6a/jaixterm-m and /dev/null differ diff --git a/ncurses/terminfo/6a/jerq b/ncurses/terminfo/6a/jerq deleted file mode 100644 index 36a565f..0000000 Binary files a/ncurses/terminfo/6a/jerq and /dev/null differ diff --git a/ncurses/terminfo/6a/jfbterm b/ncurses/terminfo/6a/jfbterm deleted file mode 100644 index 9563a24..0000000 Binary files a/ncurses/terminfo/6a/jfbterm and /dev/null differ diff --git a/ncurses/terminfo/6b/k45 b/ncurses/terminfo/6b/k45 deleted file mode 100644 index 721c09e..0000000 Binary files a/ncurses/terminfo/6b/k45 and /dev/null differ diff --git a/ncurses/terminfo/6b/kaypro b/ncurses/terminfo/6b/kaypro deleted file mode 100644 index b12807e..0000000 Binary files a/ncurses/terminfo/6b/kaypro and /dev/null differ diff --git a/ncurses/terminfo/6b/kaypro2 b/ncurses/terminfo/6b/kaypro2 deleted file mode 100644 index b12807e..0000000 Binary files a/ncurses/terminfo/6b/kaypro2 and /dev/null differ diff --git a/ncurses/terminfo/6b/kds6402 b/ncurses/terminfo/6b/kds6402 deleted file mode 100644 index 4e03f17..0000000 Binary files a/ncurses/terminfo/6b/kds6402 and /dev/null differ diff --git a/ncurses/terminfo/6b/kds7372 b/ncurses/terminfo/6b/kds7372 deleted file mode 100644 index 4e03f17..0000000 Binary files a/ncurses/terminfo/6b/kds7372 and /dev/null differ diff --git a/ncurses/terminfo/6b/kds7372-w b/ncurses/terminfo/6b/kds7372-w deleted file mode 100644 index 478a0b0..0000000 Binary files a/ncurses/terminfo/6b/kds7372-w and /dev/null differ diff --git a/ncurses/terminfo/6b/kermit b/ncurses/terminfo/6b/kermit deleted file mode 100644 index 702c99c..0000000 Binary files a/ncurses/terminfo/6b/kermit and /dev/null differ diff --git a/ncurses/terminfo/6b/kermit-am b/ncurses/terminfo/6b/kermit-am deleted file mode 100644 index 5dd33c5..0000000 Binary files a/ncurses/terminfo/6b/kermit-am and /dev/null differ diff --git a/ncurses/terminfo/6b/klone+acs b/ncurses/terminfo/6b/klone+acs deleted file mode 100644 index 666ca02..0000000 Binary files a/ncurses/terminfo/6b/klone+acs and /dev/null differ diff --git a/ncurses/terminfo/6b/klone+color b/ncurses/terminfo/6b/klone+color deleted file mode 100644 index ade6b7c..0000000 Binary files a/ncurses/terminfo/6b/klone+color and /dev/null differ diff --git a/ncurses/terminfo/6b/klone+koi8acs b/ncurses/terminfo/6b/klone+koi8acs deleted file mode 100644 index 23edc40..0000000 Binary files a/ncurses/terminfo/6b/klone+koi8acs and /dev/null differ diff --git a/ncurses/terminfo/6b/klone+sgr b/ncurses/terminfo/6b/klone+sgr deleted file mode 100644 index c26151b..0000000 Binary files a/ncurses/terminfo/6b/klone+sgr and /dev/null differ diff --git a/ncurses/terminfo/6b/klone+sgr-dumb b/ncurses/terminfo/6b/klone+sgr-dumb deleted file mode 100644 index a4eed49..0000000 Binary files a/ncurses/terminfo/6b/klone+sgr-dumb and /dev/null differ diff --git a/ncurses/terminfo/6b/klone+sgr8 b/ncurses/terminfo/6b/klone+sgr8 deleted file mode 100644 index 15e63a3..0000000 Binary files a/ncurses/terminfo/6b/klone+sgr8 and /dev/null differ diff --git a/ncurses/terminfo/6b/kon b/ncurses/terminfo/6b/kon deleted file mode 100644 index 9563a24..0000000 Binary files a/ncurses/terminfo/6b/kon and /dev/null differ diff --git a/ncurses/terminfo/6b/kon2 b/ncurses/terminfo/6b/kon2 deleted file mode 100644 index 9563a24..0000000 Binary files a/ncurses/terminfo/6b/kon2 and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole b/ncurses/terminfo/6b/konsole deleted file mode 100644 index ad76064..0000000 Binary files a/ncurses/terminfo/6b/konsole and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole+pcfkeys b/ncurses/terminfo/6b/konsole+pcfkeys deleted file mode 100644 index cc1619b..0000000 Binary files a/ncurses/terminfo/6b/konsole+pcfkeys and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-16color b/ncurses/terminfo/6b/konsole-16color deleted file mode 100644 index 1ab16de..0000000 Binary files a/ncurses/terminfo/6b/konsole-16color and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-256color b/ncurses/terminfo/6b/konsole-256color deleted file mode 100644 index 31877ba..0000000 Binary files a/ncurses/terminfo/6b/konsole-256color and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-base b/ncurses/terminfo/6b/konsole-base deleted file mode 100644 index 1859b9b..0000000 Binary files a/ncurses/terminfo/6b/konsole-base and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-linux b/ncurses/terminfo/6b/konsole-linux deleted file mode 100644 index 9df33d8..0000000 Binary files a/ncurses/terminfo/6b/konsole-linux and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-solaris b/ncurses/terminfo/6b/konsole-solaris deleted file mode 100644 index 9547103..0000000 Binary files a/ncurses/terminfo/6b/konsole-solaris and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-vt100 b/ncurses/terminfo/6b/konsole-vt100 deleted file mode 100644 index d6440fb..0000000 Binary files a/ncurses/terminfo/6b/konsole-vt100 and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-vt420pc b/ncurses/terminfo/6b/konsole-vt420pc deleted file mode 100644 index caa2a27..0000000 Binary files a/ncurses/terminfo/6b/konsole-vt420pc and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-xf3x b/ncurses/terminfo/6b/konsole-xf3x deleted file mode 100644 index 4adda46..0000000 Binary files a/ncurses/terminfo/6b/konsole-xf3x and /dev/null differ diff --git a/ncurses/terminfo/6b/konsole-xf4x b/ncurses/terminfo/6b/konsole-xf4x deleted file mode 100644 index 70acf4f..0000000 Binary files a/ncurses/terminfo/6b/konsole-xf4x and /dev/null differ diff --git a/ncurses/terminfo/6b/kt7 b/ncurses/terminfo/6b/kt7 deleted file mode 100644 index c169af8..0000000 Binary files a/ncurses/terminfo/6b/kt7 and /dev/null differ diff --git a/ncurses/terminfo/6b/kt7ix b/ncurses/terminfo/6b/kt7ix deleted file mode 100644 index de66a9b..0000000 Binary files a/ncurses/terminfo/6b/kt7ix and /dev/null differ diff --git a/ncurses/terminfo/6b/kterm b/ncurses/terminfo/6b/kterm deleted file mode 100644 index 65baee5..0000000 Binary files a/ncurses/terminfo/6b/kterm and /dev/null differ diff --git a/ncurses/terminfo/6b/kterm-co b/ncurses/terminfo/6b/kterm-co deleted file mode 100644 index faad384..0000000 Binary files a/ncurses/terminfo/6b/kterm-co and /dev/null differ diff --git a/ncurses/terminfo/6b/kterm-color b/ncurses/terminfo/6b/kterm-color deleted file mode 100644 index faad384..0000000 Binary files a/ncurses/terminfo/6b/kterm-color and /dev/null differ diff --git a/ncurses/terminfo/6b/ktm b/ncurses/terminfo/6b/ktm deleted file mode 100644 index fcdbf6c..0000000 Binary files a/ncurses/terminfo/6b/ktm and /dev/null differ diff --git a/ncurses/terminfo/6b/kvt b/ncurses/terminfo/6b/kvt deleted file mode 100644 index 417baea..0000000 Binary files a/ncurses/terminfo/6b/kvt and /dev/null differ diff --git a/ncurses/terminfo/6c/la120 b/ncurses/terminfo/6c/la120 deleted file mode 100644 index 00f026b..0000000 Binary files a/ncurses/terminfo/6c/la120 and /dev/null differ diff --git a/ncurses/terminfo/6c/layer b/ncurses/terminfo/6c/layer deleted file mode 100644 index b313bcc..0000000 Binary files a/ncurses/terminfo/6c/layer and /dev/null differ diff --git a/ncurses/terminfo/6c/lft b/ncurses/terminfo/6c/lft deleted file mode 100644 index 20c5b42..0000000 Binary files a/ncurses/terminfo/6c/lft and /dev/null differ diff --git a/ncurses/terminfo/6c/lft-pc850 b/ncurses/terminfo/6c/lft-pc850 deleted file mode 100644 index 20c5b42..0000000 Binary files a/ncurses/terminfo/6c/lft-pc850 and /dev/null differ diff --git a/ncurses/terminfo/6c/linux b/ncurses/terminfo/6c/linux deleted file mode 100644 index 2c3ceb7..0000000 Binary files a/ncurses/terminfo/6c/linux and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-basic b/ncurses/terminfo/6c/linux-basic deleted file mode 100644 index d06fb52..0000000 Binary files a/ncurses/terminfo/6c/linux-basic and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-c b/ncurses/terminfo/6c/linux-c deleted file mode 100644 index 3540234..0000000 Binary files a/ncurses/terminfo/6c/linux-c and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-c-nc b/ncurses/terminfo/6c/linux-c-nc deleted file mode 100644 index 9284cfb..0000000 Binary files a/ncurses/terminfo/6c/linux-c-nc and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-koi8 b/ncurses/terminfo/6c/linux-koi8 deleted file mode 100644 index a33ec9c..0000000 Binary files a/ncurses/terminfo/6c/linux-koi8 and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-koi8r b/ncurses/terminfo/6c/linux-koi8r deleted file mode 100644 index 53c04eb..0000000 Binary files a/ncurses/terminfo/6c/linux-koi8r and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-lat b/ncurses/terminfo/6c/linux-lat deleted file mode 100644 index 8dcc1c3..0000000 Binary files a/ncurses/terminfo/6c/linux-lat and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-m b/ncurses/terminfo/6c/linux-m deleted file mode 100644 index 67e71a4..0000000 Binary files a/ncurses/terminfo/6c/linux-m and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-nic b/ncurses/terminfo/6c/linux-nic deleted file mode 100644 index a2d9952..0000000 Binary files a/ncurses/terminfo/6c/linux-nic and /dev/null differ diff --git a/ncurses/terminfo/6c/linux-vt b/ncurses/terminfo/6c/linux-vt deleted file mode 100644 index 763198b..0000000 Binary files a/ncurses/terminfo/6c/linux-vt and /dev/null differ diff --git a/ncurses/terminfo/6c/linux2.6.26 b/ncurses/terminfo/6c/linux2.6.26 deleted file mode 100644 index 48e6f8e..0000000 Binary files a/ncurses/terminfo/6c/linux2.6.26 and /dev/null differ diff --git a/ncurses/terminfo/6c/lisa b/ncurses/terminfo/6c/lisa deleted file mode 100644 index 7faa0bb..0000000 Binary files a/ncurses/terminfo/6c/lisa and /dev/null differ diff --git a/ncurses/terminfo/6c/lisaterm b/ncurses/terminfo/6c/lisaterm deleted file mode 100644 index f812d62..0000000 Binary files a/ncurses/terminfo/6c/lisaterm and /dev/null differ diff --git a/ncurses/terminfo/6c/lisaterm-w b/ncurses/terminfo/6c/lisaterm-w deleted file mode 100644 index 2914351..0000000 Binary files a/ncurses/terminfo/6c/lisaterm-w and /dev/null differ diff --git a/ncurses/terminfo/6c/liswb b/ncurses/terminfo/6c/liswb deleted file mode 100644 index 139fa7c..0000000 Binary files a/ncurses/terminfo/6c/liswb and /dev/null differ diff --git a/ncurses/terminfo/6c/ln03 b/ncurses/terminfo/6c/ln03 deleted file mode 100644 index fa1531c..0000000 Binary files a/ncurses/terminfo/6c/ln03 and /dev/null differ diff --git a/ncurses/terminfo/6c/ln03-w b/ncurses/terminfo/6c/ln03-w deleted file mode 100644 index c18b3ad..0000000 Binary files a/ncurses/terminfo/6c/ln03-w and /dev/null differ diff --git a/ncurses/terminfo/6c/lpr b/ncurses/terminfo/6c/lpr deleted file mode 100644 index 279e1e8..0000000 Binary files a/ncurses/terminfo/6c/lpr and /dev/null differ diff --git a/ncurses/terminfo/6c/luna b/ncurses/terminfo/6c/luna deleted file mode 100644 index c9a18a8..0000000 Binary files a/ncurses/terminfo/6c/luna and /dev/null differ diff --git a/ncurses/terminfo/6c/luna68k b/ncurses/terminfo/6c/luna68k deleted file mode 100644 index c9a18a8..0000000 Binary files a/ncurses/terminfo/6c/luna68k and /dev/null differ diff --git a/ncurses/terminfo/6d/m2-nam b/ncurses/terminfo/6d/m2-nam deleted file mode 100644 index 1eedf8c..0000000 Binary files a/ncurses/terminfo/6d/m2-nam and /dev/null differ diff --git a/ncurses/terminfo/6d/mac b/ncurses/terminfo/6d/mac deleted file mode 100644 index c2d5d27..0000000 Binary files a/ncurses/terminfo/6d/mac and /dev/null differ diff --git a/ncurses/terminfo/6d/mac-w b/ncurses/terminfo/6d/mac-w deleted file mode 100644 index bd89053..0000000 Binary files a/ncurses/terminfo/6d/mac-w and /dev/null differ diff --git a/ncurses/terminfo/6d/mach b/ncurses/terminfo/6d/mach deleted file mode 100644 index 94699c2..0000000 Binary files a/ncurses/terminfo/6d/mach and /dev/null differ diff --git a/ncurses/terminfo/6d/mach-bold b/ncurses/terminfo/6d/mach-bold deleted file mode 100644 index 1b72fcc..0000000 Binary files a/ncurses/terminfo/6d/mach-bold and /dev/null differ diff --git a/ncurses/terminfo/6d/mach-color b/ncurses/terminfo/6d/mach-color deleted file mode 100644 index 0e63d81..0000000 Binary files a/ncurses/terminfo/6d/mach-color and /dev/null differ diff --git a/ncurses/terminfo/6d/macintosh b/ncurses/terminfo/6d/macintosh deleted file mode 100644 index c2d5d27..0000000 Binary files a/ncurses/terminfo/6d/macintosh and /dev/null differ diff --git a/ncurses/terminfo/6d/macterminal-w b/ncurses/terminfo/6d/macterminal-w deleted file mode 100644 index bd89053..0000000 Binary files a/ncurses/terminfo/6d/macterminal-w and /dev/null differ diff --git a/ncurses/terminfo/6d/mai b/ncurses/terminfo/6d/mai deleted file mode 100644 index 5c29b8c..0000000 Binary files a/ncurses/terminfo/6d/mai and /dev/null differ diff --git a/ncurses/terminfo/6d/masscomp b/ncurses/terminfo/6d/masscomp deleted file mode 100644 index 97ef381..0000000 Binary files a/ncurses/terminfo/6d/masscomp and /dev/null differ diff --git a/ncurses/terminfo/6d/masscomp1 b/ncurses/terminfo/6d/masscomp1 deleted file mode 100644 index 5e303b9..0000000 Binary files a/ncurses/terminfo/6d/masscomp1 and /dev/null differ diff --git a/ncurses/terminfo/6d/masscomp2 b/ncurses/terminfo/6d/masscomp2 deleted file mode 100644 index 5e99cbb..0000000 Binary files a/ncurses/terminfo/6d/masscomp2 and /dev/null differ diff --git a/ncurses/terminfo/6d/mdl110 b/ncurses/terminfo/6d/mdl110 deleted file mode 100644 index 9f62ce5..0000000 Binary files a/ncurses/terminfo/6d/mdl110 and /dev/null differ diff --git a/ncurses/terminfo/6d/megatek b/ncurses/terminfo/6d/megatek deleted file mode 100644 index 9fc1564..0000000 Binary files a/ncurses/terminfo/6d/megatek and /dev/null differ diff --git a/ncurses/terminfo/6d/memhp b/ncurses/terminfo/6d/memhp deleted file mode 100644 index 6492b22..0000000 Binary files a/ncurses/terminfo/6d/memhp and /dev/null differ diff --git a/ncurses/terminfo/6d/mgr b/ncurses/terminfo/6d/mgr deleted file mode 100644 index a773cfd..0000000 Binary files a/ncurses/terminfo/6d/mgr and /dev/null differ diff --git a/ncurses/terminfo/6d/mgr-linux b/ncurses/terminfo/6d/mgr-linux deleted file mode 100644 index 1f065a2..0000000 Binary files a/ncurses/terminfo/6d/mgr-linux and /dev/null differ diff --git a/ncurses/terminfo/6d/mgr-sun b/ncurses/terminfo/6d/mgr-sun deleted file mode 100644 index a404120..0000000 Binary files a/ncurses/terminfo/6d/mgr-sun and /dev/null differ diff --git a/ncurses/terminfo/6d/mgt b/ncurses/terminfo/6d/mgt deleted file mode 100644 index 4192306..0000000 Binary files a/ncurses/terminfo/6d/mgt and /dev/null differ diff --git a/ncurses/terminfo/6d/mgterm b/ncurses/terminfo/6d/mgterm deleted file mode 100644 index c94d5f9..0000000 Binary files a/ncurses/terminfo/6d/mgterm and /dev/null differ diff --git a/ncurses/terminfo/6d/microb b/ncurses/terminfo/6d/microb deleted file mode 100644 index fb6f4de..0000000 Binary files a/ncurses/terminfo/6d/microb and /dev/null differ diff --git a/ncurses/terminfo/6d/microbee b/ncurses/terminfo/6d/microbee deleted file mode 100644 index fb6f4de..0000000 Binary files a/ncurses/terminfo/6d/microbee and /dev/null differ diff --git a/ncurses/terminfo/6d/microterm b/ncurses/terminfo/6d/microterm deleted file mode 100644 index b24bd13..0000000 Binary files a/ncurses/terminfo/6d/microterm and /dev/null differ diff --git a/ncurses/terminfo/6d/microterm5 b/ncurses/terminfo/6d/microterm5 deleted file mode 100644 index 66b296f..0000000 Binary files a/ncurses/terminfo/6d/microterm5 and /dev/null differ diff --git a/ncurses/terminfo/6d/mime b/ncurses/terminfo/6d/mime deleted file mode 100644 index 53f5ccc..0000000 Binary files a/ncurses/terminfo/6d/mime and /dev/null differ diff --git a/ncurses/terminfo/6d/mime-3ax b/ncurses/terminfo/6d/mime-3ax deleted file mode 100644 index 9421433..0000000 Binary files a/ncurses/terminfo/6d/mime-3ax and /dev/null differ diff --git a/ncurses/terminfo/6d/mime-fb b/ncurses/terminfo/6d/mime-fb deleted file mode 100644 index d314078..0000000 Binary files a/ncurses/terminfo/6d/mime-fb and /dev/null differ diff --git a/ncurses/terminfo/6d/mime-hb b/ncurses/terminfo/6d/mime-hb deleted file mode 100644 index 8f9c9f3..0000000 Binary files a/ncurses/terminfo/6d/mime-hb and /dev/null differ diff --git a/ncurses/terminfo/6d/mime1 b/ncurses/terminfo/6d/mime1 deleted file mode 100644 index 53f5ccc..0000000 Binary files a/ncurses/terminfo/6d/mime1 and /dev/null differ diff --git a/ncurses/terminfo/6d/mime2 b/ncurses/terminfo/6d/mime2 deleted file mode 100644 index 53f5ccc..0000000 Binary files a/ncurses/terminfo/6d/mime2 and /dev/null differ diff --git a/ncurses/terminfo/6d/mime2a b/ncurses/terminfo/6d/mime2a deleted file mode 100644 index b5a3e8e..0000000 Binary files a/ncurses/terminfo/6d/mime2a and /dev/null differ diff --git a/ncurses/terminfo/6d/mime2a-s b/ncurses/terminfo/6d/mime2a-s deleted file mode 100644 index 8436c2f..0000000 Binary files a/ncurses/terminfo/6d/mime2a-s and /dev/null differ diff --git a/ncurses/terminfo/6d/mime2a-v b/ncurses/terminfo/6d/mime2a-v deleted file mode 100644 index b5a3e8e..0000000 Binary files a/ncurses/terminfo/6d/mime2a-v and /dev/null differ diff --git a/ncurses/terminfo/6d/mime314 b/ncurses/terminfo/6d/mime314 deleted file mode 100644 index cc6914c..0000000 Binary files a/ncurses/terminfo/6d/mime314 and /dev/null differ diff --git a/ncurses/terminfo/6d/mime340 b/ncurses/terminfo/6d/mime340 deleted file mode 100644 index 3b7bcbb..0000000 Binary files a/ncurses/terminfo/6d/mime340 and /dev/null differ diff --git a/ncurses/terminfo/6d/mime3a b/ncurses/terminfo/6d/mime3a deleted file mode 100644 index 83cea45..0000000 Binary files a/ncurses/terminfo/6d/mime3a and /dev/null differ diff --git a/ncurses/terminfo/6d/mime3ax b/ncurses/terminfo/6d/mime3ax deleted file mode 100644 index 9421433..0000000 Binary files a/ncurses/terminfo/6d/mime3ax and /dev/null differ diff --git a/ncurses/terminfo/6d/mimei b/ncurses/terminfo/6d/mimei deleted file mode 100644 index 53f5ccc..0000000 Binary files a/ncurses/terminfo/6d/mimei and /dev/null differ diff --git a/ncurses/terminfo/6d/mimeii b/ncurses/terminfo/6d/mimeii deleted file mode 100644 index 53f5ccc..0000000 Binary files a/ncurses/terminfo/6d/mimeii and /dev/null differ diff --git a/ncurses/terminfo/6d/minitel b/ncurses/terminfo/6d/minitel deleted file mode 100644 index 1eedf8c..0000000 Binary files a/ncurses/terminfo/6d/minitel and /dev/null differ diff --git a/ncurses/terminfo/6d/minitel-2 b/ncurses/terminfo/6d/minitel-2 deleted file mode 100644 index 1eedf8c..0000000 Binary files a/ncurses/terminfo/6d/minitel-2 and /dev/null differ diff --git a/ncurses/terminfo/6d/minitel-2-nam b/ncurses/terminfo/6d/minitel-2-nam deleted file mode 100644 index 1eedf8c..0000000 Binary files a/ncurses/terminfo/6d/minitel-2-nam and /dev/null differ diff --git a/ncurses/terminfo/6d/minitel1 b/ncurses/terminfo/6d/minitel1 deleted file mode 100644 index 6be3307..0000000 Binary files a/ncurses/terminfo/6d/minitel1 and /dev/null differ diff --git a/ncurses/terminfo/6d/minitel1b b/ncurses/terminfo/6d/minitel1b deleted file mode 100644 index 6c51e87..0000000 Binary files a/ncurses/terminfo/6d/minitel1b and /dev/null differ diff --git a/ncurses/terminfo/6d/minitel1b-80 b/ncurses/terminfo/6d/minitel1b-80 deleted file mode 100644 index de4442a..0000000 Binary files a/ncurses/terminfo/6d/minitel1b-80 and /dev/null differ diff --git a/ncurses/terminfo/6d/minix b/ncurses/terminfo/6d/minix deleted file mode 100644 index 5ce0288..0000000 Binary files a/ncurses/terminfo/6d/minix and /dev/null differ diff --git a/ncurses/terminfo/6d/minix-old b/ncurses/terminfo/6d/minix-old deleted file mode 100644 index e30c4fc..0000000 Binary files a/ncurses/terminfo/6d/minix-old and /dev/null differ diff --git a/ncurses/terminfo/6d/minix-old-am b/ncurses/terminfo/6d/minix-old-am deleted file mode 100644 index ebbbf29..0000000 Binary files a/ncurses/terminfo/6d/minix-old-am and /dev/null differ diff --git a/ncurses/terminfo/6d/mlterm b/ncurses/terminfo/6d/mlterm deleted file mode 100644 index c5d781e..0000000 Binary files a/ncurses/terminfo/6d/mlterm and /dev/null differ diff --git a/ncurses/terminfo/6d/mlterm+pcfkeys b/ncurses/terminfo/6d/mlterm+pcfkeys deleted file mode 100644 index 24fe852..0000000 Binary files a/ncurses/terminfo/6d/mlterm+pcfkeys and /dev/null differ diff --git a/ncurses/terminfo/6d/mm314 b/ncurses/terminfo/6d/mm314 deleted file mode 100644 index cc6914c..0000000 Binary files a/ncurses/terminfo/6d/mm314 and /dev/null differ diff --git a/ncurses/terminfo/6d/mm340 b/ncurses/terminfo/6d/mm340 deleted file mode 100644 index 3b7bcbb..0000000 Binary files a/ncurses/terminfo/6d/mm340 and /dev/null differ diff --git a/ncurses/terminfo/6d/mod b/ncurses/terminfo/6d/mod deleted file mode 100644 index 63d4e8d..0000000 Binary files a/ncurses/terminfo/6d/mod and /dev/null differ diff --git a/ncurses/terminfo/6d/mod24 b/ncurses/terminfo/6d/mod24 deleted file mode 100644 index de47d45..0000000 Binary files a/ncurses/terminfo/6d/mod24 and /dev/null differ diff --git a/ncurses/terminfo/6d/modgraph b/ncurses/terminfo/6d/modgraph deleted file mode 100644 index de47d45..0000000 Binary files a/ncurses/terminfo/6d/modgraph and /dev/null differ diff --git a/ncurses/terminfo/6d/modgraph2 b/ncurses/terminfo/6d/modgraph2 deleted file mode 100644 index 0303eb6..0000000 Binary files a/ncurses/terminfo/6d/modgraph2 and /dev/null differ diff --git a/ncurses/terminfo/6d/modgraph48 b/ncurses/terminfo/6d/modgraph48 deleted file mode 100644 index 63d4e8d..0000000 Binary files a/ncurses/terminfo/6d/modgraph48 and /dev/null differ diff --git a/ncurses/terminfo/6d/mono-emx b/ncurses/terminfo/6d/mono-emx deleted file mode 100644 index 1f940a9..0000000 Binary files a/ncurses/terminfo/6d/mono-emx and /dev/null differ diff --git a/ncurses/terminfo/6d/morphos b/ncurses/terminfo/6d/morphos deleted file mode 100644 index 86b623a..0000000 Binary files a/ncurses/terminfo/6d/morphos and /dev/null differ diff --git a/ncurses/terminfo/6d/mouse-sun b/ncurses/terminfo/6d/mouse-sun deleted file mode 100644 index 016fced..0000000 Binary files a/ncurses/terminfo/6d/mouse-sun and /dev/null differ diff --git a/ncurses/terminfo/6d/mrxvt b/ncurses/terminfo/6d/mrxvt deleted file mode 100644 index 2282a2a..0000000 Binary files a/ncurses/terminfo/6d/mrxvt and /dev/null differ diff --git a/ncurses/terminfo/6d/ms-vt-utf8 b/ncurses/terminfo/6d/ms-vt-utf8 deleted file mode 100644 index 1116d8f..0000000 Binary files a/ncurses/terminfo/6d/ms-vt-utf8 and /dev/null differ diff --git a/ncurses/terminfo/6d/ms-vt100 b/ncurses/terminfo/6d/ms-vt100 deleted file mode 100644 index ae9b773..0000000 Binary files a/ncurses/terminfo/6d/ms-vt100 and /dev/null differ diff --git a/ncurses/terminfo/6d/ms-vt100+ b/ncurses/terminfo/6d/ms-vt100+ deleted file mode 100644 index 3a07b02..0000000 Binary files a/ncurses/terminfo/6d/ms-vt100+ and /dev/null differ diff --git a/ncurses/terminfo/6d/ms-vt100-color b/ncurses/terminfo/6d/ms-vt100-color deleted file mode 100644 index 4f71d61..0000000 Binary files a/ncurses/terminfo/6d/ms-vt100-color and /dev/null differ diff --git a/ncurses/terminfo/6d/msk227 b/ncurses/terminfo/6d/msk227 deleted file mode 100644 index c0d5706..0000000 Binary files a/ncurses/terminfo/6d/msk227 and /dev/null differ diff --git a/ncurses/terminfo/6d/msk22714 b/ncurses/terminfo/6d/msk22714 deleted file mode 100644 index 487bb61..0000000 Binary files a/ncurses/terminfo/6d/msk22714 and /dev/null differ diff --git a/ncurses/terminfo/6d/msk227am b/ncurses/terminfo/6d/msk227am deleted file mode 100644 index d7ade8c..0000000 Binary files a/ncurses/terminfo/6d/msk227am and /dev/null differ diff --git a/ncurses/terminfo/6d/mskermit227 b/ncurses/terminfo/6d/mskermit227 deleted file mode 100644 index c0d5706..0000000 Binary files a/ncurses/terminfo/6d/mskermit227 and /dev/null differ diff --git a/ncurses/terminfo/6d/mskermit22714 b/ncurses/terminfo/6d/mskermit22714 deleted file mode 100644 index 487bb61..0000000 Binary files a/ncurses/terminfo/6d/mskermit22714 and /dev/null differ diff --git a/ncurses/terminfo/6d/mskermit227am b/ncurses/terminfo/6d/mskermit227am deleted file mode 100644 index d7ade8c..0000000 Binary files a/ncurses/terminfo/6d/mskermit227am and /dev/null differ diff --git a/ncurses/terminfo/6d/mt-70 b/ncurses/terminfo/6d/mt-70 deleted file mode 100644 index ffe744e..0000000 Binary files a/ncurses/terminfo/6d/mt-70 and /dev/null differ diff --git a/ncurses/terminfo/6d/mt4520-rv b/ncurses/terminfo/6d/mt4520-rv deleted file mode 100644 index 8e9863d..0000000 Binary files a/ncurses/terminfo/6d/mt4520-rv and /dev/null differ diff --git a/ncurses/terminfo/6d/mt70 b/ncurses/terminfo/6d/mt70 deleted file mode 100644 index ffe744e..0000000 Binary files a/ncurses/terminfo/6d/mt70 and /dev/null differ diff --git a/ncurses/terminfo/6d/mterm b/ncurses/terminfo/6d/mterm deleted file mode 100644 index 016fced..0000000 Binary files a/ncurses/terminfo/6d/mterm and /dev/null differ diff --git a/ncurses/terminfo/6d/mterm-ansi b/ncurses/terminfo/6d/mterm-ansi deleted file mode 100644 index adb0a9a..0000000 Binary files a/ncurses/terminfo/6d/mterm-ansi and /dev/null differ diff --git a/ncurses/terminfo/6d/mvterm b/ncurses/terminfo/6d/mvterm deleted file mode 100644 index d912b72..0000000 Binary files a/ncurses/terminfo/6d/mvterm and /dev/null differ diff --git a/ncurses/terminfo/6e/nansi.sys b/ncurses/terminfo/6e/nansi.sys deleted file mode 100644 index f413e2e..0000000 Binary files a/ncurses/terminfo/6e/nansi.sys and /dev/null differ diff --git a/ncurses/terminfo/6e/nansi.sysk b/ncurses/terminfo/6e/nansi.sysk deleted file mode 100644 index cd8e206..0000000 Binary files a/ncurses/terminfo/6e/nansi.sysk and /dev/null differ diff --git a/ncurses/terminfo/6e/nansisys b/ncurses/terminfo/6e/nansisys deleted file mode 100644 index f413e2e..0000000 Binary files a/ncurses/terminfo/6e/nansisys and /dev/null differ diff --git a/ncurses/terminfo/6e/nansisysk b/ncurses/terminfo/6e/nansisysk deleted file mode 100644 index cd8e206..0000000 Binary files a/ncurses/terminfo/6e/nansisysk and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vppp b/ncurses/terminfo/6e/ncr160vppp deleted file mode 100644 index d0b05e3..0000000 Binary files a/ncurses/terminfo/6e/ncr160vppp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vpwpp b/ncurses/terminfo/6e/ncr160vpwpp deleted file mode 100644 index 6fe6d64..0000000 Binary files a/ncurses/terminfo/6e/ncr160vpwpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt100an b/ncurses/terminfo/6e/ncr160vt100an deleted file mode 100644 index 9bb4c1b..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt100an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt100pp b/ncurses/terminfo/6e/ncr160vt100pp deleted file mode 100644 index f2c3440..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt100pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt100wan b/ncurses/terminfo/6e/ncr160vt100wan deleted file mode 100644 index fccec27..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt100wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt100wpp b/ncurses/terminfo/6e/ncr160vt100wpp deleted file mode 100644 index 6a3a8b3..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt100wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt200an b/ncurses/terminfo/6e/ncr160vt200an deleted file mode 100644 index 8c8656b..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt200an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt200pp b/ncurses/terminfo/6e/ncr160vt200pp deleted file mode 100644 index 34a4d11..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt200pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt200wan b/ncurses/terminfo/6e/ncr160vt200wan deleted file mode 100644 index ef89d1a..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt200wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt200wpp b/ncurses/terminfo/6e/ncr160vt200wpp deleted file mode 100644 index 0b6ba8a..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt200wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt300an b/ncurses/terminfo/6e/ncr160vt300an deleted file mode 100644 index ba55f03..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt300an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt300pp b/ncurses/terminfo/6e/ncr160vt300pp deleted file mode 100644 index 0ccd319..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt300pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt300wan b/ncurses/terminfo/6e/ncr160vt300wan deleted file mode 100644 index 992140a..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt300wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160vt300wpp b/ncurses/terminfo/6e/ncr160vt300wpp deleted file mode 100644 index e89b327..0000000 Binary files a/ncurses/terminfo/6e/ncr160vt300wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160wy50+pp b/ncurses/terminfo/6e/ncr160wy50+pp deleted file mode 100644 index 08f21da..0000000 Binary files a/ncurses/terminfo/6e/ncr160wy50+pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160wy50+wpp b/ncurses/terminfo/6e/ncr160wy50+wpp deleted file mode 100644 index f256177..0000000 Binary files a/ncurses/terminfo/6e/ncr160wy50+wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160wy60pp b/ncurses/terminfo/6e/ncr160wy60pp deleted file mode 100644 index d45c619..0000000 Binary files a/ncurses/terminfo/6e/ncr160wy60pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr160wy60wpp b/ncurses/terminfo/6e/ncr160wy60wpp deleted file mode 100644 index fc5225c..0000000 Binary files a/ncurses/terminfo/6e/ncr160wy60wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260intan b/ncurses/terminfo/6e/ncr260intan deleted file mode 100644 index e1ab695..0000000 Binary files a/ncurses/terminfo/6e/ncr260intan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260intpp b/ncurses/terminfo/6e/ncr260intpp deleted file mode 100644 index 6762d28..0000000 Binary files a/ncurses/terminfo/6e/ncr260intpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260intwan b/ncurses/terminfo/6e/ncr260intwan deleted file mode 100644 index 02e0690..0000000 Binary files a/ncurses/terminfo/6e/ncr260intwan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260intwpp b/ncurses/terminfo/6e/ncr260intwpp deleted file mode 100644 index 774cbf1..0000000 Binary files a/ncurses/terminfo/6e/ncr260intwpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vppp b/ncurses/terminfo/6e/ncr260vppp deleted file mode 100644 index ab58eae..0000000 Binary files a/ncurses/terminfo/6e/ncr260vppp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vpwpp b/ncurses/terminfo/6e/ncr260vpwpp deleted file mode 100644 index c59ecdb..0000000 Binary files a/ncurses/terminfo/6e/ncr260vpwpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt100an b/ncurses/terminfo/6e/ncr260vt100an deleted file mode 100644 index 61b4da8..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt100an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt100pp b/ncurses/terminfo/6e/ncr260vt100pp deleted file mode 100644 index 1ce75f1..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt100pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt100wan b/ncurses/terminfo/6e/ncr260vt100wan deleted file mode 100644 index ba01c14..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt100wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt100wpp b/ncurses/terminfo/6e/ncr260vt100wpp deleted file mode 100644 index e32abf6..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt100wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt200an b/ncurses/terminfo/6e/ncr260vt200an deleted file mode 100644 index e216f48..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt200an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt200pp b/ncurses/terminfo/6e/ncr260vt200pp deleted file mode 100644 index 9d98ef9..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt200pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt200wan b/ncurses/terminfo/6e/ncr260vt200wan deleted file mode 100644 index 148f8fa..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt200wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt200wpp b/ncurses/terminfo/6e/ncr260vt200wpp deleted file mode 100644 index 9395706..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt200wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt300an b/ncurses/terminfo/6e/ncr260vt300an deleted file mode 100644 index a92bcd6..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt300an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt300pp b/ncurses/terminfo/6e/ncr260vt300pp deleted file mode 100644 index eba49e3..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt300pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt300wan b/ncurses/terminfo/6e/ncr260vt300wan deleted file mode 100644 index de3f5d9..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt300wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260vt300wpp b/ncurses/terminfo/6e/ncr260vt300wpp deleted file mode 100644 index c325e44..0000000 Binary files a/ncurses/terminfo/6e/ncr260vt300wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy325pp b/ncurses/terminfo/6e/ncr260wy325pp deleted file mode 100644 index fd7d48f..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy325pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy325wpp b/ncurses/terminfo/6e/ncr260wy325wpp deleted file mode 100644 index 03558c0..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy325wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy350pp b/ncurses/terminfo/6e/ncr260wy350pp deleted file mode 100644 index 101bce9..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy350pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy350wpp b/ncurses/terminfo/6e/ncr260wy350wpp deleted file mode 100644 index e96ad41..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy350wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy50+pp b/ncurses/terminfo/6e/ncr260wy50+pp deleted file mode 100644 index 9f70e67..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy50+pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy50+wpp b/ncurses/terminfo/6e/ncr260wy50+wpp deleted file mode 100644 index 17f7c8c..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy50+wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy60pp b/ncurses/terminfo/6e/ncr260wy60pp deleted file mode 100644 index db3e4dc..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy60pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr260wy60wpp b/ncurses/terminfo/6e/ncr260wy60wpp deleted file mode 100644 index b2b7fe9..0000000 Binary files a/ncurses/terminfo/6e/ncr260wy60wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr7900 b/ncurses/terminfo/6e/ncr7900 deleted file mode 100644 index a627428..0000000 Binary files a/ncurses/terminfo/6e/ncr7900 and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr7900i b/ncurses/terminfo/6e/ncr7900i deleted file mode 100644 index a627428..0000000 Binary files a/ncurses/terminfo/6e/ncr7900i and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr7900iv b/ncurses/terminfo/6e/ncr7900iv deleted file mode 100644 index 94a0803..0000000 Binary files a/ncurses/terminfo/6e/ncr7900iv and /dev/null differ diff --git a/ncurses/terminfo/6e/ncr7901 b/ncurses/terminfo/6e/ncr7901 deleted file mode 100644 index 29c9848..0000000 Binary files a/ncurses/terminfo/6e/ncr7901 and /dev/null differ diff --git a/ncurses/terminfo/6e/ncrvt100an b/ncurses/terminfo/6e/ncrvt100an deleted file mode 100644 index 0afbb81..0000000 Binary files a/ncurses/terminfo/6e/ncrvt100an and /dev/null differ diff --git a/ncurses/terminfo/6e/ncrvt100pp b/ncurses/terminfo/6e/ncrvt100pp deleted file mode 100644 index 0afbb81..0000000 Binary files a/ncurses/terminfo/6e/ncrvt100pp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncrvt100wan b/ncurses/terminfo/6e/ncrvt100wan deleted file mode 100644 index 7e0ad59..0000000 Binary files a/ncurses/terminfo/6e/ncrvt100wan and /dev/null differ diff --git a/ncurses/terminfo/6e/ncrvt100wpp b/ncurses/terminfo/6e/ncrvt100wpp deleted file mode 100644 index 7e0ad59..0000000 Binary files a/ncurses/terminfo/6e/ncrvt100wpp and /dev/null differ diff --git a/ncurses/terminfo/6e/ncsa b/ncurses/terminfo/6e/ncsa deleted file mode 100644 index 7730766..0000000 Binary files a/ncurses/terminfo/6e/ncsa and /dev/null differ diff --git a/ncurses/terminfo/6e/ncsa-m b/ncurses/terminfo/6e/ncsa-m deleted file mode 100644 index 926410e..0000000 Binary files a/ncurses/terminfo/6e/ncsa-m and /dev/null differ diff --git a/ncurses/terminfo/6e/ncsa-m-ns b/ncurses/terminfo/6e/ncsa-m-ns deleted file mode 100644 index a7383e3..0000000 Binary files a/ncurses/terminfo/6e/ncsa-m-ns and /dev/null differ diff --git a/ncurses/terminfo/6e/ncsa-ns b/ncurses/terminfo/6e/ncsa-ns deleted file mode 100644 index 5f3dd75..0000000 Binary files a/ncurses/terminfo/6e/ncsa-ns and /dev/null differ diff --git a/ncurses/terminfo/6e/ncsa-vt220 b/ncurses/terminfo/6e/ncsa-vt220 deleted file mode 100644 index 5fddd27..0000000 Binary files a/ncurses/terminfo/6e/ncsa-vt220 and /dev/null differ diff --git a/ncurses/terminfo/6e/ncsa-vt220-8 b/ncurses/terminfo/6e/ncsa-vt220-8 deleted file mode 100644 index 926410e..0000000 Binary files a/ncurses/terminfo/6e/ncsa-vt220-8 and /dev/null differ diff --git a/ncurses/terminfo/6e/nd9500 b/ncurses/terminfo/6e/nd9500 deleted file mode 100644 index 90ede89..0000000 Binary files a/ncurses/terminfo/6e/nd9500 and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500 b/ncurses/terminfo/6e/ndr9500 deleted file mode 100644 index 90ede89..0000000 Binary files a/ncurses/terminfo/6e/ndr9500 and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-25 b/ncurses/terminfo/6e/ndr9500-25 deleted file mode 100644 index e512a9b..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-25 and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-25-mc b/ncurses/terminfo/6e/ndr9500-25-mc deleted file mode 100644 index 0fafa7a..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-25-mc and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-25-mc-nl b/ncurses/terminfo/6e/ndr9500-25-mc-nl deleted file mode 100644 index 5ec01e6..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-25-mc-nl and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-25-nl b/ncurses/terminfo/6e/ndr9500-25-nl deleted file mode 100644 index e87d598..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-25-nl and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-mc b/ncurses/terminfo/6e/ndr9500-mc deleted file mode 100644 index 09f2e6a..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-mc and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-mc-nl b/ncurses/terminfo/6e/ndr9500-mc-nl deleted file mode 100644 index 94e912f..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-mc-nl and /dev/null differ diff --git a/ncurses/terminfo/6e/ndr9500-nl b/ncurses/terminfo/6e/ndr9500-nl deleted file mode 100644 index 3fa3dbc..0000000 Binary files a/ncurses/terminfo/6e/ndr9500-nl and /dev/null differ diff --git a/ncurses/terminfo/6e/nec b/ncurses/terminfo/6e/nec deleted file mode 100644 index 985b6da..0000000 Binary files a/ncurses/terminfo/6e/nec and /dev/null differ diff --git a/ncurses/terminfo/6e/nec5520 b/ncurses/terminfo/6e/nec5520 deleted file mode 100644 index 985b6da..0000000 Binary files a/ncurses/terminfo/6e/nec5520 and /dev/null differ diff --git a/ncurses/terminfo/6e/newhp b/ncurses/terminfo/6e/newhp deleted file mode 100644 index 0a83a8e..0000000 Binary files a/ncurses/terminfo/6e/newhp and /dev/null differ diff --git a/ncurses/terminfo/6e/newhpkeyboard b/ncurses/terminfo/6e/newhpkeyboard deleted file mode 100644 index fc93010..0000000 Binary files a/ncurses/terminfo/6e/newhpkeyboard and /dev/null differ diff --git a/ncurses/terminfo/6e/news b/ncurses/terminfo/6e/news deleted file mode 100644 index cf96637..0000000 Binary files a/ncurses/terminfo/6e/news and /dev/null differ diff --git a/ncurses/terminfo/6e/news-29 b/ncurses/terminfo/6e/news-29 deleted file mode 100644 index 8c53e6a..0000000 Binary files a/ncurses/terminfo/6e/news-29 and /dev/null differ diff --git a/ncurses/terminfo/6e/news-29-euc b/ncurses/terminfo/6e/news-29-euc deleted file mode 100644 index 4fbeb38..0000000 Binary files a/ncurses/terminfo/6e/news-29-euc and /dev/null differ diff --git a/ncurses/terminfo/6e/news-29-sjis b/ncurses/terminfo/6e/news-29-sjis deleted file mode 100644 index 6f5abc8..0000000 Binary files a/ncurses/terminfo/6e/news-29-sjis and /dev/null differ diff --git a/ncurses/terminfo/6e/news-33 b/ncurses/terminfo/6e/news-33 deleted file mode 100644 index e25843d..0000000 Binary files a/ncurses/terminfo/6e/news-33 and /dev/null differ diff --git a/ncurses/terminfo/6e/news-33-euc b/ncurses/terminfo/6e/news-33-euc deleted file mode 100644 index eb7094f..0000000 Binary files a/ncurses/terminfo/6e/news-33-euc and /dev/null differ diff --git a/ncurses/terminfo/6e/news-33-sjis b/ncurses/terminfo/6e/news-33-sjis deleted file mode 100644 index 39b33eb..0000000 Binary files a/ncurses/terminfo/6e/news-33-sjis and /dev/null differ diff --git a/ncurses/terminfo/6e/news-42 b/ncurses/terminfo/6e/news-42 deleted file mode 100644 index 3726364..0000000 Binary files a/ncurses/terminfo/6e/news-42 and /dev/null differ diff --git a/ncurses/terminfo/6e/news-42-euc b/ncurses/terminfo/6e/news-42-euc deleted file mode 100644 index 4b31a9a..0000000 Binary files a/ncurses/terminfo/6e/news-42-euc and /dev/null differ diff --git a/ncurses/terminfo/6e/news-42-sjis b/ncurses/terminfo/6e/news-42-sjis deleted file mode 100644 index fb839ec..0000000 Binary files a/ncurses/terminfo/6e/news-42-sjis and /dev/null differ diff --git a/ncurses/terminfo/6e/news-a b/ncurses/terminfo/6e/news-a deleted file mode 100644 index ddb8b5e..0000000 Binary files a/ncurses/terminfo/6e/news-a and /dev/null differ diff --git a/ncurses/terminfo/6e/news-o b/ncurses/terminfo/6e/news-o deleted file mode 100644 index 0c11a5f..0000000 Binary files a/ncurses/terminfo/6e/news-o and /dev/null differ diff --git a/ncurses/terminfo/6e/news-old-unk b/ncurses/terminfo/6e/news-old-unk deleted file mode 100644 index 7dbc028..0000000 Binary files a/ncurses/terminfo/6e/news-old-unk and /dev/null differ diff --git a/ncurses/terminfo/6e/news-unk b/ncurses/terminfo/6e/news-unk deleted file mode 100644 index 336f381..0000000 Binary files a/ncurses/terminfo/6e/news-unk and /dev/null differ diff --git a/ncurses/terminfo/6e/news28 b/ncurses/terminfo/6e/news28 deleted file mode 100644 index 5422515..0000000 Binary files a/ncurses/terminfo/6e/news28 and /dev/null differ diff --git a/ncurses/terminfo/6e/news28-a b/ncurses/terminfo/6e/news28-a deleted file mode 100644 index c358739..0000000 Binary files a/ncurses/terminfo/6e/news28-a and /dev/null differ diff --git a/ncurses/terminfo/6e/news29 b/ncurses/terminfo/6e/news29 deleted file mode 100644 index c358739..0000000 Binary files a/ncurses/terminfo/6e/news29 and /dev/null differ diff --git a/ncurses/terminfo/6e/news31 b/ncurses/terminfo/6e/news31 deleted file mode 100644 index 45448d6..0000000 Binary files a/ncurses/terminfo/6e/news31 and /dev/null differ diff --git a/ncurses/terminfo/6e/news31-a b/ncurses/terminfo/6e/news31-a deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/news31-a and /dev/null differ diff --git a/ncurses/terminfo/6e/news31-o b/ncurses/terminfo/6e/news31-o deleted file mode 100644 index af22312..0000000 Binary files a/ncurses/terminfo/6e/news31-o and /dev/null differ diff --git a/ncurses/terminfo/6e/news33 b/ncurses/terminfo/6e/news33 deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/news33 and /dev/null differ diff --git a/ncurses/terminfo/6e/news40 b/ncurses/terminfo/6e/news40 deleted file mode 100644 index cf96637..0000000 Binary files a/ncurses/terminfo/6e/news40 and /dev/null differ diff --git a/ncurses/terminfo/6e/news40-a b/ncurses/terminfo/6e/news40-a deleted file mode 100644 index ddb8b5e..0000000 Binary files a/ncurses/terminfo/6e/news40-a and /dev/null differ diff --git a/ncurses/terminfo/6e/news40-o b/ncurses/terminfo/6e/news40-o deleted file mode 100644 index 0c11a5f..0000000 Binary files a/ncurses/terminfo/6e/news40-o and /dev/null differ diff --git a/ncurses/terminfo/6e/news42 b/ncurses/terminfo/6e/news42 deleted file mode 100644 index ddb8b5e..0000000 Binary files a/ncurses/terminfo/6e/news42 and /dev/null differ diff --git a/ncurses/terminfo/6e/newscbm b/ncurses/terminfo/6e/newscbm deleted file mode 100644 index 45448d6..0000000 Binary files a/ncurses/terminfo/6e/newscbm and /dev/null differ diff --git a/ncurses/terminfo/6e/newscbm-a b/ncurses/terminfo/6e/newscbm-a deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/newscbm-a and /dev/null differ diff --git a/ncurses/terminfo/6e/newscbm-o b/ncurses/terminfo/6e/newscbm-o deleted file mode 100644 index af22312..0000000 Binary files a/ncurses/terminfo/6e/newscbm-o and /dev/null differ diff --git a/ncurses/terminfo/6e/newscbm33 b/ncurses/terminfo/6e/newscbm33 deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/newscbm33 and /dev/null differ diff --git a/ncurses/terminfo/6e/next b/ncurses/terminfo/6e/next deleted file mode 100644 index f48180e..0000000 Binary files a/ncurses/terminfo/6e/next and /dev/null differ diff --git a/ncurses/terminfo/6e/nextshell b/ncurses/terminfo/6e/nextshell deleted file mode 100644 index bcd16a5..0000000 Binary files a/ncurses/terminfo/6e/nextshell and /dev/null differ diff --git a/ncurses/terminfo/6e/northstar b/ncurses/terminfo/6e/northstar deleted file mode 100644 index 8040e3c..0000000 Binary files a/ncurses/terminfo/6e/northstar and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm b/ncurses/terminfo/6e/nsterm deleted file mode 100644 index 0d14f37..0000000 Binary files a/ncurses/terminfo/6e/nsterm and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm+7 b/ncurses/terminfo/6e/nsterm+7 deleted file mode 100644 index 0f56857..0000000 Binary files a/ncurses/terminfo/6e/nsterm+7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm+acs b/ncurses/terminfo/6e/nsterm+acs deleted file mode 100644 index b3056eb..0000000 Binary files a/ncurses/terminfo/6e/nsterm+acs and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm+c b/ncurses/terminfo/6e/nsterm+c deleted file mode 100644 index 6e07978..0000000 Binary files a/ncurses/terminfo/6e/nsterm+c and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm+c41 b/ncurses/terminfo/6e/nsterm+c41 deleted file mode 100644 index 2d6a629..0000000 Binary files a/ncurses/terminfo/6e/nsterm+c41 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm+mac b/ncurses/terminfo/6e/nsterm+mac deleted file mode 100644 index a7ccfe7..0000000 Binary files a/ncurses/terminfo/6e/nsterm+mac and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm+s b/ncurses/terminfo/6e/nsterm+s deleted file mode 100644 index aaa2779..0000000 Binary files a/ncurses/terminfo/6e/nsterm+s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-16color b/ncurses/terminfo/6e/nsterm-16color deleted file mode 100644 index 2adf919..0000000 Binary files a/ncurses/terminfo/6e/nsterm-16color and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-7 b/ncurses/terminfo/6e/nsterm-7 deleted file mode 100644 index ffa38e6..0000000 Binary files a/ncurses/terminfo/6e/nsterm-7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-7-c b/ncurses/terminfo/6e/nsterm-7-c deleted file mode 100644 index e068478..0000000 Binary files a/ncurses/terminfo/6e/nsterm-7-c and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-7-c-s b/ncurses/terminfo/6e/nsterm-7-c-s deleted file mode 100644 index 9a0b8bf..0000000 Binary files a/ncurses/terminfo/6e/nsterm-7-c-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-7-m b/ncurses/terminfo/6e/nsterm-7-m deleted file mode 100644 index 19bf8e1..0000000 Binary files a/ncurses/terminfo/6e/nsterm-7-m and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-7-m-s b/ncurses/terminfo/6e/nsterm-7-m-s deleted file mode 100644 index 2b3951a..0000000 Binary files a/ncurses/terminfo/6e/nsterm-7-m-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-7-s b/ncurses/terminfo/6e/nsterm-7-s deleted file mode 100644 index fbec7ca..0000000 Binary files a/ncurses/terminfo/6e/nsterm-7-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-acs b/ncurses/terminfo/6e/nsterm-acs deleted file mode 100644 index e4f5b13..0000000 Binary files a/ncurses/terminfo/6e/nsterm-acs and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-acs-c b/ncurses/terminfo/6e/nsterm-acs-c deleted file mode 100644 index 13c3653..0000000 Binary files a/ncurses/terminfo/6e/nsterm-acs-c and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-acs-c-s b/ncurses/terminfo/6e/nsterm-acs-c-s deleted file mode 100644 index 587d0e0..0000000 Binary files a/ncurses/terminfo/6e/nsterm-acs-c-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-acs-m b/ncurses/terminfo/6e/nsterm-acs-m deleted file mode 100644 index 43bd6da..0000000 Binary files a/ncurses/terminfo/6e/nsterm-acs-m and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-acs-m-s b/ncurses/terminfo/6e/nsterm-acs-m-s deleted file mode 100644 index 215b389..0000000 Binary files a/ncurses/terminfo/6e/nsterm-acs-m-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-acs-s b/ncurses/terminfo/6e/nsterm-acs-s deleted file mode 100644 index 7295287..0000000 Binary files a/ncurses/terminfo/6e/nsterm-acs-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-c b/ncurses/terminfo/6e/nsterm-c deleted file mode 100644 index 5a2f2d4..0000000 Binary files a/ncurses/terminfo/6e/nsterm-c and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-c-7 b/ncurses/terminfo/6e/nsterm-c-7 deleted file mode 100644 index e068478..0000000 Binary files a/ncurses/terminfo/6e/nsterm-c-7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-c-acs b/ncurses/terminfo/6e/nsterm-c-acs deleted file mode 100644 index 13c3653..0000000 Binary files a/ncurses/terminfo/6e/nsterm-c-acs and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-c-s b/ncurses/terminfo/6e/nsterm-c-s deleted file mode 100644 index 25c3d50..0000000 Binary files a/ncurses/terminfo/6e/nsterm-c-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-c-s-7 b/ncurses/terminfo/6e/nsterm-c-s-7 deleted file mode 100644 index 9a0b8bf..0000000 Binary files a/ncurses/terminfo/6e/nsterm-c-s-7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-c-s-acs b/ncurses/terminfo/6e/nsterm-c-s-acs deleted file mode 100644 index 587d0e0..0000000 Binary files a/ncurses/terminfo/6e/nsterm-c-s-acs and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-m b/ncurses/terminfo/6e/nsterm-m deleted file mode 100644 index 768d20c..0000000 Binary files a/ncurses/terminfo/6e/nsterm-m and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-m-7 b/ncurses/terminfo/6e/nsterm-m-7 deleted file mode 100644 index 19bf8e1..0000000 Binary files a/ncurses/terminfo/6e/nsterm-m-7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-m-acs b/ncurses/terminfo/6e/nsterm-m-acs deleted file mode 100644 index 43bd6da..0000000 Binary files a/ncurses/terminfo/6e/nsterm-m-acs and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-m-s b/ncurses/terminfo/6e/nsterm-m-s deleted file mode 100644 index 83c8f87..0000000 Binary files a/ncurses/terminfo/6e/nsterm-m-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-m-s-7 b/ncurses/terminfo/6e/nsterm-m-s-7 deleted file mode 100644 index 2b3951a..0000000 Binary files a/ncurses/terminfo/6e/nsterm-m-s-7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-m-s-acs b/ncurses/terminfo/6e/nsterm-m-s-acs deleted file mode 100644 index 215b389..0000000 Binary files a/ncurses/terminfo/6e/nsterm-m-s-acs and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-s b/ncurses/terminfo/6e/nsterm-s deleted file mode 100644 index ce82724..0000000 Binary files a/ncurses/terminfo/6e/nsterm-s and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-s-7 b/ncurses/terminfo/6e/nsterm-s-7 deleted file mode 100644 index fbec7ca..0000000 Binary files a/ncurses/terminfo/6e/nsterm-s-7 and /dev/null differ diff --git a/ncurses/terminfo/6e/nsterm-s-acs b/ncurses/terminfo/6e/nsterm-s-acs deleted file mode 100644 index 7295287..0000000 Binary files a/ncurses/terminfo/6e/nsterm-s-acs and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole b/ncurses/terminfo/6e/ntconsole deleted file mode 100644 index c3d4d6a..0000000 Binary files a/ncurses/terminfo/6e/ntconsole and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-100 b/ncurses/terminfo/6e/ntconsole-100 deleted file mode 100644 index 4fe040c..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-100 and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-100-nti b/ncurses/terminfo/6e/ntconsole-100-nti deleted file mode 100644 index c0914c5..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-100-nti and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-25 b/ncurses/terminfo/6e/ntconsole-25 deleted file mode 100644 index c3d4d6a..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-25 and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-25-nti b/ncurses/terminfo/6e/ntconsole-25-nti deleted file mode 100644 index 02d5716..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-25-nti and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-25-w b/ncurses/terminfo/6e/ntconsole-25-w deleted file mode 100644 index fca30c0..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-25-w and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-25-w-vt b/ncurses/terminfo/6e/ntconsole-25-w-vt deleted file mode 100644 index 3650955..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-25-w-vt and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-35 b/ncurses/terminfo/6e/ntconsole-35 deleted file mode 100644 index 569fc48..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-35 and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-35-nti b/ncurses/terminfo/6e/ntconsole-35-nti deleted file mode 100644 index f04d2aa..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-35-nti and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-35-w b/ncurses/terminfo/6e/ntconsole-35-w deleted file mode 100644 index 8d89e7a..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-35-w and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-50 b/ncurses/terminfo/6e/ntconsole-50 deleted file mode 100644 index 95b8915..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-50 and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-50-nti b/ncurses/terminfo/6e/ntconsole-50-nti deleted file mode 100644 index 7ba2022..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-50-nti and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-50-w b/ncurses/terminfo/6e/ntconsole-50-w deleted file mode 100644 index af0a49d..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-50-w and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-60 b/ncurses/terminfo/6e/ntconsole-60 deleted file mode 100644 index fc9f104..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-60 and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-60-nti b/ncurses/terminfo/6e/ntconsole-60-nti deleted file mode 100644 index 8199b14..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-60-nti and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-60-w b/ncurses/terminfo/6e/ntconsole-60-w deleted file mode 100644 index 2d4e5fc..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-60-w and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-w b/ncurses/terminfo/6e/ntconsole-w deleted file mode 100644 index fca30c0..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-w and /dev/null differ diff --git a/ncurses/terminfo/6e/ntconsole-w-vt b/ncurses/terminfo/6e/ntconsole-w-vt deleted file mode 100644 index 3650955..0000000 Binary files a/ncurses/terminfo/6e/ntconsole-w-vt and /dev/null differ diff --git a/ncurses/terminfo/6e/nwe501 b/ncurses/terminfo/6e/nwe501 deleted file mode 100644 index 45448d6..0000000 Binary files a/ncurses/terminfo/6e/nwe501 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwe501-a b/ncurses/terminfo/6e/nwe501-a deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/nwe501-a and /dev/null differ diff --git a/ncurses/terminfo/6e/nwe501-o b/ncurses/terminfo/6e/nwe501-o deleted file mode 100644 index af22312..0000000 Binary files a/ncurses/terminfo/6e/nwe501-o and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp-511 b/ncurses/terminfo/6e/nwp-511 deleted file mode 100644 index a949f64..0000000 Binary files a/ncurses/terminfo/6e/nwp-511 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp-517 b/ncurses/terminfo/6e/nwp-517 deleted file mode 100644 index ba129d0..0000000 Binary files a/ncurses/terminfo/6e/nwp-517 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp-517-w b/ncurses/terminfo/6e/nwp-517-w deleted file mode 100644 index 70ae0c5..0000000 Binary files a/ncurses/terminfo/6e/nwp-517-w and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp251-a b/ncurses/terminfo/6e/nwp251-a deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/nwp251-a and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp251-o b/ncurses/terminfo/6e/nwp251-o deleted file mode 100644 index af22312..0000000 Binary files a/ncurses/terminfo/6e/nwp251-o and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp511 b/ncurses/terminfo/6e/nwp511 deleted file mode 100644 index a949f64..0000000 Binary files a/ncurses/terminfo/6e/nwp511 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp512 b/ncurses/terminfo/6e/nwp512 deleted file mode 100644 index cf96637..0000000 Binary files a/ncurses/terminfo/6e/nwp512 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp512-a b/ncurses/terminfo/6e/nwp512-a deleted file mode 100644 index ddb8b5e..0000000 Binary files a/ncurses/terminfo/6e/nwp512-a and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp512-o b/ncurses/terminfo/6e/nwp512-o deleted file mode 100644 index 0c11a5f..0000000 Binary files a/ncurses/terminfo/6e/nwp512-o and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp513 b/ncurses/terminfo/6e/nwp513 deleted file mode 100644 index 45448d6..0000000 Binary files a/ncurses/terminfo/6e/nwp513 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp513-a b/ncurses/terminfo/6e/nwp513-a deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/nwp513-a and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp513-o b/ncurses/terminfo/6e/nwp513-o deleted file mode 100644 index af22312..0000000 Binary files a/ncurses/terminfo/6e/nwp513-o and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp514 b/ncurses/terminfo/6e/nwp514 deleted file mode 100644 index cf96637..0000000 Binary files a/ncurses/terminfo/6e/nwp514 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp514-a b/ncurses/terminfo/6e/nwp514-a deleted file mode 100644 index ddb8b5e..0000000 Binary files a/ncurses/terminfo/6e/nwp514-a and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp514-o b/ncurses/terminfo/6e/nwp514-o deleted file mode 100644 index 0c11a5f..0000000 Binary files a/ncurses/terminfo/6e/nwp514-o and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp517 b/ncurses/terminfo/6e/nwp517 deleted file mode 100644 index ba129d0..0000000 Binary files a/ncurses/terminfo/6e/nwp517 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp517-w b/ncurses/terminfo/6e/nwp517-w deleted file mode 100644 index 70ae0c5..0000000 Binary files a/ncurses/terminfo/6e/nwp517-w and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp518 b/ncurses/terminfo/6e/nwp518 deleted file mode 100644 index 45448d6..0000000 Binary files a/ncurses/terminfo/6e/nwp518 and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp518-a b/ncurses/terminfo/6e/nwp518-a deleted file mode 100644 index 4671bb2..0000000 Binary files a/ncurses/terminfo/6e/nwp518-a and /dev/null differ diff --git a/ncurses/terminfo/6e/nwp518-o b/ncurses/terminfo/6e/nwp518-o deleted file mode 100644 index af22312..0000000 Binary files a/ncurses/terminfo/6e/nwp518-o and /dev/null differ diff --git a/ncurses/terminfo/6e/nxterm b/ncurses/terminfo/6e/nxterm deleted file mode 100644 index 10bf2e1..0000000 Binary files a/ncurses/terminfo/6e/nxterm and /dev/null differ diff --git a/ncurses/terminfo/6f/o31 b/ncurses/terminfo/6f/o31 deleted file mode 100644 index fb6d9e6..0000000 Binary files a/ncurses/terminfo/6f/o31 and /dev/null differ diff --git a/ncurses/terminfo/6f/o4112-nd b/ncurses/terminfo/6f/o4112-nd deleted file mode 100644 index c9b5133..0000000 Binary files a/ncurses/terminfo/6f/o4112-nd and /dev/null differ diff --git a/ncurses/terminfo/6f/o85h b/ncurses/terminfo/6f/o85h deleted file mode 100644 index c499d3e..0000000 Binary files a/ncurses/terminfo/6f/o85h and /dev/null differ diff --git a/ncurses/terminfo/6f/oabm85h b/ncurses/terminfo/6f/oabm85h deleted file mode 100644 index c499d3e..0000000 Binary files a/ncurses/terminfo/6f/oabm85h and /dev/null differ diff --git a/ncurses/terminfo/6f/oblit b/ncurses/terminfo/6f/oblit deleted file mode 100644 index 6695983..0000000 Binary files a/ncurses/terminfo/6f/oblit and /dev/null differ diff --git a/ncurses/terminfo/6f/oc100 b/ncurses/terminfo/6f/oc100 deleted file mode 100644 index d388733..0000000 Binary files a/ncurses/terminfo/6f/oc100 and /dev/null differ diff --git a/ncurses/terminfo/6f/oconcept b/ncurses/terminfo/6f/oconcept deleted file mode 100644 index d388733..0000000 Binary files a/ncurses/terminfo/6f/oconcept and /dev/null differ diff --git a/ncurses/terminfo/6f/ofcons b/ncurses/terminfo/6f/ofcons deleted file mode 100644 index dabdfaa..0000000 Binary files a/ncurses/terminfo/6f/ofcons and /dev/null differ diff --git a/ncurses/terminfo/6f/ojerq b/ncurses/terminfo/6f/ojerq deleted file mode 100644 index 6695983..0000000 Binary files a/ncurses/terminfo/6f/ojerq and /dev/null differ diff --git a/ncurses/terminfo/6f/oldibmpc3 b/ncurses/terminfo/6f/oldibmpc3 deleted file mode 100644 index b3d2def..0000000 Binary files a/ncurses/terminfo/6f/oldibmpc3 and /dev/null differ diff --git a/ncurses/terminfo/6f/oldpc3 b/ncurses/terminfo/6f/oldpc3 deleted file mode 100644 index b3d2def..0000000 Binary files a/ncurses/terminfo/6f/oldpc3 and /dev/null differ diff --git a/ncurses/terminfo/6f/oldsun b/ncurses/terminfo/6f/oldsun deleted file mode 100644 index c3ee0df..0000000 Binary files a/ncurses/terminfo/6f/oldsun and /dev/null differ diff --git a/ncurses/terminfo/6f/omron b/ncurses/terminfo/6f/omron deleted file mode 100644 index 91508fe..0000000 Binary files a/ncurses/terminfo/6f/omron and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt b/ncurses/terminfo/6f/opennt deleted file mode 100644 index c3d4d6a..0000000 Binary files a/ncurses/terminfo/6f/opennt and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-100 b/ncurses/terminfo/6f/opennt-100 deleted file mode 100644 index 4fe040c..0000000 Binary files a/ncurses/terminfo/6f/opennt-100 and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-100-nti b/ncurses/terminfo/6f/opennt-100-nti deleted file mode 100644 index c0914c5..0000000 Binary files a/ncurses/terminfo/6f/opennt-100-nti and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-25 b/ncurses/terminfo/6f/opennt-25 deleted file mode 100644 index c3d4d6a..0000000 Binary files a/ncurses/terminfo/6f/opennt-25 and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-25-nti b/ncurses/terminfo/6f/opennt-25-nti deleted file mode 100644 index 02d5716..0000000 Binary files a/ncurses/terminfo/6f/opennt-25-nti and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-25-w b/ncurses/terminfo/6f/opennt-25-w deleted file mode 100644 index fca30c0..0000000 Binary files a/ncurses/terminfo/6f/opennt-25-w and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-25-w-vt b/ncurses/terminfo/6f/opennt-25-w-vt deleted file mode 100644 index 3650955..0000000 Binary files a/ncurses/terminfo/6f/opennt-25-w-vt and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-35 b/ncurses/terminfo/6f/opennt-35 deleted file mode 100644 index 569fc48..0000000 Binary files a/ncurses/terminfo/6f/opennt-35 and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-35-nti b/ncurses/terminfo/6f/opennt-35-nti deleted file mode 100644 index f04d2aa..0000000 Binary files a/ncurses/terminfo/6f/opennt-35-nti and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-35-w b/ncurses/terminfo/6f/opennt-35-w deleted file mode 100644 index 8d89e7a..0000000 Binary files a/ncurses/terminfo/6f/opennt-35-w and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-50 b/ncurses/terminfo/6f/opennt-50 deleted file mode 100644 index 95b8915..0000000 Binary files a/ncurses/terminfo/6f/opennt-50 and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-50-nti b/ncurses/terminfo/6f/opennt-50-nti deleted file mode 100644 index 7ba2022..0000000 Binary files a/ncurses/terminfo/6f/opennt-50-nti and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-50-w b/ncurses/terminfo/6f/opennt-50-w deleted file mode 100644 index af0a49d..0000000 Binary files a/ncurses/terminfo/6f/opennt-50-w and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-60 b/ncurses/terminfo/6f/opennt-60 deleted file mode 100644 index fc9f104..0000000 Binary files a/ncurses/terminfo/6f/opennt-60 and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-60-nti b/ncurses/terminfo/6f/opennt-60-nti deleted file mode 100644 index 8199b14..0000000 Binary files a/ncurses/terminfo/6f/opennt-60-nti and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-60-w b/ncurses/terminfo/6f/opennt-60-w deleted file mode 100644 index 2d4e5fc..0000000 Binary files a/ncurses/terminfo/6f/opennt-60-w and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-nti b/ncurses/terminfo/6f/opennt-nti deleted file mode 100644 index 02d5716..0000000 Binary files a/ncurses/terminfo/6f/opennt-nti and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-w b/ncurses/terminfo/6f/opennt-w deleted file mode 100644 index fca30c0..0000000 Binary files a/ncurses/terminfo/6f/opennt-w and /dev/null differ diff --git a/ncurses/terminfo/6f/opennt-w-vt b/ncurses/terminfo/6f/opennt-w-vt deleted file mode 100644 index 3650955..0000000 Binary files a/ncurses/terminfo/6f/opennt-w-vt and /dev/null differ diff --git a/ncurses/terminfo/6f/opus3n1+ b/ncurses/terminfo/6f/opus3n1+ deleted file mode 100644 index ced1dfb..0000000 Binary files a/ncurses/terminfo/6f/opus3n1+ and /dev/null differ diff --git a/ncurses/terminfo/6f/origibmpc3 b/ncurses/terminfo/6f/origibmpc3 deleted file mode 100644 index 31c7a93..0000000 Binary files a/ncurses/terminfo/6f/origibmpc3 and /dev/null differ diff --git a/ncurses/terminfo/6f/origpc3 b/ncurses/terminfo/6f/origpc3 deleted file mode 100644 index 31c7a93..0000000 Binary files a/ncurses/terminfo/6f/origpc3 and /dev/null differ diff --git a/ncurses/terminfo/6f/os9LII b/ncurses/terminfo/6f/os9LII deleted file mode 100644 index 9d523da..0000000 Binary files a/ncurses/terminfo/6f/os9LII and /dev/null differ diff --git a/ncurses/terminfo/6f/osborne b/ncurses/terminfo/6f/osborne deleted file mode 100644 index d78d708..0000000 Binary files a/ncurses/terminfo/6f/osborne and /dev/null differ diff --git a/ncurses/terminfo/6f/osborne-w b/ncurses/terminfo/6f/osborne-w deleted file mode 100644 index cece487..0000000 Binary files a/ncurses/terminfo/6f/osborne-w and /dev/null differ diff --git a/ncurses/terminfo/6f/osborne1 b/ncurses/terminfo/6f/osborne1 deleted file mode 100644 index d78d708..0000000 Binary files a/ncurses/terminfo/6f/osborne1 and /dev/null differ diff --git a/ncurses/terminfo/6f/osborne1-w b/ncurses/terminfo/6f/osborne1-w deleted file mode 100644 index cece487..0000000 Binary files a/ncurses/terminfo/6f/osborne1-w and /dev/null differ diff --git a/ncurses/terminfo/6f/osexec b/ncurses/terminfo/6f/osexec deleted file mode 100644 index 222300c..0000000 Binary files a/ncurses/terminfo/6f/osexec and /dev/null differ diff --git a/ncurses/terminfo/6f/otek4112 b/ncurses/terminfo/6f/otek4112 deleted file mode 100644 index c9b5133..0000000 Binary files a/ncurses/terminfo/6f/otek4112 and /dev/null differ diff --git a/ncurses/terminfo/6f/otek4113 b/ncurses/terminfo/6f/otek4113 deleted file mode 100644 index c9b5133..0000000 Binary files a/ncurses/terminfo/6f/otek4113 and /dev/null differ diff --git a/ncurses/terminfo/6f/otek4114 b/ncurses/terminfo/6f/otek4114 deleted file mode 100644 index c9b5133..0000000 Binary files a/ncurses/terminfo/6f/otek4114 and /dev/null differ diff --git a/ncurses/terminfo/6f/otek4115 b/ncurses/terminfo/6f/otek4115 deleted file mode 100644 index 55ffd91..0000000 Binary files a/ncurses/terminfo/6f/otek4115 and /dev/null differ diff --git a/ncurses/terminfo/6f/owl b/ncurses/terminfo/6f/owl deleted file mode 100644 index e61de48..0000000 Binary files a/ncurses/terminfo/6f/owl and /dev/null differ diff --git a/ncurses/terminfo/70/p12 b/ncurses/terminfo/70/p12 deleted file mode 100644 index 257f59a..0000000 Binary files a/ncurses/terminfo/70/p12 and /dev/null differ diff --git a/ncurses/terminfo/70/p12-m b/ncurses/terminfo/70/p12-m deleted file mode 100644 index c4dd321..0000000 Binary files a/ncurses/terminfo/70/p12-m and /dev/null differ diff --git a/ncurses/terminfo/70/p12-m-w b/ncurses/terminfo/70/p12-m-w deleted file mode 100644 index 7a52b60..0000000 Binary files a/ncurses/terminfo/70/p12-m-w and /dev/null differ diff --git a/ncurses/terminfo/70/p12-w b/ncurses/terminfo/70/p12-w deleted file mode 100644 index a81dae8..0000000 Binary files a/ncurses/terminfo/70/p12-w and /dev/null differ diff --git a/ncurses/terminfo/70/p14 b/ncurses/terminfo/70/p14 deleted file mode 100644 index 3286427..0000000 Binary files a/ncurses/terminfo/70/p14 and /dev/null differ diff --git a/ncurses/terminfo/70/p14-m b/ncurses/terminfo/70/p14-m deleted file mode 100644 index 39dd310..0000000 Binary files a/ncurses/terminfo/70/p14-m and /dev/null differ diff --git a/ncurses/terminfo/70/p14-m-w b/ncurses/terminfo/70/p14-m-w deleted file mode 100644 index 5b6475d..0000000 Binary files a/ncurses/terminfo/70/p14-m-w and /dev/null differ diff --git a/ncurses/terminfo/70/p14-w b/ncurses/terminfo/70/p14-w deleted file mode 100644 index 26e8db0..0000000 Binary files a/ncurses/terminfo/70/p14-w and /dev/null differ diff --git a/ncurses/terminfo/70/p19 b/ncurses/terminfo/70/p19 deleted file mode 100644 index 5165b66..0000000 Binary files a/ncurses/terminfo/70/p19 and /dev/null differ diff --git a/ncurses/terminfo/70/p4 b/ncurses/terminfo/70/p4 deleted file mode 100644 index 1d53e48..0000000 Binary files a/ncurses/terminfo/70/p4 and /dev/null differ diff --git a/ncurses/terminfo/70/p5 b/ncurses/terminfo/70/p5 deleted file mode 100644 index f1848d0..0000000 Binary files a/ncurses/terminfo/70/p5 and /dev/null differ diff --git a/ncurses/terminfo/70/p7 b/ncurses/terminfo/70/p7 deleted file mode 100644 index 539b4ff..0000000 Binary files a/ncurses/terminfo/70/p7 and /dev/null differ diff --git a/ncurses/terminfo/70/p8 b/ncurses/terminfo/70/p8 deleted file mode 100644 index 12fd9e6..0000000 Binary files a/ncurses/terminfo/70/p8 and /dev/null differ diff --git a/ncurses/terminfo/70/p8-w b/ncurses/terminfo/70/p8-w deleted file mode 100644 index 8f254d3..0000000 Binary files a/ncurses/terminfo/70/p8-w and /dev/null differ diff --git a/ncurses/terminfo/70/p8gl b/ncurses/terminfo/70/p8gl deleted file mode 100644 index aabd613..0000000 Binary files a/ncurses/terminfo/70/p8gl and /dev/null differ diff --git a/ncurses/terminfo/70/p9 b/ncurses/terminfo/70/p9 deleted file mode 100644 index 6e17dee..0000000 Binary files a/ncurses/terminfo/70/p9 and /dev/null differ diff --git a/ncurses/terminfo/70/p9-8 b/ncurses/terminfo/70/p9-8 deleted file mode 100644 index 8191a9b..0000000 Binary files a/ncurses/terminfo/70/p9-8 and /dev/null differ diff --git a/ncurses/terminfo/70/p9-8-w b/ncurses/terminfo/70/p9-8-w deleted file mode 100644 index 93e3da9..0000000 Binary files a/ncurses/terminfo/70/p9-8-w and /dev/null differ diff --git a/ncurses/terminfo/70/p9-w b/ncurses/terminfo/70/p9-w deleted file mode 100644 index f835090..0000000 Binary files a/ncurses/terminfo/70/p9-w and /dev/null differ diff --git a/ncurses/terminfo/70/pc-coherent b/ncurses/terminfo/70/pc-coherent deleted file mode 100644 index e6e3856..0000000 Binary files a/ncurses/terminfo/70/pc-coherent and /dev/null differ diff --git a/ncurses/terminfo/70/pc-minix b/ncurses/terminfo/70/pc-minix deleted file mode 100644 index 748e0b5..0000000 Binary files a/ncurses/terminfo/70/pc-minix and /dev/null differ diff --git a/ncurses/terminfo/70/pc-venix b/ncurses/terminfo/70/pc-venix deleted file mode 100644 index 32a7ec0..0000000 Binary files a/ncurses/terminfo/70/pc-venix and /dev/null differ diff --git a/ncurses/terminfo/70/pc3 b/ncurses/terminfo/70/pc3 deleted file mode 100644 index b1f3c67..0000000 Binary files a/ncurses/terminfo/70/pc3 and /dev/null differ diff --git a/ncurses/terminfo/70/pc3-bold b/ncurses/terminfo/70/pc3-bold deleted file mode 100644 index 79d992d..0000000 Binary files a/ncurses/terminfo/70/pc3-bold and /dev/null differ diff --git a/ncurses/terminfo/70/pc3r b/ncurses/terminfo/70/pc3r deleted file mode 100644 index 97db1c8..0000000 Binary files a/ncurses/terminfo/70/pc3r and /dev/null differ diff --git a/ncurses/terminfo/70/pc3r-m b/ncurses/terminfo/70/pc3r-m deleted file mode 100644 index fa8a54e..0000000 Binary files a/ncurses/terminfo/70/pc3r-m and /dev/null differ diff --git a/ncurses/terminfo/70/pc6300plus b/ncurses/terminfo/70/pc6300plus deleted file mode 100644 index 8e95f22..0000000 Binary files a/ncurses/terminfo/70/pc6300plus and /dev/null differ diff --git a/ncurses/terminfo/70/pc7300 b/ncurses/terminfo/70/pc7300 deleted file mode 100644 index b41843d..0000000 Binary files a/ncurses/terminfo/70/pc7300 and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi b/ncurses/terminfo/70/pcansi deleted file mode 100644 index 18af99a..0000000 Binary files a/ncurses/terminfo/70/pcansi and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-25 b/ncurses/terminfo/70/pcansi-25 deleted file mode 100644 index 6d2147b..0000000 Binary files a/ncurses/terminfo/70/pcansi-25 and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-25-m b/ncurses/terminfo/70/pcansi-25-m deleted file mode 100644 index 2a8deab..0000000 Binary files a/ncurses/terminfo/70/pcansi-25-m and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-33 b/ncurses/terminfo/70/pcansi-33 deleted file mode 100644 index 1f8b1a7..0000000 Binary files a/ncurses/terminfo/70/pcansi-33 and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-33-m b/ncurses/terminfo/70/pcansi-33-m deleted file mode 100644 index c5e29c9..0000000 Binary files a/ncurses/terminfo/70/pcansi-33-m and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-43 b/ncurses/terminfo/70/pcansi-43 deleted file mode 100644 index 0252914..0000000 Binary files a/ncurses/terminfo/70/pcansi-43 and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-43-m b/ncurses/terminfo/70/pcansi-43-m deleted file mode 100644 index a1d04b1..0000000 Binary files a/ncurses/terminfo/70/pcansi-43-m and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-m b/ncurses/terminfo/70/pcansi-m deleted file mode 100644 index a58a132..0000000 Binary files a/ncurses/terminfo/70/pcansi-m and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi-mono b/ncurses/terminfo/70/pcansi-mono deleted file mode 100644 index a58a132..0000000 Binary files a/ncurses/terminfo/70/pcansi-mono and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi25 b/ncurses/terminfo/70/pcansi25 deleted file mode 100644 index 6d2147b..0000000 Binary files a/ncurses/terminfo/70/pcansi25 and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi25m b/ncurses/terminfo/70/pcansi25m deleted file mode 100644 index 2a8deab..0000000 Binary files a/ncurses/terminfo/70/pcansi25m and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi33 b/ncurses/terminfo/70/pcansi33 deleted file mode 100644 index 1f8b1a7..0000000 Binary files a/ncurses/terminfo/70/pcansi33 and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi33m b/ncurses/terminfo/70/pcansi33m deleted file mode 100644 index c5e29c9..0000000 Binary files a/ncurses/terminfo/70/pcansi33m and /dev/null differ diff --git a/ncurses/terminfo/70/pcansi43 b/ncurses/terminfo/70/pcansi43 deleted file mode 100644 index 0252914..0000000 Binary files a/ncurses/terminfo/70/pcansi43 and /dev/null differ diff --git a/ncurses/terminfo/70/pccons b/ncurses/terminfo/70/pccons deleted file mode 100644 index 5d7c945..0000000 Binary files a/ncurses/terminfo/70/pccons and /dev/null differ diff --git a/ncurses/terminfo/70/pcconsole b/ncurses/terminfo/70/pcconsole deleted file mode 100644 index 5d7c945..0000000 Binary files a/ncurses/terminfo/70/pcconsole and /dev/null differ diff --git a/ncurses/terminfo/70/pcix b/ncurses/terminfo/70/pcix deleted file mode 100644 index fdfbe51..0000000 Binary files a/ncurses/terminfo/70/pcix and /dev/null differ diff --git a/ncurses/terminfo/70/pckermit b/ncurses/terminfo/70/pckermit deleted file mode 100644 index a00e950..0000000 Binary files a/ncurses/terminfo/70/pckermit and /dev/null differ diff --git a/ncurses/terminfo/70/pckermit12 b/ncurses/terminfo/70/pckermit12 deleted file mode 100644 index a00e950..0000000 Binary files a/ncurses/terminfo/70/pckermit12 and /dev/null differ diff --git a/ncurses/terminfo/70/pckermit120 b/ncurses/terminfo/70/pckermit120 deleted file mode 100644 index b8682c8..0000000 Binary files a/ncurses/terminfo/70/pckermit120 and /dev/null differ diff --git a/ncurses/terminfo/70/pcmw b/ncurses/terminfo/70/pcmw deleted file mode 100644 index ff8eff7..0000000 Binary files a/ncurses/terminfo/70/pcmw and /dev/null differ diff --git a/ncurses/terminfo/70/pcplot b/ncurses/terminfo/70/pcplot deleted file mode 100644 index a2a38b6..0000000 Binary files a/ncurses/terminfo/70/pcplot and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt25 b/ncurses/terminfo/70/pcvt25 deleted file mode 100644 index dfb587f..0000000 Binary files a/ncurses/terminfo/70/pcvt25 and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt25-color b/ncurses/terminfo/70/pcvt25-color deleted file mode 100644 index b1620e2..0000000 Binary files a/ncurses/terminfo/70/pcvt25-color and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt25w b/ncurses/terminfo/70/pcvt25w deleted file mode 100644 index cc486b3..0000000 Binary files a/ncurses/terminfo/70/pcvt25w and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt28 b/ncurses/terminfo/70/pcvt28 deleted file mode 100644 index 714fef8..0000000 Binary files a/ncurses/terminfo/70/pcvt28 and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt28w b/ncurses/terminfo/70/pcvt28w deleted file mode 100644 index c272cf4..0000000 Binary files a/ncurses/terminfo/70/pcvt28w and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt35 b/ncurses/terminfo/70/pcvt35 deleted file mode 100644 index 96c5f8f..0000000 Binary files a/ncurses/terminfo/70/pcvt35 and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt35w b/ncurses/terminfo/70/pcvt35w deleted file mode 100644 index 465107c..0000000 Binary files a/ncurses/terminfo/70/pcvt35w and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt40 b/ncurses/terminfo/70/pcvt40 deleted file mode 100644 index b19351a..0000000 Binary files a/ncurses/terminfo/70/pcvt40 and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt40w b/ncurses/terminfo/70/pcvt40w deleted file mode 100644 index fe0da0a..0000000 Binary files a/ncurses/terminfo/70/pcvt40w and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt43 b/ncurses/terminfo/70/pcvt43 deleted file mode 100644 index c8091ad..0000000 Binary files a/ncurses/terminfo/70/pcvt43 and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt43w b/ncurses/terminfo/70/pcvt43w deleted file mode 100644 index ed4caf9..0000000 Binary files a/ncurses/terminfo/70/pcvt43w and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt50 b/ncurses/terminfo/70/pcvt50 deleted file mode 100644 index 123d747..0000000 Binary files a/ncurses/terminfo/70/pcvt50 and /dev/null differ diff --git a/ncurses/terminfo/70/pcvt50w b/ncurses/terminfo/70/pcvt50w deleted file mode 100644 index b95f692..0000000 Binary files a/ncurses/terminfo/70/pcvt50w and /dev/null differ diff --git a/ncurses/terminfo/70/pcvtXX b/ncurses/terminfo/70/pcvtXX deleted file mode 100644 index 254356c..0000000 Binary files a/ncurses/terminfo/70/pcvtXX and /dev/null differ diff --git a/ncurses/terminfo/70/pcz19 b/ncurses/terminfo/70/pcz19 deleted file mode 100644 index e6e3856..0000000 Binary files a/ncurses/terminfo/70/pcz19 and /dev/null differ diff --git a/ncurses/terminfo/70/pe1100 b/ncurses/terminfo/70/pe1100 deleted file mode 100644 index dfed72c..0000000 Binary files a/ncurses/terminfo/70/pe1100 and /dev/null differ diff --git a/ncurses/terminfo/70/pe1200 b/ncurses/terminfo/70/pe1200 deleted file mode 100644 index e61de48..0000000 Binary files a/ncurses/terminfo/70/pe1200 and /dev/null differ diff --git a/ncurses/terminfo/70/pe1251 b/ncurses/terminfo/70/pe1251 deleted file mode 100644 index 2210500..0000000 Binary files a/ncurses/terminfo/70/pe1251 and /dev/null differ diff --git a/ncurses/terminfo/70/pe550 b/ncurses/terminfo/70/pe550 deleted file mode 100644 index 30ec005..0000000 Binary files a/ncurses/terminfo/70/pe550 and /dev/null differ diff --git a/ncurses/terminfo/70/pe6100 b/ncurses/terminfo/70/pe6100 deleted file mode 100644 index 30ec005..0000000 Binary files a/ncurses/terminfo/70/pe6100 and /dev/null differ diff --git a/ncurses/terminfo/70/pe6300 b/ncurses/terminfo/70/pe6300 deleted file mode 100644 index 2210500..0000000 Binary files a/ncurses/terminfo/70/pe6300 and /dev/null differ diff --git a/ncurses/terminfo/70/pe6312 b/ncurses/terminfo/70/pe6312 deleted file mode 100644 index 2210500..0000000 Binary files a/ncurses/terminfo/70/pe6312 and /dev/null differ diff --git a/ncurses/terminfo/70/pe7000c b/ncurses/terminfo/70/pe7000c deleted file mode 100644 index db2fcde..0000000 Binary files a/ncurses/terminfo/70/pe7000c and /dev/null differ diff --git a/ncurses/terminfo/70/pe7000m b/ncurses/terminfo/70/pe7000m deleted file mode 100644 index 00c5837..0000000 Binary files a/ncurses/terminfo/70/pe7000m and /dev/null differ diff --git a/ncurses/terminfo/70/pilot b/ncurses/terminfo/70/pilot deleted file mode 100644 index 8614833..0000000 Binary files a/ncurses/terminfo/70/pilot and /dev/null differ diff --git a/ncurses/terminfo/70/pmcons b/ncurses/terminfo/70/pmcons deleted file mode 100644 index 5a5b783..0000000 Binary files a/ncurses/terminfo/70/pmcons and /dev/null differ diff --git a/ncurses/terminfo/70/pmconsole b/ncurses/terminfo/70/pmconsole deleted file mode 100644 index 5a5b783..0000000 Binary files a/ncurses/terminfo/70/pmconsole and /dev/null differ diff --git a/ncurses/terminfo/70/printer b/ncurses/terminfo/70/printer deleted file mode 100644 index 279e1e8..0000000 Binary files a/ncurses/terminfo/70/printer and /dev/null differ diff --git a/ncurses/terminfo/70/prism12 b/ncurses/terminfo/70/prism12 deleted file mode 100644 index 257f59a..0000000 Binary files a/ncurses/terminfo/70/prism12 and /dev/null differ diff --git a/ncurses/terminfo/70/prism12-m b/ncurses/terminfo/70/prism12-m deleted file mode 100644 index c4dd321..0000000 Binary files a/ncurses/terminfo/70/prism12-m and /dev/null differ diff --git a/ncurses/terminfo/70/prism12-m-w b/ncurses/terminfo/70/prism12-m-w deleted file mode 100644 index 7a52b60..0000000 Binary files a/ncurses/terminfo/70/prism12-m-w and /dev/null differ diff --git a/ncurses/terminfo/70/prism12-w b/ncurses/terminfo/70/prism12-w deleted file mode 100644 index a81dae8..0000000 Binary files a/ncurses/terminfo/70/prism12-w and /dev/null differ diff --git a/ncurses/terminfo/70/prism14 b/ncurses/terminfo/70/prism14 deleted file mode 100644 index 3286427..0000000 Binary files a/ncurses/terminfo/70/prism14 and /dev/null differ diff --git a/ncurses/terminfo/70/prism14-m b/ncurses/terminfo/70/prism14-m deleted file mode 100644 index 39dd310..0000000 Binary files a/ncurses/terminfo/70/prism14-m and /dev/null differ diff --git a/ncurses/terminfo/70/prism14-m-w b/ncurses/terminfo/70/prism14-m-w deleted file mode 100644 index 5b6475d..0000000 Binary files a/ncurses/terminfo/70/prism14-m-w and /dev/null differ diff --git a/ncurses/terminfo/70/prism14-w b/ncurses/terminfo/70/prism14-w deleted file mode 100644 index 26e8db0..0000000 Binary files a/ncurses/terminfo/70/prism14-w and /dev/null differ diff --git a/ncurses/terminfo/70/prism2 b/ncurses/terminfo/70/prism2 deleted file mode 100644 index b06737a..0000000 Binary files a/ncurses/terminfo/70/prism2 and /dev/null differ diff --git a/ncurses/terminfo/70/prism4 b/ncurses/terminfo/70/prism4 deleted file mode 100644 index 1d53e48..0000000 Binary files a/ncurses/terminfo/70/prism4 and /dev/null differ diff --git a/ncurses/terminfo/70/prism5 b/ncurses/terminfo/70/prism5 deleted file mode 100644 index f1848d0..0000000 Binary files a/ncurses/terminfo/70/prism5 and /dev/null differ diff --git a/ncurses/terminfo/70/prism7 b/ncurses/terminfo/70/prism7 deleted file mode 100644 index 539b4ff..0000000 Binary files a/ncurses/terminfo/70/prism7 and /dev/null differ diff --git a/ncurses/terminfo/70/prism8 b/ncurses/terminfo/70/prism8 deleted file mode 100644 index 12fd9e6..0000000 Binary files a/ncurses/terminfo/70/prism8 and /dev/null differ diff --git a/ncurses/terminfo/70/prism8-w b/ncurses/terminfo/70/prism8-w deleted file mode 100644 index 8f254d3..0000000 Binary files a/ncurses/terminfo/70/prism8-w and /dev/null differ diff --git a/ncurses/terminfo/70/prism8gl b/ncurses/terminfo/70/prism8gl deleted file mode 100644 index aabd613..0000000 Binary files a/ncurses/terminfo/70/prism8gl and /dev/null differ diff --git a/ncurses/terminfo/70/prism9 b/ncurses/terminfo/70/prism9 deleted file mode 100644 index 6e17dee..0000000 Binary files a/ncurses/terminfo/70/prism9 and /dev/null differ diff --git a/ncurses/terminfo/70/prism9-8 b/ncurses/terminfo/70/prism9-8 deleted file mode 100644 index 8191a9b..0000000 Binary files a/ncurses/terminfo/70/prism9-8 and /dev/null differ diff --git a/ncurses/terminfo/70/prism9-8-w b/ncurses/terminfo/70/prism9-8-w deleted file mode 100644 index 93e3da9..0000000 Binary files a/ncurses/terminfo/70/prism9-8-w and /dev/null differ diff --git a/ncurses/terminfo/70/prism9-w b/ncurses/terminfo/70/prism9-w deleted file mode 100644 index f835090..0000000 Binary files a/ncurses/terminfo/70/prism9-w and /dev/null differ diff --git a/ncurses/terminfo/70/pro350 b/ncurses/terminfo/70/pro350 deleted file mode 100644 index 0e65713..0000000 Binary files a/ncurses/terminfo/70/pro350 and /dev/null differ diff --git a/ncurses/terminfo/70/ps300 b/ncurses/terminfo/70/ps300 deleted file mode 100644 index c673ca2..0000000 Binary files a/ncurses/terminfo/70/ps300 and /dev/null differ diff --git a/ncurses/terminfo/70/psterm b/ncurses/terminfo/70/psterm deleted file mode 100644 index d7ec53e..0000000 Binary files a/ncurses/terminfo/70/psterm and /dev/null differ diff --git a/ncurses/terminfo/70/psterm-80x24 b/ncurses/terminfo/70/psterm-80x24 deleted file mode 100644 index 786fe23..0000000 Binary files a/ncurses/terminfo/70/psterm-80x24 and /dev/null differ diff --git a/ncurses/terminfo/70/psterm-90x28 b/ncurses/terminfo/70/psterm-90x28 deleted file mode 100644 index 6557b37..0000000 Binary files a/ncurses/terminfo/70/psterm-90x28 and /dev/null differ diff --git a/ncurses/terminfo/70/psterm-96x48 b/ncurses/terminfo/70/psterm-96x48 deleted file mode 100644 index a4ab888..0000000 Binary files a/ncurses/terminfo/70/psterm-96x48 and /dev/null differ diff --git a/ncurses/terminfo/70/psterm-basic b/ncurses/terminfo/70/psterm-basic deleted file mode 100644 index d7ec53e..0000000 Binary files a/ncurses/terminfo/70/psterm-basic and /dev/null differ diff --git a/ncurses/terminfo/70/psterm-fast b/ncurses/terminfo/70/psterm-fast deleted file mode 100644 index 48d3c87..0000000 Binary files a/ncurses/terminfo/70/psterm-fast and /dev/null differ diff --git a/ncurses/terminfo/70/psx_ansi b/ncurses/terminfo/70/psx_ansi deleted file mode 100644 index b6bc8b8..0000000 Binary files a/ncurses/terminfo/70/psx_ansi and /dev/null differ diff --git a/ncurses/terminfo/70/pt100 b/ncurses/terminfo/70/pt100 deleted file mode 100644 index 7965ed8..0000000 Binary files a/ncurses/terminfo/70/pt100 and /dev/null differ diff --git a/ncurses/terminfo/70/pt100w b/ncurses/terminfo/70/pt100w deleted file mode 100644 index 531bc42..0000000 Binary files a/ncurses/terminfo/70/pt100w and /dev/null differ diff --git a/ncurses/terminfo/70/pt200 b/ncurses/terminfo/70/pt200 deleted file mode 100644 index 7965ed8..0000000 Binary files a/ncurses/terminfo/70/pt200 and /dev/null differ diff --git a/ncurses/terminfo/70/pt200w b/ncurses/terminfo/70/pt200w deleted file mode 100644 index 531bc42..0000000 Binary files a/ncurses/terminfo/70/pt200w and /dev/null differ diff --git a/ncurses/terminfo/70/pt210 b/ncurses/terminfo/70/pt210 deleted file mode 100644 index 21417c3..0000000 Binary files a/ncurses/terminfo/70/pt210 and /dev/null differ diff --git a/ncurses/terminfo/70/pt250 b/ncurses/terminfo/70/pt250 deleted file mode 100644 index 01b1660..0000000 Binary files a/ncurses/terminfo/70/pt250 and /dev/null differ diff --git a/ncurses/terminfo/70/pt250w b/ncurses/terminfo/70/pt250w deleted file mode 100644 index 46e5e17..0000000 Binary files a/ncurses/terminfo/70/pt250w and /dev/null differ diff --git a/ncurses/terminfo/70/pt505 b/ncurses/terminfo/70/pt505 deleted file mode 100644 index 92dffac..0000000 Binary files a/ncurses/terminfo/70/pt505 and /dev/null differ diff --git a/ncurses/terminfo/70/pt505-22 b/ncurses/terminfo/70/pt505-22 deleted file mode 100644 index e452c35..0000000 Binary files a/ncurses/terminfo/70/pt505-22 and /dev/null differ diff --git a/ncurses/terminfo/70/pt505-24 b/ncurses/terminfo/70/pt505-24 deleted file mode 100644 index bcccaaa..0000000 Binary files a/ncurses/terminfo/70/pt505-24 and /dev/null differ diff --git a/ncurses/terminfo/70/pty b/ncurses/terminfo/70/pty deleted file mode 100644 index deb1bf7..0000000 Binary files a/ncurses/terminfo/70/pty and /dev/null differ diff --git a/ncurses/terminfo/70/putty b/ncurses/terminfo/70/putty deleted file mode 100644 index b612388..0000000 Binary files a/ncurses/terminfo/70/putty and /dev/null differ diff --git a/ncurses/terminfo/70/putty-256color b/ncurses/terminfo/70/putty-256color deleted file mode 100644 index 377be35..0000000 Binary files a/ncurses/terminfo/70/putty-256color and /dev/null differ diff --git a/ncurses/terminfo/70/putty-vt100 b/ncurses/terminfo/70/putty-vt100 deleted file mode 100644 index af6189e..0000000 Binary files a/ncurses/terminfo/70/putty-vt100 and /dev/null differ diff --git a/ncurses/terminfo/71/qansi b/ncurses/terminfo/71/qansi deleted file mode 100644 index 06ddabe..0000000 Binary files a/ncurses/terminfo/71/qansi and /dev/null differ diff --git a/ncurses/terminfo/71/qansi-g b/ncurses/terminfo/71/qansi-g deleted file mode 100644 index 10aa948..0000000 Binary files a/ncurses/terminfo/71/qansi-g and /dev/null differ diff --git a/ncurses/terminfo/71/qansi-m b/ncurses/terminfo/71/qansi-m deleted file mode 100644 index 3a3c41c..0000000 Binary files a/ncurses/terminfo/71/qansi-m and /dev/null differ diff --git a/ncurses/terminfo/71/qansi-t b/ncurses/terminfo/71/qansi-t deleted file mode 100644 index d8d7d56..0000000 Binary files a/ncurses/terminfo/71/qansi-t and /dev/null differ diff --git a/ncurses/terminfo/71/qansi-w b/ncurses/terminfo/71/qansi-w deleted file mode 100644 index ff5ea18..0000000 Binary files a/ncurses/terminfo/71/qansi-w and /dev/null differ diff --git a/ncurses/terminfo/71/qdcons b/ncurses/terminfo/71/qdcons deleted file mode 100644 index 956ea30..0000000 Binary files a/ncurses/terminfo/71/qdcons and /dev/null differ diff --git a/ncurses/terminfo/71/qdss b/ncurses/terminfo/71/qdss deleted file mode 100644 index 956ea30..0000000 Binary files a/ncurses/terminfo/71/qdss and /dev/null differ diff --git a/ncurses/terminfo/71/qnx b/ncurses/terminfo/71/qnx deleted file mode 100644 index d14b395..0000000 Binary files a/ncurses/terminfo/71/qnx and /dev/null differ diff --git a/ncurses/terminfo/71/qnx4 b/ncurses/terminfo/71/qnx4 deleted file mode 100644 index d14b395..0000000 Binary files a/ncurses/terminfo/71/qnx4 and /dev/null differ diff --git a/ncurses/terminfo/71/qnxm b/ncurses/terminfo/71/qnxm deleted file mode 100644 index 9580f0d..0000000 Binary files a/ncurses/terminfo/71/qnxm and /dev/null differ diff --git a/ncurses/terminfo/71/qnxt b/ncurses/terminfo/71/qnxt deleted file mode 100644 index b23d7a8..0000000 Binary files a/ncurses/terminfo/71/qnxt and /dev/null differ diff --git a/ncurses/terminfo/71/qnxt2 b/ncurses/terminfo/71/qnxt2 deleted file mode 100644 index dd7af8e..0000000 Binary files a/ncurses/terminfo/71/qnxt2 and /dev/null differ diff --git a/ncurses/terminfo/71/qnxt4 b/ncurses/terminfo/71/qnxt4 deleted file mode 100644 index b23d7a8..0000000 Binary files a/ncurses/terminfo/71/qnxt4 and /dev/null differ diff --git a/ncurses/terminfo/71/qnxtmono b/ncurses/terminfo/71/qnxtmono deleted file mode 100644 index 5701461..0000000 Binary files a/ncurses/terminfo/71/qnxtmono and /dev/null differ diff --git a/ncurses/terminfo/71/qnxw b/ncurses/terminfo/71/qnxw deleted file mode 100644 index 8c9498a..0000000 Binary files a/ncurses/terminfo/71/qnxw and /dev/null differ diff --git a/ncurses/terminfo/71/qume b/ncurses/terminfo/71/qume deleted file mode 100644 index 16cbc56..0000000 Binary files a/ncurses/terminfo/71/qume and /dev/null differ diff --git a/ncurses/terminfo/71/qume5 b/ncurses/terminfo/71/qume5 deleted file mode 100644 index 16cbc56..0000000 Binary files a/ncurses/terminfo/71/qume5 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt101 b/ncurses/terminfo/71/qvt101 deleted file mode 100644 index ff45df5..0000000 Binary files a/ncurses/terminfo/71/qvt101 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt101+ b/ncurses/terminfo/71/qvt101+ deleted file mode 100644 index 19fe04e..0000000 Binary files a/ncurses/terminfo/71/qvt101+ and /dev/null differ diff --git a/ncurses/terminfo/71/qvt101p b/ncurses/terminfo/71/qvt101p deleted file mode 100644 index 19fe04e..0000000 Binary files a/ncurses/terminfo/71/qvt101p and /dev/null differ diff --git a/ncurses/terminfo/71/qvt102 b/ncurses/terminfo/71/qvt102 deleted file mode 100644 index 0973ef0..0000000 Binary files a/ncurses/terminfo/71/qvt102 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt103 b/ncurses/terminfo/71/qvt103 deleted file mode 100644 index f4611f4..0000000 Binary files a/ncurses/terminfo/71/qvt103 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt103-w b/ncurses/terminfo/71/qvt103-w deleted file mode 100644 index 9b97e24..0000000 Binary files a/ncurses/terminfo/71/qvt103-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt108 b/ncurses/terminfo/71/qvt108 deleted file mode 100644 index ff45df5..0000000 Binary files a/ncurses/terminfo/71/qvt108 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119 b/ncurses/terminfo/71/qvt119 deleted file mode 100644 index cd62820..0000000 Binary files a/ncurses/terminfo/71/qvt119 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119+ b/ncurses/terminfo/71/qvt119+ deleted file mode 100644 index cd62820..0000000 Binary files a/ncurses/terminfo/71/qvt119+ and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119+-25 b/ncurses/terminfo/71/qvt119+-25 deleted file mode 100644 index 7635a5a..0000000 Binary files a/ncurses/terminfo/71/qvt119+-25 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119+-25-w b/ncurses/terminfo/71/qvt119+-25-w deleted file mode 100644 index 0149dc3..0000000 Binary files a/ncurses/terminfo/71/qvt119+-25-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119+-w b/ncurses/terminfo/71/qvt119+-w deleted file mode 100644 index ad44936..0000000 Binary files a/ncurses/terminfo/71/qvt119+-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119-25-w b/ncurses/terminfo/71/qvt119-25-w deleted file mode 100644 index 0149dc3..0000000 Binary files a/ncurses/terminfo/71/qvt119-25-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119-w b/ncurses/terminfo/71/qvt119-w deleted file mode 100644 index ad44936..0000000 Binary files a/ncurses/terminfo/71/qvt119-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119p b/ncurses/terminfo/71/qvt119p deleted file mode 100644 index cd62820..0000000 Binary files a/ncurses/terminfo/71/qvt119p and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119p-25 b/ncurses/terminfo/71/qvt119p-25 deleted file mode 100644 index 7635a5a..0000000 Binary files a/ncurses/terminfo/71/qvt119p-25 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119p-25-w b/ncurses/terminfo/71/qvt119p-25-w deleted file mode 100644 index 0149dc3..0000000 Binary files a/ncurses/terminfo/71/qvt119p-25-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt119p-w b/ncurses/terminfo/71/qvt119p-w deleted file mode 100644 index ad44936..0000000 Binary files a/ncurses/terminfo/71/qvt119p-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt203 b/ncurses/terminfo/71/qvt203 deleted file mode 100644 index 3800b26..0000000 Binary files a/ncurses/terminfo/71/qvt203 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt203+ b/ncurses/terminfo/71/qvt203+ deleted file mode 100644 index 3800b26..0000000 Binary files a/ncurses/terminfo/71/qvt203+ and /dev/null differ diff --git a/ncurses/terminfo/71/qvt203-25 b/ncurses/terminfo/71/qvt203-25 deleted file mode 100644 index c41b9b4..0000000 Binary files a/ncurses/terminfo/71/qvt203-25 and /dev/null differ diff --git a/ncurses/terminfo/71/qvt203-25-w b/ncurses/terminfo/71/qvt203-25-w deleted file mode 100644 index 6db30c0..0000000 Binary files a/ncurses/terminfo/71/qvt203-25-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt203-w b/ncurses/terminfo/71/qvt203-w deleted file mode 100644 index e768ebf..0000000 Binary files a/ncurses/terminfo/71/qvt203-w and /dev/null differ diff --git a/ncurses/terminfo/71/qvt203-w-am b/ncurses/terminfo/71/qvt203-w-am deleted file mode 100644 index e768ebf..0000000 Binary files a/ncurses/terminfo/71/qvt203-w-am and /dev/null differ diff --git a/ncurses/terminfo/72/rbcomm b/ncurses/terminfo/72/rbcomm deleted file mode 100644 index 2f5cd29..0000000 Binary files a/ncurses/terminfo/72/rbcomm and /dev/null differ diff --git a/ncurses/terminfo/72/rbcomm-nam b/ncurses/terminfo/72/rbcomm-nam deleted file mode 100644 index 8cc0f9b..0000000 Binary files a/ncurses/terminfo/72/rbcomm-nam and /dev/null differ diff --git a/ncurses/terminfo/72/rbcomm-w b/ncurses/terminfo/72/rbcomm-w deleted file mode 100644 index 16f94b0..0000000 Binary files a/ncurses/terminfo/72/rbcomm-w and /dev/null differ diff --git a/ncurses/terminfo/72/rca b/ncurses/terminfo/72/rca deleted file mode 100644 index 7920b68..0000000 Binary files a/ncurses/terminfo/72/rca and /dev/null differ diff --git a/ncurses/terminfo/72/rcons b/ncurses/terminfo/72/rcons deleted file mode 100644 index e750d57..0000000 Binary files a/ncurses/terminfo/72/rcons and /dev/null differ diff --git a/ncurses/terminfo/72/rcons-color b/ncurses/terminfo/72/rcons-color deleted file mode 100644 index 32e4d59..0000000 Binary files a/ncurses/terminfo/72/rcons-color and /dev/null differ diff --git a/ncurses/terminfo/72/rebus3180 b/ncurses/terminfo/72/rebus3180 deleted file mode 100644 index 4ea5b10..0000000 Binary files a/ncurses/terminfo/72/rebus3180 and /dev/null differ diff --git a/ncurses/terminfo/72/regent b/ncurses/terminfo/72/regent deleted file mode 100644 index 978ce6b..0000000 Binary files a/ncurses/terminfo/72/regent and /dev/null differ diff --git a/ncurses/terminfo/72/regent100 b/ncurses/terminfo/72/regent100 deleted file mode 100644 index 2500f11..0000000 Binary files a/ncurses/terminfo/72/regent100 and /dev/null differ diff --git a/ncurses/terminfo/72/regent20 b/ncurses/terminfo/72/regent20 deleted file mode 100644 index e8fadf4..0000000 Binary files a/ncurses/terminfo/72/regent20 and /dev/null differ diff --git a/ncurses/terminfo/72/regent200 b/ncurses/terminfo/72/regent200 deleted file mode 100644 index 0d3cb47..0000000 Binary files a/ncurses/terminfo/72/regent200 and /dev/null differ diff --git a/ncurses/terminfo/72/regent25 b/ncurses/terminfo/72/regent25 deleted file mode 100644 index 2f351e4..0000000 Binary files a/ncurses/terminfo/72/regent25 and /dev/null differ diff --git a/ncurses/terminfo/72/regent40 b/ncurses/terminfo/72/regent40 deleted file mode 100644 index 76ec632..0000000 Binary files a/ncurses/terminfo/72/regent40 and /dev/null differ diff --git a/ncurses/terminfo/72/regent40+ b/ncurses/terminfo/72/regent40+ deleted file mode 100644 index 4be7ba4..0000000 Binary files a/ncurses/terminfo/72/regent40+ and /dev/null differ diff --git a/ncurses/terminfo/72/regent60 b/ncurses/terminfo/72/regent60 deleted file mode 100644 index 0d3cb47..0000000 Binary files a/ncurses/terminfo/72/regent60 and /dev/null differ diff --git a/ncurses/terminfo/72/rt6221 b/ncurses/terminfo/72/rt6221 deleted file mode 100644 index 878d549..0000000 Binary files a/ncurses/terminfo/72/rt6221 and /dev/null differ diff --git a/ncurses/terminfo/72/rt6221-w b/ncurses/terminfo/72/rt6221-w deleted file mode 100644 index 8afc1c5..0000000 Binary files a/ncurses/terminfo/72/rt6221-w and /dev/null differ diff --git a/ncurses/terminfo/72/rtpc b/ncurses/terminfo/72/rtpc deleted file mode 100644 index 46bd1af..0000000 Binary files a/ncurses/terminfo/72/rtpc and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt b/ncurses/terminfo/72/rxvt deleted file mode 100644 index bb101cf..0000000 Binary files a/ncurses/terminfo/72/rxvt and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt+pcfkeys b/ncurses/terminfo/72/rxvt+pcfkeys deleted file mode 100644 index 37e7fc1..0000000 Binary files a/ncurses/terminfo/72/rxvt+pcfkeys and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-16color b/ncurses/terminfo/72/rxvt-16color deleted file mode 100644 index 47e3054..0000000 Binary files a/ncurses/terminfo/72/rxvt-16color and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-256color b/ncurses/terminfo/72/rxvt-256color deleted file mode 100644 index 1a7ef78..0000000 Binary files a/ncurses/terminfo/72/rxvt-256color and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-88color b/ncurses/terminfo/72/rxvt-88color deleted file mode 100644 index 8076926..0000000 Binary files a/ncurses/terminfo/72/rxvt-88color and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-basic b/ncurses/terminfo/72/rxvt-basic deleted file mode 100644 index 80623ab..0000000 Binary files a/ncurses/terminfo/72/rxvt-basic and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-color b/ncurses/terminfo/72/rxvt-color deleted file mode 100644 index 1551e45..0000000 Binary files a/ncurses/terminfo/72/rxvt-color and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-cygwin b/ncurses/terminfo/72/rxvt-cygwin deleted file mode 100644 index 4824650..0000000 Binary files a/ncurses/terminfo/72/rxvt-cygwin and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-cygwin-native b/ncurses/terminfo/72/rxvt-cygwin-native deleted file mode 100644 index b6e329c..0000000 Binary files a/ncurses/terminfo/72/rxvt-cygwin-native and /dev/null differ diff --git a/ncurses/terminfo/72/rxvt-xpm b/ncurses/terminfo/72/rxvt-xpm deleted file mode 100644 index 8a2678d..0000000 Binary files a/ncurses/terminfo/72/rxvt-xpm and /dev/null differ diff --git a/ncurses/terminfo/73/s4 b/ncurses/terminfo/73/s4 deleted file mode 100644 index b41843d..0000000 Binary files a/ncurses/terminfo/73/s4 and /dev/null differ diff --git a/ncurses/terminfo/73/sb1 b/ncurses/terminfo/73/sb1 deleted file mode 100644 index b757da8..0000000 Binary files a/ncurses/terminfo/73/sb1 and /dev/null differ diff --git a/ncurses/terminfo/73/sb2 b/ncurses/terminfo/73/sb2 deleted file mode 100644 index 3a17086..0000000 Binary files a/ncurses/terminfo/73/sb2 and /dev/null differ diff --git a/ncurses/terminfo/73/sb3 b/ncurses/terminfo/73/sb3 deleted file mode 100644 index 3a17086..0000000 Binary files a/ncurses/terminfo/73/sb3 and /dev/null differ diff --git a/ncurses/terminfo/73/sbi b/ncurses/terminfo/73/sbi deleted file mode 100644 index 34ff2f5..0000000 Binary files a/ncurses/terminfo/73/sbi and /dev/null differ diff --git a/ncurses/terminfo/73/sbobcat b/ncurses/terminfo/73/sbobcat deleted file mode 100644 index a0ed4ab..0000000 Binary files a/ncurses/terminfo/73/sbobcat and /dev/null differ diff --git a/ncurses/terminfo/73/sc410 b/ncurses/terminfo/73/sc410 deleted file mode 100644 index d30d42c..0000000 Binary files a/ncurses/terminfo/73/sc410 and /dev/null differ diff --git a/ncurses/terminfo/73/sc415 b/ncurses/terminfo/73/sc415 deleted file mode 100644 index d30d42c..0000000 Binary files a/ncurses/terminfo/73/sc415 and /dev/null differ diff --git a/ncurses/terminfo/73/scanset b/ncurses/terminfo/73/scanset deleted file mode 100644 index d30d42c..0000000 Binary files a/ncurses/terminfo/73/scanset and /dev/null differ diff --git a/ncurses/terminfo/73/scoansi b/ncurses/terminfo/73/scoansi deleted file mode 100644 index 386b50d..0000000 Binary files a/ncurses/terminfo/73/scoansi and /dev/null differ diff --git a/ncurses/terminfo/73/scoansi-new b/ncurses/terminfo/73/scoansi-new deleted file mode 100644 index fd0e21f..0000000 Binary files a/ncurses/terminfo/73/scoansi-new and /dev/null differ diff --git a/ncurses/terminfo/73/scoansi-old b/ncurses/terminfo/73/scoansi-old deleted file mode 100644 index 08df530..0000000 Binary files a/ncurses/terminfo/73/scoansi-old and /dev/null differ diff --git a/ncurses/terminfo/73/screen b/ncurses/terminfo/73/screen deleted file mode 100644 index 142b54a..0000000 Binary files a/ncurses/terminfo/73/screen and /dev/null differ diff --git a/ncurses/terminfo/73/screen+fkeys b/ncurses/terminfo/73/screen+fkeys deleted file mode 100644 index a3564ab..0000000 Binary files a/ncurses/terminfo/73/screen+fkeys and /dev/null differ diff --git a/ncurses/terminfo/73/screen-16color b/ncurses/terminfo/73/screen-16color deleted file mode 100644 index 86afdd2..0000000 Binary files a/ncurses/terminfo/73/screen-16color and /dev/null differ diff --git a/ncurses/terminfo/73/screen-16color-bce b/ncurses/terminfo/73/screen-16color-bce deleted file mode 100644 index 0e22ad0..0000000 Binary files a/ncurses/terminfo/73/screen-16color-bce and /dev/null differ diff --git a/ncurses/terminfo/73/screen-16color-bce-s b/ncurses/terminfo/73/screen-16color-bce-s deleted file mode 100644 index 9fc5dec..0000000 Binary files a/ncurses/terminfo/73/screen-16color-bce-s and /dev/null differ diff --git a/ncurses/terminfo/73/screen-16color-s b/ncurses/terminfo/73/screen-16color-s deleted file mode 100644 index e618705..0000000 Binary files a/ncurses/terminfo/73/screen-16color-s and /dev/null differ diff --git a/ncurses/terminfo/73/screen-256color b/ncurses/terminfo/73/screen-256color deleted file mode 100644 index 3fff4af..0000000 Binary files a/ncurses/terminfo/73/screen-256color and /dev/null differ diff --git a/ncurses/terminfo/73/screen-256color-bce b/ncurses/terminfo/73/screen-256color-bce deleted file mode 100644 index 257fd95..0000000 Binary files a/ncurses/terminfo/73/screen-256color-bce and /dev/null differ diff --git a/ncurses/terminfo/73/screen-256color-bce-s b/ncurses/terminfo/73/screen-256color-bce-s deleted file mode 100644 index 814a18f..0000000 Binary files a/ncurses/terminfo/73/screen-256color-bce-s and /dev/null differ diff --git a/ncurses/terminfo/73/screen-256color-s b/ncurses/terminfo/73/screen-256color-s deleted file mode 100644 index e42b73c..0000000 Binary files a/ncurses/terminfo/73/screen-256color-s and /dev/null differ diff --git a/ncurses/terminfo/73/screen-bce b/ncurses/terminfo/73/screen-bce deleted file mode 100644 index 69a0992..0000000 Binary files a/ncurses/terminfo/73/screen-bce and /dev/null differ diff --git a/ncurses/terminfo/73/screen-s b/ncurses/terminfo/73/screen-s deleted file mode 100644 index a592292..0000000 Binary files a/ncurses/terminfo/73/screen-s and /dev/null differ diff --git a/ncurses/terminfo/73/screen-w b/ncurses/terminfo/73/screen-w deleted file mode 100644 index cd3f4b3..0000000 Binary files a/ncurses/terminfo/73/screen-w and /dev/null differ diff --git a/ncurses/terminfo/73/screen.linux b/ncurses/terminfo/73/screen.linux deleted file mode 100644 index 9b5a0a3..0000000 Binary files a/ncurses/terminfo/73/screen.linux and /dev/null differ diff --git a/ncurses/terminfo/73/screen.mlterm b/ncurses/terminfo/73/screen.mlterm deleted file mode 100644 index c90c64b..0000000 Binary files a/ncurses/terminfo/73/screen.mlterm and /dev/null differ diff --git a/ncurses/terminfo/73/screen.rxvt b/ncurses/terminfo/73/screen.rxvt deleted file mode 100644 index 0858cc8..0000000 Binary files a/ncurses/terminfo/73/screen.rxvt and /dev/null differ diff --git a/ncurses/terminfo/73/screen.teraterm b/ncurses/terminfo/73/screen.teraterm deleted file mode 100644 index fb224cf..0000000 Binary files a/ncurses/terminfo/73/screen.teraterm and /dev/null differ diff --git a/ncurses/terminfo/73/screen.xterm-new b/ncurses/terminfo/73/screen.xterm-new deleted file mode 100644 index c07ef2e..0000000 Binary files a/ncurses/terminfo/73/screen.xterm-new and /dev/null differ diff --git a/ncurses/terminfo/73/screen.xterm-r6 b/ncurses/terminfo/73/screen.xterm-r6 deleted file mode 100644 index 4d59619..0000000 Binary files a/ncurses/terminfo/73/screen.xterm-r6 and /dev/null differ diff --git a/ncurses/terminfo/73/screen.xterm-xfree86 b/ncurses/terminfo/73/screen.xterm-xfree86 deleted file mode 100644 index c07ef2e..0000000 Binary files a/ncurses/terminfo/73/screen.xterm-xfree86 and /dev/null differ diff --git a/ncurses/terminfo/73/screen2 b/ncurses/terminfo/73/screen2 deleted file mode 100644 index 717276b..0000000 Binary files a/ncurses/terminfo/73/screen2 and /dev/null differ diff --git a/ncurses/terminfo/73/screen3 b/ncurses/terminfo/73/screen3 deleted file mode 100644 index 768bcc8..0000000 Binary files a/ncurses/terminfo/73/screen3 and /dev/null differ diff --git a/ncurses/terminfo/73/screwpoint b/ncurses/terminfo/73/screwpoint deleted file mode 100644 index 3996d64..0000000 Binary files a/ncurses/terminfo/73/screwpoint and /dev/null differ diff --git a/ncurses/terminfo/73/scrhp b/ncurses/terminfo/73/scrhp deleted file mode 100644 index 1698bf5..0000000 Binary files a/ncurses/terminfo/73/scrhp and /dev/null differ diff --git a/ncurses/terminfo/73/sibo b/ncurses/terminfo/73/sibo deleted file mode 100644 index da1e607..0000000 Binary files a/ncurses/terminfo/73/sibo and /dev/null differ diff --git a/ncurses/terminfo/73/simterm b/ncurses/terminfo/73/simterm deleted file mode 100644 index faef0f7..0000000 Binary files a/ncurses/terminfo/73/simterm and /dev/null differ diff --git a/ncurses/terminfo/73/soroc b/ncurses/terminfo/73/soroc deleted file mode 100644 index 557a602..0000000 Binary files a/ncurses/terminfo/73/soroc and /dev/null differ diff --git a/ncurses/terminfo/73/soroc120 b/ncurses/terminfo/73/soroc120 deleted file mode 100644 index 557a602..0000000 Binary files a/ncurses/terminfo/73/soroc120 and /dev/null differ diff --git a/ncurses/terminfo/73/soroc140 b/ncurses/terminfo/73/soroc140 deleted file mode 100644 index 0a641c4..0000000 Binary files a/ncurses/terminfo/73/soroc140 and /dev/null differ diff --git a/ncurses/terminfo/73/spinwriter b/ncurses/terminfo/73/spinwriter deleted file mode 100644 index 985b6da..0000000 Binary files a/ncurses/terminfo/73/spinwriter and /dev/null differ diff --git a/ncurses/terminfo/73/st52 b/ncurses/terminfo/73/st52 deleted file mode 100644 index 7910b4f..0000000 Binary files a/ncurses/terminfo/73/st52 and /dev/null differ diff --git a/ncurses/terminfo/73/sun b/ncurses/terminfo/73/sun deleted file mode 100644 index 1976f97..0000000 Binary files a/ncurses/terminfo/73/sun and /dev/null differ diff --git a/ncurses/terminfo/73/sun-1 b/ncurses/terminfo/73/sun-1 deleted file mode 100644 index 9b15fba..0000000 Binary files a/ncurses/terminfo/73/sun-1 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-12 b/ncurses/terminfo/73/sun-12 deleted file mode 100644 index 65b3014..0000000 Binary files a/ncurses/terminfo/73/sun-12 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-17 b/ncurses/terminfo/73/sun-17 deleted file mode 100644 index 2e65638..0000000 Binary files a/ncurses/terminfo/73/sun-17 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-24 b/ncurses/terminfo/73/sun-24 deleted file mode 100644 index 648fa84..0000000 Binary files a/ncurses/terminfo/73/sun-24 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-34 b/ncurses/terminfo/73/sun-34 deleted file mode 100644 index 4eff1cb..0000000 Binary files a/ncurses/terminfo/73/sun-34 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-48 b/ncurses/terminfo/73/sun-48 deleted file mode 100644 index 6671c24..0000000 Binary files a/ncurses/terminfo/73/sun-48 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-c b/ncurses/terminfo/73/sun-c deleted file mode 100644 index 54ab568..0000000 Binary files a/ncurses/terminfo/73/sun-c and /dev/null differ diff --git a/ncurses/terminfo/73/sun-cgsix b/ncurses/terminfo/73/sun-cgsix deleted file mode 100644 index 06d8c34..0000000 Binary files a/ncurses/terminfo/73/sun-cgsix and /dev/null differ diff --git a/ncurses/terminfo/73/sun-cmd b/ncurses/terminfo/73/sun-cmd deleted file mode 100644 index 54ab568..0000000 Binary files a/ncurses/terminfo/73/sun-cmd and /dev/null differ diff --git a/ncurses/terminfo/73/sun-color b/ncurses/terminfo/73/sun-color deleted file mode 100644 index e6c9546..0000000 Binary files a/ncurses/terminfo/73/sun-color and /dev/null differ diff --git a/ncurses/terminfo/73/sun-e b/ncurses/terminfo/73/sun-e deleted file mode 100644 index 3e1b604..0000000 Binary files a/ncurses/terminfo/73/sun-e and /dev/null differ diff --git a/ncurses/terminfo/73/sun-e-s b/ncurses/terminfo/73/sun-e-s deleted file mode 100644 index 8a5f078..0000000 Binary files a/ncurses/terminfo/73/sun-e-s and /dev/null differ diff --git a/ncurses/terminfo/73/sun-il b/ncurses/terminfo/73/sun-il deleted file mode 100644 index d952042..0000000 Binary files a/ncurses/terminfo/73/sun-il and /dev/null differ diff --git a/ncurses/terminfo/73/sun-nic b/ncurses/terminfo/73/sun-nic deleted file mode 100644 index 3e1b604..0000000 Binary files a/ncurses/terminfo/73/sun-nic and /dev/null differ diff --git a/ncurses/terminfo/73/sun-s b/ncurses/terminfo/73/sun-s deleted file mode 100644 index 7c0f40d..0000000 Binary files a/ncurses/terminfo/73/sun-s and /dev/null differ diff --git a/ncurses/terminfo/73/sun-s-e b/ncurses/terminfo/73/sun-s-e deleted file mode 100644 index 8a5f078..0000000 Binary files a/ncurses/terminfo/73/sun-s-e and /dev/null differ diff --git a/ncurses/terminfo/73/sun-ss5 b/ncurses/terminfo/73/sun-ss5 deleted file mode 100644 index 06d8c34..0000000 Binary files a/ncurses/terminfo/73/sun-ss5 and /dev/null differ diff --git a/ncurses/terminfo/73/sun-type4 b/ncurses/terminfo/73/sun-type4 deleted file mode 100644 index ef1b880..0000000 Binary files a/ncurses/terminfo/73/sun-type4 and /dev/null differ diff --git a/ncurses/terminfo/73/sun1 b/ncurses/terminfo/73/sun1 deleted file mode 100644 index 1976f97..0000000 Binary files a/ncurses/terminfo/73/sun1 and /dev/null differ diff --git a/ncurses/terminfo/73/sun2 b/ncurses/terminfo/73/sun2 deleted file mode 100644 index 1976f97..0000000 Binary files a/ncurses/terminfo/73/sun2 and /dev/null differ diff --git a/ncurses/terminfo/73/sune b/ncurses/terminfo/73/sune deleted file mode 100644 index 3e1b604..0000000 Binary files a/ncurses/terminfo/73/sune and /dev/null differ diff --git a/ncurses/terminfo/73/superbee b/ncurses/terminfo/73/superbee deleted file mode 100644 index 34ff2f5..0000000 Binary files a/ncurses/terminfo/73/superbee and /dev/null differ diff --git a/ncurses/terminfo/73/superbee-xsb b/ncurses/terminfo/73/superbee-xsb deleted file mode 100644 index cb021bc..0000000 Binary files a/ncurses/terminfo/73/superbee-xsb and /dev/null differ diff --git a/ncurses/terminfo/73/superbeeic b/ncurses/terminfo/73/superbeeic deleted file mode 100644 index 9e82c2f..0000000 Binary files a/ncurses/terminfo/73/superbeeic and /dev/null differ diff --git a/ncurses/terminfo/73/superbrain b/ncurses/terminfo/73/superbrain deleted file mode 100644 index c27bd07..0000000 Binary files a/ncurses/terminfo/73/superbrain and /dev/null differ diff --git a/ncurses/terminfo/73/sv80 b/ncurses/terminfo/73/sv80 deleted file mode 100644 index 7ff7d52..0000000 Binary files a/ncurses/terminfo/73/sv80 and /dev/null differ diff --git a/ncurses/terminfo/73/swtp b/ncurses/terminfo/73/swtp deleted file mode 100644 index b594d3a..0000000 Binary files a/ncurses/terminfo/73/swtp and /dev/null differ diff --git a/ncurses/terminfo/73/synertek b/ncurses/terminfo/73/synertek deleted file mode 100644 index fcdbf6c..0000000 Binary files a/ncurses/terminfo/73/synertek and /dev/null differ diff --git a/ncurses/terminfo/73/synertek380 b/ncurses/terminfo/73/synertek380 deleted file mode 100644 index fcdbf6c..0000000 Binary files a/ncurses/terminfo/73/synertek380 and /dev/null differ diff --git a/ncurses/terminfo/73/system1 b/ncurses/terminfo/73/system1 deleted file mode 100644 index 4bfce21..0000000 Binary files a/ncurses/terminfo/73/system1 and /dev/null differ diff --git a/ncurses/terminfo/74/t10 b/ncurses/terminfo/74/t10 deleted file mode 100644 index 5ea6d2d..0000000 Binary files a/ncurses/terminfo/74/t10 and /dev/null differ diff --git a/ncurses/terminfo/74/t1061 b/ncurses/terminfo/74/t1061 deleted file mode 100644 index 29497d3..0000000 Binary files a/ncurses/terminfo/74/t1061 and /dev/null differ diff --git a/ncurses/terminfo/74/t1061f b/ncurses/terminfo/74/t1061f deleted file mode 100644 index 7628b9a..0000000 Binary files a/ncurses/terminfo/74/t1061f and /dev/null differ diff --git a/ncurses/terminfo/74/t16 b/ncurses/terminfo/74/t16 deleted file mode 100644 index 54073a2..0000000 Binary files a/ncurses/terminfo/74/t16 and /dev/null differ diff --git a/ncurses/terminfo/74/t3700 b/ncurses/terminfo/74/t3700 deleted file mode 100644 index af5ad2f..0000000 Binary files a/ncurses/terminfo/74/t3700 and /dev/null differ diff --git a/ncurses/terminfo/74/t3800 b/ncurses/terminfo/74/t3800 deleted file mode 100644 index 0b94dc8..0000000 Binary files a/ncurses/terminfo/74/t3800 and /dev/null differ diff --git a/ncurses/terminfo/74/t653x b/ncurses/terminfo/74/t653x deleted file mode 100644 index 5f869e4..0000000 Binary files a/ncurses/terminfo/74/t653x and /dev/null differ diff --git a/ncurses/terminfo/74/tab b/ncurses/terminfo/74/tab deleted file mode 100644 index 11b0981..0000000 Binary files a/ncurses/terminfo/74/tab and /dev/null differ diff --git a/ncurses/terminfo/74/tab132 b/ncurses/terminfo/74/tab132 deleted file mode 100644 index 11b0981..0000000 Binary files a/ncurses/terminfo/74/tab132 and /dev/null differ diff --git a/ncurses/terminfo/74/tab132-15 b/ncurses/terminfo/74/tab132-15 deleted file mode 100644 index 11b0981..0000000 Binary files a/ncurses/terminfo/74/tab132-15 and /dev/null differ diff --git a/ncurses/terminfo/74/tab132-rv b/ncurses/terminfo/74/tab132-rv deleted file mode 100644 index db12bef..0000000 Binary files a/ncurses/terminfo/74/tab132-rv and /dev/null differ diff --git a/ncurses/terminfo/74/tab132-w b/ncurses/terminfo/74/tab132-w deleted file mode 100644 index f34108a..0000000 Binary files a/ncurses/terminfo/74/tab132-w and /dev/null differ diff --git a/ncurses/terminfo/74/tab132-w-rv b/ncurses/terminfo/74/tab132-w-rv deleted file mode 100644 index 1306f46..0000000 Binary files a/ncurses/terminfo/74/tab132-w-rv and /dev/null differ diff --git a/ncurses/terminfo/74/tandem6510 b/ncurses/terminfo/74/tandem6510 deleted file mode 100644 index 85cd8df..0000000 Binary files a/ncurses/terminfo/74/tandem6510 and /dev/null differ diff --git a/ncurses/terminfo/74/tandem653 b/ncurses/terminfo/74/tandem653 deleted file mode 100644 index 5f869e4..0000000 Binary files a/ncurses/terminfo/74/tandem653 and /dev/null differ diff --git a/ncurses/terminfo/74/tek b/ncurses/terminfo/74/tek deleted file mode 100644 index 416fd87..0000000 Binary files a/ncurses/terminfo/74/tek and /dev/null differ diff --git a/ncurses/terminfo/74/tek4012 b/ncurses/terminfo/74/tek4012 deleted file mode 100644 index 416fd87..0000000 Binary files a/ncurses/terminfo/74/tek4012 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4013 b/ncurses/terminfo/74/tek4013 deleted file mode 100644 index 24172d8..0000000 Binary files a/ncurses/terminfo/74/tek4013 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4014 b/ncurses/terminfo/74/tek4014 deleted file mode 100644 index 012e1e4..0000000 Binary files a/ncurses/terminfo/74/tek4014 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4014-sm b/ncurses/terminfo/74/tek4014-sm deleted file mode 100644 index bd5e2d6..0000000 Binary files a/ncurses/terminfo/74/tek4014-sm and /dev/null differ diff --git a/ncurses/terminfo/74/tek4015 b/ncurses/terminfo/74/tek4015 deleted file mode 100644 index 543ac4c..0000000 Binary files a/ncurses/terminfo/74/tek4015 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4015-sm b/ncurses/terminfo/74/tek4015-sm deleted file mode 100644 index b613be3..0000000 Binary files a/ncurses/terminfo/74/tek4015-sm and /dev/null differ diff --git a/ncurses/terminfo/74/tek4023 b/ncurses/terminfo/74/tek4023 deleted file mode 100644 index ef116aa..0000000 Binary files a/ncurses/terminfo/74/tek4023 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4024 b/ncurses/terminfo/74/tek4024 deleted file mode 100644 index 5bba19b..0000000 Binary files a/ncurses/terminfo/74/tek4024 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025 b/ncurses/terminfo/74/tek4025 deleted file mode 100644 index 5bba19b..0000000 Binary files a/ncurses/terminfo/74/tek4025 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025-17 b/ncurses/terminfo/74/tek4025-17 deleted file mode 100644 index 9c970f9..0000000 Binary files a/ncurses/terminfo/74/tek4025-17 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025-17-ws b/ncurses/terminfo/74/tek4025-17-ws deleted file mode 100644 index 97fddf8..0000000 Binary files a/ncurses/terminfo/74/tek4025-17-ws and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025-cr b/ncurses/terminfo/74/tek4025-cr deleted file mode 100644 index b9fd5cf..0000000 Binary files a/ncurses/terminfo/74/tek4025-cr and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025-ex b/ncurses/terminfo/74/tek4025-ex deleted file mode 100644 index a9b00db..0000000 Binary files a/ncurses/terminfo/74/tek4025-ex and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025a b/ncurses/terminfo/74/tek4025a deleted file mode 100644 index 2120813..0000000 Binary files a/ncurses/terminfo/74/tek4025a and /dev/null differ diff --git a/ncurses/terminfo/74/tek4025ex b/ncurses/terminfo/74/tek4025ex deleted file mode 100644 index 294c1f3..0000000 Binary files a/ncurses/terminfo/74/tek4025ex and /dev/null differ diff --git a/ncurses/terminfo/74/tek4027 b/ncurses/terminfo/74/tek4027 deleted file mode 100644 index 5bba19b..0000000 Binary files a/ncurses/terminfo/74/tek4027 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4027-ex b/ncurses/terminfo/74/tek4027-ex deleted file mode 100644 index a9b00db..0000000 Binary files a/ncurses/terminfo/74/tek4027-ex and /dev/null differ diff --git a/ncurses/terminfo/74/tek4105 b/ncurses/terminfo/74/tek4105 deleted file mode 100644 index 2ea0e08..0000000 Binary files a/ncurses/terminfo/74/tek4105 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4105-30 b/ncurses/terminfo/74/tek4105-30 deleted file mode 100644 index ce37081..0000000 Binary files a/ncurses/terminfo/74/tek4105-30 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4105a b/ncurses/terminfo/74/tek4105a deleted file mode 100644 index 98adaa3..0000000 Binary files a/ncurses/terminfo/74/tek4105a and /dev/null differ diff --git a/ncurses/terminfo/74/tek4106brl b/ncurses/terminfo/74/tek4106brl deleted file mode 100644 index 495593e..0000000 Binary files a/ncurses/terminfo/74/tek4106brl and /dev/null differ diff --git a/ncurses/terminfo/74/tek4107 b/ncurses/terminfo/74/tek4107 deleted file mode 100644 index 9458a4c..0000000 Binary files a/ncurses/terminfo/74/tek4107 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4107brl b/ncurses/terminfo/74/tek4107brl deleted file mode 100644 index 495593e..0000000 Binary files a/ncurses/terminfo/74/tek4107brl and /dev/null differ diff --git a/ncurses/terminfo/74/tek4109 b/ncurses/terminfo/74/tek4109 deleted file mode 100644 index 9458a4c..0000000 Binary files a/ncurses/terminfo/74/tek4109 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4109brl b/ncurses/terminfo/74/tek4109brl deleted file mode 100644 index 495593e..0000000 Binary files a/ncurses/terminfo/74/tek4109brl and /dev/null differ diff --git a/ncurses/terminfo/74/tek4112 b/ncurses/terminfo/74/tek4112 deleted file mode 100644 index 8d3afd2..0000000 Binary files a/ncurses/terminfo/74/tek4112 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4112-5 b/ncurses/terminfo/74/tek4112-5 deleted file mode 100644 index b13af7b..0000000 Binary files a/ncurses/terminfo/74/tek4112-5 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4112-nd b/ncurses/terminfo/74/tek4112-nd deleted file mode 100644 index fc9d956..0000000 Binary files a/ncurses/terminfo/74/tek4112-nd and /dev/null differ diff --git a/ncurses/terminfo/74/tek4113 b/ncurses/terminfo/74/tek4113 deleted file mode 100644 index c1207a4..0000000 Binary files a/ncurses/terminfo/74/tek4113 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4113-34 b/ncurses/terminfo/74/tek4113-34 deleted file mode 100644 index bd57c3a..0000000 Binary files a/ncurses/terminfo/74/tek4113-34 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4113-nd b/ncurses/terminfo/74/tek4113-nd deleted file mode 100644 index 893481e..0000000 Binary files a/ncurses/terminfo/74/tek4113-nd and /dev/null differ diff --git a/ncurses/terminfo/74/tek4114 b/ncurses/terminfo/74/tek4114 deleted file mode 100644 index 8d3afd2..0000000 Binary files a/ncurses/terminfo/74/tek4114 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4115 b/ncurses/terminfo/74/tek4115 deleted file mode 100644 index 7ef6283..0000000 Binary files a/ncurses/terminfo/74/tek4115 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4125 b/ncurses/terminfo/74/tek4125 deleted file mode 100644 index 724b7fd..0000000 Binary files a/ncurses/terminfo/74/tek4125 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4205 b/ncurses/terminfo/74/tek4205 deleted file mode 100644 index 181683a..0000000 Binary files a/ncurses/terminfo/74/tek4205 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4207 b/ncurses/terminfo/74/tek4207 deleted file mode 100644 index 8a7a810..0000000 Binary files a/ncurses/terminfo/74/tek4207 and /dev/null differ diff --git a/ncurses/terminfo/74/tek4207-s b/ncurses/terminfo/74/tek4207-s deleted file mode 100644 index 88c017e..0000000 Binary files a/ncurses/terminfo/74/tek4207-s and /dev/null differ diff --git a/ncurses/terminfo/74/tek4404 b/ncurses/terminfo/74/tek4404 deleted file mode 100644 index d522301..0000000 Binary files a/ncurses/terminfo/74/tek4404 and /dev/null differ diff --git a/ncurses/terminfo/74/teleray b/ncurses/terminfo/74/teleray deleted file mode 100644 index 29497d3..0000000 Binary files a/ncurses/terminfo/74/teleray and /dev/null differ diff --git a/ncurses/terminfo/74/teletec b/ncurses/terminfo/74/teletec deleted file mode 100644 index de078ea..0000000 Binary files a/ncurses/terminfo/74/teletec and /dev/null differ diff --git a/ncurses/terminfo/74/teraterm b/ncurses/terminfo/74/teraterm deleted file mode 100644 index 8f5da6c..0000000 Binary files a/ncurses/terminfo/74/teraterm and /dev/null differ diff --git a/ncurses/terminfo/74/teraterm2.3 b/ncurses/terminfo/74/teraterm2.3 deleted file mode 100644 index b00eb70..0000000 Binary files a/ncurses/terminfo/74/teraterm2.3 and /dev/null differ diff --git a/ncurses/terminfo/74/teraterm4.59 b/ncurses/terminfo/74/teraterm4.59 deleted file mode 100644 index 09158b1..0000000 Binary files a/ncurses/terminfo/74/teraterm4.59 and /dev/null differ diff --git a/ncurses/terminfo/74/terminet b/ncurses/terminfo/74/terminet deleted file mode 100644 index 87c639c..0000000 Binary files a/ncurses/terminfo/74/terminet and /dev/null differ diff --git a/ncurses/terminfo/74/terminet1200 b/ncurses/terminfo/74/terminet1200 deleted file mode 100644 index 87c639c..0000000 Binary files a/ncurses/terminfo/74/terminet1200 and /dev/null differ diff --git a/ncurses/terminfo/74/terminet300 b/ncurses/terminfo/74/terminet300 deleted file mode 100644 index 87c639c..0000000 Binary files a/ncurses/terminfo/74/terminet300 and /dev/null differ diff --git a/ncurses/terminfo/74/tgtelnet b/ncurses/terminfo/74/tgtelnet deleted file mode 100644 index 8614833..0000000 Binary files a/ncurses/terminfo/74/tgtelnet and /dev/null differ diff --git a/ncurses/terminfo/74/ti700 b/ncurses/terminfo/74/ti700 deleted file mode 100644 index fe7eb88..0000000 Binary files a/ncurses/terminfo/74/ti700 and /dev/null differ diff --git a/ncurses/terminfo/74/ti733 b/ncurses/terminfo/74/ti733 deleted file mode 100644 index fe7eb88..0000000 Binary files a/ncurses/terminfo/74/ti733 and /dev/null differ diff --git a/ncurses/terminfo/74/ti735 b/ncurses/terminfo/74/ti735 deleted file mode 100644 index fe7eb88..0000000 Binary files a/ncurses/terminfo/74/ti735 and /dev/null differ diff --git a/ncurses/terminfo/74/ti745 b/ncurses/terminfo/74/ti745 deleted file mode 100644 index fe7eb88..0000000 Binary files a/ncurses/terminfo/74/ti745 and /dev/null differ diff --git a/ncurses/terminfo/74/ti800 b/ncurses/terminfo/74/ti800 deleted file mode 100644 index fe7eb88..0000000 Binary files a/ncurses/terminfo/74/ti800 and /dev/null differ diff --git a/ncurses/terminfo/74/ti916 b/ncurses/terminfo/74/ti916 deleted file mode 100644 index 1d01d4b..0000000 Binary files a/ncurses/terminfo/74/ti916 and /dev/null differ diff --git a/ncurses/terminfo/74/ti916-132 b/ncurses/terminfo/74/ti916-132 deleted file mode 100644 index d322c47..0000000 Binary files a/ncurses/terminfo/74/ti916-132 and /dev/null differ diff --git a/ncurses/terminfo/74/ti916-220-7 b/ncurses/terminfo/74/ti916-220-7 deleted file mode 100644 index 1d01d4b..0000000 Binary files a/ncurses/terminfo/74/ti916-220-7 and /dev/null differ diff --git a/ncurses/terminfo/74/ti916-220-8 b/ncurses/terminfo/74/ti916-220-8 deleted file mode 100644 index 656e70a..0000000 Binary files a/ncurses/terminfo/74/ti916-220-8 and /dev/null differ diff --git a/ncurses/terminfo/74/ti916-8 b/ncurses/terminfo/74/ti916-8 deleted file mode 100644 index 656e70a..0000000 Binary files a/ncurses/terminfo/74/ti916-8 and /dev/null differ diff --git a/ncurses/terminfo/74/ti916-8-132 b/ncurses/terminfo/74/ti916-8-132 deleted file mode 100644 index 56f8d9d..0000000 Binary files a/ncurses/terminfo/74/ti916-8-132 and /dev/null differ diff --git a/ncurses/terminfo/74/ti924 b/ncurses/terminfo/74/ti924 deleted file mode 100644 index e4cb8b0..0000000 Binary files a/ncurses/terminfo/74/ti924 and /dev/null differ diff --git a/ncurses/terminfo/74/ti924-8 b/ncurses/terminfo/74/ti924-8 deleted file mode 100644 index 2737639..0000000 Binary files a/ncurses/terminfo/74/ti924-8 and /dev/null differ diff --git a/ncurses/terminfo/74/ti924-8w b/ncurses/terminfo/74/ti924-8w deleted file mode 100644 index 93b84d0..0000000 Binary files a/ncurses/terminfo/74/ti924-8w and /dev/null differ diff --git a/ncurses/terminfo/74/ti924w b/ncurses/terminfo/74/ti924w deleted file mode 100644 index 1a6b117..0000000 Binary files a/ncurses/terminfo/74/ti924w and /dev/null differ diff --git a/ncurses/terminfo/74/ti926 b/ncurses/terminfo/74/ti926 deleted file mode 100644 index 34e2fd8..0000000 Binary files a/ncurses/terminfo/74/ti926 and /dev/null differ diff --git a/ncurses/terminfo/74/ti926-8 b/ncurses/terminfo/74/ti926-8 deleted file mode 100644 index 61a6b6f..0000000 Binary files a/ncurses/terminfo/74/ti926-8 and /dev/null differ diff --git a/ncurses/terminfo/74/ti928 b/ncurses/terminfo/74/ti928 deleted file mode 100644 index d895332..0000000 Binary files a/ncurses/terminfo/74/ti928 and /dev/null differ diff --git a/ncurses/terminfo/74/ti928-8 b/ncurses/terminfo/74/ti928-8 deleted file mode 100644 index b38f0fb..0000000 Binary files a/ncurses/terminfo/74/ti928-8 and /dev/null differ diff --git a/ncurses/terminfo/74/ti931 b/ncurses/terminfo/74/ti931 deleted file mode 100644 index f9e48bf..0000000 Binary files a/ncurses/terminfo/74/ti931 and /dev/null differ diff --git a/ncurses/terminfo/74/ti_ansi b/ncurses/terminfo/74/ti_ansi deleted file mode 100644 index 9d67668..0000000 Binary files a/ncurses/terminfo/74/ti_ansi and /dev/null differ diff --git a/ncurses/terminfo/74/tkterm b/ncurses/terminfo/74/tkterm deleted file mode 100644 index 0cbe9f7..0000000 Binary files a/ncurses/terminfo/74/tkterm and /dev/null differ diff --git a/ncurses/terminfo/74/tn1200 b/ncurses/terminfo/74/tn1200 deleted file mode 100644 index 87c639c..0000000 Binary files a/ncurses/terminfo/74/tn1200 and /dev/null differ diff --git a/ncurses/terminfo/74/tn300 b/ncurses/terminfo/74/tn300 deleted file mode 100644 index 87c639c..0000000 Binary files a/ncurses/terminfo/74/tn300 and /dev/null differ diff --git a/ncurses/terminfo/74/trs16 b/ncurses/terminfo/74/trs16 deleted file mode 100644 index 6b707d3..0000000 Binary files a/ncurses/terminfo/74/trs16 and /dev/null differ diff --git a/ncurses/terminfo/74/trs2 b/ncurses/terminfo/74/trs2 deleted file mode 100644 index 5d34043..0000000 Binary files a/ncurses/terminfo/74/trs2 and /dev/null differ diff --git a/ncurses/terminfo/74/trs80II b/ncurses/terminfo/74/trs80II deleted file mode 100644 index 5d34043..0000000 Binary files a/ncurses/terminfo/74/trs80II and /dev/null differ diff --git a/ncurses/terminfo/74/trsII b/ncurses/terminfo/74/trsII deleted file mode 100644 index 5d34043..0000000 Binary files a/ncurses/terminfo/74/trsII and /dev/null differ diff --git a/ncurses/terminfo/74/ts-1 b/ncurses/terminfo/74/ts-1 deleted file mode 100644 index 88dbf93..0000000 Binary files a/ncurses/terminfo/74/ts-1 and /dev/null differ diff --git a/ncurses/terminfo/74/ts-1p b/ncurses/terminfo/74/ts-1p deleted file mode 100644 index cb65118..0000000 Binary files a/ncurses/terminfo/74/ts-1p and /dev/null differ diff --git a/ncurses/terminfo/74/ts1 b/ncurses/terminfo/74/ts1 deleted file mode 100644 index 88dbf93..0000000 Binary files a/ncurses/terminfo/74/ts1 and /dev/null differ diff --git a/ncurses/terminfo/74/ts100 b/ncurses/terminfo/74/ts100 deleted file mode 100644 index 81f805f..0000000 Binary files a/ncurses/terminfo/74/ts100 and /dev/null differ diff --git a/ncurses/terminfo/74/ts100-ctxt b/ncurses/terminfo/74/ts100-ctxt deleted file mode 100644 index c9a1873..0000000 Binary files a/ncurses/terminfo/74/ts100-ctxt and /dev/null differ diff --git a/ncurses/terminfo/74/ts100-sp b/ncurses/terminfo/74/ts100-sp deleted file mode 100644 index 81f805f..0000000 Binary files a/ncurses/terminfo/74/ts100-sp and /dev/null differ diff --git a/ncurses/terminfo/74/ts1p b/ncurses/terminfo/74/ts1p deleted file mode 100644 index cb65118..0000000 Binary files a/ncurses/terminfo/74/ts1p and /dev/null differ diff --git a/ncurses/terminfo/74/tt b/ncurses/terminfo/74/tt deleted file mode 100644 index 0cbe9f7..0000000 Binary files a/ncurses/terminfo/74/tt and /dev/null differ diff --git a/ncurses/terminfo/74/tt505-22 b/ncurses/terminfo/74/tt505-22 deleted file mode 100644 index e452c35..0000000 Binary files a/ncurses/terminfo/74/tt505-22 and /dev/null differ diff --git a/ncurses/terminfo/74/tty33 b/ncurses/terminfo/74/tty33 deleted file mode 100644 index 8f719a1..0000000 Binary files a/ncurses/terminfo/74/tty33 and /dev/null differ diff --git a/ncurses/terminfo/74/tty35 b/ncurses/terminfo/74/tty35 deleted file mode 100644 index 8f719a1..0000000 Binary files a/ncurses/terminfo/74/tty35 and /dev/null differ diff --git a/ncurses/terminfo/74/tty37 b/ncurses/terminfo/74/tty37 deleted file mode 100644 index 53a0f17..0000000 Binary files a/ncurses/terminfo/74/tty37 and /dev/null differ diff --git a/ncurses/terminfo/74/tty40 b/ncurses/terminfo/74/tty40 deleted file mode 100644 index c75c35b..0000000 Binary files a/ncurses/terminfo/74/tty40 and /dev/null differ diff --git a/ncurses/terminfo/74/tty43 b/ncurses/terminfo/74/tty43 deleted file mode 100644 index 4424791..0000000 Binary files a/ncurses/terminfo/74/tty43 and /dev/null differ diff --git a/ncurses/terminfo/74/tty4420 b/ncurses/terminfo/74/tty4420 deleted file mode 100644 index bed9e68..0000000 Binary files a/ncurses/terminfo/74/tty4420 and /dev/null differ diff --git a/ncurses/terminfo/74/tty4424 b/ncurses/terminfo/74/tty4424 deleted file mode 100644 index 879bc82..0000000 Binary files a/ncurses/terminfo/74/tty4424 and /dev/null differ diff --git a/ncurses/terminfo/74/tty4424-1 b/ncurses/terminfo/74/tty4424-1 deleted file mode 100644 index 6ef2858..0000000 Binary files a/ncurses/terminfo/74/tty4424-1 and /dev/null differ diff --git a/ncurses/terminfo/74/tty4424m b/ncurses/terminfo/74/tty4424m deleted file mode 100644 index 54671e3..0000000 Binary files a/ncurses/terminfo/74/tty4424m and /dev/null differ diff --git a/ncurses/terminfo/74/tty4426 b/ncurses/terminfo/74/tty4426 deleted file mode 100644 index f75f204..0000000 Binary files a/ncurses/terminfo/74/tty4426 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5410 b/ncurses/terminfo/74/tty5410 deleted file mode 100644 index 53bbdce..0000000 Binary files a/ncurses/terminfo/74/tty5410 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5410-w b/ncurses/terminfo/74/tty5410-w deleted file mode 100644 index 78d96ef..0000000 Binary files a/ncurses/terminfo/74/tty5410-w and /dev/null differ diff --git a/ncurses/terminfo/74/tty5410v1 b/ncurses/terminfo/74/tty5410v1 deleted file mode 100644 index 9f7672f..0000000 Binary files a/ncurses/terminfo/74/tty5410v1 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5410v1-w b/ncurses/terminfo/74/tty5410v1-w deleted file mode 100644 index b849088..0000000 Binary files a/ncurses/terminfo/74/tty5410v1-w and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420 b/ncurses/terminfo/74/tty5420 deleted file mode 100644 index 358fb0e..0000000 Binary files a/ncurses/terminfo/74/tty5420 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420+nl b/ncurses/terminfo/74/tty5420+nl deleted file mode 100644 index b9a8de8..0000000 Binary files a/ncurses/terminfo/74/tty5420+nl and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-nl b/ncurses/terminfo/74/tty5420-nl deleted file mode 100644 index de22b13..0000000 Binary files a/ncurses/terminfo/74/tty5420-nl and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-rv b/ncurses/terminfo/74/tty5420-rv deleted file mode 100644 index 09673bb..0000000 Binary files a/ncurses/terminfo/74/tty5420-rv and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-rv-nl b/ncurses/terminfo/74/tty5420-rv-nl deleted file mode 100644 index b38f9ab..0000000 Binary files a/ncurses/terminfo/74/tty5420-rv-nl and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-w b/ncurses/terminfo/74/tty5420-w deleted file mode 100644 index 3316d0a..0000000 Binary files a/ncurses/terminfo/74/tty5420-w and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-w-nl b/ncurses/terminfo/74/tty5420-w-nl deleted file mode 100644 index d505169..0000000 Binary files a/ncurses/terminfo/74/tty5420-w-nl and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-w-rv b/ncurses/terminfo/74/tty5420-w-rv deleted file mode 100644 index 2ae6d86..0000000 Binary files a/ncurses/terminfo/74/tty5420-w-rv and /dev/null differ diff --git a/ncurses/terminfo/74/tty5420-w-rv-n b/ncurses/terminfo/74/tty5420-w-rv-n deleted file mode 100644 index 8e6691d..0000000 Binary files a/ncurses/terminfo/74/tty5420-w-rv-n and /dev/null differ diff --git a/ncurses/terminfo/74/tty5425 b/ncurses/terminfo/74/tty5425 deleted file mode 100644 index c602b5f..0000000 Binary files a/ncurses/terminfo/74/tty5425 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5425-nl b/ncurses/terminfo/74/tty5425-nl deleted file mode 100644 index 0d2e70b..0000000 Binary files a/ncurses/terminfo/74/tty5425-nl and /dev/null differ diff --git a/ncurses/terminfo/74/tty5425-w b/ncurses/terminfo/74/tty5425-w deleted file mode 100644 index 6b47075..0000000 Binary files a/ncurses/terminfo/74/tty5425-w and /dev/null differ diff --git a/ncurses/terminfo/74/tty5620 b/ncurses/terminfo/74/tty5620 deleted file mode 100644 index d096883..0000000 Binary files a/ncurses/terminfo/74/tty5620 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5620-1 b/ncurses/terminfo/74/tty5620-1 deleted file mode 100644 index 7212c7a..0000000 Binary files a/ncurses/terminfo/74/tty5620-1 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5620-24 b/ncurses/terminfo/74/tty5620-24 deleted file mode 100644 index c812b62..0000000 Binary files a/ncurses/terminfo/74/tty5620-24 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5620-34 b/ncurses/terminfo/74/tty5620-34 deleted file mode 100644 index 5e60f0b..0000000 Binary files a/ncurses/terminfo/74/tty5620-34 and /dev/null differ diff --git a/ncurses/terminfo/74/tty5620-s b/ncurses/terminfo/74/tty5620-s deleted file mode 100644 index b313bcc..0000000 Binary files a/ncurses/terminfo/74/tty5620-s and /dev/null differ diff --git a/ncurses/terminfo/74/ttydmd b/ncurses/terminfo/74/ttydmd deleted file mode 100644 index d096883..0000000 Binary files a/ncurses/terminfo/74/ttydmd and /dev/null differ diff --git a/ncurses/terminfo/74/tvi803 b/ncurses/terminfo/74/tvi803 deleted file mode 100644 index f9c88fb..0000000 Binary files a/ncurses/terminfo/74/tvi803 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi9065 b/ncurses/terminfo/74/tvi9065 deleted file mode 100644 index 36eba98..0000000 Binary files a/ncurses/terminfo/74/tvi9065 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi910 b/ncurses/terminfo/74/tvi910 deleted file mode 100644 index 5cd9540..0000000 Binary files a/ncurses/terminfo/74/tvi910 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi910+ b/ncurses/terminfo/74/tvi910+ deleted file mode 100644 index 5806b20..0000000 Binary files a/ncurses/terminfo/74/tvi910+ and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912 b/ncurses/terminfo/74/tvi912 deleted file mode 100644 index 35b3e7a..0000000 Binary files a/ncurses/terminfo/74/tvi912 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b b/ncurses/terminfo/74/tvi912b deleted file mode 100644 index 997e031..0000000 Binary files a/ncurses/terminfo/74/tvi912b and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b+2p b/ncurses/terminfo/74/tvi912b+2p deleted file mode 100644 index fd6f79a..0000000 Binary files a/ncurses/terminfo/74/tvi912b+2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b+dim b/ncurses/terminfo/74/tvi912b+dim deleted file mode 100644 index 19249cc..0000000 Binary files a/ncurses/terminfo/74/tvi912b+dim and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b+mc b/ncurses/terminfo/74/tvi912b+mc deleted file mode 100644 index 4db7177..0000000 Binary files a/ncurses/terminfo/74/tvi912b+mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b+printer b/ncurses/terminfo/74/tvi912b+printer deleted file mode 100644 index c637ac2..0000000 Binary files a/ncurses/terminfo/74/tvi912b+printer and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b+vb b/ncurses/terminfo/74/tvi912b+vb deleted file mode 100644 index 33e84ca..0000000 Binary files a/ncurses/terminfo/74/tvi912b+vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-2p b/ncurses/terminfo/74/tvi912b-2p deleted file mode 100644 index e5ae712..0000000 Binary files a/ncurses/terminfo/74/tvi912b-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-2p-mc b/ncurses/terminfo/74/tvi912b-2p-mc deleted file mode 100644 index a351a0b..0000000 Binary files a/ncurses/terminfo/74/tvi912b-2p-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-2p-p b/ncurses/terminfo/74/tvi912b-2p-p deleted file mode 100644 index 2efb0f7..0000000 Binary files a/ncurses/terminfo/74/tvi912b-2p-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-2p-unk b/ncurses/terminfo/74/tvi912b-2p-unk deleted file mode 100644 index 5b19261..0000000 Binary files a/ncurses/terminfo/74/tvi912b-2p-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-mc b/ncurses/terminfo/74/tvi912b-mc deleted file mode 100644 index c31df7c..0000000 Binary files a/ncurses/terminfo/74/tvi912b-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-mc-2p b/ncurses/terminfo/74/tvi912b-mc-2p deleted file mode 100644 index a351a0b..0000000 Binary files a/ncurses/terminfo/74/tvi912b-mc-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-mc-vb b/ncurses/terminfo/74/tvi912b-mc-vb deleted file mode 100644 index e52eee5..0000000 Binary files a/ncurses/terminfo/74/tvi912b-mc-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-p b/ncurses/terminfo/74/tvi912b-p deleted file mode 100644 index b0315e0..0000000 Binary files a/ncurses/terminfo/74/tvi912b-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-p-2p b/ncurses/terminfo/74/tvi912b-p-2p deleted file mode 100644 index 2efb0f7..0000000 Binary files a/ncurses/terminfo/74/tvi912b-p-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-p-vb b/ncurses/terminfo/74/tvi912b-p-vb deleted file mode 100644 index d885289..0000000 Binary files a/ncurses/terminfo/74/tvi912b-p-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-unk b/ncurses/terminfo/74/tvi912b-unk deleted file mode 100644 index 8cf2896..0000000 Binary files a/ncurses/terminfo/74/tvi912b-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-unk-2p b/ncurses/terminfo/74/tvi912b-unk-2p deleted file mode 100644 index 5b19261..0000000 Binary files a/ncurses/terminfo/74/tvi912b-unk-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-unk-vb b/ncurses/terminfo/74/tvi912b-unk-vb deleted file mode 100644 index cc5ba8f..0000000 Binary files a/ncurses/terminfo/74/tvi912b-unk-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-vb b/ncurses/terminfo/74/tvi912b-vb deleted file mode 100644 index 4f28f6a..0000000 Binary files a/ncurses/terminfo/74/tvi912b-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-vb-mc b/ncurses/terminfo/74/tvi912b-vb-mc deleted file mode 100644 index e52eee5..0000000 Binary files a/ncurses/terminfo/74/tvi912b-vb-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-vb-p b/ncurses/terminfo/74/tvi912b-vb-p deleted file mode 100644 index d885289..0000000 Binary files a/ncurses/terminfo/74/tvi912b-vb-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912b-vb-unk b/ncurses/terminfo/74/tvi912b-vb-unk deleted file mode 100644 index cc5ba8f..0000000 Binary files a/ncurses/terminfo/74/tvi912b-vb-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c b/ncurses/terminfo/74/tvi912c deleted file mode 100644 index 997e031..0000000 Binary files a/ncurses/terminfo/74/tvi912c and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-2p b/ncurses/terminfo/74/tvi912c-2p deleted file mode 100644 index e5ae712..0000000 Binary files a/ncurses/terminfo/74/tvi912c-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-2p-mc b/ncurses/terminfo/74/tvi912c-2p-mc deleted file mode 100644 index a351a0b..0000000 Binary files a/ncurses/terminfo/74/tvi912c-2p-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-2p-p b/ncurses/terminfo/74/tvi912c-2p-p deleted file mode 100644 index 2efb0f7..0000000 Binary files a/ncurses/terminfo/74/tvi912c-2p-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-2p-unk b/ncurses/terminfo/74/tvi912c-2p-unk deleted file mode 100644 index 5b19261..0000000 Binary files a/ncurses/terminfo/74/tvi912c-2p-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-mc b/ncurses/terminfo/74/tvi912c-mc deleted file mode 100644 index c31df7c..0000000 Binary files a/ncurses/terminfo/74/tvi912c-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-mc-2p b/ncurses/terminfo/74/tvi912c-mc-2p deleted file mode 100644 index a351a0b..0000000 Binary files a/ncurses/terminfo/74/tvi912c-mc-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-mc-vb b/ncurses/terminfo/74/tvi912c-mc-vb deleted file mode 100644 index e52eee5..0000000 Binary files a/ncurses/terminfo/74/tvi912c-mc-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-p b/ncurses/terminfo/74/tvi912c-p deleted file mode 100644 index b0315e0..0000000 Binary files a/ncurses/terminfo/74/tvi912c-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-p-2p b/ncurses/terminfo/74/tvi912c-p-2p deleted file mode 100644 index 2efb0f7..0000000 Binary files a/ncurses/terminfo/74/tvi912c-p-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-p-vb b/ncurses/terminfo/74/tvi912c-p-vb deleted file mode 100644 index d885289..0000000 Binary files a/ncurses/terminfo/74/tvi912c-p-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-unk b/ncurses/terminfo/74/tvi912c-unk deleted file mode 100644 index 8cf2896..0000000 Binary files a/ncurses/terminfo/74/tvi912c-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-unk-2p b/ncurses/terminfo/74/tvi912c-unk-2p deleted file mode 100644 index 5b19261..0000000 Binary files a/ncurses/terminfo/74/tvi912c-unk-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-unk-vb b/ncurses/terminfo/74/tvi912c-unk-vb deleted file mode 100644 index cc5ba8f..0000000 Binary files a/ncurses/terminfo/74/tvi912c-unk-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-vb b/ncurses/terminfo/74/tvi912c-vb deleted file mode 100644 index 4f28f6a..0000000 Binary files a/ncurses/terminfo/74/tvi912c-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-vb-mc b/ncurses/terminfo/74/tvi912c-vb-mc deleted file mode 100644 index e52eee5..0000000 Binary files a/ncurses/terminfo/74/tvi912c-vb-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-vb-p b/ncurses/terminfo/74/tvi912c-vb-p deleted file mode 100644 index d885289..0000000 Binary files a/ncurses/terminfo/74/tvi912c-vb-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912c-vb-unk b/ncurses/terminfo/74/tvi912c-vb-unk deleted file mode 100644 index cc5ba8f..0000000 Binary files a/ncurses/terminfo/74/tvi912c-vb-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi912cc b/ncurses/terminfo/74/tvi912cc deleted file mode 100644 index 7bb4c89..0000000 Binary files a/ncurses/terminfo/74/tvi912cc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi914 b/ncurses/terminfo/74/tvi914 deleted file mode 100644 index 35b3e7a..0000000 Binary files a/ncurses/terminfo/74/tvi914 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920 b/ncurses/terminfo/74/tvi920 deleted file mode 100644 index 35b3e7a..0000000 Binary files a/ncurses/terminfo/74/tvi920 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b b/ncurses/terminfo/74/tvi920b deleted file mode 100644 index 228dd01..0000000 Binary files a/ncurses/terminfo/74/tvi920b and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b+fn b/ncurses/terminfo/74/tvi920b+fn deleted file mode 100644 index e06daf5..0000000 Binary files a/ncurses/terminfo/74/tvi920b+fn and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-2p b/ncurses/terminfo/74/tvi920b-2p deleted file mode 100644 index 263fdf4..0000000 Binary files a/ncurses/terminfo/74/tvi920b-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-2p-mc b/ncurses/terminfo/74/tvi920b-2p-mc deleted file mode 100644 index 7b0de79..0000000 Binary files a/ncurses/terminfo/74/tvi920b-2p-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-2p-p b/ncurses/terminfo/74/tvi920b-2p-p deleted file mode 100644 index fca5308..0000000 Binary files a/ncurses/terminfo/74/tvi920b-2p-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-2p-unk b/ncurses/terminfo/74/tvi920b-2p-unk deleted file mode 100644 index 641deae..0000000 Binary files a/ncurses/terminfo/74/tvi920b-2p-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-mc b/ncurses/terminfo/74/tvi920b-mc deleted file mode 100644 index 046f80f..0000000 Binary files a/ncurses/terminfo/74/tvi920b-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-mc-2p b/ncurses/terminfo/74/tvi920b-mc-2p deleted file mode 100644 index 7b0de79..0000000 Binary files a/ncurses/terminfo/74/tvi920b-mc-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-mc-vb b/ncurses/terminfo/74/tvi920b-mc-vb deleted file mode 100644 index 3ed007f..0000000 Binary files a/ncurses/terminfo/74/tvi920b-mc-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-p b/ncurses/terminfo/74/tvi920b-p deleted file mode 100644 index 1ee871c..0000000 Binary files a/ncurses/terminfo/74/tvi920b-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-p-2p b/ncurses/terminfo/74/tvi920b-p-2p deleted file mode 100644 index fca5308..0000000 Binary files a/ncurses/terminfo/74/tvi920b-p-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-p-vb b/ncurses/terminfo/74/tvi920b-p-vb deleted file mode 100644 index 47bed6b..0000000 Binary files a/ncurses/terminfo/74/tvi920b-p-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-unk b/ncurses/terminfo/74/tvi920b-unk deleted file mode 100644 index 5efdd7b..0000000 Binary files a/ncurses/terminfo/74/tvi920b-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-unk-2p b/ncurses/terminfo/74/tvi920b-unk-2p deleted file mode 100644 index 641deae..0000000 Binary files a/ncurses/terminfo/74/tvi920b-unk-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-unk-vb b/ncurses/terminfo/74/tvi920b-unk-vb deleted file mode 100644 index e75a80c..0000000 Binary files a/ncurses/terminfo/74/tvi920b-unk-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-vb b/ncurses/terminfo/74/tvi920b-vb deleted file mode 100644 index 6626e45..0000000 Binary files a/ncurses/terminfo/74/tvi920b-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-vb-mc b/ncurses/terminfo/74/tvi920b-vb-mc deleted file mode 100644 index 3ed007f..0000000 Binary files a/ncurses/terminfo/74/tvi920b-vb-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-vb-p b/ncurses/terminfo/74/tvi920b-vb-p deleted file mode 100644 index 47bed6b..0000000 Binary files a/ncurses/terminfo/74/tvi920b-vb-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920b-vb-unk b/ncurses/terminfo/74/tvi920b-vb-unk deleted file mode 100644 index e75a80c..0000000 Binary files a/ncurses/terminfo/74/tvi920b-vb-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c b/ncurses/terminfo/74/tvi920c deleted file mode 100644 index 228dd01..0000000 Binary files a/ncurses/terminfo/74/tvi920c and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-2p b/ncurses/terminfo/74/tvi920c-2p deleted file mode 100644 index 263fdf4..0000000 Binary files a/ncurses/terminfo/74/tvi920c-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-2p-mc b/ncurses/terminfo/74/tvi920c-2p-mc deleted file mode 100644 index 7b0de79..0000000 Binary files a/ncurses/terminfo/74/tvi920c-2p-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-2p-p b/ncurses/terminfo/74/tvi920c-2p-p deleted file mode 100644 index fca5308..0000000 Binary files a/ncurses/terminfo/74/tvi920c-2p-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-2p-unk b/ncurses/terminfo/74/tvi920c-2p-unk deleted file mode 100644 index 641deae..0000000 Binary files a/ncurses/terminfo/74/tvi920c-2p-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-mc b/ncurses/terminfo/74/tvi920c-mc deleted file mode 100644 index 046f80f..0000000 Binary files a/ncurses/terminfo/74/tvi920c-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-mc-2p b/ncurses/terminfo/74/tvi920c-mc-2p deleted file mode 100644 index 7b0de79..0000000 Binary files a/ncurses/terminfo/74/tvi920c-mc-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-mc-vb b/ncurses/terminfo/74/tvi920c-mc-vb deleted file mode 100644 index 3ed007f..0000000 Binary files a/ncurses/terminfo/74/tvi920c-mc-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-p b/ncurses/terminfo/74/tvi920c-p deleted file mode 100644 index 1ee871c..0000000 Binary files a/ncurses/terminfo/74/tvi920c-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-p-2p b/ncurses/terminfo/74/tvi920c-p-2p deleted file mode 100644 index fca5308..0000000 Binary files a/ncurses/terminfo/74/tvi920c-p-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-p-vb b/ncurses/terminfo/74/tvi920c-p-vb deleted file mode 100644 index 47bed6b..0000000 Binary files a/ncurses/terminfo/74/tvi920c-p-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-unk b/ncurses/terminfo/74/tvi920c-unk deleted file mode 100644 index 5efdd7b..0000000 Binary files a/ncurses/terminfo/74/tvi920c-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-unk-2p b/ncurses/terminfo/74/tvi920c-unk-2p deleted file mode 100644 index 641deae..0000000 Binary files a/ncurses/terminfo/74/tvi920c-unk-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-unk-vb b/ncurses/terminfo/74/tvi920c-unk-vb deleted file mode 100644 index e75a80c..0000000 Binary files a/ncurses/terminfo/74/tvi920c-unk-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-vb b/ncurses/terminfo/74/tvi920c-vb deleted file mode 100644 index 6626e45..0000000 Binary files a/ncurses/terminfo/74/tvi920c-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-vb-mc b/ncurses/terminfo/74/tvi920c-vb-mc deleted file mode 100644 index 3ed007f..0000000 Binary files a/ncurses/terminfo/74/tvi920c-vb-mc and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-vb-p b/ncurses/terminfo/74/tvi920c-vb-p deleted file mode 100644 index 47bed6b..0000000 Binary files a/ncurses/terminfo/74/tvi920c-vb-p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi920c-vb-unk b/ncurses/terminfo/74/tvi920c-vb-unk deleted file mode 100644 index e75a80c..0000000 Binary files a/ncurses/terminfo/74/tvi920c-vb-unk and /dev/null differ diff --git a/ncurses/terminfo/74/tvi921 b/ncurses/terminfo/74/tvi921 deleted file mode 100644 index 7fe2c33..0000000 Binary files a/ncurses/terminfo/74/tvi921 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi924 b/ncurses/terminfo/74/tvi924 deleted file mode 100644 index 3c6e7d5..0000000 Binary files a/ncurses/terminfo/74/tvi924 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi925 b/ncurses/terminfo/74/tvi925 deleted file mode 100644 index d3d06c8..0000000 Binary files a/ncurses/terminfo/74/tvi925 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi925-hi b/ncurses/terminfo/74/tvi925-hi deleted file mode 100644 index 18d282d..0000000 Binary files a/ncurses/terminfo/74/tvi925-hi and /dev/null differ diff --git a/ncurses/terminfo/74/tvi92B b/ncurses/terminfo/74/tvi92B deleted file mode 100644 index 386a8b4..0000000 Binary files a/ncurses/terminfo/74/tvi92B and /dev/null differ diff --git a/ncurses/terminfo/74/tvi92D b/ncurses/terminfo/74/tvi92D deleted file mode 100644 index 1916df5..0000000 Binary files a/ncurses/terminfo/74/tvi92D and /dev/null differ diff --git a/ncurses/terminfo/74/tvi950 b/ncurses/terminfo/74/tvi950 deleted file mode 100644 index 7e0eae9..0000000 Binary files a/ncurses/terminfo/74/tvi950 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi950-2p b/ncurses/terminfo/74/tvi950-2p deleted file mode 100644 index 003ba33..0000000 Binary files a/ncurses/terminfo/74/tvi950-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi950-4p b/ncurses/terminfo/74/tvi950-4p deleted file mode 100644 index 3f8fd7a..0000000 Binary files a/ncurses/terminfo/74/tvi950-4p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi950-rv b/ncurses/terminfo/74/tvi950-rv deleted file mode 100644 index 5c16c45..0000000 Binary files a/ncurses/terminfo/74/tvi950-rv and /dev/null differ diff --git a/ncurses/terminfo/74/tvi950-rv-2p b/ncurses/terminfo/74/tvi950-rv-2p deleted file mode 100644 index 8d1c869..0000000 Binary files a/ncurses/terminfo/74/tvi950-rv-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi950-rv-4p b/ncurses/terminfo/74/tvi950-rv-4p deleted file mode 100644 index 3dab08c..0000000 Binary files a/ncurses/terminfo/74/tvi950-rv-4p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi955 b/ncurses/terminfo/74/tvi955 deleted file mode 100644 index b4bc2af..0000000 Binary files a/ncurses/terminfo/74/tvi955 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi955-hb b/ncurses/terminfo/74/tvi955-hb deleted file mode 100644 index 1a6ab87..0000000 Binary files a/ncurses/terminfo/74/tvi955-hb and /dev/null differ diff --git a/ncurses/terminfo/74/tvi955-w b/ncurses/terminfo/74/tvi955-w deleted file mode 100644 index a4da667..0000000 Binary files a/ncurses/terminfo/74/tvi955-w and /dev/null differ diff --git a/ncurses/terminfo/74/tvi970 b/ncurses/terminfo/74/tvi970 deleted file mode 100644 index 23a1055..0000000 Binary files a/ncurses/terminfo/74/tvi970 and /dev/null differ diff --git a/ncurses/terminfo/74/tvi970-2p b/ncurses/terminfo/74/tvi970-2p deleted file mode 100644 index e6f5836..0000000 Binary files a/ncurses/terminfo/74/tvi970-2p and /dev/null differ diff --git a/ncurses/terminfo/74/tvi970-vb b/ncurses/terminfo/74/tvi970-vb deleted file mode 100644 index d6f0a6b..0000000 Binary files a/ncurses/terminfo/74/tvi970-vb and /dev/null differ diff --git a/ncurses/terminfo/74/tvipt b/ncurses/terminfo/74/tvipt deleted file mode 100644 index beb2125..0000000 Binary files a/ncurses/terminfo/74/tvipt and /dev/null differ diff --git a/ncurses/terminfo/74/tws-generic b/ncurses/terminfo/74/tws-generic deleted file mode 100644 index 60eb659..0000000 Binary files a/ncurses/terminfo/74/tws-generic and /dev/null differ diff --git a/ncurses/terminfo/74/tws2102-sna b/ncurses/terminfo/74/tws2102-sna deleted file mode 100644 index 9f580d1..0000000 Binary files a/ncurses/terminfo/74/tws2102-sna and /dev/null differ diff --git a/ncurses/terminfo/74/tws2103 b/ncurses/terminfo/74/tws2103 deleted file mode 100644 index 2bf1f70..0000000 Binary files a/ncurses/terminfo/74/tws2103 and /dev/null differ diff --git a/ncurses/terminfo/74/tws2103-sna b/ncurses/terminfo/74/tws2103-sna deleted file mode 100644 index 82a6af1..0000000 Binary files a/ncurses/terminfo/74/tws2103-sna and /dev/null differ diff --git a/ncurses/terminfo/75/ultima2 b/ncurses/terminfo/75/ultima2 deleted file mode 100644 index 74398e0..0000000 Binary files a/ncurses/terminfo/75/ultima2 and /dev/null differ diff --git a/ncurses/terminfo/75/ultimaII b/ncurses/terminfo/75/ultimaII deleted file mode 100644 index 74398e0..0000000 Binary files a/ncurses/terminfo/75/ultimaII and /dev/null differ diff --git a/ncurses/terminfo/75/uniterm b/ncurses/terminfo/75/uniterm deleted file mode 100644 index b4bcd43..0000000 Binary files a/ncurses/terminfo/75/uniterm and /dev/null differ diff --git a/ncurses/terminfo/75/uniterm49 b/ncurses/terminfo/75/uniterm49 deleted file mode 100644 index b4bcd43..0000000 Binary files a/ncurses/terminfo/75/uniterm49 and /dev/null differ diff --git a/ncurses/terminfo/75/unixpc b/ncurses/terminfo/75/unixpc deleted file mode 100644 index b41843d..0000000 Binary files a/ncurses/terminfo/75/unixpc and /dev/null differ diff --git a/ncurses/terminfo/75/unknown b/ncurses/terminfo/75/unknown deleted file mode 100644 index cc9b90c..0000000 Binary files a/ncurses/terminfo/75/unknown and /dev/null differ diff --git a/ncurses/terminfo/75/uts30 b/ncurses/terminfo/75/uts30 deleted file mode 100644 index 84253e3..0000000 Binary files a/ncurses/terminfo/75/uts30 and /dev/null differ diff --git a/ncurses/terminfo/75/uwin b/ncurses/terminfo/75/uwin deleted file mode 100644 index 27199a3..0000000 Binary files a/ncurses/terminfo/75/uwin and /dev/null differ diff --git a/ncurses/terminfo/76/v200-nam b/ncurses/terminfo/76/v200-nam deleted file mode 100644 index 5d0de07..0000000 Binary files a/ncurses/terminfo/76/v200-nam and /dev/null differ diff --git a/ncurses/terminfo/76/v320n b/ncurses/terminfo/76/v320n deleted file mode 100644 index 013e5f1..0000000 Binary files a/ncurses/terminfo/76/v320n and /dev/null differ diff --git a/ncurses/terminfo/76/v3220 b/ncurses/terminfo/76/v3220 deleted file mode 100644 index 796a6f2..0000000 Binary files a/ncurses/terminfo/76/v3220 and /dev/null differ diff --git a/ncurses/terminfo/76/v5410 b/ncurses/terminfo/76/v5410 deleted file mode 100644 index 386e102..0000000 Binary files a/ncurses/terminfo/76/v5410 and /dev/null differ diff --git a/ncurses/terminfo/76/vanilla b/ncurses/terminfo/76/vanilla deleted file mode 100644 index 7d5d0f6..0000000 Binary files a/ncurses/terminfo/76/vanilla and /dev/null differ diff --git a/ncurses/terminfo/76/vapple b/ncurses/terminfo/76/vapple deleted file mode 100644 index 6629e81..0000000 Binary files a/ncurses/terminfo/76/vapple and /dev/null differ diff --git a/ncurses/terminfo/76/vc103 b/ncurses/terminfo/76/vc103 deleted file mode 100644 index f1978fa..0000000 Binary files a/ncurses/terminfo/76/vc103 and /dev/null differ diff --git a/ncurses/terminfo/76/vc203 b/ncurses/terminfo/76/vc203 deleted file mode 100644 index f1978fa..0000000 Binary files a/ncurses/terminfo/76/vc203 and /dev/null differ diff --git a/ncurses/terminfo/76/vc303 b/ncurses/terminfo/76/vc303 deleted file mode 100644 index f1978fa..0000000 Binary files a/ncurses/terminfo/76/vc303 and /dev/null differ diff --git a/ncurses/terminfo/76/vc303a b/ncurses/terminfo/76/vc303a deleted file mode 100644 index cee4c66..0000000 Binary files a/ncurses/terminfo/76/vc303a and /dev/null differ diff --git a/ncurses/terminfo/76/vc403a b/ncurses/terminfo/76/vc403a deleted file mode 100644 index cee4c66..0000000 Binary files a/ncurses/terminfo/76/vc403a and /dev/null differ diff --git a/ncurses/terminfo/76/vc404 b/ncurses/terminfo/76/vc404 deleted file mode 100644 index 73f89f7..0000000 Binary files a/ncurses/terminfo/76/vc404 and /dev/null differ diff --git a/ncurses/terminfo/76/vc404-s b/ncurses/terminfo/76/vc404-s deleted file mode 100644 index 75e2559..0000000 Binary files a/ncurses/terminfo/76/vc404-s and /dev/null differ diff --git a/ncurses/terminfo/76/vc414 b/ncurses/terminfo/76/vc414 deleted file mode 100644 index 22a073f..0000000 Binary files a/ncurses/terminfo/76/vc414 and /dev/null differ diff --git a/ncurses/terminfo/76/vc414h b/ncurses/terminfo/76/vc414h deleted file mode 100644 index 22a073f..0000000 Binary files a/ncurses/terminfo/76/vc414h and /dev/null differ diff --git a/ncurses/terminfo/76/vc415 b/ncurses/terminfo/76/vc415 deleted file mode 100644 index fcdc81f..0000000 Binary files a/ncurses/terminfo/76/vc415 and /dev/null differ diff --git a/ncurses/terminfo/76/venix b/ncurses/terminfo/76/venix deleted file mode 100644 index 32a7ec0..0000000 Binary files a/ncurses/terminfo/76/venix and /dev/null differ diff --git a/ncurses/terminfo/76/versaterm b/ncurses/terminfo/76/versaterm deleted file mode 100644 index 57c7cda..0000000 Binary files a/ncurses/terminfo/76/versaterm and /dev/null differ diff --git a/ncurses/terminfo/76/vi200 b/ncurses/terminfo/76/vi200 deleted file mode 100644 index 1895213..0000000 Binary files a/ncurses/terminfo/76/vi200 and /dev/null differ diff --git a/ncurses/terminfo/76/vi200-f b/ncurses/terminfo/76/vi200-f deleted file mode 100644 index bda3aa6..0000000 Binary files a/ncurses/terminfo/76/vi200-f and /dev/null differ diff --git a/ncurses/terminfo/76/vi200-rv b/ncurses/terminfo/76/vi200-rv deleted file mode 100644 index 95fe922..0000000 Binary files a/ncurses/terminfo/76/vi200-rv and /dev/null differ diff --git a/ncurses/terminfo/76/vi300 b/ncurses/terminfo/76/vi300 deleted file mode 100644 index 26cfcf7..0000000 Binary files a/ncurses/terminfo/76/vi300 and /dev/null differ diff --git a/ncurses/terminfo/76/vi300-old b/ncurses/terminfo/76/vi300-old deleted file mode 100644 index ada51c3..0000000 Binary files a/ncurses/terminfo/76/vi300-old and /dev/null differ diff --git a/ncurses/terminfo/76/vi50 b/ncurses/terminfo/76/vi50 deleted file mode 100644 index c42dbd2..0000000 Binary files a/ncurses/terminfo/76/vi50 and /dev/null differ diff --git a/ncurses/terminfo/76/vi500 b/ncurses/terminfo/76/vi500 deleted file mode 100644 index 4597335..0000000 Binary files a/ncurses/terminfo/76/vi500 and /dev/null differ diff --git a/ncurses/terminfo/76/vi50adm b/ncurses/terminfo/76/vi50adm deleted file mode 100644 index 47d290d..0000000 Binary files a/ncurses/terminfo/76/vi50adm and /dev/null differ diff --git a/ncurses/terminfo/76/vi55 b/ncurses/terminfo/76/vi55 deleted file mode 100644 index 86ad138..0000000 Binary files a/ncurses/terminfo/76/vi55 and /dev/null differ diff --git a/ncurses/terminfo/76/vi550 b/ncurses/terminfo/76/vi550 deleted file mode 100644 index f5e4f7e..0000000 Binary files a/ncurses/terminfo/76/vi550 and /dev/null differ diff --git a/ncurses/terminfo/76/vi603 b/ncurses/terminfo/76/vi603 deleted file mode 100644 index 07e162a..0000000 Binary files a/ncurses/terminfo/76/vi603 and /dev/null differ diff --git a/ncurses/terminfo/76/viewpoint b/ncurses/terminfo/76/viewpoint deleted file mode 100644 index 46b5a90..0000000 Binary files a/ncurses/terminfo/76/viewpoint and /dev/null differ diff --git a/ncurses/terminfo/76/viewpoint3a+ b/ncurses/terminfo/76/viewpoint3a+ deleted file mode 100644 index 4f0f82c..0000000 Binary files a/ncurses/terminfo/76/viewpoint3a+ and /dev/null differ diff --git a/ncurses/terminfo/76/viewpoint60 b/ncurses/terminfo/76/viewpoint60 deleted file mode 100644 index 030858d..0000000 Binary files a/ncurses/terminfo/76/viewpoint60 and /dev/null differ diff --git a/ncurses/terminfo/76/viewpoint90 b/ncurses/terminfo/76/viewpoint90 deleted file mode 100644 index 81cbbf5..0000000 Binary files a/ncurses/terminfo/76/viewpoint90 and /dev/null differ diff --git a/ncurses/terminfo/76/vip b/ncurses/terminfo/76/vip deleted file mode 100644 index 010a8d1..0000000 Binary files a/ncurses/terminfo/76/vip and /dev/null differ diff --git a/ncurses/terminfo/76/vip-H b/ncurses/terminfo/76/vip-H deleted file mode 100644 index 8cf4e92..0000000 Binary files a/ncurses/terminfo/76/vip-H and /dev/null differ diff --git a/ncurses/terminfo/76/vip-Hw b/ncurses/terminfo/76/vip-Hw deleted file mode 100644 index 4b09f03..0000000 Binary files a/ncurses/terminfo/76/vip-Hw and /dev/null differ diff --git a/ncurses/terminfo/76/vip-w b/ncurses/terminfo/76/vip-w deleted file mode 100644 index b710a2a..0000000 Binary files a/ncurses/terminfo/76/vip-w and /dev/null differ diff --git a/ncurses/terminfo/76/vip7800-H b/ncurses/terminfo/76/vip7800-H deleted file mode 100644 index 8cf4e92..0000000 Binary files a/ncurses/terminfo/76/vip7800-H and /dev/null differ diff --git a/ncurses/terminfo/76/vip7800-Hw b/ncurses/terminfo/76/vip7800-Hw deleted file mode 100644 index 4b09f03..0000000 Binary files a/ncurses/terminfo/76/vip7800-Hw and /dev/null differ diff --git a/ncurses/terminfo/76/vip7800-w b/ncurses/terminfo/76/vip7800-w deleted file mode 100644 index b710a2a..0000000 Binary files a/ncurses/terminfo/76/vip7800-w and /dev/null differ diff --git a/ncurses/terminfo/76/visa50 b/ncurses/terminfo/76/visa50 deleted file mode 100644 index 2a31eb7..0000000 Binary files a/ncurses/terminfo/76/visa50 and /dev/null differ diff --git a/ncurses/terminfo/76/visual603 b/ncurses/terminfo/76/visual603 deleted file mode 100644 index 07e162a..0000000 Binary files a/ncurses/terminfo/76/visual603 and /dev/null differ diff --git a/ncurses/terminfo/76/vitty b/ncurses/terminfo/76/vitty deleted file mode 100644 index b313bcc..0000000 Binary files a/ncurses/terminfo/76/vitty and /dev/null differ diff --git a/ncurses/terminfo/76/vk100 b/ncurses/terminfo/76/vk100 deleted file mode 100644 index 7502f57..0000000 Binary files a/ncurses/terminfo/76/vk100 and /dev/null differ diff --git a/ncurses/terminfo/76/vp3a+ b/ncurses/terminfo/76/vp3a+ deleted file mode 100644 index 4f0f82c..0000000 Binary files a/ncurses/terminfo/76/vp3a+ and /dev/null differ diff --git a/ncurses/terminfo/76/vp60 b/ncurses/terminfo/76/vp60 deleted file mode 100644 index 030858d..0000000 Binary files a/ncurses/terminfo/76/vp60 and /dev/null differ diff --git a/ncurses/terminfo/76/vp90 b/ncurses/terminfo/76/vp90 deleted file mode 100644 index 81cbbf5..0000000 Binary files a/ncurses/terminfo/76/vp90 and /dev/null differ diff --git a/ncurses/terminfo/76/vremote b/ncurses/terminfo/76/vremote deleted file mode 100644 index e7fff1e..0000000 Binary files a/ncurses/terminfo/76/vremote and /dev/null differ diff --git a/ncurses/terminfo/76/vs100 b/ncurses/terminfo/76/vs100 deleted file mode 100644 index 5349f6d..0000000 Binary files a/ncurses/terminfo/76/vs100 and /dev/null differ diff --git a/ncurses/terminfo/76/vs100-x10 b/ncurses/terminfo/76/vs100-x10 deleted file mode 100644 index 92abb2f..0000000 Binary files a/ncurses/terminfo/76/vs100-x10 and /dev/null differ diff --git a/ncurses/terminfo/76/vsc b/ncurses/terminfo/76/vsc deleted file mode 100644 index 7deff9d..0000000 Binary files a/ncurses/terminfo/76/vsc and /dev/null differ diff --git a/ncurses/terminfo/76/vt-61 b/ncurses/terminfo/76/vt-61 deleted file mode 100644 index 24b60b3..0000000 Binary files a/ncurses/terminfo/76/vt-61 and /dev/null differ diff --git a/ncurses/terminfo/76/vt-utf8 b/ncurses/terminfo/76/vt-utf8 deleted file mode 100644 index 1116d8f..0000000 Binary files a/ncurses/terminfo/76/vt-utf8 and /dev/null differ diff --git a/ncurses/terminfo/76/vt100 b/ncurses/terminfo/76/vt100 deleted file mode 100644 index 1a7176d..0000000 Binary files a/ncurses/terminfo/76/vt100 and /dev/null differ diff --git a/ncurses/terminfo/76/vt100+ b/ncurses/terminfo/76/vt100+ deleted file mode 100644 index 3a07b02..0000000 Binary files a/ncurses/terminfo/76/vt100+ and /dev/null differ diff --git a/ncurses/terminfo/76/vt100+enq b/ncurses/terminfo/76/vt100+enq deleted file mode 100644 index 9205621..0000000 Binary files a/ncurses/terminfo/76/vt100+enq and /dev/null differ diff --git a/ncurses/terminfo/76/vt100+fnkeys b/ncurses/terminfo/76/vt100+fnkeys deleted file mode 100644 index 58dc0f3..0000000 Binary files a/ncurses/terminfo/76/vt100+fnkeys and /dev/null differ diff --git a/ncurses/terminfo/76/vt100+keypad b/ncurses/terminfo/76/vt100+keypad deleted file mode 100644 index 8f9e6f7..0000000 Binary files a/ncurses/terminfo/76/vt100+keypad and /dev/null differ diff --git a/ncurses/terminfo/76/vt100+pfkeys b/ncurses/terminfo/76/vt100+pfkeys deleted file mode 100644 index c19ceee..0000000 Binary files a/ncurses/terminfo/76/vt100+pfkeys and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-am b/ncurses/terminfo/76/vt100-am deleted file mode 100644 index 1a7176d..0000000 Binary files a/ncurses/terminfo/76/vt100-am and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-bm b/ncurses/terminfo/76/vt100-bm deleted file mode 100644 index cf96637..0000000 Binary files a/ncurses/terminfo/76/vt100-bm and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-bm-o b/ncurses/terminfo/76/vt100-bm-o deleted file mode 100644 index 0c11a5f..0000000 Binary files a/ncurses/terminfo/76/vt100-bm-o and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-bot-s b/ncurses/terminfo/76/vt100-bot-s deleted file mode 100644 index 28940f8..0000000 Binary files a/ncurses/terminfo/76/vt100-bot-s and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-nam b/ncurses/terminfo/76/vt100-nam deleted file mode 100644 index 5436528..0000000 Binary files a/ncurses/terminfo/76/vt100-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-nam-w b/ncurses/terminfo/76/vt100-nam-w deleted file mode 100644 index baab94c..0000000 Binary files a/ncurses/terminfo/76/vt100-nam-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-nav b/ncurses/terminfo/76/vt100-nav deleted file mode 100644 index 9727f02..0000000 Binary files a/ncurses/terminfo/76/vt100-nav and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-nav-w b/ncurses/terminfo/76/vt100-nav-w deleted file mode 100644 index 851d0a9..0000000 Binary files a/ncurses/terminfo/76/vt100-nav-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-putty b/ncurses/terminfo/76/vt100-putty deleted file mode 100644 index 0119c4d..0000000 Binary files a/ncurses/terminfo/76/vt100-putty and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-s b/ncurses/terminfo/76/vt100-s deleted file mode 100644 index 125b7d6..0000000 Binary files a/ncurses/terminfo/76/vt100-s and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-s-bot b/ncurses/terminfo/76/vt100-s-bot deleted file mode 100644 index 28940f8..0000000 Binary files a/ncurses/terminfo/76/vt100-s-bot and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-s-top b/ncurses/terminfo/76/vt100-s-top deleted file mode 100644 index 125b7d6..0000000 Binary files a/ncurses/terminfo/76/vt100-s-top and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-top-s b/ncurses/terminfo/76/vt100-top-s deleted file mode 100644 index 125b7d6..0000000 Binary files a/ncurses/terminfo/76/vt100-top-s and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-vb b/ncurses/terminfo/76/vt100-vb deleted file mode 100644 index 2ce1694..0000000 Binary files a/ncurses/terminfo/76/vt100-vb and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-w b/ncurses/terminfo/76/vt100-w deleted file mode 100644 index 3096fd0..0000000 Binary files a/ncurses/terminfo/76/vt100-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-w-am b/ncurses/terminfo/76/vt100-w-am deleted file mode 100644 index 3096fd0..0000000 Binary files a/ncurses/terminfo/76/vt100-w-am and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-w-nam b/ncurses/terminfo/76/vt100-w-nam deleted file mode 100644 index baab94c..0000000 Binary files a/ncurses/terminfo/76/vt100-w-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt100-w-nav b/ncurses/terminfo/76/vt100-w-nav deleted file mode 100644 index 851d0a9..0000000 Binary files a/ncurses/terminfo/76/vt100-w-nav and /dev/null differ diff --git a/ncurses/terminfo/76/vt100nam b/ncurses/terminfo/76/vt100nam deleted file mode 100644 index 5436528..0000000 Binary files a/ncurses/terminfo/76/vt100nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt102 b/ncurses/terminfo/76/vt102 deleted file mode 100644 index b9a393c..0000000 Binary files a/ncurses/terminfo/76/vt102 and /dev/null differ diff --git a/ncurses/terminfo/76/vt102+enq b/ncurses/terminfo/76/vt102+enq deleted file mode 100644 index be5d59d..0000000 Binary files a/ncurses/terminfo/76/vt102+enq and /dev/null differ diff --git a/ncurses/terminfo/76/vt102-nsgr b/ncurses/terminfo/76/vt102-nsgr deleted file mode 100644 index 38191d2..0000000 Binary files a/ncurses/terminfo/76/vt102-nsgr and /dev/null differ diff --git a/ncurses/terminfo/76/vt102-w b/ncurses/terminfo/76/vt102-w deleted file mode 100644 index 687c666..0000000 Binary files a/ncurses/terminfo/76/vt102-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt125 b/ncurses/terminfo/76/vt125 deleted file mode 100644 index 607b5b8..0000000 Binary files a/ncurses/terminfo/76/vt125 and /dev/null differ diff --git a/ncurses/terminfo/76/vt131 b/ncurses/terminfo/76/vt131 deleted file mode 100644 index bfbb4b1..0000000 Binary files a/ncurses/terminfo/76/vt131 and /dev/null differ diff --git a/ncurses/terminfo/76/vt132 b/ncurses/terminfo/76/vt132 deleted file mode 100644 index 22e55ef..0000000 Binary files a/ncurses/terminfo/76/vt132 and /dev/null differ diff --git a/ncurses/terminfo/76/vt200 b/ncurses/terminfo/76/vt200 deleted file mode 100644 index b3d4d9f..0000000 Binary files a/ncurses/terminfo/76/vt200 and /dev/null differ diff --git a/ncurses/terminfo/76/vt200-8 b/ncurses/terminfo/76/vt200-8 deleted file mode 100644 index d470e6c..0000000 Binary files a/ncurses/terminfo/76/vt200-8 and /dev/null differ diff --git a/ncurses/terminfo/76/vt200-8bit b/ncurses/terminfo/76/vt200-8bit deleted file mode 100644 index d470e6c..0000000 Binary files a/ncurses/terminfo/76/vt200-8bit and /dev/null differ diff --git a/ncurses/terminfo/76/vt200-js b/ncurses/terminfo/76/vt200-js deleted file mode 100644 index 5376fd9..0000000 Binary files a/ncurses/terminfo/76/vt200-js and /dev/null differ diff --git a/ncurses/terminfo/76/vt200-old b/ncurses/terminfo/76/vt200-old deleted file mode 100644 index 1016ac5..0000000 Binary files a/ncurses/terminfo/76/vt200-old and /dev/null differ diff --git a/ncurses/terminfo/76/vt200-w b/ncurses/terminfo/76/vt200-w deleted file mode 100644 index ec0a654..0000000 Binary files a/ncurses/terminfo/76/vt200-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt220 b/ncurses/terminfo/76/vt220 deleted file mode 100644 index b3d4d9f..0000000 Binary files a/ncurses/terminfo/76/vt220 and /dev/null differ diff --git a/ncurses/terminfo/76/vt220+keypad b/ncurses/terminfo/76/vt220+keypad deleted file mode 100644 index bcb32d6..0000000 Binary files a/ncurses/terminfo/76/vt220+keypad and /dev/null differ diff --git a/ncurses/terminfo/76/vt220-8 b/ncurses/terminfo/76/vt220-8 deleted file mode 100644 index d470e6c..0000000 Binary files a/ncurses/terminfo/76/vt220-8 and /dev/null differ diff --git a/ncurses/terminfo/76/vt220-8bit b/ncurses/terminfo/76/vt220-8bit deleted file mode 100644 index d470e6c..0000000 Binary files a/ncurses/terminfo/76/vt220-8bit and /dev/null differ diff --git a/ncurses/terminfo/76/vt220-js b/ncurses/terminfo/76/vt220-js deleted file mode 100644 index 5376fd9..0000000 Binary files a/ncurses/terminfo/76/vt220-js and /dev/null differ diff --git a/ncurses/terminfo/76/vt220-nam b/ncurses/terminfo/76/vt220-nam deleted file mode 100644 index 5d0de07..0000000 Binary files a/ncurses/terminfo/76/vt220-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt220-old b/ncurses/terminfo/76/vt220-old deleted file mode 100644 index 1016ac5..0000000 Binary files a/ncurses/terminfo/76/vt220-old and /dev/null differ diff --git a/ncurses/terminfo/76/vt220-w b/ncurses/terminfo/76/vt220-w deleted file mode 100644 index ec0a654..0000000 Binary files a/ncurses/terminfo/76/vt220-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt220d b/ncurses/terminfo/76/vt220d deleted file mode 100644 index 206f837..0000000 Binary files a/ncurses/terminfo/76/vt220d and /dev/null differ diff --git a/ncurses/terminfo/76/vt300 b/ncurses/terminfo/76/vt300 deleted file mode 100644 index c6290d8..0000000 Binary files a/ncurses/terminfo/76/vt300 and /dev/null differ diff --git a/ncurses/terminfo/76/vt300-nam b/ncurses/terminfo/76/vt300-nam deleted file mode 100644 index 23fa8f5..0000000 Binary files a/ncurses/terminfo/76/vt300-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt300-w b/ncurses/terminfo/76/vt300-w deleted file mode 100644 index 4dd6522..0000000 Binary files a/ncurses/terminfo/76/vt300-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt300-w-nam b/ncurses/terminfo/76/vt300-w-nam deleted file mode 100644 index 0bca75c..0000000 Binary files a/ncurses/terminfo/76/vt300-w-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt320 b/ncurses/terminfo/76/vt320 deleted file mode 100644 index c6290d8..0000000 Binary files a/ncurses/terminfo/76/vt320 and /dev/null differ diff --git a/ncurses/terminfo/76/vt320-k3 b/ncurses/terminfo/76/vt320-k3 deleted file mode 100644 index d486de5..0000000 Binary files a/ncurses/terminfo/76/vt320-k3 and /dev/null differ diff --git a/ncurses/terminfo/76/vt320-k311 b/ncurses/terminfo/76/vt320-k311 deleted file mode 100644 index 5e9fba4..0000000 Binary files a/ncurses/terminfo/76/vt320-k311 and /dev/null differ diff --git a/ncurses/terminfo/76/vt320-nam b/ncurses/terminfo/76/vt320-nam deleted file mode 100644 index 23fa8f5..0000000 Binary files a/ncurses/terminfo/76/vt320-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt320-w b/ncurses/terminfo/76/vt320-w deleted file mode 100644 index 4dd6522..0000000 Binary files a/ncurses/terminfo/76/vt320-w and /dev/null differ diff --git a/ncurses/terminfo/76/vt320-w-nam b/ncurses/terminfo/76/vt320-w-nam deleted file mode 100644 index 0bca75c..0000000 Binary files a/ncurses/terminfo/76/vt320-w-nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt320nam b/ncurses/terminfo/76/vt320nam deleted file mode 100644 index 013e5f1..0000000 Binary files a/ncurses/terminfo/76/vt320nam and /dev/null differ diff --git a/ncurses/terminfo/76/vt330 b/ncurses/terminfo/76/vt330 deleted file mode 100644 index f712e03..0000000 Binary files a/ncurses/terminfo/76/vt330 and /dev/null differ diff --git a/ncurses/terminfo/76/vt340 b/ncurses/terminfo/76/vt340 deleted file mode 100644 index f712e03..0000000 Binary files a/ncurses/terminfo/76/vt340 and /dev/null differ diff --git a/ncurses/terminfo/76/vt400 b/ncurses/terminfo/76/vt400 deleted file mode 100644 index ec1df65..0000000 Binary files a/ncurses/terminfo/76/vt400 and /dev/null differ diff --git a/ncurses/terminfo/76/vt400-24 b/ncurses/terminfo/76/vt400-24 deleted file mode 100644 index ec1df65..0000000 Binary files a/ncurses/terminfo/76/vt400-24 and /dev/null differ diff --git a/ncurses/terminfo/76/vt420 b/ncurses/terminfo/76/vt420 deleted file mode 100644 index c43ada1..0000000 Binary files a/ncurses/terminfo/76/vt420 and /dev/null differ diff --git a/ncurses/terminfo/76/vt420f b/ncurses/terminfo/76/vt420f deleted file mode 100644 index cae510a..0000000 Binary files a/ncurses/terminfo/76/vt420f and /dev/null differ diff --git a/ncurses/terminfo/76/vt420pc b/ncurses/terminfo/76/vt420pc deleted file mode 100644 index 477cd00..0000000 Binary files a/ncurses/terminfo/76/vt420pc and /dev/null differ diff --git a/ncurses/terminfo/76/vt420pcdos b/ncurses/terminfo/76/vt420pcdos deleted file mode 100644 index 920ecdb..0000000 Binary files a/ncurses/terminfo/76/vt420pcdos and /dev/null differ diff --git a/ncurses/terminfo/76/vt50 b/ncurses/terminfo/76/vt50 deleted file mode 100644 index 957dad1..0000000 Binary files a/ncurses/terminfo/76/vt50 and /dev/null differ diff --git a/ncurses/terminfo/76/vt50h b/ncurses/terminfo/76/vt50h deleted file mode 100644 index b9bb9a2..0000000 Binary files a/ncurses/terminfo/76/vt50h and /dev/null differ diff --git a/ncurses/terminfo/76/vt510 b/ncurses/terminfo/76/vt510 deleted file mode 100644 index d0efb7a..0000000 Binary files a/ncurses/terminfo/76/vt510 and /dev/null differ diff --git a/ncurses/terminfo/76/vt510pc b/ncurses/terminfo/76/vt510pc deleted file mode 100644 index 8a9ab44..0000000 Binary files a/ncurses/terminfo/76/vt510pc and /dev/null differ diff --git a/ncurses/terminfo/76/vt510pcdos b/ncurses/terminfo/76/vt510pcdos deleted file mode 100644 index 40511a6..0000000 Binary files a/ncurses/terminfo/76/vt510pcdos and /dev/null differ diff --git a/ncurses/terminfo/76/vt52 b/ncurses/terminfo/76/vt52 deleted file mode 100644 index b3f466f..0000000 Binary files a/ncurses/terminfo/76/vt52 and /dev/null differ diff --git a/ncurses/terminfo/76/vt520 b/ncurses/terminfo/76/vt520 deleted file mode 100644 index 3524097..0000000 Binary files a/ncurses/terminfo/76/vt520 and /dev/null differ diff --git a/ncurses/terminfo/76/vt525 b/ncurses/terminfo/76/vt525 deleted file mode 100644 index 60af961..0000000 Binary files a/ncurses/terminfo/76/vt525 and /dev/null differ diff --git a/ncurses/terminfo/76/vt61 b/ncurses/terminfo/76/vt61 deleted file mode 100644 index 24b60b3..0000000 Binary files a/ncurses/terminfo/76/vt61 and /dev/null differ diff --git a/ncurses/terminfo/76/vt61.5 b/ncurses/terminfo/76/vt61.5 deleted file mode 100644 index 24b60b3..0000000 Binary files a/ncurses/terminfo/76/vt61.5 and /dev/null differ diff --git a/ncurses/terminfo/76/vtnt b/ncurses/terminfo/76/vtnt deleted file mode 100644 index 4f71d61..0000000 Binary files a/ncurses/terminfo/76/vtnt and /dev/null differ diff --git a/ncurses/terminfo/76/vv100 b/ncurses/terminfo/76/vv100 deleted file mode 100644 index d912b72..0000000 Binary files a/ncurses/terminfo/76/vv100 and /dev/null differ diff --git a/ncurses/terminfo/77/wren b/ncurses/terminfo/77/wren deleted file mode 100644 index 7965ed8..0000000 Binary files a/ncurses/terminfo/77/wren and /dev/null differ diff --git a/ncurses/terminfo/77/wrenw b/ncurses/terminfo/77/wrenw deleted file mode 100644 index 531bc42..0000000 Binary files a/ncurses/terminfo/77/wrenw and /dev/null differ diff --git a/ncurses/terminfo/77/wsiris b/ncurses/terminfo/77/wsiris deleted file mode 100644 index b9f798e..0000000 Binary files a/ncurses/terminfo/77/wsiris and /dev/null differ diff --git a/ncurses/terminfo/77/wsvt25 b/ncurses/terminfo/77/wsvt25 deleted file mode 100644 index 453853a..0000000 Binary files a/ncurses/terminfo/77/wsvt25 and /dev/null differ diff --git a/ncurses/terminfo/77/wsvt25m b/ncurses/terminfo/77/wsvt25m deleted file mode 100644 index 5da627b..0000000 Binary files a/ncurses/terminfo/77/wsvt25m and /dev/null differ diff --git a/ncurses/terminfo/77/wy-75ap b/ncurses/terminfo/77/wy-75ap deleted file mode 100644 index 36669f9..0000000 Binary files a/ncurses/terminfo/77/wy-75ap and /dev/null differ diff --git a/ncurses/terminfo/77/wy-99fgt b/ncurses/terminfo/77/wy-99fgt deleted file mode 100644 index 7bdd36b..0000000 Binary files a/ncurses/terminfo/77/wy-99fgt and /dev/null differ diff --git a/ncurses/terminfo/77/wy-99fgta b/ncurses/terminfo/77/wy-99fgta deleted file mode 100644 index f6fb5c0..0000000 Binary files a/ncurses/terminfo/77/wy-99fgta and /dev/null differ diff --git a/ncurses/terminfo/77/wy100 b/ncurses/terminfo/77/wy100 deleted file mode 100644 index b88dc59..0000000 Binary files a/ncurses/terminfo/77/wy100 and /dev/null differ diff --git a/ncurses/terminfo/77/wy100q b/ncurses/terminfo/77/wy100q deleted file mode 100644 index 846a60f..0000000 Binary files a/ncurses/terminfo/77/wy100q and /dev/null differ diff --git a/ncurses/terminfo/77/wy120 b/ncurses/terminfo/77/wy120 deleted file mode 100644 index 79a1778..0000000 Binary files a/ncurses/terminfo/77/wy120 and /dev/null differ diff --git a/ncurses/terminfo/77/wy120-25 b/ncurses/terminfo/77/wy120-25 deleted file mode 100644 index 3597ff4..0000000 Binary files a/ncurses/terminfo/77/wy120-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wy120-25-w b/ncurses/terminfo/77/wy120-25-w deleted file mode 100644 index 0676c33..0000000 Binary files a/ncurses/terminfo/77/wy120-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy120-vb b/ncurses/terminfo/77/wy120-vb deleted file mode 100644 index ce48529..0000000 Binary files a/ncurses/terminfo/77/wy120-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy120-w b/ncurses/terminfo/77/wy120-w deleted file mode 100644 index 1d85c88..0000000 Binary files a/ncurses/terminfo/77/wy120-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy120-w-vb b/ncurses/terminfo/77/wy120-w-vb deleted file mode 100644 index baf08d8..0000000 Binary files a/ncurses/terminfo/77/wy120-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy120-wvb b/ncurses/terminfo/77/wy120-wvb deleted file mode 100644 index baf08d8..0000000 Binary files a/ncurses/terminfo/77/wy120-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy150 b/ncurses/terminfo/77/wy150 deleted file mode 100644 index 79a1778..0000000 Binary files a/ncurses/terminfo/77/wy150 and /dev/null differ diff --git a/ncurses/terminfo/77/wy150-25 b/ncurses/terminfo/77/wy150-25 deleted file mode 100644 index 3597ff4..0000000 Binary files a/ncurses/terminfo/77/wy150-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wy150-25-w b/ncurses/terminfo/77/wy150-25-w deleted file mode 100644 index 0676c33..0000000 Binary files a/ncurses/terminfo/77/wy150-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy150-vb b/ncurses/terminfo/77/wy150-vb deleted file mode 100644 index ce48529..0000000 Binary files a/ncurses/terminfo/77/wy150-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy150-w b/ncurses/terminfo/77/wy150-w deleted file mode 100644 index 1d85c88..0000000 Binary files a/ncurses/terminfo/77/wy150-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy150-w-vb b/ncurses/terminfo/77/wy150-w-vb deleted file mode 100644 index baf08d8..0000000 Binary files a/ncurses/terminfo/77/wy150-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy160 b/ncurses/terminfo/77/wy160 deleted file mode 100644 index 9450285..0000000 Binary files a/ncurses/terminfo/77/wy160 and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-25 b/ncurses/terminfo/77/wy160-25 deleted file mode 100644 index adb26ba..0000000 Binary files a/ncurses/terminfo/77/wy160-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-25-w b/ncurses/terminfo/77/wy160-25-w deleted file mode 100644 index 9c716bc..0000000 Binary files a/ncurses/terminfo/77/wy160-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-42 b/ncurses/terminfo/77/wy160-42 deleted file mode 100644 index 758e278..0000000 Binary files a/ncurses/terminfo/77/wy160-42 and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-42-w b/ncurses/terminfo/77/wy160-42-w deleted file mode 100644 index 430cb2a..0000000 Binary files a/ncurses/terminfo/77/wy160-42-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-43 b/ncurses/terminfo/77/wy160-43 deleted file mode 100644 index 4efb821..0000000 Binary files a/ncurses/terminfo/77/wy160-43 and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-43-w b/ncurses/terminfo/77/wy160-43-w deleted file mode 100644 index 26c0a1d..0000000 Binary files a/ncurses/terminfo/77/wy160-43-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-tek b/ncurses/terminfo/77/wy160-tek deleted file mode 100644 index 6635d62..0000000 Binary files a/ncurses/terminfo/77/wy160-tek and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-vb b/ncurses/terminfo/77/wy160-vb deleted file mode 100644 index 326a19b..0000000 Binary files a/ncurses/terminfo/77/wy160-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-w b/ncurses/terminfo/77/wy160-w deleted file mode 100644 index 9b271df..0000000 Binary files a/ncurses/terminfo/77/wy160-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-w-vb b/ncurses/terminfo/77/wy160-w-vb deleted file mode 100644 index ffd6687..0000000 Binary files a/ncurses/terminfo/77/wy160-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy160-wvb b/ncurses/terminfo/77/wy160-wvb deleted file mode 100644 index ffd6687..0000000 Binary files a/ncurses/terminfo/77/wy160-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy185 b/ncurses/terminfo/77/wy185 deleted file mode 100644 index f98fb3d..0000000 Binary files a/ncurses/terminfo/77/wy185 and /dev/null differ diff --git a/ncurses/terminfo/77/wy185-24 b/ncurses/terminfo/77/wy185-24 deleted file mode 100644 index 9683e7e..0000000 Binary files a/ncurses/terminfo/77/wy185-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wy185-vb b/ncurses/terminfo/77/wy185-vb deleted file mode 100644 index 9f9c8ff..0000000 Binary files a/ncurses/terminfo/77/wy185-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy185-w b/ncurses/terminfo/77/wy185-w deleted file mode 100644 index 06376f4..0000000 Binary files a/ncurses/terminfo/77/wy185-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy185-wvb b/ncurses/terminfo/77/wy185-wvb deleted file mode 100644 index 4231c7b..0000000 Binary files a/ncurses/terminfo/77/wy185-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy30 b/ncurses/terminfo/77/wy30 deleted file mode 100644 index 759c6d6..0000000 Binary files a/ncurses/terminfo/77/wy30 and /dev/null differ diff --git a/ncurses/terminfo/77/wy30-mc b/ncurses/terminfo/77/wy30-mc deleted file mode 100644 index 33e4bd1..0000000 Binary files a/ncurses/terminfo/77/wy30-mc and /dev/null differ diff --git a/ncurses/terminfo/77/wy30-vb b/ncurses/terminfo/77/wy30-vb deleted file mode 100644 index 5d92a35..0000000 Binary files a/ncurses/terminfo/77/wy30-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325 b/ncurses/terminfo/77/wy325 deleted file mode 100644 index 84a958d..0000000 Binary files a/ncurses/terminfo/77/wy325 and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-25 b/ncurses/terminfo/77/wy325-25 deleted file mode 100644 index b169d3d..0000000 Binary files a/ncurses/terminfo/77/wy325-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-25w b/ncurses/terminfo/77/wy325-25w deleted file mode 100644 index bd90719..0000000 Binary files a/ncurses/terminfo/77/wy325-25w and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-42 b/ncurses/terminfo/77/wy325-42 deleted file mode 100644 index eb7eabd..0000000 Binary files a/ncurses/terminfo/77/wy325-42 and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-42w b/ncurses/terminfo/77/wy325-42w deleted file mode 100644 index b3df6f0..0000000 Binary files a/ncurses/terminfo/77/wy325-42w and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-42w-vb b/ncurses/terminfo/77/wy325-42w-vb deleted file mode 100644 index e5a942a..0000000 Binary files a/ncurses/terminfo/77/wy325-42w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-42wvb b/ncurses/terminfo/77/wy325-42wvb deleted file mode 100644 index e5a942a..0000000 Binary files a/ncurses/terminfo/77/wy325-42wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-43 b/ncurses/terminfo/77/wy325-43 deleted file mode 100644 index 2c04e2f..0000000 Binary files a/ncurses/terminfo/77/wy325-43 and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-43w b/ncurses/terminfo/77/wy325-43w deleted file mode 100644 index 4d78fd2..0000000 Binary files a/ncurses/terminfo/77/wy325-43w and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-43w-vb b/ncurses/terminfo/77/wy325-43w-vb deleted file mode 100644 index e6811c7..0000000 Binary files a/ncurses/terminfo/77/wy325-43w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-43wvb b/ncurses/terminfo/77/wy325-43wvb deleted file mode 100644 index e6811c7..0000000 Binary files a/ncurses/terminfo/77/wy325-43wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-80 b/ncurses/terminfo/77/wy325-80 deleted file mode 100644 index b169d3d..0000000 Binary files a/ncurses/terminfo/77/wy325-80 and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-vb b/ncurses/terminfo/77/wy325-vb deleted file mode 100644 index fb54848..0000000 Binary files a/ncurses/terminfo/77/wy325-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-w b/ncurses/terminfo/77/wy325-w deleted file mode 100644 index f2195df..0000000 Binary files a/ncurses/terminfo/77/wy325-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-w-vb b/ncurses/terminfo/77/wy325-w-vb deleted file mode 100644 index 9c0c145..0000000 Binary files a/ncurses/terminfo/77/wy325-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325-wvb b/ncurses/terminfo/77/wy325-wvb deleted file mode 100644 index 9c0c145..0000000 Binary files a/ncurses/terminfo/77/wy325-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy325w-24 b/ncurses/terminfo/77/wy325w-24 deleted file mode 100644 index f2195df..0000000 Binary files a/ncurses/terminfo/77/wy325w-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wy350 b/ncurses/terminfo/77/wy350 deleted file mode 100644 index d7a41c6..0000000 Binary files a/ncurses/terminfo/77/wy350 and /dev/null differ diff --git a/ncurses/terminfo/77/wy350-vb b/ncurses/terminfo/77/wy350-vb deleted file mode 100644 index 2e92bb6..0000000 Binary files a/ncurses/terminfo/77/wy350-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy350-w b/ncurses/terminfo/77/wy350-w deleted file mode 100644 index e18c20a..0000000 Binary files a/ncurses/terminfo/77/wy350-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy350-wvb b/ncurses/terminfo/77/wy350-wvb deleted file mode 100644 index 9a1270a..0000000 Binary files a/ncurses/terminfo/77/wy350-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy370 b/ncurses/terminfo/77/wy370 deleted file mode 100644 index eedf0a9..0000000 Binary files a/ncurses/terminfo/77/wy370 and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-101k b/ncurses/terminfo/77/wy370-101k deleted file mode 100644 index eedf0a9..0000000 Binary files a/ncurses/terminfo/77/wy370-101k and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-105k b/ncurses/terminfo/77/wy370-105k deleted file mode 100644 index 34804c2..0000000 Binary files a/ncurses/terminfo/77/wy370-105k and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-EPC b/ncurses/terminfo/77/wy370-EPC deleted file mode 100644 index 6f0f3f8..0000000 Binary files a/ncurses/terminfo/77/wy370-EPC and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-nk b/ncurses/terminfo/77/wy370-nk deleted file mode 100644 index 91c85ea..0000000 Binary files a/ncurses/terminfo/77/wy370-nk and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-rv b/ncurses/terminfo/77/wy370-rv deleted file mode 100644 index 08f3b23..0000000 Binary files a/ncurses/terminfo/77/wy370-rv and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-tek b/ncurses/terminfo/77/wy370-tek deleted file mode 100644 index 533c58e..0000000 Binary files a/ncurses/terminfo/77/wy370-tek and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-vb b/ncurses/terminfo/77/wy370-vb deleted file mode 100644 index 03acd55..0000000 Binary files a/ncurses/terminfo/77/wy370-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-w b/ncurses/terminfo/77/wy370-w deleted file mode 100644 index 77754f8..0000000 Binary files a/ncurses/terminfo/77/wy370-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy370-wvb b/ncurses/terminfo/77/wy370-wvb deleted file mode 100644 index df89806..0000000 Binary files a/ncurses/terminfo/77/wy370-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy50 b/ncurses/terminfo/77/wy50 deleted file mode 100644 index afd1bd7..0000000 Binary files a/ncurses/terminfo/77/wy50 and /dev/null differ diff --git a/ncurses/terminfo/77/wy50-mc b/ncurses/terminfo/77/wy50-mc deleted file mode 100644 index dbdc54c..0000000 Binary files a/ncurses/terminfo/77/wy50-mc and /dev/null differ diff --git a/ncurses/terminfo/77/wy50-vb b/ncurses/terminfo/77/wy50-vb deleted file mode 100644 index ba38e0b..0000000 Binary files a/ncurses/terminfo/77/wy50-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy50-w b/ncurses/terminfo/77/wy50-w deleted file mode 100644 index 4f95911..0000000 Binary files a/ncurses/terminfo/77/wy50-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy50-wvb b/ncurses/terminfo/77/wy50-wvb deleted file mode 100644 index ebcdc9b..0000000 Binary files a/ncurses/terminfo/77/wy50-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy520 b/ncurses/terminfo/77/wy520 deleted file mode 100644 index 72d84dc..0000000 Binary files a/ncurses/terminfo/77/wy520 and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-24 b/ncurses/terminfo/77/wy520-24 deleted file mode 100644 index acf0a7f..0000000 Binary files a/ncurses/terminfo/77/wy520-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-36 b/ncurses/terminfo/77/wy520-36 deleted file mode 100644 index 7065802..0000000 Binary files a/ncurses/terminfo/77/wy520-36 and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-36pc b/ncurses/terminfo/77/wy520-36pc deleted file mode 100644 index 8a0143d..0000000 Binary files a/ncurses/terminfo/77/wy520-36pc and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-36w b/ncurses/terminfo/77/wy520-36w deleted file mode 100644 index 8b5e67b..0000000 Binary files a/ncurses/terminfo/77/wy520-36w and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-36wpc b/ncurses/terminfo/77/wy520-36wpc deleted file mode 100644 index fe7cff5..0000000 Binary files a/ncurses/terminfo/77/wy520-36wpc and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-48 b/ncurses/terminfo/77/wy520-48 deleted file mode 100644 index d9fe819..0000000 Binary files a/ncurses/terminfo/77/wy520-48 and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-48pc b/ncurses/terminfo/77/wy520-48pc deleted file mode 100644 index b9f6d1e..0000000 Binary files a/ncurses/terminfo/77/wy520-48pc and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-48w b/ncurses/terminfo/77/wy520-48w deleted file mode 100644 index 651a0f9..0000000 Binary files a/ncurses/terminfo/77/wy520-48w and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-48wpc b/ncurses/terminfo/77/wy520-48wpc deleted file mode 100644 index 6383558..0000000 Binary files a/ncurses/terminfo/77/wy520-48wpc and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-epc b/ncurses/terminfo/77/wy520-epc deleted file mode 100644 index feaf13d..0000000 Binary files a/ncurses/terminfo/77/wy520-epc and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-epc-24 b/ncurses/terminfo/77/wy520-epc-24 deleted file mode 100644 index fb8946b..0000000 Binary files a/ncurses/terminfo/77/wy520-epc-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-epc-vb b/ncurses/terminfo/77/wy520-epc-vb deleted file mode 100644 index eb22466..0000000 Binary files a/ncurses/terminfo/77/wy520-epc-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-epc-w b/ncurses/terminfo/77/wy520-epc-w deleted file mode 100644 index 15956a3..0000000 Binary files a/ncurses/terminfo/77/wy520-epc-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-epc-wvb b/ncurses/terminfo/77/wy520-epc-wvb deleted file mode 100644 index 5b9cfc2..0000000 Binary files a/ncurses/terminfo/77/wy520-epc-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-vb b/ncurses/terminfo/77/wy520-vb deleted file mode 100644 index 5f22650..0000000 Binary files a/ncurses/terminfo/77/wy520-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-w b/ncurses/terminfo/77/wy520-w deleted file mode 100644 index 8ea1e4e..0000000 Binary files a/ncurses/terminfo/77/wy520-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy520-wvb b/ncurses/terminfo/77/wy520-wvb deleted file mode 100644 index 636f08d..0000000 Binary files a/ncurses/terminfo/77/wy520-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy60 b/ncurses/terminfo/77/wy60 deleted file mode 100644 index 68522ed..0000000 Binary files a/ncurses/terminfo/77/wy60 and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-25 b/ncurses/terminfo/77/wy60-25 deleted file mode 100644 index 73e8672..0000000 Binary files a/ncurses/terminfo/77/wy60-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-25-w b/ncurses/terminfo/77/wy60-25-w deleted file mode 100644 index f87aaa8..0000000 Binary files a/ncurses/terminfo/77/wy60-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-316X b/ncurses/terminfo/77/wy60-316X deleted file mode 100644 index f1dca19..0000000 Binary files a/ncurses/terminfo/77/wy60-316X and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-42 b/ncurses/terminfo/77/wy60-42 deleted file mode 100644 index 506b4f6..0000000 Binary files a/ncurses/terminfo/77/wy60-42 and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-42-w b/ncurses/terminfo/77/wy60-42-w deleted file mode 100644 index 3b517c8..0000000 Binary files a/ncurses/terminfo/77/wy60-42-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-43 b/ncurses/terminfo/77/wy60-43 deleted file mode 100644 index e7c084e..0000000 Binary files a/ncurses/terminfo/77/wy60-43 and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-43-w b/ncurses/terminfo/77/wy60-43-w deleted file mode 100644 index 31c1962..0000000 Binary files a/ncurses/terminfo/77/wy60-43-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-AT b/ncurses/terminfo/77/wy60-AT deleted file mode 100644 index 377b3a0..0000000 Binary files a/ncurses/terminfo/77/wy60-AT and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-PC b/ncurses/terminfo/77/wy60-PC deleted file mode 100644 index 5844719..0000000 Binary files a/ncurses/terminfo/77/wy60-PC and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-vb b/ncurses/terminfo/77/wy60-vb deleted file mode 100644 index 5a14b23..0000000 Binary files a/ncurses/terminfo/77/wy60-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-w b/ncurses/terminfo/77/wy60-w deleted file mode 100644 index 42fa1e5..0000000 Binary files a/ncurses/terminfo/77/wy60-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-w-vb b/ncurses/terminfo/77/wy60-w-vb deleted file mode 100644 index f342646..0000000 Binary files a/ncurses/terminfo/77/wy60-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy60-wvb b/ncurses/terminfo/77/wy60-wvb deleted file mode 100644 index f342646..0000000 Binary files a/ncurses/terminfo/77/wy60-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy75 b/ncurses/terminfo/77/wy75 deleted file mode 100644 index f94f100..0000000 Binary files a/ncurses/terminfo/77/wy75 and /dev/null differ diff --git a/ncurses/terminfo/77/wy75-mc b/ncurses/terminfo/77/wy75-mc deleted file mode 100644 index 7d318ad..0000000 Binary files a/ncurses/terminfo/77/wy75-mc and /dev/null differ diff --git a/ncurses/terminfo/77/wy75-vb b/ncurses/terminfo/77/wy75-vb deleted file mode 100644 index 5716584..0000000 Binary files a/ncurses/terminfo/77/wy75-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy75-w b/ncurses/terminfo/77/wy75-w deleted file mode 100644 index 56ae55c..0000000 Binary files a/ncurses/terminfo/77/wy75-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy75-wvb b/ncurses/terminfo/77/wy75-wvb deleted file mode 100644 index 65ea7fa..0000000 Binary files a/ncurses/terminfo/77/wy75-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy75ap b/ncurses/terminfo/77/wy75ap deleted file mode 100644 index 36669f9..0000000 Binary files a/ncurses/terminfo/77/wy75ap and /dev/null differ diff --git a/ncurses/terminfo/77/wy85 b/ncurses/terminfo/77/wy85 deleted file mode 100644 index df3c505..0000000 Binary files a/ncurses/terminfo/77/wy85 and /dev/null differ diff --git a/ncurses/terminfo/77/wy85-8bit b/ncurses/terminfo/77/wy85-8bit deleted file mode 100644 index 7c8673d..0000000 Binary files a/ncurses/terminfo/77/wy85-8bit and /dev/null differ diff --git a/ncurses/terminfo/77/wy85-vb b/ncurses/terminfo/77/wy85-vb deleted file mode 100644 index 6488a99..0000000 Binary files a/ncurses/terminfo/77/wy85-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy85-w b/ncurses/terminfo/77/wy85-w deleted file mode 100644 index 3d70ec2..0000000 Binary files a/ncurses/terminfo/77/wy85-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy85-wvb b/ncurses/terminfo/77/wy85-wvb deleted file mode 100644 index 79c1012..0000000 Binary files a/ncurses/terminfo/77/wy85-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wy99-ansi b/ncurses/terminfo/77/wy99-ansi deleted file mode 100644 index ed8b9ea..0000000 Binary files a/ncurses/terminfo/77/wy99-ansi and /dev/null differ diff --git a/ncurses/terminfo/77/wy99a-ansi b/ncurses/terminfo/77/wy99a-ansi deleted file mode 100644 index 43c0dcc..0000000 Binary files a/ncurses/terminfo/77/wy99a-ansi and /dev/null differ diff --git a/ncurses/terminfo/77/wy99f b/ncurses/terminfo/77/wy99f deleted file mode 100644 index 7bdd36b..0000000 Binary files a/ncurses/terminfo/77/wy99f and /dev/null differ diff --git a/ncurses/terminfo/77/wy99fa b/ncurses/terminfo/77/wy99fa deleted file mode 100644 index f6fb5c0..0000000 Binary files a/ncurses/terminfo/77/wy99fa and /dev/null differ diff --git a/ncurses/terminfo/77/wy99fgt b/ncurses/terminfo/77/wy99fgt deleted file mode 100644 index 7bdd36b..0000000 Binary files a/ncurses/terminfo/77/wy99fgt and /dev/null differ diff --git a/ncurses/terminfo/77/wy99fgta b/ncurses/terminfo/77/wy99fgta deleted file mode 100644 index f6fb5c0..0000000 Binary files a/ncurses/terminfo/77/wy99fgta and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt b/ncurses/terminfo/77/wy99gt deleted file mode 100644 index 9eb43ec..0000000 Binary files a/ncurses/terminfo/77/wy99gt and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-25 b/ncurses/terminfo/77/wy99gt-25 deleted file mode 100644 index 60e1b22..0000000 Binary files a/ncurses/terminfo/77/wy99gt-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-25-w b/ncurses/terminfo/77/wy99gt-25-w deleted file mode 100644 index 156854f..0000000 Binary files a/ncurses/terminfo/77/wy99gt-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-tek b/ncurses/terminfo/77/wy99gt-tek deleted file mode 100644 index 6c8edb2..0000000 Binary files a/ncurses/terminfo/77/wy99gt-tek and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-vb b/ncurses/terminfo/77/wy99gt-vb deleted file mode 100644 index b3706a3..0000000 Binary files a/ncurses/terminfo/77/wy99gt-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-w b/ncurses/terminfo/77/wy99gt-w deleted file mode 100644 index 59831cb..0000000 Binary files a/ncurses/terminfo/77/wy99gt-w and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-w-vb b/ncurses/terminfo/77/wy99gt-w-vb deleted file mode 100644 index 1fcb380..0000000 Binary files a/ncurses/terminfo/77/wy99gt-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wy99gt-wvb b/ncurses/terminfo/77/wy99gt-wvb deleted file mode 100644 index 1fcb380..0000000 Binary files a/ncurses/terminfo/77/wy99gt-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse-325 b/ncurses/terminfo/77/wyse-325 deleted file mode 100644 index b169d3d..0000000 Binary files a/ncurses/terminfo/77/wyse-325 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse-75ap b/ncurses/terminfo/77/wyse-75ap deleted file mode 100644 index 36669f9..0000000 Binary files a/ncurses/terminfo/77/wyse-75ap and /dev/null differ diff --git a/ncurses/terminfo/77/wyse-vp b/ncurses/terminfo/77/wyse-vp deleted file mode 100644 index b327e4a..0000000 Binary files a/ncurses/terminfo/77/wyse-vp and /dev/null differ diff --git a/ncurses/terminfo/77/wyse120 b/ncurses/terminfo/77/wyse120 deleted file mode 100644 index 79a1778..0000000 Binary files a/ncurses/terminfo/77/wyse120 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse120-25 b/ncurses/terminfo/77/wyse120-25 deleted file mode 100644 index 3597ff4..0000000 Binary files a/ncurses/terminfo/77/wyse120-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse120-25-w b/ncurses/terminfo/77/wyse120-25-w deleted file mode 100644 index 0676c33..0000000 Binary files a/ncurses/terminfo/77/wyse120-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse120-vb b/ncurses/terminfo/77/wyse120-vb deleted file mode 100644 index ce48529..0000000 Binary files a/ncurses/terminfo/77/wyse120-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse120-w b/ncurses/terminfo/77/wyse120-w deleted file mode 100644 index 1d85c88..0000000 Binary files a/ncurses/terminfo/77/wyse120-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse120-wvb b/ncurses/terminfo/77/wyse120-wvb deleted file mode 100644 index baf08d8..0000000 Binary files a/ncurses/terminfo/77/wyse120-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse150 b/ncurses/terminfo/77/wyse150 deleted file mode 100644 index 79a1778..0000000 Binary files a/ncurses/terminfo/77/wyse150 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse150-25 b/ncurses/terminfo/77/wyse150-25 deleted file mode 100644 index 3597ff4..0000000 Binary files a/ncurses/terminfo/77/wyse150-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse150-25-w b/ncurses/terminfo/77/wyse150-25-w deleted file mode 100644 index 0676c33..0000000 Binary files a/ncurses/terminfo/77/wyse150-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse150-vb b/ncurses/terminfo/77/wyse150-vb deleted file mode 100644 index ce48529..0000000 Binary files a/ncurses/terminfo/77/wyse150-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse150-w b/ncurses/terminfo/77/wyse150-w deleted file mode 100644 index 1d85c88..0000000 Binary files a/ncurses/terminfo/77/wyse150-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse150-w-vb b/ncurses/terminfo/77/wyse150-w-vb deleted file mode 100644 index baf08d8..0000000 Binary files a/ncurses/terminfo/77/wyse150-w-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160 b/ncurses/terminfo/77/wyse160 deleted file mode 100644 index 9450285..0000000 Binary files a/ncurses/terminfo/77/wyse160 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-25 b/ncurses/terminfo/77/wyse160-25 deleted file mode 100644 index adb26ba..0000000 Binary files a/ncurses/terminfo/77/wyse160-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-25-w b/ncurses/terminfo/77/wyse160-25-w deleted file mode 100644 index 9c716bc..0000000 Binary files a/ncurses/terminfo/77/wyse160-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-42 b/ncurses/terminfo/77/wyse160-42 deleted file mode 100644 index 758e278..0000000 Binary files a/ncurses/terminfo/77/wyse160-42 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-42-w b/ncurses/terminfo/77/wyse160-42-w deleted file mode 100644 index 430cb2a..0000000 Binary files a/ncurses/terminfo/77/wyse160-42-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-43 b/ncurses/terminfo/77/wyse160-43 deleted file mode 100644 index 4efb821..0000000 Binary files a/ncurses/terminfo/77/wyse160-43 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-43-w b/ncurses/terminfo/77/wyse160-43-w deleted file mode 100644 index 26c0a1d..0000000 Binary files a/ncurses/terminfo/77/wyse160-43-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-vb b/ncurses/terminfo/77/wyse160-vb deleted file mode 100644 index 326a19b..0000000 Binary files a/ncurses/terminfo/77/wyse160-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-w b/ncurses/terminfo/77/wyse160-w deleted file mode 100644 index 9b271df..0000000 Binary files a/ncurses/terminfo/77/wyse160-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse160-wvb b/ncurses/terminfo/77/wyse160-wvb deleted file mode 100644 index ffd6687..0000000 Binary files a/ncurses/terminfo/77/wyse160-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse185 b/ncurses/terminfo/77/wyse185 deleted file mode 100644 index f98fb3d..0000000 Binary files a/ncurses/terminfo/77/wyse185 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse185-24 b/ncurses/terminfo/77/wyse185-24 deleted file mode 100644 index 9683e7e..0000000 Binary files a/ncurses/terminfo/77/wyse185-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse185-vb b/ncurses/terminfo/77/wyse185-vb deleted file mode 100644 index 9f9c8ff..0000000 Binary files a/ncurses/terminfo/77/wyse185-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse185-w b/ncurses/terminfo/77/wyse185-w deleted file mode 100644 index 06376f4..0000000 Binary files a/ncurses/terminfo/77/wyse185-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse185-wvb b/ncurses/terminfo/77/wyse185-wvb deleted file mode 100644 index 4231c7b..0000000 Binary files a/ncurses/terminfo/77/wyse185-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse30 b/ncurses/terminfo/77/wyse30 deleted file mode 100644 index 759c6d6..0000000 Binary files a/ncurses/terminfo/77/wyse30 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse30-mc b/ncurses/terminfo/77/wyse30-mc deleted file mode 100644 index 33e4bd1..0000000 Binary files a/ncurses/terminfo/77/wyse30-mc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse30-vb b/ncurses/terminfo/77/wyse30-vb deleted file mode 100644 index 5d92a35..0000000 Binary files a/ncurses/terminfo/77/wyse30-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325 b/ncurses/terminfo/77/wyse325 deleted file mode 100644 index 84a958d..0000000 Binary files a/ncurses/terminfo/77/wyse325 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-25 b/ncurses/terminfo/77/wyse325-25 deleted file mode 100644 index b169d3d..0000000 Binary files a/ncurses/terminfo/77/wyse325-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-25w b/ncurses/terminfo/77/wyse325-25w deleted file mode 100644 index bd90719..0000000 Binary files a/ncurses/terminfo/77/wyse325-25w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-42 b/ncurses/terminfo/77/wyse325-42 deleted file mode 100644 index eb7eabd..0000000 Binary files a/ncurses/terminfo/77/wyse325-42 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-42w b/ncurses/terminfo/77/wyse325-42w deleted file mode 100644 index b3df6f0..0000000 Binary files a/ncurses/terminfo/77/wyse325-42w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-43 b/ncurses/terminfo/77/wyse325-43 deleted file mode 100644 index 2c04e2f..0000000 Binary files a/ncurses/terminfo/77/wyse325-43 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-43w b/ncurses/terminfo/77/wyse325-43w deleted file mode 100644 index 4d78fd2..0000000 Binary files a/ncurses/terminfo/77/wyse325-43w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-vb b/ncurses/terminfo/77/wyse325-vb deleted file mode 100644 index fb54848..0000000 Binary files a/ncurses/terminfo/77/wyse325-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-w b/ncurses/terminfo/77/wyse325-w deleted file mode 100644 index f2195df..0000000 Binary files a/ncurses/terminfo/77/wyse325-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse325-wvb b/ncurses/terminfo/77/wyse325-wvb deleted file mode 100644 index 9c0c145..0000000 Binary files a/ncurses/terminfo/77/wyse325-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse350 b/ncurses/terminfo/77/wyse350 deleted file mode 100644 index d7a41c6..0000000 Binary files a/ncurses/terminfo/77/wyse350 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse350-vb b/ncurses/terminfo/77/wyse350-vb deleted file mode 100644 index 2e92bb6..0000000 Binary files a/ncurses/terminfo/77/wyse350-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse350-w b/ncurses/terminfo/77/wyse350-w deleted file mode 100644 index e18c20a..0000000 Binary files a/ncurses/terminfo/77/wyse350-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse350-wvb b/ncurses/terminfo/77/wyse350-wvb deleted file mode 100644 index 9a1270a..0000000 Binary files a/ncurses/terminfo/77/wyse350-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse370 b/ncurses/terminfo/77/wyse370 deleted file mode 100644 index eedf0a9..0000000 Binary files a/ncurses/terminfo/77/wyse370 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse50 b/ncurses/terminfo/77/wyse50 deleted file mode 100644 index afd1bd7..0000000 Binary files a/ncurses/terminfo/77/wyse50 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse50-mc b/ncurses/terminfo/77/wyse50-mc deleted file mode 100644 index dbdc54c..0000000 Binary files a/ncurses/terminfo/77/wyse50-mc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse50-vb b/ncurses/terminfo/77/wyse50-vb deleted file mode 100644 index ba38e0b..0000000 Binary files a/ncurses/terminfo/77/wyse50-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse50-w b/ncurses/terminfo/77/wyse50-w deleted file mode 100644 index 4f95911..0000000 Binary files a/ncurses/terminfo/77/wyse50-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse50-wvb b/ncurses/terminfo/77/wyse50-wvb deleted file mode 100644 index ebcdc9b..0000000 Binary files a/ncurses/terminfo/77/wyse50-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520 b/ncurses/terminfo/77/wyse520 deleted file mode 100644 index 72d84dc..0000000 Binary files a/ncurses/terminfo/77/wyse520 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-24 b/ncurses/terminfo/77/wyse520-24 deleted file mode 100644 index acf0a7f..0000000 Binary files a/ncurses/terminfo/77/wyse520-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-36 b/ncurses/terminfo/77/wyse520-36 deleted file mode 100644 index 7065802..0000000 Binary files a/ncurses/terminfo/77/wyse520-36 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-36pc b/ncurses/terminfo/77/wyse520-36pc deleted file mode 100644 index 8a0143d..0000000 Binary files a/ncurses/terminfo/77/wyse520-36pc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-36w b/ncurses/terminfo/77/wyse520-36w deleted file mode 100644 index 8b5e67b..0000000 Binary files a/ncurses/terminfo/77/wyse520-36w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-36wpc b/ncurses/terminfo/77/wyse520-36wpc deleted file mode 100644 index fe7cff5..0000000 Binary files a/ncurses/terminfo/77/wyse520-36wpc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-48 b/ncurses/terminfo/77/wyse520-48 deleted file mode 100644 index d9fe819..0000000 Binary files a/ncurses/terminfo/77/wyse520-48 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-48pc b/ncurses/terminfo/77/wyse520-48pc deleted file mode 100644 index b9f6d1e..0000000 Binary files a/ncurses/terminfo/77/wyse520-48pc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-48w b/ncurses/terminfo/77/wyse520-48w deleted file mode 100644 index 651a0f9..0000000 Binary files a/ncurses/terminfo/77/wyse520-48w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-48wpc b/ncurses/terminfo/77/wyse520-48wpc deleted file mode 100644 index 6383558..0000000 Binary files a/ncurses/terminfo/77/wyse520-48wpc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-epc b/ncurses/terminfo/77/wyse520-epc deleted file mode 100644 index feaf13d..0000000 Binary files a/ncurses/terminfo/77/wyse520-epc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-epc-w b/ncurses/terminfo/77/wyse520-epc-w deleted file mode 100644 index 15956a3..0000000 Binary files a/ncurses/terminfo/77/wyse520-epc-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-p-wvb b/ncurses/terminfo/77/wyse520-p-wvb deleted file mode 100644 index 5b9cfc2..0000000 Binary files a/ncurses/terminfo/77/wyse520-p-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-pc-24 b/ncurses/terminfo/77/wyse520-pc-24 deleted file mode 100644 index fb8946b..0000000 Binary files a/ncurses/terminfo/77/wyse520-pc-24 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-pc-vb b/ncurses/terminfo/77/wyse520-pc-vb deleted file mode 100644 index eb22466..0000000 Binary files a/ncurses/terminfo/77/wyse520-pc-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-vb b/ncurses/terminfo/77/wyse520-vb deleted file mode 100644 index 5f22650..0000000 Binary files a/ncurses/terminfo/77/wyse520-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-w b/ncurses/terminfo/77/wyse520-w deleted file mode 100644 index 8ea1e4e..0000000 Binary files a/ncurses/terminfo/77/wyse520-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse520-wvb b/ncurses/terminfo/77/wyse520-wvb deleted file mode 100644 index 636f08d..0000000 Binary files a/ncurses/terminfo/77/wyse520-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60 b/ncurses/terminfo/77/wyse60 deleted file mode 100644 index 68522ed..0000000 Binary files a/ncurses/terminfo/77/wyse60 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-25 b/ncurses/terminfo/77/wyse60-25 deleted file mode 100644 index 73e8672..0000000 Binary files a/ncurses/terminfo/77/wyse60-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-25-w b/ncurses/terminfo/77/wyse60-25-w deleted file mode 100644 index f87aaa8..0000000 Binary files a/ncurses/terminfo/77/wyse60-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-316X b/ncurses/terminfo/77/wyse60-316X deleted file mode 100644 index f1dca19..0000000 Binary files a/ncurses/terminfo/77/wyse60-316X and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-42 b/ncurses/terminfo/77/wyse60-42 deleted file mode 100644 index 506b4f6..0000000 Binary files a/ncurses/terminfo/77/wyse60-42 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-42-w b/ncurses/terminfo/77/wyse60-42-w deleted file mode 100644 index 3b517c8..0000000 Binary files a/ncurses/terminfo/77/wyse60-42-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-43 b/ncurses/terminfo/77/wyse60-43 deleted file mode 100644 index e7c084e..0000000 Binary files a/ncurses/terminfo/77/wyse60-43 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-43-w b/ncurses/terminfo/77/wyse60-43-w deleted file mode 100644 index 31c1962..0000000 Binary files a/ncurses/terminfo/77/wyse60-43-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-AT b/ncurses/terminfo/77/wyse60-AT deleted file mode 100644 index 377b3a0..0000000 Binary files a/ncurses/terminfo/77/wyse60-AT and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-PC b/ncurses/terminfo/77/wyse60-PC deleted file mode 100644 index 5844719..0000000 Binary files a/ncurses/terminfo/77/wyse60-PC and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-vb b/ncurses/terminfo/77/wyse60-vb deleted file mode 100644 index 5a14b23..0000000 Binary files a/ncurses/terminfo/77/wyse60-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-w b/ncurses/terminfo/77/wyse60-w deleted file mode 100644 index 42fa1e5..0000000 Binary files a/ncurses/terminfo/77/wyse60-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse60-wvb b/ncurses/terminfo/77/wyse60-wvb deleted file mode 100644 index f342646..0000000 Binary files a/ncurses/terminfo/77/wyse60-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse75 b/ncurses/terminfo/77/wyse75 deleted file mode 100644 index f94f100..0000000 Binary files a/ncurses/terminfo/77/wyse75 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse75-mc b/ncurses/terminfo/77/wyse75-mc deleted file mode 100644 index 7d318ad..0000000 Binary files a/ncurses/terminfo/77/wyse75-mc and /dev/null differ diff --git a/ncurses/terminfo/77/wyse75-vb b/ncurses/terminfo/77/wyse75-vb deleted file mode 100644 index 5716584..0000000 Binary files a/ncurses/terminfo/77/wyse75-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse75-w b/ncurses/terminfo/77/wyse75-w deleted file mode 100644 index 56ae55c..0000000 Binary files a/ncurses/terminfo/77/wyse75-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse75-wvb b/ncurses/terminfo/77/wyse75-wvb deleted file mode 100644 index 65ea7fa..0000000 Binary files a/ncurses/terminfo/77/wyse75-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse75ap b/ncurses/terminfo/77/wyse75ap deleted file mode 100644 index 36669f9..0000000 Binary files a/ncurses/terminfo/77/wyse75ap and /dev/null differ diff --git a/ncurses/terminfo/77/wyse85 b/ncurses/terminfo/77/wyse85 deleted file mode 100644 index df3c505..0000000 Binary files a/ncurses/terminfo/77/wyse85 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse85-8bit b/ncurses/terminfo/77/wyse85-8bit deleted file mode 100644 index 7c8673d..0000000 Binary files a/ncurses/terminfo/77/wyse85-8bit and /dev/null differ diff --git a/ncurses/terminfo/77/wyse85-vb b/ncurses/terminfo/77/wyse85-vb deleted file mode 100644 index 6488a99..0000000 Binary files a/ncurses/terminfo/77/wyse85-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse85-w b/ncurses/terminfo/77/wyse85-w deleted file mode 100644 index 3d70ec2..0000000 Binary files a/ncurses/terminfo/77/wyse85-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse85-wvb b/ncurses/terminfo/77/wyse85-wvb deleted file mode 100644 index 79c1012..0000000 Binary files a/ncurses/terminfo/77/wyse85-wvb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse99gt b/ncurses/terminfo/77/wyse99gt deleted file mode 100644 index 9eb43ec..0000000 Binary files a/ncurses/terminfo/77/wyse99gt and /dev/null differ diff --git a/ncurses/terminfo/77/wyse99gt-25 b/ncurses/terminfo/77/wyse99gt-25 deleted file mode 100644 index 60e1b22..0000000 Binary files a/ncurses/terminfo/77/wyse99gt-25 and /dev/null differ diff --git a/ncurses/terminfo/77/wyse99gt-25-w b/ncurses/terminfo/77/wyse99gt-25-w deleted file mode 100644 index 156854f..0000000 Binary files a/ncurses/terminfo/77/wyse99gt-25-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse99gt-vb b/ncurses/terminfo/77/wyse99gt-vb deleted file mode 100644 index b3706a3..0000000 Binary files a/ncurses/terminfo/77/wyse99gt-vb and /dev/null differ diff --git a/ncurses/terminfo/77/wyse99gt-w b/ncurses/terminfo/77/wyse99gt-w deleted file mode 100644 index 59831cb..0000000 Binary files a/ncurses/terminfo/77/wyse99gt-w and /dev/null differ diff --git a/ncurses/terminfo/77/wyse99gt-wvb b/ncurses/terminfo/77/wyse99gt-wvb deleted file mode 100644 index 1fcb380..0000000 Binary files a/ncurses/terminfo/77/wyse99gt-wvb and /dev/null differ diff --git a/ncurses/terminfo/78/x10term b/ncurses/terminfo/78/x10term deleted file mode 100644 index 92abb2f..0000000 Binary files a/ncurses/terminfo/78/x10term and /dev/null differ diff --git a/ncurses/terminfo/78/x1700 b/ncurses/terminfo/78/x1700 deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/78/x1700 and /dev/null differ diff --git a/ncurses/terminfo/78/x1700-lm b/ncurses/terminfo/78/x1700-lm deleted file mode 100644 index 5f36015..0000000 Binary files a/ncurses/terminfo/78/x1700-lm and /dev/null differ diff --git a/ncurses/terminfo/78/x1720 b/ncurses/terminfo/78/x1720 deleted file mode 100644 index 68b8097..0000000 Binary files a/ncurses/terminfo/78/x1720 and /dev/null differ diff --git a/ncurses/terminfo/78/x1750 b/ncurses/terminfo/78/x1750 deleted file mode 100644 index 68b8097..0000000 Binary files a/ncurses/terminfo/78/x1750 and /dev/null differ diff --git a/ncurses/terminfo/78/x68k b/ncurses/terminfo/78/x68k deleted file mode 100644 index 317e90a..0000000 Binary files a/ncurses/terminfo/78/x68k and /dev/null differ diff --git a/ncurses/terminfo/78/x68k-ite b/ncurses/terminfo/78/x68k-ite deleted file mode 100644 index 317e90a..0000000 Binary files a/ncurses/terminfo/78/x68k-ite and /dev/null differ diff --git a/ncurses/terminfo/78/x820 b/ncurses/terminfo/78/x820 deleted file mode 100644 index 8a9a3db..0000000 Binary files a/ncurses/terminfo/78/x820 and /dev/null differ diff --git a/ncurses/terminfo/78/xdku b/ncurses/terminfo/78/xdku deleted file mode 100644 index 2bf1f70..0000000 Binary files a/ncurses/terminfo/78/xdku and /dev/null differ diff --git a/ncurses/terminfo/78/xenix b/ncurses/terminfo/78/xenix deleted file mode 100644 index 86e3056..0000000 Binary files a/ncurses/terminfo/78/xenix and /dev/null differ diff --git a/ncurses/terminfo/78/xerox b/ncurses/terminfo/78/xerox deleted file mode 100644 index a7a12d1..0000000 Binary files a/ncurses/terminfo/78/xerox and /dev/null differ diff --git a/ncurses/terminfo/78/xerox-lm b/ncurses/terminfo/78/xerox-lm deleted file mode 100644 index 535f007..0000000 Binary files a/ncurses/terminfo/78/xerox-lm and /dev/null differ diff --git a/ncurses/terminfo/78/xerox1720 b/ncurses/terminfo/78/xerox1720 deleted file mode 100644 index 68b8097..0000000 Binary files a/ncurses/terminfo/78/xerox1720 and /dev/null differ diff --git a/ncurses/terminfo/78/xerox820 b/ncurses/terminfo/78/xerox820 deleted file mode 100644 index 8a9a3db..0000000 Binary files a/ncurses/terminfo/78/xerox820 and /dev/null differ diff --git a/ncurses/terminfo/78/xfce b/ncurses/terminfo/78/xfce deleted file mode 100644 index 01e738b..0000000 Binary files a/ncurses/terminfo/78/xfce and /dev/null differ diff --git a/ncurses/terminfo/78/xiterm b/ncurses/terminfo/78/xiterm deleted file mode 100644 index 438f6ba..0000000 Binary files a/ncurses/terminfo/78/xiterm and /dev/null differ diff --git a/ncurses/terminfo/78/xl83 b/ncurses/terminfo/78/xl83 deleted file mode 100644 index 11e1f9f..0000000 Binary files a/ncurses/terminfo/78/xl83 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc b/ncurses/terminfo/78/xnuppc deleted file mode 100644 index 45b2fb9..0000000 Binary files a/ncurses/terminfo/78/xnuppc and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+100x37 b/ncurses/terminfo/78/xnuppc+100x37 deleted file mode 100644 index 68f180e..0000000 Binary files a/ncurses/terminfo/78/xnuppc+100x37 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+112x37 b/ncurses/terminfo/78/xnuppc+112x37 deleted file mode 100644 index 2277326..0000000 Binary files a/ncurses/terminfo/78/xnuppc+112x37 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+128x40 b/ncurses/terminfo/78/xnuppc+128x40 deleted file mode 100644 index 0d70274..0000000 Binary files a/ncurses/terminfo/78/xnuppc+128x40 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+128x48 b/ncurses/terminfo/78/xnuppc+128x48 deleted file mode 100644 index ce8091a..0000000 Binary files a/ncurses/terminfo/78/xnuppc+128x48 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+144x48 b/ncurses/terminfo/78/xnuppc+144x48 deleted file mode 100644 index 17bf93d..0000000 Binary files a/ncurses/terminfo/78/xnuppc+144x48 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+160x64 b/ncurses/terminfo/78/xnuppc+160x64 deleted file mode 100644 index 2974c09..0000000 Binary files a/ncurses/terminfo/78/xnuppc+160x64 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+200x64 b/ncurses/terminfo/78/xnuppc+200x64 deleted file mode 100644 index fcbdaa0..0000000 Binary files a/ncurses/terminfo/78/xnuppc+200x64 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+200x75 b/ncurses/terminfo/78/xnuppc+200x75 deleted file mode 100644 index e0d8252..0000000 Binary files a/ncurses/terminfo/78/xnuppc+200x75 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+256x96 b/ncurses/terminfo/78/xnuppc+256x96 deleted file mode 100644 index 1395d40..0000000 Binary files a/ncurses/terminfo/78/xnuppc+256x96 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+80x25 b/ncurses/terminfo/78/xnuppc+80x25 deleted file mode 100644 index 6548421..0000000 Binary files a/ncurses/terminfo/78/xnuppc+80x25 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+80x30 b/ncurses/terminfo/78/xnuppc+80x30 deleted file mode 100644 index 95cfb81..0000000 Binary files a/ncurses/terminfo/78/xnuppc+80x30 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+90x30 b/ncurses/terminfo/78/xnuppc+90x30 deleted file mode 100644 index 13513c8..0000000 Binary files a/ncurses/terminfo/78/xnuppc+90x30 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+b b/ncurses/terminfo/78/xnuppc+b deleted file mode 100644 index a5ea85c..0000000 Binary files a/ncurses/terminfo/78/xnuppc+b and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+basic b/ncurses/terminfo/78/xnuppc+basic deleted file mode 100644 index 6c31961..0000000 Binary files a/ncurses/terminfo/78/xnuppc+basic and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+c b/ncurses/terminfo/78/xnuppc+c deleted file mode 100644 index 515da8d..0000000 Binary files a/ncurses/terminfo/78/xnuppc+c and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+f b/ncurses/terminfo/78/xnuppc+f deleted file mode 100644 index 64c0c73..0000000 Binary files a/ncurses/terminfo/78/xnuppc+f and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc+f2 b/ncurses/terminfo/78/xnuppc+f2 deleted file mode 100644 index 5581f96..0000000 Binary files a/ncurses/terminfo/78/xnuppc+f2 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-100x37 b/ncurses/terminfo/78/xnuppc-100x37 deleted file mode 100644 index 8602687..0000000 Binary files a/ncurses/terminfo/78/xnuppc-100x37 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-100x37-m b/ncurses/terminfo/78/xnuppc-100x37-m deleted file mode 100644 index ea78270..0000000 Binary files a/ncurses/terminfo/78/xnuppc-100x37-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-112x37 b/ncurses/terminfo/78/xnuppc-112x37 deleted file mode 100644 index 0a80408..0000000 Binary files a/ncurses/terminfo/78/xnuppc-112x37 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-112x37-m b/ncurses/terminfo/78/xnuppc-112x37-m deleted file mode 100644 index 54bb65f..0000000 Binary files a/ncurses/terminfo/78/xnuppc-112x37-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-128x40 b/ncurses/terminfo/78/xnuppc-128x40 deleted file mode 100644 index f471ac0..0000000 Binary files a/ncurses/terminfo/78/xnuppc-128x40 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-128x40-m b/ncurses/terminfo/78/xnuppc-128x40-m deleted file mode 100644 index 67c303d..0000000 Binary files a/ncurses/terminfo/78/xnuppc-128x40-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-128x48 b/ncurses/terminfo/78/xnuppc-128x48 deleted file mode 100644 index f6425ca..0000000 Binary files a/ncurses/terminfo/78/xnuppc-128x48 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-128x48-m b/ncurses/terminfo/78/xnuppc-128x48-m deleted file mode 100644 index da888a6..0000000 Binary files a/ncurses/terminfo/78/xnuppc-128x48-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-144x48 b/ncurses/terminfo/78/xnuppc-144x48 deleted file mode 100644 index 8a7557a..0000000 Binary files a/ncurses/terminfo/78/xnuppc-144x48 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-144x48-m b/ncurses/terminfo/78/xnuppc-144x48-m deleted file mode 100644 index a700a12..0000000 Binary files a/ncurses/terminfo/78/xnuppc-144x48-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-160x64 b/ncurses/terminfo/78/xnuppc-160x64 deleted file mode 100644 index df23b8d..0000000 Binary files a/ncurses/terminfo/78/xnuppc-160x64 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-160x64-m b/ncurses/terminfo/78/xnuppc-160x64-m deleted file mode 100644 index e8a4872..0000000 Binary files a/ncurses/terminfo/78/xnuppc-160x64-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-200x64 b/ncurses/terminfo/78/xnuppc-200x64 deleted file mode 100644 index 44e3ef1..0000000 Binary files a/ncurses/terminfo/78/xnuppc-200x64 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-200x64-m b/ncurses/terminfo/78/xnuppc-200x64-m deleted file mode 100644 index 607b124..0000000 Binary files a/ncurses/terminfo/78/xnuppc-200x64-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-200x75 b/ncurses/terminfo/78/xnuppc-200x75 deleted file mode 100644 index 589a104..0000000 Binary files a/ncurses/terminfo/78/xnuppc-200x75 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-200x75-m b/ncurses/terminfo/78/xnuppc-200x75-m deleted file mode 100644 index fca6adc..0000000 Binary files a/ncurses/terminfo/78/xnuppc-200x75-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-256x96 b/ncurses/terminfo/78/xnuppc-256x96 deleted file mode 100644 index d4d5da4..0000000 Binary files a/ncurses/terminfo/78/xnuppc-256x96 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-256x96-m b/ncurses/terminfo/78/xnuppc-256x96-m deleted file mode 100644 index c2af612..0000000 Binary files a/ncurses/terminfo/78/xnuppc-256x96-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-80x25 b/ncurses/terminfo/78/xnuppc-80x25 deleted file mode 100644 index 16fe8e4..0000000 Binary files a/ncurses/terminfo/78/xnuppc-80x25 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-80x25-m b/ncurses/terminfo/78/xnuppc-80x25-m deleted file mode 100644 index a34e480..0000000 Binary files a/ncurses/terminfo/78/xnuppc-80x25-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-80x30 b/ncurses/terminfo/78/xnuppc-80x30 deleted file mode 100644 index 099eead..0000000 Binary files a/ncurses/terminfo/78/xnuppc-80x30 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-80x30-m b/ncurses/terminfo/78/xnuppc-80x30-m deleted file mode 100644 index 23f2aa2..0000000 Binary files a/ncurses/terminfo/78/xnuppc-80x30-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-90x30 b/ncurses/terminfo/78/xnuppc-90x30 deleted file mode 100644 index 496140c..0000000 Binary files a/ncurses/terminfo/78/xnuppc-90x30 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-90x30-m b/ncurses/terminfo/78/xnuppc-90x30-m deleted file mode 100644 index 1e81861..0000000 Binary files a/ncurses/terminfo/78/xnuppc-90x30-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-b b/ncurses/terminfo/78/xnuppc-b deleted file mode 100644 index 1edfca5..0000000 Binary files a/ncurses/terminfo/78/xnuppc-b and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-f b/ncurses/terminfo/78/xnuppc-f deleted file mode 100644 index f152b10..0000000 Binary files a/ncurses/terminfo/78/xnuppc-f and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-f2 b/ncurses/terminfo/78/xnuppc-f2 deleted file mode 100644 index 85ebddc..0000000 Binary files a/ncurses/terminfo/78/xnuppc-f2 and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-m b/ncurses/terminfo/78/xnuppc-m deleted file mode 100644 index f2496e8..0000000 Binary files a/ncurses/terminfo/78/xnuppc-m and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-m-b b/ncurses/terminfo/78/xnuppc-m-b deleted file mode 100644 index 5f3658c..0000000 Binary files a/ncurses/terminfo/78/xnuppc-m-b and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-m-f b/ncurses/terminfo/78/xnuppc-m-f deleted file mode 100644 index 16b0a3e..0000000 Binary files a/ncurses/terminfo/78/xnuppc-m-f and /dev/null differ diff --git a/ncurses/terminfo/78/xnuppc-m-f2 b/ncurses/terminfo/78/xnuppc-m-f2 deleted file mode 100644 index 62febc7..0000000 Binary files a/ncurses/terminfo/78/xnuppc-m-f2 and /dev/null differ diff --git a/ncurses/terminfo/78/xtalk b/ncurses/terminfo/78/xtalk deleted file mode 100644 index 90b3eb3..0000000 Binary files a/ncurses/terminfo/78/xtalk and /dev/null differ diff --git a/ncurses/terminfo/78/xterm b/ncurses/terminfo/78/xterm deleted file mode 100644 index fec988d..0000000 Binary files a/ncurses/terminfo/78/xterm and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+256color b/ncurses/terminfo/78/xterm+256color deleted file mode 100644 index a058522..0000000 Binary files a/ncurses/terminfo/78/xterm+256color and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+88color b/ncurses/terminfo/78/xterm+88color deleted file mode 100644 index 8173ec8..0000000 Binary files a/ncurses/terminfo/78/xterm+88color and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+app b/ncurses/terminfo/78/xterm+app deleted file mode 100644 index 0df7c39..0000000 Binary files a/ncurses/terminfo/78/xterm+app and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+edit b/ncurses/terminfo/78/xterm+edit deleted file mode 100644 index 9371ad3..0000000 Binary files a/ncurses/terminfo/78/xterm+edit and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+noapp b/ncurses/terminfo/78/xterm+noapp deleted file mode 100644 index f088143..0000000 Binary files a/ncurses/terminfo/78/xterm+noapp and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pc+edit b/ncurses/terminfo/78/xterm+pc+edit deleted file mode 100644 index 0872437..0000000 Binary files a/ncurses/terminfo/78/xterm+pc+edit and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcc0 b/ncurses/terminfo/78/xterm+pcc0 deleted file mode 100644 index 0f7749e..0000000 Binary files a/ncurses/terminfo/78/xterm+pcc0 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcc1 b/ncurses/terminfo/78/xterm+pcc1 deleted file mode 100644 index 537312c..0000000 Binary files a/ncurses/terminfo/78/xterm+pcc1 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcc2 b/ncurses/terminfo/78/xterm+pcc2 deleted file mode 100644 index a86218d..0000000 Binary files a/ncurses/terminfo/78/xterm+pcc2 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcc3 b/ncurses/terminfo/78/xterm+pcc3 deleted file mode 100644 index 980da82..0000000 Binary files a/ncurses/terminfo/78/xterm+pcc3 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pce2 b/ncurses/terminfo/78/xterm+pce2 deleted file mode 100644 index ffa1122..0000000 Binary files a/ncurses/terminfo/78/xterm+pce2 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcf0 b/ncurses/terminfo/78/xterm+pcf0 deleted file mode 100644 index 3c91b63..0000000 Binary files a/ncurses/terminfo/78/xterm+pcf0 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcf2 b/ncurses/terminfo/78/xterm+pcf2 deleted file mode 100644 index 5d691cd..0000000 Binary files a/ncurses/terminfo/78/xterm+pcf2 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+pcfkeys b/ncurses/terminfo/78/xterm+pcfkeys deleted file mode 100644 index e5e476d..0000000 Binary files a/ncurses/terminfo/78/xterm+pcfkeys and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+r6f2 b/ncurses/terminfo/78/xterm+r6f2 deleted file mode 100644 index 9b4847e..0000000 Binary files a/ncurses/terminfo/78/xterm+r6f2 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+sl b/ncurses/terminfo/78/xterm+sl deleted file mode 100644 index 8a623de..0000000 Binary files a/ncurses/terminfo/78/xterm+sl and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+sl-twm b/ncurses/terminfo/78/xterm+sl-twm deleted file mode 100644 index 714e9a1..0000000 Binary files a/ncurses/terminfo/78/xterm+sl-twm and /dev/null differ diff --git a/ncurses/terminfo/78/xterm+vt+edit b/ncurses/terminfo/78/xterm+vt+edit deleted file mode 100644 index a435cb8..0000000 Binary files a/ncurses/terminfo/78/xterm+vt+edit and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-1002 b/ncurses/terminfo/78/xterm-1002 deleted file mode 100644 index c1d3ad3..0000000 Binary files a/ncurses/terminfo/78/xterm-1002 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-1003 b/ncurses/terminfo/78/xterm-1003 deleted file mode 100644 index 7ce1483..0000000 Binary files a/ncurses/terminfo/78/xterm-1003 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-16color b/ncurses/terminfo/78/xterm-16color deleted file mode 100644 index 3fbf16d..0000000 Binary files a/ncurses/terminfo/78/xterm-16color and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-24 b/ncurses/terminfo/78/xterm-24 deleted file mode 100644 index 5349f6d..0000000 Binary files a/ncurses/terminfo/78/xterm-24 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-256color b/ncurses/terminfo/78/xterm-256color deleted file mode 100644 index d3be7ef..0000000 Binary files a/ncurses/terminfo/78/xterm-256color and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-88color b/ncurses/terminfo/78/xterm-88color deleted file mode 100644 index 6b0e27d..0000000 Binary files a/ncurses/terminfo/78/xterm-88color and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-8bit b/ncurses/terminfo/78/xterm-8bit deleted file mode 100644 index daf2ebd..0000000 Binary files a/ncurses/terminfo/78/xterm-8bit and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-basic b/ncurses/terminfo/78/xterm-basic deleted file mode 100644 index 822bcbf..0000000 Binary files a/ncurses/terminfo/78/xterm-basic and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-bold b/ncurses/terminfo/78/xterm-bold deleted file mode 100644 index 0c4f0d0..0000000 Binary files a/ncurses/terminfo/78/xterm-bold and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-color b/ncurses/terminfo/78/xterm-color deleted file mode 100644 index 10bf2e1..0000000 Binary files a/ncurses/terminfo/78/xterm-color and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-hp b/ncurses/terminfo/78/xterm-hp deleted file mode 100644 index 3095234..0000000 Binary files a/ncurses/terminfo/78/xterm-hp and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-new b/ncurses/terminfo/78/xterm-new deleted file mode 100644 index 2f408a8..0000000 Binary files a/ncurses/terminfo/78/xterm-new and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-nic b/ncurses/terminfo/78/xterm-nic deleted file mode 100644 index b31569e..0000000 Binary files a/ncurses/terminfo/78/xterm-nic and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-noapp b/ncurses/terminfo/78/xterm-noapp deleted file mode 100644 index 7464764..0000000 Binary files a/ncurses/terminfo/78/xterm-noapp and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-old b/ncurses/terminfo/78/xterm-old deleted file mode 100644 index 9d22f0c..0000000 Binary files a/ncurses/terminfo/78/xterm-old and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-pcolor b/ncurses/terminfo/78/xterm-pcolor deleted file mode 100644 index a81dbc0..0000000 Binary files a/ncurses/terminfo/78/xterm-pcolor and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-r5 b/ncurses/terminfo/78/xterm-r5 deleted file mode 100644 index 64449b8..0000000 Binary files a/ncurses/terminfo/78/xterm-r5 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-r6 b/ncurses/terminfo/78/xterm-r6 deleted file mode 100644 index 9d22f0c..0000000 Binary files a/ncurses/terminfo/78/xterm-r6 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-sco b/ncurses/terminfo/78/xterm-sco deleted file mode 100644 index db4f654..0000000 Binary files a/ncurses/terminfo/78/xterm-sco and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-sun b/ncurses/terminfo/78/xterm-sun deleted file mode 100644 index 8748102..0000000 Binary files a/ncurses/terminfo/78/xterm-sun and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-vt220 b/ncurses/terminfo/78/xterm-vt220 deleted file mode 100644 index 9a30067..0000000 Binary files a/ncurses/terminfo/78/xterm-vt220 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-vt52 b/ncurses/terminfo/78/xterm-vt52 deleted file mode 100644 index c088f9a..0000000 Binary files a/ncurses/terminfo/78/xterm-vt52 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xf86-v32 b/ncurses/terminfo/78/xterm-xf86-v32 deleted file mode 100644 index bbc4b30..0000000 Binary files a/ncurses/terminfo/78/xterm-xf86-v32 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xf86-v33 b/ncurses/terminfo/78/xterm-xf86-v33 deleted file mode 100644 index d19973d..0000000 Binary files a/ncurses/terminfo/78/xterm-xf86-v33 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xf86-v333 b/ncurses/terminfo/78/xterm-xf86-v333 deleted file mode 100644 index f41da5b..0000000 Binary files a/ncurses/terminfo/78/xterm-xf86-v333 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xf86-v40 b/ncurses/terminfo/78/xterm-xf86-v40 deleted file mode 100644 index f989169..0000000 Binary files a/ncurses/terminfo/78/xterm-xf86-v40 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xf86-v43 b/ncurses/terminfo/78/xterm-xf86-v43 deleted file mode 100644 index ab7d19d..0000000 Binary files a/ncurses/terminfo/78/xterm-xf86-v43 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xf86-v44 b/ncurses/terminfo/78/xterm-xf86-v44 deleted file mode 100644 index 74c5902..0000000 Binary files a/ncurses/terminfo/78/xterm-xf86-v44 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xfree86 b/ncurses/terminfo/78/xterm-xfree86 deleted file mode 100644 index c2743ac..0000000 Binary files a/ncurses/terminfo/78/xterm-xfree86 and /dev/null differ diff --git a/ncurses/terminfo/78/xterm-xi b/ncurses/terminfo/78/xterm-xi deleted file mode 100644 index b1212df..0000000 Binary files a/ncurses/terminfo/78/xterm-xi and /dev/null differ diff --git a/ncurses/terminfo/78/xterm1 b/ncurses/terminfo/78/xterm1 deleted file mode 100644 index a8f5c33..0000000 Binary files a/ncurses/terminfo/78/xterm1 and /dev/null differ diff --git a/ncurses/terminfo/78/xtermc b/ncurses/terminfo/78/xtermc deleted file mode 100644 index 1c2874c..0000000 Binary files a/ncurses/terminfo/78/xtermc and /dev/null differ diff --git a/ncurses/terminfo/78/xtermm b/ncurses/terminfo/78/xtermm deleted file mode 100644 index 41770a8..0000000 Binary files a/ncurses/terminfo/78/xtermm and /dev/null differ diff --git a/ncurses/terminfo/78/xterms b/ncurses/terminfo/78/xterms deleted file mode 100644 index 5349f6d..0000000 Binary files a/ncurses/terminfo/78/xterms and /dev/null differ diff --git a/ncurses/terminfo/78/xterms-sun b/ncurses/terminfo/78/xterms-sun deleted file mode 100644 index e20eb22..0000000 Binary files a/ncurses/terminfo/78/xterms-sun and /dev/null differ diff --git a/ncurses/terminfo/78/xwsh b/ncurses/terminfo/78/xwsh deleted file mode 100644 index 166c601..0000000 Binary files a/ncurses/terminfo/78/xwsh and /dev/null differ diff --git a/ncurses/terminfo/7a/z-100 b/ncurses/terminfo/7a/z-100 deleted file mode 100644 index f72ecae..0000000 Binary files a/ncurses/terminfo/7a/z-100 and /dev/null differ diff --git a/ncurses/terminfo/7a/z-100bw b/ncurses/terminfo/7a/z-100bw deleted file mode 100644 index d49866e..0000000 Binary files a/ncurses/terminfo/7a/z-100bw and /dev/null differ diff --git a/ncurses/terminfo/7a/z100 b/ncurses/terminfo/7a/z100 deleted file mode 100644 index f72ecae..0000000 Binary files a/ncurses/terminfo/7a/z100 and /dev/null differ diff --git a/ncurses/terminfo/7a/z100bw b/ncurses/terminfo/7a/z100bw deleted file mode 100644 index d49866e..0000000 Binary files a/ncurses/terminfo/7a/z100bw and /dev/null differ diff --git a/ncurses/terminfo/7a/z110 b/ncurses/terminfo/7a/z110 deleted file mode 100644 index f72ecae..0000000 Binary files a/ncurses/terminfo/7a/z110 and /dev/null differ diff --git a/ncurses/terminfo/7a/z110bw b/ncurses/terminfo/7a/z110bw deleted file mode 100644 index d49866e..0000000 Binary files a/ncurses/terminfo/7a/z110bw and /dev/null differ diff --git a/ncurses/terminfo/7a/z19 b/ncurses/terminfo/7a/z19 deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/7a/z19 and /dev/null differ diff --git a/ncurses/terminfo/7a/z29 b/ncurses/terminfo/7a/z29 deleted file mode 100644 index 2c8a1fc..0000000 Binary files a/ncurses/terminfo/7a/z29 and /dev/null differ diff --git a/ncurses/terminfo/7a/z29a b/ncurses/terminfo/7a/z29a deleted file mode 100644 index 095b6f7..0000000 Binary files a/ncurses/terminfo/7a/z29a and /dev/null differ diff --git a/ncurses/terminfo/7a/z29a-kc-bc b/ncurses/terminfo/7a/z29a-kc-bc deleted file mode 100644 index 095b6f7..0000000 Binary files a/ncurses/terminfo/7a/z29a-kc-bc and /dev/null differ diff --git a/ncurses/terminfo/7a/z29a-kc-uc b/ncurses/terminfo/7a/z29a-kc-uc deleted file mode 100644 index 81cd8fc..0000000 Binary files a/ncurses/terminfo/7a/z29a-kc-uc and /dev/null differ diff --git a/ncurses/terminfo/7a/z29a-nkc-bc b/ncurses/terminfo/7a/z29a-nkc-bc deleted file mode 100644 index 4762186..0000000 Binary files a/ncurses/terminfo/7a/z29a-nkc-bc and /dev/null differ diff --git a/ncurses/terminfo/7a/z29a-nkc-uc b/ncurses/terminfo/7a/z29a-nkc-uc deleted file mode 100644 index 96a524c..0000000 Binary files a/ncurses/terminfo/7a/z29a-nkc-uc and /dev/null differ diff --git a/ncurses/terminfo/7a/z29b b/ncurses/terminfo/7a/z29b deleted file mode 100644 index 2c8a1fc..0000000 Binary files a/ncurses/terminfo/7a/z29b and /dev/null differ diff --git a/ncurses/terminfo/7a/z30 b/ncurses/terminfo/7a/z30 deleted file mode 100644 index e2253ba..0000000 Binary files a/ncurses/terminfo/7a/z30 and /dev/null differ diff --git a/ncurses/terminfo/7a/z340 b/ncurses/terminfo/7a/z340 deleted file mode 100644 index 8a49449..0000000 Binary files a/ncurses/terminfo/7a/z340 and /dev/null differ diff --git a/ncurses/terminfo/7a/z340-nam b/ncurses/terminfo/7a/z340-nam deleted file mode 100644 index 3a88453..0000000 Binary files a/ncurses/terminfo/7a/z340-nam and /dev/null differ diff --git a/ncurses/terminfo/7a/z39-a b/ncurses/terminfo/7a/z39-a deleted file mode 100644 index d934401..0000000 Binary files a/ncurses/terminfo/7a/z39-a and /dev/null differ diff --git a/ncurses/terminfo/7a/z39a b/ncurses/terminfo/7a/z39a deleted file mode 100644 index d934401..0000000 Binary files a/ncurses/terminfo/7a/z39a and /dev/null differ diff --git a/ncurses/terminfo/7a/z50 b/ncurses/terminfo/7a/z50 deleted file mode 100644 index a946642..0000000 Binary files a/ncurses/terminfo/7a/z50 and /dev/null differ diff --git a/ncurses/terminfo/7a/z8001 b/ncurses/terminfo/7a/z8001 deleted file mode 100644 index c99e7b0..0000000 Binary files a/ncurses/terminfo/7a/z8001 and /dev/null differ diff --git a/ncurses/terminfo/7a/zen30 b/ncurses/terminfo/7a/zen30 deleted file mode 100644 index e2253ba..0000000 Binary files a/ncurses/terminfo/7a/zen30 and /dev/null differ diff --git a/ncurses/terminfo/7a/zen50 b/ncurses/terminfo/7a/zen50 deleted file mode 100644 index a946642..0000000 Binary files a/ncurses/terminfo/7a/zen50 and /dev/null differ diff --git a/ncurses/terminfo/7a/zen8001 b/ncurses/terminfo/7a/zen8001 deleted file mode 100644 index c99e7b0..0000000 Binary files a/ncurses/terminfo/7a/zen8001 and /dev/null differ diff --git a/ncurses/terminfo/7a/zenith b/ncurses/terminfo/7a/zenith deleted file mode 100644 index 8593e96..0000000 Binary files a/ncurses/terminfo/7a/zenith and /dev/null differ diff --git a/ncurses/terminfo/7a/zenith29 b/ncurses/terminfo/7a/zenith29 deleted file mode 100644 index 2c8a1fc..0000000 Binary files a/ncurses/terminfo/7a/zenith29 and /dev/null differ diff --git a/ncurses/terminfo/7a/zenith39-a b/ncurses/terminfo/7a/zenith39-a deleted file mode 100644 index d934401..0000000 Binary files a/ncurses/terminfo/7a/zenith39-a and /dev/null differ diff --git a/ncurses/terminfo/7a/zenith39-ansi b/ncurses/terminfo/7a/zenith39-ansi deleted file mode 100644 index d934401..0000000 Binary files a/ncurses/terminfo/7a/zenith39-ansi and /dev/null differ diff --git a/ncurses/terminfo/7a/zt-1 b/ncurses/terminfo/7a/zt-1 deleted file mode 100644 index 9e65d8d..0000000 Binary files a/ncurses/terminfo/7a/zt-1 and /dev/null differ diff --git a/ncurses/terminfo/7a/ztx b/ncurses/terminfo/7a/ztx deleted file mode 100644 index 9e65d8d..0000000 Binary files a/ncurses/terminfo/7a/ztx and /dev/null differ diff --git a/ncurses/terminfo/7a/ztx-1-a b/ncurses/terminfo/7a/ztx-1-a deleted file mode 100644 index 9e65d8d..0000000 Binary files a/ncurses/terminfo/7a/ztx-1-a and /dev/null differ diff --git a/ncurses/terminfo/7a/ztx11 b/ncurses/terminfo/7a/ztx11 deleted file mode 100644 index 9e65d8d..0000000 Binary files a/ncurses/terminfo/7a/ztx11 and /dev/null differ diff --git a/ncurses5.4-config.1 b/ncurses5.4-config.1 new file mode 100644 index 0000000..6d2659a --- /dev/null +++ b/ncurses5.4-config.1 @@ -0,0 +1,73 @@ +.\""Copyright (c) 2005 Apple Computer, Inc. All Rights Reserved. +.\" +.Dd January 13, 2009 +.Dt ncurses5.4-config 1 +.Os +.Sh NAME +.Nm ncurses5.4-config +.Nd report configuration and linking information for ncurses +.Sh SYNOPSIS +.Nm +{--prefix | --exex-prefix | --cflags | --libs | --version | --abi-version | --mouse-version | --bindir | --datadir | --libdir | --mandir | --terminfo | --terminfo-dirs | --termpath } +.Sh DESCRIPTION +The +.Nm +utility reports ncurses configuration and linking information. +.Pp +The options are as follows: +.Bl -tag -width indent +.It Fl --prefix +Reports package-prefix +.Nm +was installed with +.It Fl --exec-prefix +Reports executable-prefix +.Nm +was installed with +.It Fl --cflags +Reports C compiler flags needed to compile with ncurses +.It Fl --libs +Reports libraries needed to link with ncurses +.It Fl --version +Reports release+patchdate version +.Nm +was installed with +.It Fl --abi-version +Reports ABI version +.Nm +was installed with +.It Fl --mouse-version +Reports mouse-interface version +.Nm +was installed with +.It Fl --bindir +Reports directory containing +.Nm +programs +.It Fl --datadir +Reports directory containing +.Nm +data +.It Fl --libdir +Reports directory containing +.Nm +libraries +.It Fl --mandir +Reports directory containing +.Nm +manpages +.It Fl --terminfo +Reports +.Ev $TERMINFO +terminfo database path +.It Fl --terminfo-dirs +Reports +.Ev $TERMINFO_DIRS +directory list +.It Fl --termpath +Reports +.Ev $TERMPATH +termcap list +.El +.Sh EXIT STATUS +.Ex -std diff --git a/patches.applied/hex.diff b/patches.applied/hex.diff new file mode 100644 index 0000000..0abc069 --- /dev/null +++ b/patches.applied/hex.diff @@ -0,0 +1,21 @@ +diff -Nru ./misc/terminfo.src ../ncurses-5.4+hex/misc/terminfo.src +--- ./misc/terminfo.src 2004-01-17 17:37:18.000000000 -0800 ++++ ../ncurses-5.4+hex/misc/terminfo.src 2004-11-27 15:10:30.000000000 -0800 +@@ -5754,7 +5754,7 @@ + # hp2621 with function labels. Most of the time they are off, + # but inside vi, the function key labels appear. You have to + # hold down shift to get them to xmit. +-hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels, ++hp2621|hp2621a|2621|2621a|hp2621-wl|2621-wl|hp 2621 w/labels, + is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl, + hp2621-fl|hp 2621, + xhp@, xon, +@@ -6247,7 +6247,7 @@ + ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, + sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, + smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, +-hp70092|hp70092a|hp70092A|HP 700/92, ++hp70092|hp70092a|HP 700/92, + am, da, db, xhp, + cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, + acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, diff --git a/patches.applied/make.diff b/patches.applied/make.diff new file mode 100644 index 0000000..2952a8c --- /dev/null +++ b/patches.applied/make.diff @@ -0,0 +1,53 @@ +diff -Nru ./configure ../ncurses-5.4+local/configure +--- ./configure 2004-01-31 17:03:42.000000000 -0800 ++++ ../ncurses-5.4+local/configure 2004-11-19 18:57:27.000000000 -0800 +@@ -6824,7 +6824,6 @@ + echo "$as_me:6824: result: $with_widec" >&5 + echo "${ECHO_T}$with_widec" >&6 + if test "$with_widec" = yes ; then +- LIB_SUFFIX="w${LIB_SUFFIX}" + cat >>confdefs.h <<\EOF + #define USE_WIDEC_SUPPORT 1 + EOF +diff -Nru ./misc/run_tic.in ../ncurses-5.4+local/misc/run_tic.in +--- ./misc/run_tic.in 2003-09-06 15:31:44.000000000 -0700 ++++ ../ncurses-5.4+local/misc/run_tic.in 2004-11-24 22:26:54.000000000 -0800 +@@ -137,38 +137,3 @@ + exit 1 + fi + fi +- +-# Make a symbolic link to provide compatibility with applications that expect +-# to find terminfo under /usr/lib. That is, we'll _try_ to do that. Not +-# all systems support symbolic links, and those that do provide a variety +-# of options for 'test'. +-if test "$TICDIR" != "$TERMINFO" ; then +- ( rm -f $TICDIR 2>/dev/null ) +- if ( cd $TICDIR 2>/dev/null ) +- then +- cd $TICDIR +- TICDIR=`pwd` +- if test $TICDIR != $TERMINFO ; then +- # Well, we tried. Some systems lie to us, so the +- # installer will have to double-check. +- echo "Verify if $TICDIR and $TERMINFO are the same." +- echo "The new terminfo is in $TERMINFO; the other should be a link to it." +- echo "Otherwise, remove $TICDIR and link it to $TERMINFO." +- fi +- else +- cd ${DESTDIR}$prefix +- # Construct a symbolic link that only assumes $ticdir has the +- # same $prefix as the other installed directories. +- RELATIVE=`echo $ticdir|sed -e 's%^'$prefix'/%%'` +- if test "$RELATIVE" != "$ticdir" ; then +- RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'` +- fi +- if ( @LN_S@ $RELATIVE $TICDIR ) +- then +- echo '** sym-linked '$TICDIR' for compatibility' +- else +- echo '** could not sym-link '$TICDIR' for compatibility' +- fi +- fi +-fi +-# vile:shmode diff --git a/patches.applied/man_usrlocal.diff b/patches.applied/man_usrlocal.diff new file mode 100644 index 0000000..52f7912 --- /dev/null +++ b/patches.applied/man_usrlocal.diff @@ -0,0 +1,27 @@ +diff --git a/ncurses/man/term.5 b/ncurses/man/term.5 +index 19af62a..b3b2264 100644 +--- a/ncurses/man/term.5 ++++ b/ncurses/man/term.5 +@@ -265,6 +265,8 @@ Some limitations: total compiled entries cannot exceed 4096 bytes. + The name field cannot exceed 128 bytes. + .SH FILES + \*d/*/* compiled terminal capability data base ++.TP 5 ++/usr/local/share/terminfo/*/* fallback compiled terminal capability data base + .SH SEE ALSO + \fBcurses\fR(3X), \fBterminfo\fR(\*n). + .SH AUTHORS +diff --git a/ncurses/man/term.7 b/ncurses/man/term.7 +index 7eda6fb..feb5906 100644 +--- a/ncurses/man/term.7 ++++ b/ncurses/man/term.7 +@@ -189,6 +189,9 @@ should be unique within the first 14 characters. + \*d/?/* + compiled terminal capability data base + .TP 5 ++/usr/local/share/terminfo/?/* ++fallback compiled terminal capability data base ++.TP 5 + /etc/inittab + tty line initialization (AT&T-like UNIXes) + .TP 5 diff --git a/patches.applied/opaque_fix.diff b/patches.applied/opaque_fix.diff new file mode 100644 index 0000000..c481602 --- /dev/null +++ b/patches.applied/opaque_fix.diff @@ -0,0 +1,10 @@ +--- ncurses/base/MKlib_gen.sh 2008-08-30 12:20:50.000000000 -0700 ++++ ncurses/base/MKlib_gen.sh 2009-01-16 15:32:35.000000000 -0800 +@@ -396,6 +396,7 @@ + cat >$TMP < + #undef NCURSES_NOMACROS ++#define NCURSES_OPAQUE 0 + #include + + DECLARATIONS diff --git a/patches.applied/supress_usr_lib.diff b/patches.applied/supress_usr_lib.diff new file mode 100644 index 0000000..23bdabd --- /dev/null +++ b/patches.applied/supress_usr_lib.diff @@ -0,0 +1,11 @@ +--- misc/ncurses-config.in 2007-03-17 13:02:19.000000000 -0700 ++++ misc/ncurses-config.in 2009-01-29 11:40:10.000000000 -0800 +@@ -87,7 +87,7 @@ + ;; + --libs) + sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO +- -L${exec_prefix}/lib @EXTRA_LDFLAGS@ -l${THIS} @LIBS@ ++ @EXTRA_LDFLAGS@ -l${THIS} @LIBS@ + ENDECHO + ;; + # identification diff --git a/patches.applied/ungetch_guard.diff b/patches.applied/ungetch_guard.diff new file mode 100644 index 0000000..c59a836 --- /dev/null +++ b/patches.applied/ungetch_guard.diff @@ -0,0 +1,13 @@ +--- ncurses/base/lib_ungetch.c 2002-08-24 15:08:48.000000000 -0700 ++++ ncurses/base/lib_ungetch.c 2008-03-25 13:49:35.000000000 -0700 +@@ -61,6 +61,10 @@ + { + int rc = ERR; + ++ if (!sp) { ++ returnCode(ERR); ++ } ++ + if (tail != -1) { + if (head == -1) { + head = 0; diff --git a/patches.applied/wgetbkgrnd.diff b/patches.applied/wgetbkgrnd.diff new file mode 100644 index 0000000..7eb7da1 --- /dev/null +++ b/patches.applied/wgetbkgrnd.diff @@ -0,0 +1,23 @@ +--- configure 2009-01-05 13:51:27.000000000 -0800 ++++ configure 2009-01-05 14:50:56.000000000 -0800 +@@ -9859,6 +9859,11 @@ + echo "$as_me:9860: checking if you want experimental reentrant code" >&5 + echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6 + ++# Opaque structures make binaries less likely to be incompatable with ++# future versions of ncurses. ++cf_cv_enable_opaque="NCURSES_INTERNALS" ++NCURSES_OPAQUE=1 ++ + # Check whether --enable-reentrant or --disable-reentrant was given. + if test "${enable_reentrant+set}" = set; then + enableval="$enable_reentrant" +@@ -9904,7 +9904,7 @@ + else + cf_cv_enable_reentrant=0 + cf_cv_enable_opaque="NCURSES_OPAQUE" +- NCURSES_OPAQUE=0 ++ NCURSES_OPAQUE=1 + NCURSES_SIZE_T=short + fi + diff --git a/xcodeconfig/base.xcconfig b/xcodeconfig/base.xcconfig new file mode 100644 index 0000000..9292cce --- /dev/null +++ b/xcodeconfig/base.xcconfig @@ -0,0 +1,18 @@ +#include "/Makefiles/CoreOS/Xcode/BSD.xcconfig" + +ARCHS = $(ARCHS_STANDARD_32_64_BIT) +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym +ALTERNATE_MODE = go-w,a+rX +STRIP_INSTALLED_PRODUCT = YES +HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR) $(PROJECT_DIR)/ncurses/include $(PROJECT_DIR)/ncurses/ncurses $(PROJECT_DIR)/ncurses/progs + +CODE_SIGN_IDENTITY = - +AD_HOC_CODE_SIGNING_ALLOWED = YES + +INSTALLHDRS_SCRIPT_PHASE = YES +INSTALLHDRS_COPY_PHASE = YES + +GENERATE_TEXT_BASED_STUBS = YES +SUPPORTS_TEXT_BASED_API = YES +TAPI_VERIFY_MODE = ErrorsAndWarnings +OTHER_TAPI_FLAGS = -Xparser -include -Xparser $(SRCROOT)/ncurses/include/ncurses_cfg.h diff --git a/xcodeconfig/executables.xcconfig b/xcodeconfig/executables.xcconfig new file mode 100644 index 0000000..18f053a --- /dev/null +++ b/xcodeconfig/executables.xcconfig @@ -0,0 +1,8 @@ +#include "base.xcconfig" + +INSTALL_PATH = /usr/bin +GCC_C_LANGUAGE_STANDARD = gnu99 +GCC_CW_ASM_SYNTAX = NO +GCC_ENABLE_PASCAL_STRINGS = NO +GCC_WARN_ABOUT_RETURN_TYPE = YES + diff --git a/xcodeconfig/libraries.xcconfig b/xcodeconfig/libraries.xcconfig new file mode 100644 index 0000000..5d8f7c1 --- /dev/null +++ b/xcodeconfig/libraries.xcconfig @@ -0,0 +1,14 @@ +#include "base.xcconfig" + +INSTALL_PATH = /usr/lib +STRIP_STYLE = non-global +EXECUTABLE_PREFIX = lib +CURRENT_PROJECT_VERSION = $(RC_ProjectSourceVersion) +VERSIONING_SYSTEM = apple-generic +GCC_C_LANGUAGE_STANDARD = gnu99 +GCC_CW_ASM_SYNTAX = NO +GCC_ENABLE_PASCAL_STRINGS = NO +GCC_PREPROCESSOR_DEFINITIONS = HAVE_CONFIG_H _XOPEN_SOURCE=600 SIGWINCH=28 NDEBUG _XOPEN_SOURCE_EXTENDED NCURSES_OPAQUE=0 +GCC_WARN_ABOUT_RETURN_TYPE = YES +GCC_WARN_UNUSED_VARIABLE = YES +IS_ZIPPERED = YES diff --git a/xcodescripts/bootstrap_headers.sh b/xcodescripts/bootstrap_headers.sh new file mode 100644 index 0000000..6faab82 --- /dev/null +++ b/xcodescripts/bootstrap_headers.sh @@ -0,0 +1,30 @@ +#!/bin/sh +set -e -x + +export AWK=awk +CAPS="$PROJECT_DIR"/ncurses/include/Caps + +mkdir -p "$BUILT_PRODUCTS_DIR" + +# curses.h +cat "$PROJECT_DIR"/ncurses/include/curses.head > "$BUILT_PRODUCTS_DIR"/curses.h +sh "$PROJECT_DIR"/ncurses/include/MKkey_defs.sh "$CAPS" \ + >> "$BUILT_PRODUCTS_DIR"/curses.h +cat "$PROJECT_DIR"/ncurses/include/curses.wide >> "$BUILT_PRODUCTS_DIR"/curses.h +cat "$PROJECT_DIR"/ncurses/include/curses.tail >> "$BUILT_PRODUCTS_DIR"/curses.h + +# hashsize.h +sh "$PROJECT_DIR"/ncurses/include/MKhashsize.sh "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/hashsize.h + +# ncurses_def.h +sh "$PROJECT_DIR"/ncurses/include/MKncurses_def.sh \ + "$PROJECT_DIR"/ncurses/include/ncurses_defs \ + > "$BUILT_PRODUCTS_DIR"/ncurses_def.h + +# term.h +"$AWK" -f "$PROJECT_DIR"/ncurses/include/MKterm.h.awk "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/term.h +sh "$PROJECT_DIR"/ncurses/include/edit_cfg.sh \ + "$PROJECT_DIR"/ncurses/include/ncurses_cfg.h \ + "$BUILT_PRODUCTS_DIR"/term.h diff --git a/xcodescripts/bootstrap_sources.sh b/xcodescripts/bootstrap_sources.sh new file mode 100644 index 0000000..b493463 --- /dev/null +++ b/xcodescripts/bootstrap_sources.sh @@ -0,0 +1,9 @@ +#!/bin/sh +set -e -x + +CAPS="$PROJECT_DIR"/ncurses/include/Caps + +# names.c +awk -f "$PROJECT_DIR"/ncurses/ncurses/tinfo/MKnames.awk bigstrings=1 \ + < "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/names.c diff --git a/xcodescripts/derived_headers.sh b/xcodescripts/derived_headers.sh new file mode 100644 index 0000000..5cb2ee0 --- /dev/null +++ b/xcodescripts/derived_headers.sh @@ -0,0 +1,42 @@ +#!/bin/sh +set -e -x + +export AWK=awk +CAPS="$PROJECT_DIR"/ncurses/include/Caps + +# curses.h +cat "$PROJECT_DIR"/ncurses/include/curses.head > "$BUILT_PRODUCTS_DIR"/curses.h +sh "$PROJECT_DIR"/ncurses/include/MKkey_defs.sh "$CAPS" \ + >> "$BUILT_PRODUCTS_DIR"/curses.h +cat "$PROJECT_DIR"/ncurses/include/curses.wide >> "$BUILT_PRODUCTS_DIR"/curses.h +cat "$PROJECT_DIR"/ncurses/include/curses.tail >> "$BUILT_PRODUCTS_DIR"/curses.h + +# keys.list +sh "$PROJECT_DIR/ncurses/ncurses/tinfo/MKkeys_list.sh" "$CAPS" \ + | sort > "$BUILT_PRODUCTS_DIR"/keys.list + +# init_keytry.h +"$BUILT_PRODUCTS_DIR"/make_keys "$BUILT_PRODUCTS_DIR"/keys.list \ + > "$BUILT_PRODUCTS_DIR"/init_keytry.h + +# ncurses_def.h +sh "$PROJECT_DIR"/ncurses/include/MKncurses_def.sh \ + "$PROJECT_DIR"/ncurses/include/ncurses_defs \ + > "$BUILT_PRODUCTS_DIR"/ncurses_def.h + +# parametrized.h +sh "$PROJECT_DIR"/ncurses/include/MKparametrized.sh "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/parametrized.h + +# term.h +"$AWK" -f "$PROJECT_DIR"/ncurses/include/MKterm.h.awk "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/term.h +sh "$PROJECT_DIR"/ncurses/include/edit_cfg.sh \ + "$PROJECT_DIR"/ncurses/include/ncurses_cfg.h \ + "$BUILT_PRODUCTS_DIR"/term.h + +# transform.h +echo "#define PROG_CAPTOINFO \"captoinfo\"" > "$BUILT_PRODUCTS_DIR"/transform.h +echo "#define PROG_INFOTOCAP \"infotocap\"" >> "$BUILT_PRODUCTS_DIR"/transform.h +echo "#define PROG_RESET \"reset\"" >> "$BUILT_PRODUCTS_DIR"/transform.h +echo "#define PROG_INIT \"init\"" >> "$BUILT_PRODUCTS_DIR"/transform.h diff --git a/xcodescripts/derived_sources.sh b/xcodescripts/derived_sources.sh new file mode 100644 index 0000000..fb2203b --- /dev/null +++ b/xcodescripts/derived_sources.sh @@ -0,0 +1,62 @@ +#!/bin/sh +set -e -x + +CC=`xcrun -find cc -sdk macosx.internal` +AWK=/usr/bin/awk + +CAPS="$PROJECT_DIR"/ncurses/include/Caps + +INCDIR="-I$BUILT_PRODUCTS_DIR -I$PROJECT_DIR/ncurses/ncurses -I$PROJECT_DIR/ncurses/include" +MACROS="-DHAVE_CONFIG_H -U_XOPEN_SOURCE -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -DNDEBUG -DSIGWINCH=28" +if [ -n "$SDKROOT" ]; then + CFLAGS="-isysroot $SDKROOT" +fi + +# codes.c +awk -f "$PROJECT_DIR/ncurses/ncurses/tinfo/MKcodes.awk" bigstrings=1 "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/codes.c + +# comp_captab.c +pushd "$BUILT_PRODUCTS_DIR" +sh "$PROJECT_DIR"/ncurses/ncurses/tinfo/MKcaptab.sh "$AWK" 1 \ + "$PROJECT_DIR"/ncurses/ncurses/tinfo/MKcaptab.awk \ + "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/comp_captab.c +popd + +# expanded.c +sh "$PROJECT_DIR"/ncurses/ncurses/tty/MKexpanded.sh \ + "$CC -E" $CFLAGS $INCDIR $MACROS \ + > "$BUILT_PRODUCTS_DIR"/expanded.c + +# fallback.c +sh "$PROJECT_DIR/ncurses/ncurses/tinfo/MKfallback.sh" \ + /usr/share/terminfo \ + "$PROJECT_DIR"/ncurses/misc/terminfo.src \ + > "$BUILT_PRODUCTS_DIR"/fallback.c + +# lib_gen.c +sh "$PROJECT_DIR"/ncurses/ncurses/base/MKlib_gen.sh \ + "$CC -E -DHAVE_CONFIG $CFLAGS $INCDIR $MACROS" \ + "$AWK" \ + generated \ + < "$BUILT_PRODUCTS_DIR"/curses.h \ + > "$BUILT_PRODUCTS_DIR"/lib_gen.c + +# lib_keyname.c +awk -f "$PROJECT_DIR"/ncurses/ncurses/base/MKkeyname.awk bigstrings=1 \ + "$BUILT_PRODUCTS_DIR"/keys.list \ + > "$BUILT_PRODUCTS_DIR"/lib_keyname.c + +# names.c +awk -f "$PROJECT_DIR"/ncurses/ncurses/tinfo/MKnames.awk bigstrings=1 \ + < "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/names.c + +# termsort.c +sh "$PROJECT_DIR"/ncurses/progs/MKtermsort.sh "$AWK" "$CAPS" \ + > "$BUILT_PRODUCTS_DIR"/termsort.c + +# unctrl.c +echo | awk -f "$PROJECT_DIR"/ncurses/ncurses/base/MKunctrl.awk bigstrings=1 \ + > "$BUILT_PRODUCTS_DIR"/unctrl.c diff --git a/xcodescripts/fix_bin.sh b/xcodescripts/fix_bin.sh new file mode 100644 index 0000000..3dc270e --- /dev/null +++ b/xcodescripts/fix_bin.sh @@ -0,0 +1,24 @@ +#!/bin/sh +set -e -x + +# Do nothing for installhdrs +[ "$ACTION" == "installhdrs" ] && exit 0 +[ "$ACTION" == "installapi" ] && exit 0 + +if [ "${RC_ProjectName%_Sim}" != "${RC_ProjectName}" ] ; then + [ -z "${DSTROOT}" ] && exit 1 + if [ -d "${DSTROOT}/usr/bin" ]; then + rm -rf "${DSTROOT}/usr/bin" + fi + exit 0 +fi + +ln -s -f tset "$DSTROOT"/usr/bin/reset +ln -s -f tic "$DSTROOT"/usr/bin/captoinfo +ln -s -f tic "$DSTROOT"/usr/bin/infotocap + +install -g "$INSTALL_GROUP" -o "$INSTALL_OWNER" -m "$INSTALL_MODE_FLAG" \ + "$SRCROOT/ncurses/misc/ncurses-config" \ + "$DSTROOT/usr/bin/ncurses5.4-config" + +chmod +x "$DSTROOT/usr/bin/ncurses5.4-config" diff --git a/xcodescripts/fix_man.sed b/xcodescripts/fix_man.sed new file mode 100644 index 0000000..c10c4ed --- /dev/null +++ b/xcodescripts/fix_man.sed @@ -0,0 +1,13 @@ +s,@DATADIR@,/usr/share,g +s,@TERMINFO@,/usr/share/terminfo,g +s,@NCURSES_MAJOR@,5,g +s,@NCURSES_MINOR@,7,g +s,@NCURSES_PATCH@,20081102,g +s,@NCURSES_OSPEED@,short,g +s,@CAPTOINFO@,captoinfo, +s,@CLEAR@,clear, +s,@INFOCMP@,infocmp, +s,@INFOTOCAP@,infotocap, +s,@TIC@,tic, +s,@TOE@,toe, +s,@TPUT@,tput, diff --git a/xcodescripts/install_headers.sh b/xcodescripts/install_headers.sh new file mode 100644 index 0000000..ae98f42 --- /dev/null +++ b/xcodescripts/install_headers.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -e -x + +mkdir -p "$DSTROOT/usr/include" +install -g "$INSTALL_GROUP" -o "$INSTALL_OWNER" -m "$INSTALL_MODE_FLAG" \ + ./ncurses/include/tic.h \ + ./ncurses/menu/eti.h \ + ./ncurses/panel/panel.h \ + ./ncurses/include/ncurses_dll.h \ + ./ncurses/include/unctrl.h \ + ./ncurses/include/nc_tparm.h \ + "$BUILT_PRODUCTS_DIR"/term.h \ + ./ncurses/form/form.h \ + ./ncurses/include/termcap.h \ + "$BUILT_PRODUCTS_DIR"/curses.h \ + ./ncurses/menu/menu.h \ + ./ncurses/include/term_entry.h \ + "$DSTROOT/usr/include" +ln -s -f curses.h "$DSTROOT/usr/include/ncurses.h" diff --git a/xcodescripts/install_man_misc.sh b/xcodescripts/install_man_misc.sh new file mode 100644 index 0000000..3451eb6 --- /dev/null +++ b/xcodescripts/install_man_misc.sh @@ -0,0 +1,49 @@ +#!/bin/sh +set -e -x + +# Do nothing for installhdrs +[ "$ACTION" == "installhdrs" ] && exit 0 +[ "$ACTION" == "installapi" ] && exit 0 + +mkdir -p "$DSTROOT"/usr/local/OpenSource{Licenses,Versions} +install -g "$INSTALL_GROUP" -o "$INSTALL_OWNER" -m "$ALTERNATE_MODE" \ + ncurses.txt \ + "$DSTROOT"/usr/local/OpenSourceLicenses +install -g "$INSTALL_GROUP" -o "$INSTALL_OWNER" -m "$ALTERNATE_MODE" \ + ncurses.plist \ + "$DSTROOT"/usr/local/OpenSourceVersions + +[ "${RC_ProjectName%_Sim}" != "${RC_ProjectName}" ] && exit 0 + +mkdir -p "$DSTROOT"/usr/share/man/man{1,3,5,7} "$DSTROOT"/usr/share/tabset + +install -g "$INSTALL_GROUP" -o "$INSTALL_OWNER" -m "$ALTERNATE_MODE" \ + ncurses5.4-config.1 \ + "$DSTROOT"/usr/share/man/man1 + +install -g "$INSTALL_GROUP" -o "$INSTALL_OWNER" -m "$INSTALL_MODE_FLAG" \ + ncurses/misc/tabset/* \ + "$DSTROOT"/usr/share/tabset + +cd ncurses/man +sh MKterminfo.sh terminfo.head ../include/Caps terminfo.tail > terminfo.5 + +FIXMAN="$PROJECT_DIR"/xcodescripts/fix_man.sed +for m in *.[1357]? *.[1357]; do + # x=${m:e} + x=$(echo $m | sed -E 's,^.*\.([^.]*),\1,') + # section=$x[1,1] + section=$(echo $x | cut -c1-1) + dst="$DSTROOT"/usr/share/man/man$section/$m + echo $dst + sed -f "$FIXMAN" < "$m" > "$dst" + for l in $(sed -f "$FIXMAN" <"$m" | sed -f manlinks.sed | sort -u); do + echo \ \ -\> $l + ldst="$DSTROOT/usr/share/man/man$section/$l.$x" + [[ ! -a "$ldst" ]] && ln "$dst" "$ldst" + done +done + +ln "$DSTROOT/usr/share/man/man3/curs_termcap.3x" "$DSTROOT/usr/share/man/man3/termcap.3" + +exit 0 diff --git a/xcodescripts/link_libs.sh b/xcodescripts/link_libs.sh new file mode 100644 index 0000000..099d482 --- /dev/null +++ b/xcodescripts/link_libs.sh @@ -0,0 +1,30 @@ +#!/bin/sh +set -e -x + +# Do nothing for installhdrs +[ "$ACTION" == "installhdrs" ] && exit 0 + +ver=5.4 + +if [ "$ACTION" == "install" ] ; then + for link in libform.dylib libmenu.dylib libncurses.dylib libpanel.dylib ; do + ln -s -f $(basename -s .dylib $link).${ver}.dylib "$DSTROOT/usr/lib/$link" + done + + for link in libcurses.dylib libtermcap.dylib ; do + ln -s -f libncurses.${ver}.dylib $DSTROOT/usr/lib/$link + done + + # rdar://problem/11542731 + ln -s -f libncurses.${ver}.dylib "$DSTROOT"/usr/lib/libncurses.5.dylib +fi + +for link in libform.tbd libmenu.tbd libncurses.tbd libpanel.tbd ; do + ln -s -f $(basename -s .tbd $link).${ver}.tbd "$DSTROOT/usr/lib/$link" +done + +for link in libcurses.tbd libtermcap.tbd ; do + ln -s -f libncurses.${ver}.tbd $DSTROOT/usr/lib/$link +done + +ln -s -f libncurses.${ver}.tbd "$DSTROOT"/usr/lib/libncurses.5.tbd diff --git a/xcodescripts/native_execs.sh b/xcodescripts/native_execs.sh new file mode 100644 index 0000000..fd6befe --- /dev/null +++ b/xcodescripts/native_execs.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -e -x + +SDK="-sdk macosx.internal" + +export -n SDKROOT +export -n ARCHS CURRENT_ARCH RC_ARCHS RC_CFLAGS +export -n RC_TARGET_CONFIG RC_TARGET_UPDATE EMBEDDED_PROFILE_NAME +# Remove all platform variables from the environment +export -n `env | grep -E "^PLATFORM_" | cut -d= -f1` \ + +# Build the native_tic target using the current SDK for the build host +xcodebuild \ + "$@" \ + $SDK \ + SYMROOT="$SYMROOT" \ + DSTROOT="$BUILT_PRODUCTS_DIR" \ + install diff --git a/xcodescripts/run_tic.sh b/xcodescripts/run_tic.sh new file mode 100644 index 0000000..a879bce --- /dev/null +++ b/xcodescripts/run_tic.sh @@ -0,0 +1,25 @@ +#!/bin/sh +set -e -x + +# Do nothing for installhdrs +[ "$ACTION" == "installhdrs" ] && exit 0 +[ "$ACTION" == "installapi" ] && exit 0 + +# Do nothing for iPhoneSimulator build alias +[ "${RC_ProjectName%_Sim}" != "${RC_ProjectName}" ] && exit 0 + +sh "$PROJECT_DIR"/xcodescripts/native_execs.sh -target tic_static +mkdir -p "$BUILT_PRODUCTS_DIR/native" +cp "$BUILT_PRODUCTS_DIR/tic_static" "$BUILT_PRODUCTS_DIR/native/tic_static" + +cd ncurses/misc +PATH="$BUILT_PRODUCTS_DIR/native:$PATH" \ +DESTDIR="$DSTROOT" \ +suffix=_static \ +prefix=/usr \ +exec_prefix=/usr \ +bindir=/usr/bin \ +datadir=/usr/share \ +top_srcdir="$SRCROOT/ncurses" \ +srcdir="$SRCROOT/ncurses/misc" \ +/bin/sh ./run_tic.sh