xforms.git - xforms

index : xforms.git
xforms
summary refs log tree commit diff
diff options
context:
space:
mode:
authorJens Thoms Toerring <jt@toerring.de>2014年04月12日 21:40:53 +0200
committerJens Thoms Toerring <jt@toerring.de>2014年04月12日 21:40:53 +0200
commitee0f92d0ae0c8b0945eaa93c153e045e0ee9acd2 (patch)
tree31f264ef4c756a5d3b3ffbd616c8736c2cd87498
parent9f19c52795957e5759543420b4756ff32f720c69 (diff)
downloadxforms-ee0f92d0ae0c8b0945eaa93c153e045e0ee9acd2.tar.gz
Bug in font handling fixed
Diffstat
-rw-r--r--ChangeLog 5
-rw-r--r--configure.ac 2
-rw-r--r--doc/part1_defining_forms.texi 22
-rw-r--r--doc/xforms.texi 4
-rw-r--r--lib/ 35334
-rw-r--r--lib/fd/cmdbr.h 2
-rw-r--r--lib/fonts.c 124
-rw-r--r--lib/include/Basic.h 2
-rw-r--r--lib/private/flvasprintf.h 2
-rw-r--r--lib/private/pbrowser.h 4
-rw-r--r--lib/private/pscrollbar.h 2
11 files changed, 35437 insertions, 66 deletions
diff --git a/ChangeLog b/ChangeLog
index a8e4e44..9caca32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014年04月12日 Jens Thoms Toerring <jt@toerring.de>
+
+ * lib/fonts.c: Bug in font caching code, found by "Sunny",
+ that could result in crashes fixed.
+
2014年03月27日 Jens Thoms Toerring <jt@toerring.de>
* Some minor fixes for object label alignment
diff --git a/configure.ac b/configure.ac
index f439608..4ab6ea4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
dnl Process with autoconf to generate configure script -*- sh -*-
AC_PREREQ(2.59)
-AC_INIT([xforms],[1.3.5],[xforms-development@nongnu.org])
+AC_INIT([xforms],[1.3.6],[xforms-development@nongnu.org])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_SRCDIR(lib/forms.c)
XFORMS_CHECK_VERSION
diff --git a/doc/part1_defining_forms.texi b/doc/part1_defining_forms.texi
index 29b2d6e..2c7dfe0 100644
--- a/doc/part1_defining_forms.texi
+++ b/doc/part1_defining_forms.texi
@@ -1402,13 +1402,21 @@ before @code{@ref{fl_initialize()}}, it will return 0, but may fail later if
the font name is not valid. To change the default font
(helvetica-medium), a program should change font @code{FL_NORMAL_STYLE}.
-If a font name in XLFD is given, a question mark
-(@code{?}) in the point size position informs
-the Forms Library that variable size will be requested later. It is
-preferable that the complete XLFD name (i.e., with 14 dashes and
-possibly wildcards) be given because a complete name has the advantage
-that the font may be re-scalable if scalable fonts are available. This
-means that although both
+To get the name of a font at a certain index use
+@example
+@findex fl_get_font_name()
+@anchor{fl_get_font_name()}
+const char *fl_get_font_name(int index);
+@end example
+
+
+If a font name in XLFD is given, a question mark (@code{?}) in the
+point size position (i.e.; between the eighth and the nineth dash)
+informs the Forms Library that a scalable font should be requested
+later. It is preferable that the complete XLFD name (i.e., with 14
+dashes and possibly wildcards) be given because a complete name has
+the advantage that the font may be re-scalable if scalable fonts are
+available. This means that although both
@example
"-*-helvetica-medium-r-*-*-*-?-*-*-*-*-*-*"
"-*-helvetica-medium-r-*-*-*-?-*-*"
diff --git a/doc/xforms.texi b/doc/xforms.texi
index e333422..bdbd255 100644
--- a/doc/xforms.texi
+++ b/doc/xforms.texi
@@ -2,7 +2,7 @@
@setfilename xforms.info
@settitle XForms (Forms Library) - Version 1.2@*A Graphical User Interface Toolkit for X
-@set lastupdate March 13, 2014
+@set lastupdate Aprik 12, 2014
@paragraphindent 0
@titlepage
@@ -14,7 +14,7 @@
@sp 8
@center Library Version 1.2
@sp 2
-@center March 2014
+@center April 2014
@sp 8
@end titlepage
diff --git a/lib/ b/lib/
new file mode 100644
index 0000000..9bc53b1
--- /dev/null
+++ b/lib/
@@ -0,0 +1,35334 @@
+# 1 "forms.c"
+/*
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * \file forms.c
+ *
+ * This file is part of the XForms library package.
+ * Copyright (c) 1996-2002 T.C. Zhao and Mark Overmars
+ * All rights reserved.
+ *
+ * Main event dispatcher.
+ */
+
+
+
+
+
+#include <ctype.h>
+# 1 "/usr/include/ctype.h" 1 3
+/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004,2007,2008,2009,2011
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard 7.4: Character handling <ctype.h>
+ */
+
+
+#define _CTYPE_H 1
+
+#include <features.h>
+# 1 "/usr/include/features.h" 1 3
+/* Copyright (C) 1991-1993,1995-2007,2009,2010,2011
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _FEATURES_H 1
+
+/* These are defined by the user (or the compiler)
+ to specify the desired environment:
+
+ __STRICT_ANSI__ ISO Standard C.
+ _ISOC99_SOURCE Extensions to ISO C89 from ISO C99.
+ _POSIX_SOURCE IEEE Std 1003.1.
+ _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
+ if >=199309L, add IEEE Std 1003.1b-1993;
+ if >=199506L, add IEEE Std 1003.1c-1995;
+ if >=200112L, all of IEEE 1003.1-2004
+ if >=200809L, all of IEEE 1003.1-2008
+ _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if
+ Single Unix conformance is wanted, to 600 for the
+ sixth revision, to 700 for the seventh revision.
+ _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
+ _LARGEFILE_SOURCE Some more functions for correct standard I/O.
+ _LARGEFILE64_SOURCE Additional functionality from LFS for large files.
+ _FILE_OFFSET_BITS=N Select default filesystem interface.
+ _BSD_SOURCE ISO C, POSIX, and 4.3BSD things.
+ _SVID_SOURCE ISO C, POSIX, and SVID things.
+ _ATFILE_SOURCE Additional *at interfaces.
+ _GNU_SOURCE All of the above, plus GNU extensions.
+ _REENTRANT Select additionally reentrant object.
+ _THREAD_SAFE Same as _REENTRANT, often used by other systems.
+ _FORTIFY_SOURCE If set to numeric value > 0 additional security
+ measures are defined, according to level.
+
+ The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__.
+ If none of these are defined, the default is to have _SVID_SOURCE,
+ _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
+ 200112L. If more than one of these are defined, they accumulate.
+ For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE
+ together give you ISO C, 1003.1, and 1003.2, but nothing else.
+
+ These are defined by this file and are used by the
+ header files to decide what to declare or define:
+
+ __USE_ISOC99 Define ISO C99 things.
+ __USE_ISOC95 Define ISO C90 AMD1 (C95) things.
+ __USE_POSIX Define IEEE Std 1003.1 things.
+ __USE_POSIX2 Define IEEE Std 1003.2 things.
+ __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things.
+ __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things.
+ __USE_XOPEN Define XPG things.
+ __USE_XOPEN_EXTENDED Define X/Open Unix things.
+ __USE_UNIX98 Define Single Unix V2 things.
+ __USE_XOPEN2K Define XPG6 things.
+ __USE_XOPEN2KXSI Define XPG6 XSI things.
+ __USE_XOPEN2K8 Define XPG7 things.
+ __USE_XOPEN2K8XSI Define XPG7 XSI things.
+ __USE_LARGEFILE Define correct standard I/O things.
+ __USE_LARGEFILE64 Define LFS things with separate names.
+ __USE_FILE_OFFSET64 Define 64bit interface as default.
+ __USE_BSD Define 4.3BSD things.
+ __USE_SVID Define SVID things.
+ __USE_MISC Define things common to BSD and System V Unix.
+ __USE_ATFILE Define *at interfaces and AT_* constants for them.
+ __USE_GNU Define GNU extensions.
+ __USE_REENTRANT Define reentrant/thread-safe *_r functions.
+ __USE_FORTIFY_LEVEL Additional security measures used, according to level.
+ __FAVOR_BSD Favor 4.3BSD things in cases of conflict.
+
+ The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
+ defined by this file unconditionally. `__GNU_LIBRARY__' is provided
+ only for compatibility. All new code should use the other symbols
+ to test for features.
+
+ All macros listed above as possibly being defined by this file are
+ explicitly undefined if they are not explicitly defined.
+ Feature-test macros that are not defined by the user or compiler
+ but are implied by the other feature-test macros defined (or by the
+ lack of any definitions) are defined by the file. */
+
+
+/* Undefine everything, so we get a clean slate. */
+#undef __USE_ISOC99
+#undef __USE_ISOC95
+#undef __USE_POSIX
+#undef __USE_POSIX2
+#undef __USE_POSIX199309
+#undef __USE_POSIX199506
+#undef __USE_XOPEN
+#undef __USE_XOPEN_EXTENDED
+#undef __USE_UNIX98
+#undef __USE_XOPEN2K
+#undef __USE_XOPEN2KXSI
+#undef __USE_XOPEN2K8
+#undef __USE_XOPEN2K8XSI
+#undef __USE_LARGEFILE
+#undef __USE_LARGEFILE64
+#undef __USE_FILE_OFFSET64
+#undef __USE_BSD
+#undef __USE_SVID
+#undef __USE_MISC
+#undef __USE_ATFILE
+#undef __USE_GNU
+#undef __USE_REENTRANT
+#undef __USE_FORTIFY_LEVEL
+#undef __FAVOR_BSD
+#undef __KERNEL_STRICT_NAMES
+
+/* Suppress kernel-name space pollution unless user expressedly asks
+ for it. */
+
+#define __KERNEL_STRICT_NAMES
+
+
+/* Always use ISO C things. */
+#define __USE_ANSI 1
+
+/* Convenience macros to test the versions of glibc and gcc.
+ Use them like this:
+ #if __GNUC_PREREQ (2,8)
+ ... code requiring gcc 2.8 or later ...
+ #endif
+ Note - they won't work for gcc1 or glibc1, since the _MINOR macros
+ were not defined then. */
+
+#define __GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+
+
+
+
+
+/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */
+
+
+
+
+
+
+/* If _GNU_SOURCE was defined by the user, turn on all the other features. */
+# 177 "/usr/include/features.h" 3
+
+
+/* If nothing (other than _GNU_SOURCE) is defined,
+ define _BSD_SOURCE and _SVID_SOURCE. */
+
+
+
+#define _BSD_SOURCE 1
+#define _SVID_SOURCE 1
+
+
+/* This is to enable the ISO C99 extension. Also recognize the old macro
+ which was used prior to the standard acceptance. This macro will
+ eventually go away and the features enabled by default once the ISO C99
+ standard is widely adopted. */
+
+
+
+
+
+/* This is to enable the ISO C90 Amendment 1:1995 extension. */
+
+
+#define __USE_ISOC95 1
+
+
+/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2
+ (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */
+
+
+#define _POSIX_SOURCE 1
+
+
+
+
+
+
+
+#define _POSIX_C_SOURCE 200809L
+
+#define __USE_POSIX_IMPLICITLY 1
+
+
+
+#define __USE_POSIX 1
+
+
+
+#define __USE_POSIX2 1
+
+
+
+#define __USE_POSIX199309 1
+
+
+
+#define __USE_POSIX199506 1
+
+
+
+#define __USE_XOPEN2K 1
+#undef __USE_ISOC95
+#define __USE_ISOC95 1
+#undef __USE_ISOC99
+#define __USE_ISOC99 1
+
+
+
+#define __USE_XOPEN2K8 1
+#undef _ATFILE_SOURCE
+#define _ATFILE_SOURCE 1
+
+
+# 274 "/usr/include/features.h" 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#define __USE_MISC 1
+
+
+
+#define __USE_BSD 1
+
+
+
+#define __USE_SVID 1
+
+
+
+#define __USE_ATFILE 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#define __USE_FORTIFY_LEVEL 0
+
+
+/* Define __STDC_IEC_559__ and other similar macros. */
+#include <bits/predefs.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/predefs.h" 1 3
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#define _PREDEFS_H
+
+/* We do support the IEC 559 math functionality, real and complex. */
+#define __STDC_IEC_559__ 1
+#define __STDC_IEC_559_COMPLEX__ 1
+
+/* predefs.h */
+# 324 "/usr/include/features.h" 2 3
+
+
+/* wchar_t uses ISO 10646-1 (2nd ed., published 2000年09月15日) / Unicode 3.1. */
+#define __STDC_ISO_10646__ 200009L
+
+/* This macro indicates that the installed library is the GNU C Library.
+ For historic reasons the value now is 6 and this will stay from now
+ on. The use of this variable is deprecated. Use __GLIBC__ and
+ __GLIBC_MINOR__ now (see below) when you want to test for a specific
+ GNU C library version and use the values in <gnu/lib-names.h> to get
+ the sonames of the shared libraries. */
+#undef __GNU_LIBRARY__
+#define __GNU_LIBRARY__ 6
+
+/* Major and minor version number of the GNU C library package. Use
+ these macros to test for features in specific releases. */
+#define __GLIBC__ 2
+#define __GLIBC_MINOR__ 15
+
+#define __GLIBC_PREREQ(maj, min) \
+ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+
+/* Decide whether a compiler supports the long long datatypes. */
+
+
+
+
+#define __GLIBC_HAVE_LONG_LONG 1
+
+
+/* This is here only because every header file already includes this one. */
+
+
+#include <sys/cdefs.h>
+# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3
+/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009, 2011
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _SYS_CDEFS_H 1
+
+/* We are almost always included from features.h. */
+
+
+
+
+/* The GNU libc does not support any K&R compilers or the traditional mode
+ of ISO C compilers anymore. Check for some of the combinations not
+ anymore supported. */
+
+
+
+
+/* Some user header file might have defined this before. */
+#undef __P
+#undef __PMT
+
+
+
+/* All functions, except those with callbacks or those that
+ synchronize memory, are leaf functions. */
+
+#define __LEAF , __leaf__
+#define __LEAF_ATTR __attribute__ ((__leaf__))
+
+
+
+
+
+/* GCC can always grok prototypes. For C++ programs we add throw()
+ to help it optimize the function calls. But this works only with
+ gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
+ as non-throwing using a function attribute since programs can use
+ the -fexceptions options for C code as well. */
+
+#define __THROW __attribute__ ((__nothrow__ __LEAF))
+#define __THROWNL __attribute__ ((__nothrow__))
+#define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
+# 70 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3
+
+
+/* Not GCC. *//* GCC. */
+# 84 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3
+
+
+/* These two macros are not used in glibc anymore. They are kept here
+ only because some other projects expect the macros to be defined. */
+#define __P(args) args
+#define __PMT(args) args
+
+/* For these things, GCC behaves the ANSI way normally,
+ and the non-ANSI way under -traditional. */
+
+#define __CONCAT(x,y) x ## y
+#define __STRING(x) #x
+
+/* This is not a typedef so `const __ptr_t' does the right thing. */
+#define __ptr_t void *
+#define __long_double_t long double
+
+
+/* C++ needs to know that types and declarations are C, not C++. */
+
+
+
+
+#define __BEGIN_DECLS
+#define __END_DECLS
+
+
+
+/* The standard library needs the functions from the ISO C90 standard
+ in the std namespace. At the same time we want to be safe for
+ future changes and we include the ISO C99 code in the non-standard
+ namespace __c99. The C++ wrapper header take case of adding the
+ definitions to the global namespace. */
+
+
+
+
+
+
+
+
+/* For compatibility we do not add the declarations into any
+ namespace. They will end up in the global namespace which is what
+ old code expects. */
+#define __BEGIN_NAMESPACE_STD
+#define __END_NAMESPACE_STD
+#define __USING_NAMESPACE_STD(name)
+#define __BEGIN_NAMESPACE_C99
+#define __END_NAMESPACE_C99
+#define __USING_NAMESPACE_C99(name)
+
+
+
+/* Support for bounded pointers. */
+
+#define __bounded /* nothing */
+#define __unbounded /* nothing */
+#define __ptrvalue /* nothing */
+
+
+
+/* Fortify support. */
+#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+#define __bos0(ptr) __builtin_object_size (ptr, 0)
+
+
+#define __warndecl(name, msg) \
+ extern void name (void) __attribute__((__warning__ (msg)))
+#define __warnattr(msg) __attribute__((__warning__ (msg)))
+#define __errordecl(name, msg) \
+ extern void name (void) __attribute__((__error__ (msg)))
+
+
+
+
+
+
+/* Support for flexible arrays. */
+
+/* GCC 2.97 supports C99 flexible array members. */
+#define __flexarr []
+# 176 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3
+
+
+
+/* __asm__ ("xyz") is used throughout the headers to rename functions
+ at the assembly language level. This is wrapped by the __REDIRECT
+ macro, in order to support compilers that can do this some other
+ way. When compilers don't support asm-names at all, we have to do
+ preprocessor tricks instead (which don't have exactly the right
+ semantics, but it's the best we can do).
+
+ Example:
+ int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
+
+
+
+#define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias))
+
+
+
+
+
+
+#define __REDIRECT_NTH(name, proto, alias) \
+ name proto __asm__ (__ASMNAME (#alias)) __THROW
+#define __REDIRECT_NTHNL(name, proto, alias) \
+ name proto __asm__ (__ASMNAME (#alias)) __THROWNL
+
+#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define __ASMNAME2(prefix, cname) __STRING (prefix) cname
+
+/*
+#elif __SOME_OTHER_COMPILER__
+
+# define __REDIRECT(name, proto, alias) name proto; \
+ _Pragma("let " #name " = " #alias)
+*/
+
+
+/* GCC has various useful declarations that can be made with the
+ `__attribute__' syntax. All of the ways we use this do fine if
+ they are omitted for compilers that don't understand it. */
+
+
+
+
+/* At some point during the gcc 2.96 development the `malloc' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings. */
+
+#define __attribute_malloc__ __attribute__ ((__malloc__))
+
+
+
+
+/* At some point during the gcc 2.96 development the `pure' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings. */
+
+#define __attribute_pure__ __attribute__ ((__pure__))
+
+
+
+
+/* This declaration tells the compiler that the value is constant. */
+
+#define __attribute_const__ __attribute__ ((__const__))
+
+
+
+
+/* At some point during the gcc 3.1 development the `used' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings. */
+
+#define __attribute_used__ __attribute__ ((__used__))
+#define __attribute_noinline__ __attribute__ ((__noinline__))
+
+
+
+
+
+/* gcc allows marking deprecated functions. */
+
+#define __attribute_deprecated__ __attribute__ ((__deprecated__))
+
+
+
+
+/* At some point during the gcc 2.8 development the `format_arg' attribute
+ for functions was introduced. We don't want to use it unconditionally
+ (although this would be possible) since it generates warnings.
+ If several `format_arg' attributes are given for the same function, in
+ gcc-3.0 and older, all but the last one are ignored. In newer gccs,
+ all designated arguments are considered. */
+
+#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
+
+
+
+
+/* At some point during the gcc 2.97 development the `strfmon' format
+ attribute for functions was introduced. We don't want to use it
+ unconditionally (although this would be possible) since it
+ generates warnings. */
+
+#define __attribute_format_strfmon__(a,b) \
+ __attribute__ ((__format__ (__strfmon__, a, b)))
+
+
+
+
+/* The nonull function attribute allows to mark pointer parameters which
+ must not be NULL. */
+
+#define __nonnull(params) __attribute__ ((__nonnull__ params))
+
+
+
+
+/* If fortification mode, we warn about unused results of certain
+ function calls which can lead to problems. */
+
+#define __attribute_warn_unused_result__ \
+ __attribute__ ((__warn_unused_result__))
+
+
+
+
+
+
+
+#define __wur /* Ignore */
+
+
+/* Forces a function to be always inlined. */
+
+#define __always_inline __inline __attribute__ ((__always_inline__))
+
+
+
+
+/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. */
+
+# 329 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3
+
+#define __extern_inline extern __inline
+
+#define __extern_always_inline \
+ extern __always_inline __attribute__ ((__artificial__))
+
+
+
+
+
+
+/* GCC 4.3 and above allow passing all anonymous arguments of an
+ __extern_always_inline function to some other vararg function. */
+
+#define __va_arg_pack() __builtin_va_arg_pack ()
+#define __va_arg_pack_len() __builtin_va_arg_pack_len ()
+
+
+/* It is possible to compile containing GCC extensions even if GCC is
+ run in pedantic mode if the uses are carefully marked using the
+ `__extension__' keyword. But this is not generally available before
+ version 2.8. */
+
+
+
+
+/* __restrict is known in EGCS 1.2 and above. */
+
+
+
+
+/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
+ array_name[restrict]
+ GCC 3.1 supports this. */
+
+#define __restrict_arr __restrict
+# 376 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3
+
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 378 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3
+
+
+# 398 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3
+
+
+#define __LDBL_REDIR1(name, proto, alias) name proto
+#define __LDBL_REDIR(name, proto) name proto
+#define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
+#define __LDBL_REDIR_NTH(name, proto) name proto __THROW
+#define __LDBL_REDIR_DECL(name)
+
+#define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
+#define __REDIRECT_NTH_LDBL(name, proto, alias) \
+ __REDIRECT_NTH (name, proto, alias)
+
+
+
+/* sys/cdefs.h */
+# 357 "/usr/include/features.h" 2 3
+
+
+
+/* If we don't have __REDIRECT, prototypes will be missing if
+ __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */
+
+
+
+
+
+/* !ASSEMBLER */
+
+/* Decide whether we can define 'extern inline' functions in headers. */
+
+
+
+
+
+
+/* There are some functions that must be declared 'extern inline' even with
+ -Os when building LIBC, or they'll end up undefined. */
+
+
+
+
+
+
+
+/* This is here only because every header file already includes this one.
+ Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
+ <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
+ that will always return failure (and set errno to ENOSYS). */
+#include <gnu/stubs.h>
+# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3
+/* This file selects the right generated file of `__stub_FUNCTION' macros
+ based on the architecture being compiled for. */
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 4 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3
+
+
+
+
+
+#include <gnu/stubs-64.h>
+# 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3
+/* This file is automatically generated.
+ It defines a symbol `__stub_FUNCTION' for each function
+ in the C library which is a stub, meaning it will fail
+ every time called, usually setting errno to ENOSYS. */
+
+
+
+
+
+#define __stub_bdflush
+#define __stub_chflags
+#define __stub_fattach
+#define __stub_fchflags
+#define __stub_fdetach
+#define __stub_getmsg
+#define __stub_gtty
+#define __stub_lchmod
+#define __stub_putmsg
+#define __stub_revoke
+#define __stub_setlogin
+#define __stub_sigreturn
+#define __stub_sstk
+#define __stub_stty
+# 9 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3
+
+
+
+
+# 389 "/usr/include/features.h" 2 3
+
+
+
+/* features.h */
+# 27 "/usr/include/ctype.h" 2 3
+
+#include <bits/types.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3
+/* bits/types.h -- definitions of __*_t types underlying *_t types.
+ Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * Never include this file directly; use <sys/types.h> instead.
+ */
+
+
+#define _BITS_TYPES_H 1
+
+#include <features.h>
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3
+
+
+/* Convenience types. */
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+/* Fixed-size types, underlying types depend on word size and compiler. */
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+
+
+
+
+
+/* quad_t is also 64 bits. */
+
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+# 67 "/usr/include/x86_64-linux-gnu/bits/types.h" 3
+
+
+
+/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
+ macros for each of the OS types we define below. The definitions
+ of those macros must use the following macros for underlying types.
+ We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
+ variants of each of the following integer types on this machine.
+
+ 16 -- "natural" 16-bit type (always short)
+ 32 -- "natural" 32-bit type (always int)
+ 64 -- "natural" 64-bit type (long or long long)
+ LONG32 -- 32-bit type, traditionally long
+ QUAD -- 64-bit type, always long long
+ WORD -- natural type of __WORDSIZE bits (int or long)
+ LONGWORD -- type of __WORDSIZE bits, traditionally long
+
+ We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
+ conventional uses of `long' or `long long' type modifiers match the
+ types we define, even when a less-adorned type would be the same size.
+ This matters for (somewhat) portably writing printf/scanf formats for
+ these types, where using the appropriate l or ll format modifiers can
+ make the typedefs and the formats match up across all GNU platforms. If
+ we used `long' when it's 64 bits where `long long' is expected, then the
+ compiler would warn about the formats not matching the argument types,
+ and the programmer changing them to shut up the compiler would break the
+ program's portability.
+
+ Here we assume what is presently the case in all the GCC configurations
+ we support: long long is always 64 bits, long is always word/address size,
+ and int is always 32 bits. */
+
+#define __S16_TYPE short int
+#define __U16_TYPE unsigned short int
+#define __S32_TYPE int
+#define __U32_TYPE unsigned int
+#define __SLONGWORD_TYPE long int
+#define __ULONGWORD_TYPE unsigned long int
+# 117 "/usr/include/x86_64-linux-gnu/bits/types.h" 3
+
+#define __SQUAD_TYPE long int
+#define __UQUAD_TYPE unsigned long int
+#define __SWORD_TYPE long int
+#define __UWORD_TYPE unsigned long int
+#define __SLONG32_TYPE int
+#define __ULONG32_TYPE unsigned int
+#define __S64_TYPE long int
+#define __U64_TYPE unsigned long int
+/* No need to mark the typedef with __extension__. */
+#define __STD_TYPE typedef
+
+
+
+#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */
+# 1 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 1 3
+/* bits/typesizes.h -- underlying types for *_t. Generic version.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#define _BITS_TYPESIZES_H 1
+
+/* See <bits/types.h> for the meaning of these macros. This file exists so
+ that <bits/types.h> need not vary across different GNU platforms. */
+
+#define __DEV_T_TYPE __UQUAD_TYPE
+#define __UID_T_TYPE __U32_TYPE
+#define __GID_T_TYPE __U32_TYPE
+#define __INO_T_TYPE __ULONGWORD_TYPE
+#define __INO64_T_TYPE __UQUAD_TYPE
+#define __MODE_T_TYPE __U32_TYPE
+#define __NLINK_T_TYPE __UWORD_TYPE
+#define __OFF_T_TYPE __SLONGWORD_TYPE
+#define __OFF64_T_TYPE __SQUAD_TYPE
+#define __PID_T_TYPE __S32_TYPE
+#define __RLIM_T_TYPE __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE __UQUAD_TYPE
+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __ID_T_TYPE __U32_TYPE
+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
+#define __TIME_T_TYPE __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE __U32_TYPE
+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#define __DADDR_T_TYPE __S32_TYPE
+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
+#define __KEY_T_TYPE __S32_TYPE
+#define __CLOCKID_T_TYPE __S32_TYPE
+#define __TIMER_T_TYPE void *
+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+#define __FSID_T_TYPE struct { int __val[2]; }
+#define __SSIZE_T_TYPE __SWORD_TYPE
+
+/* Number of descriptors that can fit in an `fd_set'. */
+#define __FD_SETSIZE 1024
+
+
+/* bits/typesizes.h */
+# 131 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3
+
+
+
+typedef unsigned long int __dev_t; /* Type of device numbers. */
+typedef unsigned int __uid_t; /* Type of user identifications. */
+typedef unsigned int __gid_t; /* Type of group identifications. */
+typedef unsigned long int __ino_t; /* Type of file serial numbers. */
+typedef unsigned long int __ino64_t; /* Type of file serial numbers (LFS).*/
+typedef unsigned int __mode_t; /* Type of file attribute bitmasks. */
+typedef unsigned long int __nlink_t; /* Type of file link counts. */
+typedef long int __off_t; /* Type of file sizes and offsets. */
+typedef long int __off64_t; /* Type of file sizes and offsets (LFS). */
+typedef int __pid_t; /* Type of process identifications. */
+typedef struct { int __val[2]; } __fsid_t; /* Type of file system IDs. */
+typedef long int __clock_t; /* Type of CPU usage counts. */
+typedef unsigned long int __rlim_t; /* Type for resource measurement. */
+typedef unsigned long int __rlim64_t; /* Type for resource measurement (LFS). */
+typedef unsigned int __id_t; /* General type for IDs. */
+typedef long int __time_t; /* Seconds since the Epoch. */
+typedef unsigned int __useconds_t; /* Count of microseconds. */
+typedef long int __suseconds_t; /* Signed count of microseconds. */
+
+typedef int __daddr_t; /* The type of a disk address. */
+typedef long int __swblk_t; /* Type of a swap block maybe? */
+typedef int __key_t; /* Type of an IPC key. */
+
+/* Clock ID used in clock and timer functions. */
+typedef int __clockid_t;
+
+/* Timer ID returned by `timer_create'. */
+typedef void * __timer_t;
+
+/* Type to represent block size. */
+typedef long int __blksize_t;
+
+/* Types from the Large File Support interface. */
+
+/* Type to count number of disk blocks. */
+typedef long int __blkcnt_t;
+typedef long int __blkcnt64_t;
+
+/* Type to count file system blocks. */
+typedef unsigned long int __fsblkcnt_t;
+typedef unsigned long int __fsblkcnt64_t;
+
+/* Type to count file system nodes. */
+typedef unsigned long int __fsfilcnt_t;
+typedef unsigned long int __fsfilcnt64_t;
+
+typedef long int __ssize_t; /* Type of a byte count, or error. */
+
+/* These few don't really vary by system, they always correspond
+ to one of the other defined types. */
+typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+/* Duplicates info from stdint.h but this is used in unistd.h. */
+typedef long int __intptr_t;
+
+/* Duplicate info from sys/socket.h. */
+typedef unsigned int __socklen_t;
+
+
+#undef __STD_TYPE
+
+/* bits/types.h */
+# 28 "/usr/include/ctype.h" 2 3
+
+
+
+
+
+/* These are all the characteristics of characters.
+ If there get to be more than 16 distinct characteristics,
+ many things must be changed that use `unsigned short int's.
+
+ The characteristics are stored always in network byte order (big
+ endian). We define the bit value interpretations here dependent on the
+ machine's byte order. */
+
+#include <endian.h>
+# 1 "/usr/include/endian.h" 1 3
+/* Copyright (C) 1992, 1996, 1997, 2000, 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _ENDIAN_H 1
+
+#include <features.h>
+
+/* Definitions for byte order, according to significance of bytes,
+ from low addresses to high addresses. The value is what you get by
+ putting '4' in the most significant byte, '3' in the second most
+ significant byte, '2' in the second least significant byte, and '1'
+ in the least significant byte, and then writing down one digit for
+ each byte, starting with the byte at the lowest address at the left,
+ and proceeding to the byte with the highest address at the right. */
+
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __PDP_ENDIAN 3412
+
+/* This file defines `__BYTE_ORDER' for the particular machine. */
+#include <bits/endian.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/endian.h" 1 3
+/* x86_64 is little-endian. */
+
+
+
+
+
+#define __BYTE_ORDER __LITTLE_ENDIAN
+# 37 "/usr/include/endian.h" 2 3
+
+
+/* Some machines may need to use a different endianness for floating point
+ values. */
+
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
+
+
+
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define BIG_ENDIAN __BIG_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
+
+
+
+#define __LONG_LONG_PAIR(HI, LO) LO, HI
+
+
+
+
+
+
+/* Conversion interfaces. */
+#include <bits/byteswap.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 1 3
+/* Macros to swap the order of bytes in integer values.
+ Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010, 2011
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#define _BITS_BYTESWAP_H 1
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3
+
+
+/* Swap bytes in 16 bit value. */
+#define __bswap_constant_16(x) \
+ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
+
+
+#define __bswap_16(x) \
+ (__extension__ \
+ ({ register unsigned short int __v, __x = (unsigned short int) (x); \
+ if (__builtin_constant_p (__x)) \
+ __v = __bswap_constant_16 (__x); \
+ else \
+ __asm__ ("rorw 8,ドル %w0" \
+ : "=r" (__v) \
+ : "0" (__x) \
+ : "cc"); \
+ __v; }))
+
+
+
+
+
+
+
+
+
+/* Swap bytes in 32 bit value. */
+#define __bswap_constant_32(x) \
+ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
+ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
+
+
+
+
+
+
+
+
+/* To swap the bytes in a word the i486 processors and up provide the
+ `bswap' opcode. On i386 we have to use three instructions. */
+#define __bswap_32(x) \
+ (__extension__ \
+ ({ register unsigned int __v, __x = (x); \
+ if (__builtin_constant_p (__x)) \
+ __v = __bswap_constant_32 (__x); \
+ else \
+ __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \
+ __v; }))
+# 91 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3
+
+
+
+
+
+
+
+
+
+/* Swap bytes in 64 bit value. */
+#define __bswap_constant_64(x) \
+ (__extension__ ((((x) & 0xff00000000000000ull) >> 56) \
+ | (((x) & 0x00ff000000000000ull) >> 40) \
+ | (((x) & 0x0000ff0000000000ull) >> 24) \
+ | (((x) & 0x000000ff00000000ull) >> 8) \
+ | (((x) & 0x00000000ff000000ull) << 8) \
+ | (((x) & 0x0000000000ff0000ull) << 24) \
+ | (((x) & 0x000000000000ff00ull) << 40) \
+ | (((x) & 0x00000000000000ffull) << 56)))
+
+
+#define __bswap_64(x) \
+ (__extension__ \
+ ({ register unsigned long __v, __x = (x); \
+ if (__builtin_constant_p (__x)) \
+ __v = __bswap_constant_64 (__x); \
+ else \
+ __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x)); \
+ __v; }))
+# 134 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3
+
+
+
+/* _BITS_BYTESWAP_H */
+# 61 "/usr/include/endian.h" 2 3
+
+
+
+#define htobe16(x) __bswap_16 (x)
+#define htole16(x) (x)
+#define be16toh(x) __bswap_16 (x)
+#define le16toh(x) (x)
+
+#define htobe32(x) __bswap_32 (x)
+#define htole32(x) (x)
+#define be32toh(x) __bswap_32 (x)
+#define le32toh(x) (x)
+
+#define htobe64(x) __bswap_64 (x)
+#define htole64(x) (x)
+#define be64toh(x) __bswap_64 (x)
+#define le64toh(x) (x)
+# 93 "/usr/include/endian.h" 3
+
+
+
+/* endian.h */
+# 41 "/usr/include/ctype.h" 2 3
+
+/* __BYTE_ORDER == __LITTLE_ENDIAN */
+
+
+#define _ISbit(bit) ((bit) < 8 ? ((1 << (bit)) << 8) : ((1 << (bit)) >> 8))
+
+
+enum
+{
+ _ISupper = (( 0 ) < 8 ? ((1 << ( 0 )) << 8) : ((1 << ( 0 )) >> 8)) , /* UPPERCASE. */
+ _ISlower = (( 1 ) < 8 ? ((1 << ( 1 )) << 8) : ((1 << ( 1 )) >> 8)) , /* lowercase. */
+ _ISalpha = (( 2 ) < 8 ? ((1 << ( 2 )) << 8) : ((1 << ( 2 )) >> 8)) , /* Alphabetic. */
+ _ISdigit = (( 3 ) < 8 ? ((1 << ( 3 )) << 8) : ((1 << ( 3 )) >> 8)) , /* Numeric. */
+ _ISxdigit = (( 4 ) < 8 ? ((1 << ( 4 )) << 8) : ((1 << ( 4 )) >> 8)) , /* Hexadecimal numeric. */
+ _ISspace = (( 5 ) < 8 ? ((1 << ( 5 )) << 8) : ((1 << ( 5 )) >> 8)) , /* Whitespace. */
+ _ISprint = (( 6 ) < 8 ? ((1 << ( 6 )) << 8) : ((1 << ( 6 )) >> 8)) , /* Printing. */
+ _ISgraph = (( 7 ) < 8 ? ((1 << ( 7 )) << 8) : ((1 << ( 7 )) >> 8)) , /* Graphical. */
+ _ISblank = (( 8 ) < 8 ? ((1 << ( 8 )) << 8) : ((1 << ( 8 )) >> 8)) , /* Blank (usually SPC and TAB). */
+ _IScntrl = (( 9 ) < 8 ? ((1 << ( 9 )) << 8) : ((1 << ( 9 )) >> 8)) , /* Control character. */
+ _ISpunct = (( 10 ) < 8 ? ((1 << ( 10 )) << 8) : ((1 << ( 10 )) >> 8)) , /* Punctuation. */
+ _ISalnum = (( 11 ) < 8 ? ((1 << ( 11 )) << 8) : ((1 << ( 11 )) >> 8)) /* Alphanumeric. */
+};
+/* ! _ISbit */
+
+/* These are defined in ctype-info.c.
+ The declarations here must match those in localeinfo.h.
+
+ In the thread-specific locale model (see `uselocale' in <locale.h>)
+ we cannot use global variables for these as was done in the past.
+ Instead, the following accessor functions return the address of
+ each variable, which is local to the current thread if multithreaded.
+
+ These point into arrays of 384, so they can be indexed by any `unsigned
+ char' value [0,255]; by EOF (-1); or by any `signed char' value
+ [-128,-1). ISO C requires that the ctype functions work for `unsigned
+ char' values and for EOF; we also support negative `signed char' values
+ for broken old programs. The case conversion arrays are of `int's
+ rather than `unsigned char's because tolower (EOF) must be EOF, which
+ doesn't fit into an `unsigned char'. But today more important is that
+ the arrays are also used for multi-byte character sets. */
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const));
+
+
+
+#define __isctype(c, type) \
+ ((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type)
+
+
+
+
+
+
+
+
+
+#define __isascii(c) (((c) & ~0x7f) == 0) /* If C is a 7 bit value. */
+#define __toascii(c) ((c) & 0x7f) /* Mask off high bits. */
+
+#define __exctype(name) extern int name (int) __THROW
+
+
+
+/* The following names are all functions:
+ int isCHARACTERISTIC(int c);
+ which return nonzero iff C has CHARACTERISTIC.
+ For the meaning of the characteristic names, see the `enum' above. */
+extern int isalnum (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isalpha (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int iscntrl (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isdigit (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int islower (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isgraph (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isprint (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int ispunct (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isspace (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isupper (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isxdigit (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the lowercase version of C. */
+extern int tolower (int __c) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the uppercase version of C. */
+extern int toupper (int __c) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* ISO C99 introduced one new function. */
+
+
+
+extern int isblank (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+
+/* Return nonzero iff C is in the ASCII set
+ (i.e., is no more than 7 bits wide). */
+extern int isascii (int __c) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the part of C that is in the ASCII set
+ (i.e., the low-order 7 bits of C). */
+extern int toascii (int __c) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* These are the same as `toupper' and `tolower' except that they do not
+ check the argument for being in the range of a `char'. */
+extern int _toupper (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int _tolower (int) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use SVID or use misc. */
+
+/* This code is needed for the optimized mapping functions. */
+#define __tobody(c, f, a, args) \
+ (__extension__ \
+ ({ int __res; \
+ if (sizeof (c) > 1) \
+ { \
+ if (__builtin_constant_p (c)) \
+ { \
+ int __c = (c); \
+ __res = __c < -128 || __c > 255 ? __c : (a)[__c]; \
+ } \
+ else \
+ __res = f args; \
+ } \
+ else \
+ __res = (a)[(int) (c)]; \
+ __res; }))
+
+
+# 198 "/usr/include/ctype.h" 3
+
+#define isalnum(c) __isctype((c), _ISalnum)
+#define isalpha(c) __isctype((c), _ISalpha)
+#define iscntrl(c) __isctype((c), _IScntrl)
+#define isdigit(c) __isctype((c), _ISdigit)
+#define islower(c) __isctype((c), _ISlower)
+#define isgraph(c) __isctype((c), _ISgraph)
+#define isprint(c) __isctype((c), _ISprint)
+#define ispunct(c) __isctype((c), _ISpunct)
+#define isspace(c) __isctype((c), _ISspace)
+#define isupper(c) __isctype((c), _ISupper)
+#define isxdigit(c) __isctype((c), _ISxdigit)
+
+#define isblank(c) __isctype((c), _ISblank)
+
+
+
+# 227 "/usr/include/ctype.h" 3
+
+
+/* Optimizing gcc */
+
+
+
+
+
+#define isascii(c) __isascii (c)
+#define toascii(c) __toascii (c)
+
+#define _tolower(c) ((int) (*__ctype_tolower_loc ())[(int) (c)])
+#define _toupper(c) ((int) (*__ctype_toupper_loc ())[(int) (c)])
+
+
+/* Not __NO_CTYPE. */
+
+
+
+/* The concept of one static locale per category is not very well
+ thought out. Many applications will need to process its data using
+ information from several different locales. Another application is
+ the implementation of the internationalization handling in the
+ upcoming ISO C++ standard library. To support this another set of
+ the functions using locale data exist which have an additional
+ argument.
+
+ Attention: all these functions are *not* standardized in any form.
+ This is a proof-of-concept implementation. */
+
+/* Structure for reentrant locale using functions. This is an
+ (almost) opaque type for the user level programs. */
+#include <xlocale.h>
+# 1 "/usr/include/xlocale.h" 1 3
+/* Definition of locale datatype.
+ Copyright (C) 1997,2000,2002,2009,2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _XLOCALE_H 1
+
+/* Structure for reentrant locale using functions. This is an
+ (almost) opaque type for the user level programs. The file and
+ this data structure is not standardized. Don't rely on it. It can
+ go away without warning. */
+typedef struct __locale_struct
+{
+ /* Note: LC_ALL is not a valid index into this array. */
+ struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */
+
+ /* To increase the speed of this solution we add some special members. */
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+
+ /* Note: LC_ALL is not a valid index into this array. */
+ const char *__names[13];
+} *__locale_t;
+
+/* POSIX 2008 makes locale_t official. */
+typedef __locale_t locale_t;
+
+/* xlocale.h */
+# 259 "/usr/include/ctype.h" 2 3
+
+
+/* These definitions are similar to the ones above but all functions
+ take as an argument a handle for the locale which shall be used. */
+#define __isctype_l(c, type, locale) \
+ ((locale)->__ctype_b[(int) (c)] & (unsigned short int) type)
+
+#define __exctype_l(name) \
+ extern int name (int, __locale_t) __THROW
+
+/* The following names are all functions:
+ int isCHARACTERISTIC(int c, locale_t *locale);
+ which return nonzero iff C has CHARACTERISTIC.
+ For the meaning of the characteristic names, see the `enum' above. */
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the lowercase version of C in locale L. */
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the uppercase version of C. */
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Optimizing gcc */
+
+
+
+
+
+
+
+
+
+
+#define __isalnum_l(c,l) __isctype_l((c), _ISalnum, (l))
+#define __isalpha_l(c,l) __isctype_l((c), _ISalpha, (l))
+#define __iscntrl_l(c,l) __isctype_l((c), _IScntrl, (l))
+#define __isdigit_l(c,l) __isctype_l((c), _ISdigit, (l))
+#define __islower_l(c,l) __isctype_l((c), _ISlower, (l))
+#define __isgraph_l(c,l) __isctype_l((c), _ISgraph, (l))
+#define __isprint_l(c,l) __isctype_l((c), _ISprint, (l))
+#define __ispunct_l(c,l) __isctype_l((c), _ISpunct, (l))
+#define __isspace_l(c,l) __isctype_l((c), _ISspace, (l))
+#define __isupper_l(c,l) __isctype_l((c), _ISupper, (l))
+#define __isxdigit_l(c,l) __isctype_l((c), _ISxdigit, (l))
+
+#define __isblank_l(c,l) __isctype_l((c), _ISblank, (l))
+
+
+#define __isascii_l(c,l) ((l), __isascii (c))
+#define __toascii_l(c,l) ((l), __toascii (c))
+
+
+#define isalnum_l(c,l) __isalnum_l ((c), (l))
+#define isalpha_l(c,l) __isalpha_l ((c), (l))
+#define iscntrl_l(c,l) __iscntrl_l ((c), (l))
+#define isdigit_l(c,l) __isdigit_l ((c), (l))
+#define islower_l(c,l) __islower_l ((c), (l))
+#define isgraph_l(c,l) __isgraph_l ((c), (l))
+#define isprint_l(c,l) __isprint_l ((c), (l))
+#define ispunct_l(c,l) __ispunct_l ((c), (l))
+#define isspace_l(c,l) __isspace_l ((c), (l))
+#define isupper_l(c,l) __isupper_l ((c), (l))
+#define isxdigit_l(c,l) __isxdigit_l ((c), (l))
+
+#define isblank_l(c,l) __isblank_l ((c), (l))
+
+
+#define isascii_l(c,l) __isascii_l ((c), (l))
+#define toascii_l(c,l) __toascii_l ((c), (l))
+
+
+/* Not __NO_CTYPE. */
+
+/* Use POSIX 2008. */
+
+
+
+/* ctype.h */
+# 33 "forms.c" 2
+
+#include "include/forms.h"
+# 1 "include/forms.h" 1
+/*
+ *
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * \file forms.h
+ *
+ *. All XForms files as distributed in this package are
+ * Copyright(c) 1996-2002 by T.C. Zhao and Mark Overmars,
+ * with part of the code Copyright (c) 1999-2002 by T.C. Zhao
+ * and Steve Lamont.
+ * ALL RIGHTS RESERVED.
+ *
+ * Permission to use, copy, and distribute this software in its entirety
+ * without fee, is hereby granted, provided that the above copyright
+ * notice and this permission notice appear in all copies and their
+ * documentation.
+ *
+ * As of April 2002, xforms is released under the GNU LGPL license.
+ * You can use xforms for any purpose that's compatible with
+ * LGPL with the restriction that you will need a special license
+ * for distributed binary commercial software that requires or is
+ * based on xforms or its derivative.
+ *
+ * This software is provided "as is" without expressed or implied
+ * warranty of any kind.
+ *
+ * The homepage for XForms is at
+ * https://savannah.nongnu.org/projects/xforms/
+ *
+ * If you have questions about XForms or encounter problems please
+ * subscribe to the mailing list at
+ * http://cweblog.usuhs.mil/mailman/listinfo/xforms
+ *
+ * ******** This file is generated automatically. DO NOT CHANGE *********
+ */
+
+
+#define FL_FORMS_H
+
+#define FL_VERSION 1
+#define FL_REVISION 3
+#define FL_FIXLEVEL "5"
+#define FL_INCLUDE_VERSION ( FL_VERSION * 1000 + FL_REVISION )
+
+#include <stdio.h>
+# 1 "/usr/include/stdio.h" 1 3
+/* Define ISO C stdio on top of C++ iostreams.
+ Copyright (C) 1991, 1994-2010, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.19 Input/output <stdio.h>
+ */
+
+
+
+
+#define _STDIO_H 1
+#include <features.h>
+
+
+
+#define __need_size_t
+#define __need_NULL
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_ptrdiff_t. */
+# 163 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS */
+/* Cray Unicos/Mk */
+/* in case <sys/types.h> has defined it. */
+
+
+
+
+
+
+
+
+/* Darwin */
+/* FreeBSD 5 */
+
+
+
+
+#define __size_t__ /* BeOS */
+#define __SIZE_T__ /* Cray Unicos/Mk */
+#define _SIZE_T
+#define _SYS_SIZE_T_H
+#define _T_SIZE_
+#define _T_SIZE
+#define __SIZE_T
+#define _SIZE_T_
+#define _BSD_SIZE_T_
+#define _SIZE_T_DEFINED_
+#define _SIZE_T_DEFINED
+#define _BSD_SIZE_T_DEFINED_ /* Darwin */
+#define _SIZE_T_DECLARED /* FreeBSD 5 */
+#define ___int_size_t_h
+#define _GCC_SIZE_T
+#define _SIZET_
+
+
+
+#define __size_t
+
+
+
+
+
+typedef long unsigned int size_t;
+/* __BEOS__ */
+
+
+/* !(defined (__GNUG__) && defined (size_t)) */
+/* __size_t */
+/* _SIZET_ */
+/* _GCC_SIZE_T */
+/* ___int_size_t_h */
+/* _SIZE_T_DECLARED */
+/* _BSD_SIZE_T_DEFINED_ */
+/* _SIZE_T_DEFINED */
+/* _SIZE_T_DEFINED_ */
+/* _BSD_SIZE_T_ */
+/* _SIZE_T_ */
+/* __SIZE_T */
+/* _T_SIZE */
+/* _T_SIZE_ */
+/* _SYS_SIZE_T_H */
+/* _SIZE_T */
+/* __SIZE_T__ */
+/* __size_t__ */
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_wchar_t. */
+# 344 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+/* _STDDEF_H was defined this time */
+
+
+
+
+
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 34 "/usr/include/stdio.h" 2 3
+
+
+#include <bits/types.h>
+#define __need_FILE
+#define __need___FILE
+/* Don't need FILE. */
+
+
+
+
+/* Define outside of namespace so the C++ is happy. */
+struct _IO_FILE;
+
+
+/* The opaque type of streams. This is the definition used elsewhere. */
+typedef struct _IO_FILE FILE;
+
+
+
+
+
+
+
+#define __FILE_defined 1
+/* FILE not defined. */
+#undef __need_FILE
+
+
+
+
+/* The opaque type of streams. This is the definition used elsewhere. */
+typedef struct _IO_FILE __FILE;
+
+#define ____FILE_defined 1
+/* __FILE not defined. */
+#undef __need___FILE
+
+
+
+#define _STDIO_USES_IOSTREAM
+
+#include <libio.h>
+# 1 "/usr/include/libio.h" 1 3
+/* Copyright (C) 1991-1995,1997-2006,2007,2009,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Per Bothner <bothner@cygnus.com>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA.
+
+ As a special exception, if you link the code in this file with
+ files compiled with a GNU compiler to produce an executable,
+ that does not cause the resulting executable to be covered by
+ the GNU Lesser General Public License. This exception does not
+ however invalidate any other reasons why the executable file
+ might be covered by the GNU Lesser General Public License.
+ This exception applies to code released by its copyright holders
+ in files containing the exception. */
+
+
+#define _IO_STDIO_H
+
+#include <_G_config.h>
+# 1 "/usr/include/_G_config.h" 1 3
+/* This file is needed by libio to define various configuration parameters.
+ These are always the same in the GNU C library. */
+
+
+#define _G_config_h 1
+
+/* Define types for libio in terms of the standard internal type names. */
+
+#include <bits/types.h>
+#define __need_size_t
+
+
+
+#define __need_NULL
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_ptrdiff_t. */
+# 163 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_wchar_t. */
+# 344 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+/* _STDDEF_H was defined this time */
+
+
+
+
+
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 15 "/usr/include/_G_config.h" 2 3
+
+#define __need_mbstate_t
+
+
+
+#include <wchar.h>
+# 1 "/usr/include/wchar.h" 1 3
+/* Copyright (C) 1995-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.24
+ * Extended multibyte and wide character utilities <wchar.h>
+ */
+
+
+
+
+
+
+
+
+# 48 "/usr/include/wchar.h" 3
+
+# 78 "/usr/include/wchar.h" 3
+
+
+
+#define __mbstate_t_defined 1
+/* Conversion state information. */
+typedef struct
+{
+ int __count;
+ union
+ {
+
+ unsigned int __wch;
+
+
+
+ char __wchb[4];
+ } __value; /* Value so far. */
+} __mbstate_t;
+
+#undef __need_mbstate_t
+
+
+/* The rest of the file is only used if used if __need_mbstate_t is not
+ defined. */
+/* _WCHAR_H defined */
+# 890 "/usr/include/wchar.h" 3
+
+
+/* wchar.h */
+
+/* Undefine all __need_* constants in case we are included to get those
+ constants but the whole file was already read. */
+#undef __need_mbstate_t
+#undef __need_wint_t
+# 20 "/usr/include/_G_config.h" 2 3
+
+#define _G_size_t size_t
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+#define _G_ssize_t __ssize_t
+#define _G_off_t __off_t
+#define _G_off64_t __off64_t
+#define _G_pid_t __pid_t
+#define _G_uid_t __uid_t
+#define _G_wchar_t wchar_t
+#define _G_wint_t wint_t
+#define _G_stat64 stat64
+# 51 "/usr/include/_G_config.h" 3
+
+
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+
+#define _G_HAVE_BOOL 1
+
+
+/* These library features are always available in the GNU C library. */
+#define _G_HAVE_ATEXIT 1
+#define _G_HAVE_SYS_CDEFS 1
+#define _G_HAVE_SYS_WAIT 1
+#define _G_NEED_STDARG_H 1
+#define _G_va_list __gnuc_va_list
+
+#define _G_HAVE_PRINTF_FP 1
+#define _G_HAVE_MMAP 1
+#define _G_HAVE_MREMAP 1
+#define _G_HAVE_LONG_DOUBLE_IO 1
+#define _G_HAVE_IO_FILE_OPEN 1
+#define _G_HAVE_IO_GETLINE_INFO 1
+
+#define _G_IO_IO_FILE_VERSION 0x20001
+
+#define _G_OPEN64 __open64
+#define _G_LSEEK64 __lseek64
+#define _G_MMAP64 __mmap64
+#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf)
+
+/* This is defined by <bits/stat.h> if `st_blksize' exists. */
+#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)
+
+#define _G_BUFSIZ 8192
+
+/* These are the vtbl details for ELF. */
+#define _G_NAMES_HAVE_UNDERSCORE 0
+#define _G_VTABLE_LABEL_HAS_LENGTH 1
+#define _G_USING_THUNKS 1
+#define _G_VTABLE_LABEL_PREFIX "__vt_"
+#define _G_VTABLE_LABEL_PREFIX_ID __vt_
+
+
+
+#define _G_ARGS(ARGLIST) ARGLIST
+
+
+
+
+/* _G_config.h */
+# 32 "/usr/include/libio.h" 2 3
+
+/* ALL of these should be defined in _G_config.h */
+#define _IO_pos_t _G_fpos_t /* obsolete */
+#define _IO_fpos_t _G_fpos_t
+#define _IO_fpos64_t _G_fpos64_t
+#define _IO_size_t _G_size_t
+#define _IO_ssize_t _G_ssize_t
+#define _IO_off_t _G_off_t
+#define _IO_off64_t _G_off64_t
+#define _IO_pid_t _G_pid_t
+#define _IO_uid_t _G_uid_t
+#define _IO_iconv_t _G_iconv_t
+#define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT
+#define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
+#define _IO_BUFSIZ _G_BUFSIZ
+#define _IO_va_list _G_va_list
+#define _IO_wint_t _G_wint_t
+
+
+/* This define avoids name pollution if we're using GNU stdarg.h */
+#define __need___va_list
+#include <stdarg.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.15 Variable arguments <stdarg.h>
+ */
+
+
+
+/* not __need___va_list */
+
+
+
+#undef __need___va_list
+
+/* Define __gnuc_va_list. */
+
+
+#define __GNUC_VA_LIST
+typedef __builtin_va_list __gnuc_va_list;
+
+
+/* Define the standard macros for the user,
+ if this invocation was from the user program. */
+/* _STDARG_H */
+# 127 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h" 3
+
+
+/* not _ANSI_STDARG_H_ */
+/* not _STDARG_H */
+# 53 "/usr/include/libio.h" 2 3
+
+
+#undef _IO_va_list
+#define _IO_va_list __gnuc_va_list
+/* __GNUC_VA_LIST */
+
+
+/*!__P*/
+# 72 "/usr/include/libio.h" 3
+
+
+/* For backward compatibility */
+
+#define _PARAMS(protos) __P(protos)
+/*!_PARAMS*/
+
+
+
+
+
+
+#define _IO_UNIFIED_JUMPTABLES 1
+
+
+
+
+
+#define EOF (-1)
+
+# 103 "/usr/include/libio.h" 3
+
+
+#define _IOS_INPUT 1
+#define _IOS_OUTPUT 2
+#define _IOS_ATEND 4
+#define _IOS_APPEND 8
+#define _IOS_TRUNC 16
+#define _IOS_NOCREATE 32
+#define _IOS_NOREPLACE 64
+#define _IOS_BIN 128
+
+/* Magic numbers and bits for the _flags field.
+ The magic numbers use the high-order bits of _flags;
+ the remaining bits are available for variable flags.
+ Note: The magic numbers must all be negative if stdio
+ emulation is desired. */
+
+#define _IO_MAGIC 0xFBAD0000 /* Magic number */
+#define _OLD_STDIO_MAGIC 0xFABC0000 /* Emulate old stdio. */
+#define _IO_MAGIC_MASK 0xFFFF0000
+#define _IO_USER_BUF 1 /* User owns buffer; don't delete it on close. */
+#define _IO_UNBUFFERED 2
+#define _IO_NO_READS 4 /* Reading not allowed */
+#define _IO_NO_WRITES 8 /* Writing not allowd */
+#define _IO_EOF_SEEN 0x10
+#define _IO_ERR_SEEN 0x20
+#define _IO_DELETE_DONT_CLOSE 0x40 /* Don't call close(_fileno) on cleanup. */
+#define _IO_LINKED 0x80 /* Set if linked (using _chain) to streambuf::_list_all.*/
+#define _IO_IN_BACKUP 0x100
+#define _IO_LINE_BUF 0x200
+#define _IO_TIED_PUT_GET 0x400 /* Set if put and get pointer logicly tied. */
+#define _IO_CURRENTLY_PUTTING 0x800
+#define _IO_IS_APPENDING 0x1000
+#define _IO_IS_FILEBUF 0x2000
+#define _IO_BAD_SEEN 0x4000
+#define _IO_USER_LOCK 0x8000
+
+#define _IO_FLAGS2_MMAP 1
+#define _IO_FLAGS2_NOTCANCEL 2
+
+
+
+#define _IO_FLAGS2_USER_WBUF 8
+
+
+
+
+
+
+/* These are "formatting flags" matching the iostream fmtflags enum values. */
+#define _IO_SKIPWS 01
+#define _IO_LEFT 02
+#define _IO_RIGHT 04
+#define _IO_INTERNAL 010
+#define _IO_DEC 020
+#define _IO_OCT 040
+#define _IO_HEX 0100
+#define _IO_SHOWBASE 0200
+#define _IO_SHOWPOINT 0400
+#define _IO_UPPERCASE 01000
+#define _IO_SHOWPOS 02000
+#define _IO_SCIENTIFIC 04000
+#define _IO_FIXED 010000
+#define _IO_UNITBUF 020000
+#define _IO_STDIO 040000
+#define _IO_DONT_CLOSE 0100000
+#define _IO_BOOLALPHA 0200000
+
+
+struct _IO_jump_t; struct _IO_FILE;
+
+/* Handle lock. */
+
+
+
+
+
+
+
+typedef void _IO_lock_t;
+
+
+
+/* A streammarker remembers a position in a buffer. */
+
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+ /* If _pos >= 0
+ it points to _buf->Gbase()+_pos. FIXME comment */
+ /* if _pos < 0, it points to _buf->eBptr()+_pos. FIXME comment */
+ int _pos;
+# 204 "/usr/include/libio.h" 3
+
+};
+
+/* This is the structure from the libstdc++ codecvt class. */
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+
+# 271 "/usr/include/libio.h" 3
+
+
+struct _IO_FILE {
+ int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
+#define _IO_file_flags _flags
+
+ /* The following pointers correspond to the C++ streambuf protocol. */
+ /* Note: Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
+ char* _IO_read_ptr; /* Current read pointer */
+ char* _IO_read_end; /* End of get area. */
+ char* _IO_read_base; /* Start of putback+get area. */
+ char* _IO_write_base; /* Start of put area. */
+ char* _IO_write_ptr; /* Current put pointer. */
+ char* _IO_write_end; /* End of put area. */
+ char* _IO_buf_base; /* Start of reserve area. */
+ char* _IO_buf_end; /* End of reserve area. */
+ /* The following fields are used to support backing up and undo. */
+ char *_IO_save_base; /* Pointer to start of non-current get area. */
+ char *_IO_backup_base; /* Pointer to first valid character of backup area */
+ char *_IO_save_end; /* Pointer to end of non-current get area. */
+
+ struct _IO_marker *_markers;
+
+ struct _IO_FILE *_chain;
+
+ int _fileno;
+
+
+
+ int _flags2;
+
+ __off_t _old_offset; /* This used to be _offset but it's too small. */
+
+#define __HAVE_COLUMN /* temporary */
+ /* 1+column number of pbase(); 0 is unknown. */
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+
+ /* char* _save_gptr; char* _save_egptr; */
+
+ _IO_lock_t *_lock;
+
+
+
+
+
+
+
+
+ __off64_t _offset;
+
+
+
+
+
+
+
+
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+
+ int _mode;
+ /* Make sure we don't get into trouble again. */
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+
+};
+
+
+typedef struct _IO_FILE _IO_FILE;
+
+
+struct _IO_FILE_plus;
+
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+
+#define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
+#define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
+#define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
+
+
+
+
+
+
+
+/* Functions to do I/O and file management for a stream. */
+
+/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
+ Return number of bytes read. */
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+
+/* Write N bytes pointed to by BUF to COOKIE. Write all N bytes
+ unless there is an error. Return number of bytes written, or -1 if
+ there is an error without writing anything. If the file has been
+ opened for append (__mode.__append set), then set the file pointer
+ to the end of the file and then do the write; if not, just write at
+ the current file pointer. */
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+
+/* Move COOKIE's file position to *POS bytes from the
+ beginning of the file (if W is SEEK_SET),
+ the current position (if W is SEEK_CUR),
+ or the end of the file (if W is SEEK_END).
+ Set *POS to the new file position.
+ Returns zero if successful, nonzero if not. */
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+
+/* Close COOKIE. */
+typedef int __io_close_fn (void *__cookie);
+
+
+# 411 "/usr/include/libio.h" 3
+
+
+
+
+
+
+
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+
+
+
+
+
+
+
+#define _IO_BE(expr, res) __builtin_expect ((expr), res)
+
+
+
+
+#define _IO_getc_unlocked(_fp) \
+ (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \
+ ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
+#define _IO_peekc_unlocked(_fp) \
+ (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \
+ && __underflow (_fp) == EOF ? EOF \
+ : *(unsigned char *) (_fp)->_IO_read_ptr)
+#define _IO_putc_unlocked(_ch, _fp) \
+ (_IO_BE ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end, 0) \
+ ? __overflow (_fp, (unsigned char) (_ch)) \
+ : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
+
+# 457 "/usr/include/libio.h" 3
+
+
+#define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
+#define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
+
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+
+/* This one is for Emacs. */
+#define _IO_PENDING_OUTPUT_COUNT(_fp) \
+ ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
+
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+#define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
+#define _IO_flockfile(_fp) /**/
+#define _IO_funlockfile(_fp) /**/
+#define _IO_ftrylockfile(_fp) /**/
+#define _IO_cleanup_region_start(_fct, _fp) /**/
+#define _IO_cleanup_region_end(_Doit) /**/
+/* !_IO_MTSAFE_IO */
+
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list , int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list );
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t );
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t );
+
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t , int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t , int);
+
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+# 547 "/usr/include/libio.h" 3
+
+
+
+
+
+
+
+
+
+
+/* _IO_STDIO_H */
+# 75 "/usr/include/stdio.h" 2 3
+
+
+
+
+
+typedef __gnuc_va_list va_list;
+#define _VA_LIST_DEFINED
+
+
+
+
+
+
+
+
+
+typedef __off_t off_t;
+
+
+
+#define __off_t_defined
+
+
+
+
+
+
+
+typedef __ssize_t ssize_t;
+#define __ssize_t_defined
+
+
+
+/* The type of the second argument to `fgetpos' and `fsetpos'. */
+
+
+typedef _G_fpos_t fpos_t;
+
+
+
+
+
+
+
+
+/* The possibilities for the third argument to `setvbuf'. */
+#define _IOFBF 0 /* Fully buffered. */
+#define _IOLBF 1 /* Line buffered. */
+#define _IONBF 2 /* No buffering. */
+
+
+/* Default buffer size. */
+
+#define BUFSIZ _IO_BUFSIZ
+
+
+
+/* End of file character.
+ Some things throughout the library rely on this being -1. */
+
+
+
+
+
+/* The possibilities for the third argument to `fseek'.
+ These values should not be changed. */
+#define SEEK_SET 0 /* Seek from beginning of file. */
+#define SEEK_CUR 1 /* Seek from current position. */
+#define SEEK_END 2 /* Seek from end of file. */
+
+
+
+
+
+
+
+/* Default path prefix for `tempnam' and `tmpnam'. */
+#define P_tmpdir "/tmp"
+
+
+
+/* Get the values:
+ L_tmpnam How long an array of chars must be to be passed to `tmpnam'.
+ TMP_MAX The minimum number of unique filenames generated by tmpnam
+ (and tempnam when it uses tmpnam's name space),
+ or tempnam (the two are separate).
+ L_ctermid How long an array to pass to `ctermid'.
+ L_cuserid How long an array to pass to `cuserid'.
+ FOPEN_MAX Minimum number of files that can be open at once.
+ FILENAME_MAX Maximum length of a filename. */
+#include <bits/stdio_lim.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 1 3
+/* Copyright (C) 1994, 1997, 1998, 1999, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4096
+
+
+#define L_ctermid 9
+
+
+
+
+
+
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+
+
+
+
+
+# 165 "/usr/include/stdio.h" 2 3
+
+
+
+/* Standard streams. */
+extern struct _IO_FILE *stdin; /* Standard input stream. */
+extern struct _IO_FILE *stdout; /* Standard output stream. */
+extern struct _IO_FILE *stderr; /* Standard error output stream. */
+/* C89/C99 say they're macros. Make them happy. */
+#define stdin stdin
+#define stdout stdout
+#define stderr stderr
+
+
+/* Remove file FILENAME. */
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Rename file OLD to NEW. */
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Create a temporary file and open it read/write.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+
+extern FILE *tmpfile (void) ;
+
+
+
+
+
+
+
+
+
+
+
+
+/* Generate a temporary filename. */
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* This is the reentrant variant of `tmpnam'. The only difference is
+ that it does not allow S to be NULL. */
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Generate a unique temporary filename using up to five characters of PFX
+ if it is not NULL. The directory to put this file in is searched for
+ as follows: First the environment variable "TMPDIR" is checked.
+ If it contains the name of a writable directory, that directory is used.
+ If not and if DIR is not NULL, that value is checked. If that fails,
+ P_tmpdir is tried and finally "/tmp". The storage for the filename
+ is allocated by `malloc'. */
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__malloc__)) ;
+
+
+
+
+/* Close STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fclose (FILE *__stream);
+/* Flush STREAM, or all streams if STREAM is NULL.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fflush (FILE *__stream);
+
+
+
+/* Faster versions when locking is not required.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern int fflush_unlocked (FILE *__stream);
+
+
+# 264 "/usr/include/stdio.h" 3
+
+
+
+
+
+/* Open a file and create a new stream for it.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+/* Open a file, replacing an existing stream with it.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+# 295 "/usr/include/stdio.h" 3
+
+
+
+
+
+
+
+
+
+
+
+/* Create a new stream that refers to an existing system file descriptor. */
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+
+/* Create a new stream that refers to a memory buffer. */
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Open a stream that writes into a malloc'd buffer that is expanded as
+ necessary. *BUFLOC and *SIZELOC are updated with the buffer's location
+ and the number of characters written on fflush or fclose. */
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* If BUF is NULL, make STREAM unbuffered.
+ Else make it use buffer BUF, of size BUFSIZ. */
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Make STREAM use buffering mode MODE.
+ If BUF is not NULL, use N bytes of it for buffering;
+ else allocate an internal buffer N bytes long. */
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* If BUF is NULL, make STREAM unbuffered.
+ Else make it use SIZE bytes of BUF for buffering. */
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Make STREAM line-buffered. */
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Write formatted output to STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+/* Write formatted output to stdout.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int printf (__const char *__restrict __format, ...);
+/* Write formatted output to S. */
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__)) ;
+
+/* Write formatted output to S from argument list ARG.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+/* Write formatted output to stdout from argument list ARG.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+/* Write formatted output to S from argument list ARG. */
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__)) ;
+
+
+
+
+/* Maximum chars of output to write in MAXLEN. */
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+# 409 "/usr/include/stdio.h" 3
+
+
+
+/* Write formatted output to a file descriptor.
+
+ These functions are not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation they are cancellation points and
+ therefore not marked with __THROW. */
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+/* Read formatted input from STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+/* Read formatted input from stdin.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int scanf (__const char *__restrict __format, ...) ;
+/* Read formatted input from S. */
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[
+ GNU extension which conflicts with valid %a followed by letter
+ s, S or [. */
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf" ) ;
+
+extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf" ) ;
+
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf" ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+# 466 "/usr/include/stdio.h" 3
+
+
+
+
+
+
+
+/* Read formatted input from S into argument list ARG.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+
+/* Read formatted input from stdin into argument list ARG.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+
+/* Read formatted input from S into argument list ARG. */
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__format__ (__scanf__, 2, 0)));
+
+
+
+
+
+/* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[
+ GNU extension which conflicts with valid %a followed by letter
+ s, S or [. */
+extern int vfscanf
+ (FILE *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf" )
+
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format,
+ __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf" )
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf
+ (__const char *__restrict __s,
+ __const char *__restrict __format,
+ __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf" ) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 525 "/usr/include/stdio.h" 3
+
+
+
+
+/* Use ISO C9x. */
+
+
+
+/* Read a character from STREAM.
+
+ These functions are possible cancellation points and therefore not
+ marked with __THROW. */
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+/* Read a character from stdin.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int getchar (void);
+
+
+/* The C standard explicitly says this is a macro, so we always do the
+ optimization for it. */
+#define getc(_fp) _IO_getc (_fp)
+
+
+/* These are defined in POSIX.1:1996.
+
+ These functions are possible cancellation points and therefore not
+ marked with __THROW. */
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+/* Use POSIX or MISC. */
+
+
+/* Faster version when locking is not necessary.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern int fgetc_unlocked (FILE *__stream);
+/* Use MISC. */
+
+
+
+/* Write a character to STREAM.
+
+ These functions are possible cancellation points and therefore not
+ marked with __THROW.
+
+ These functions is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+/* Write a character to stdout.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int putchar (int __c);
+
+
+/* The C standard explicitly says this can be a macro,
+ so we always do the optimization for it. */
+#define putc(_ch, _fp) _IO_putc (_ch, _fp)
+
+
+/* Faster version when locking is not necessary.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern int fputc_unlocked (int __c, FILE *__stream);
+/* Use MISC. */
+
+
+/* These are defined in POSIX.1:1996.
+
+ These functions are possible cancellation points and therefore not
+ marked with __THROW. */
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+/* Use POSIX or MISC. */
+
+
+
+
+/* Get a word (int) from STREAM. */
+extern int getw (FILE *__stream);
+
+/* Write a word (int) to STREAM. */
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+/* Get a newline-terminated string of finite length from STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+
+/* Get a newline-terminated string from stdin, removing the newline.
+ DO NOT USE THIS FUNCTION!! There is no limit on how much it will read.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern char *gets (char *__s) ;
+
+
+# 648 "/usr/include/stdio.h" 3
+
+
+
+
+/* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
+ (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
+ NULL), pointing to *N characters of space. It is realloc'd as
+ necessary. Returns the number of characters read (not including the
+ null terminator), or -1 on error or EOF.
+
+ These functions are not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation they are cancellation points and
+ therefore not marked with __THROW. */
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+
+/* Like `getdelim', but reads up to a newline.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+
+
+
+
+/* Write a string to STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+/* Write a string, followed by a newline, to stdout.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int puts (__const char *__s);
+
+
+/* Push a character back onto the input buffer of STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int ungetc (int __c, FILE *__stream);
+
+
+/* Read chunks of generic data from STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+/* Write chunks of generic data to STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s);
+
+
+# 725 "/usr/include/stdio.h" 3
+
+
+
+/* Faster versions when locking is not necessary.
+
+ These functions are not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation they are cancellation points and
+ therefore not marked with __THROW. */
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream);
+
+
+
+
+/* Seek to a certain position on STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fseek (FILE *__stream, long int __off, int __whence);
+/* Return the current position of STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern long int ftell (FILE *__stream) ;
+/* Rewind to the beginning of STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void rewind (FILE *__stream);
+
+
+/* The Single Unix Specification, Version 2, specifies an alternative,
+ more adequate interface for the two functions above which deal with
+ file offset. `long int' is not the right type. These definitions
+ are originally defined in the Large File Support API. */
+
+
+
+/* Seek to a certain position on STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+/* Return the current position of STREAM.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern __off_t ftello (FILE *__stream) ;
+# 786 "/usr/include/stdio.h" 3
+
+
+
+
+
+/* Get STREAM's position.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+/* Set STREAM's position.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 811 "/usr/include/stdio.h" 3
+
+
+
+
+
+
+
+
+
+
+
+/* Clear the error and EOF indicators for STREAM. */
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Return the EOF indicator for STREAM. */
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Return the error indicator for STREAM. */
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Faster versions when locking is not required. */
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Print a message describing the meaning of the value of errno.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void perror (__const char *__s);
+
+
+/* Provide the declarations for `sys_errlist' and `sys_nerr' if they
+ are available on this system. Even if available, these variables
+ should not be used directly. The `strerror' function provides
+ all the necessary functionality. */
+#include <bits/sys_errlist.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 1 3
+/* Declare sys_errlist and sys_nerr, or don't. Compatibility (do) version.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+/* sys_errlist and sys_nerr are deprecated. Use strerror instead. */
+
+
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+
+
+
+
+
+# 850 "/usr/include/stdio.h" 2 3
+
+
+
+
+/* Return the system file descriptor for STREAM. */
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use POSIX. */
+
+
+/* Faster version when locking is not required. */
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Create a new stream connected to a pipe running the given command.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+
+/* Close a stream opened by popen and return the status of its child.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int pclose (FILE *__stream);
+
+
+
+
+/* Return the name of the controlling terminal. */
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use POSIX. */
+
+
+/* Use X/Open, but not issue 6. */
+
+
+
+
+
+/* Use GNU. */
+# 903 "/usr/include/stdio.h" 3
+
+
+
+
+/* These are defined in POSIX.1:1996. */
+
+/* Acquire ownership of STREAM. */
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Try to acquire ownership of STREAM but do not block if it is not
+ possible. */
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Relinquish the ownership granted for STREAM. */
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* POSIX || misc */
+
+/* X/Open, but not issue 6 and not for GNU. */
+
+
+
+
+
+
+
+/* If we are compiling with optimizing read this file. It contains
+ several optimizing inline functions and macros. */
+
+
+
+
+
+
+
+
+
+
+
+
+/* <stdio.h> included. */
+
+/* !_STDIO_H */
+# 60 "include/forms.h" 2
+
+#include <stdarg.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2009 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.15 Variable arguments <stdarg.h>
+ */
+
+
+
+
+#define _STDARG_H
+#define _ANSI_STDARG_H_
+/* not __need___va_list */
+#undef __need___va_list
+
+/* Define __gnuc_va_list. */
+
+
+
+
+
+
+/* Define the standard macros for the user,
+ if this invocation was from the user program. */
+
+
+#define va_start(v,l) __builtin_va_start(v,l)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v,l) __builtin_va_arg(v,l)
+
+#define va_copy(d,s) __builtin_va_copy(d,s)
+
+#define __va_copy(d,s) __builtin_va_copy(d,s)
+
+/* Define va_list, if desired, from __gnuc_va_list. */
+/* We deliberately do not define va_list when called from
+ stdio.h, because ANSI C says that stdio.h is not supposed to define
+ va_list. stdio.h needs to have access to that data type,
+ but must not use that name. It should use the name __gnuc_va_list,
+ which is safe because it is reserved for the implementation. */
+
+/* On OSF1, this means varargs.h is "half-loaded". */
+
+
+
+
+
+
+
+/* not __svr4__ || _SCO_DS */
+# 87 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h" 3
+
+
+/* The macro _VA_LIST_ is the same thing used by this file in Ultrix.
+ But on BSD NET2 we must not test or define or undef it.
+ (Note that the comments in NET 2's ansi.h
+ are incorrect for _VA_LIST_--see stdio.h!) */
+
+/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */
+/* not _VA_LIST_DEFINED */
+# 106 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stdarg.h" 3
+
+
+#define _VA_LIST_
+
+
+#define _VA_LIST
+
+
+
+
+
+#define _VA_LIST_T_H
+
+
+#define __va_list__
+
+
+/* not _VA_LIST_, except on certain systems */
+
+/* not __svr4__ */
+
+/* _STDARG_H */
+
+/* not _ANSI_STDARG_H_ */
+/* not _STDARG_H */
+# 61 "include/forms.h" 2
+
+#include <string.h>
+# 1 "/usr/include/string.h" 1 3
+/* Copyright (C) 1991-1993,1995-2004,2007,2009,2010
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.21 String handling <string.h>
+ */
+
+
+#define _STRING_H 1
+
+#include <features.h>
+
+
+
+/* Get size_t and NULL from <stddef.h>. */
+#define __need_size_t
+#define __need_NULL
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_ptrdiff_t. */
+# 163 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_wchar_t. */
+# 344 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+/* _STDDEF_H was defined this time */
+
+
+
+
+
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 34 "/usr/include/string.h" 2 3
+
+
+/* Tell the caller that we provide correct C++ prototypes. */
+
+
+
+
+
+
+/* Copy N bytes of SRC to DEST. */
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Copy N bytes of SRC to DEST, guaranteeing
+ correct behavior for overlapping strings. */
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+/* Copy no more than N bytes of SRC to DEST, stopping when C is found.
+ Return the position in DEST one byte past where C was copied,
+ or NULL if C was not found in the first N bytes of SRC. */
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* SVID. */
+
+
+
+/* Set N bytes of S to C. */
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Compare N bytes of S1 and S2. */
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Search N bytes of S for C. */
+# 94 "/usr/include/string.h" 3
+
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+# 123 "/usr/include/string.h" 3
+
+
+
+
+/* Copy SRC to DEST. */
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Copy no more than N characters of SRC to DEST. */
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Append SRC onto DEST. */
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Append no more than N characters from SRC onto DEST. */
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Compare S1 and S2. */
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Compare N characters of S1 and S2. */
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Compare the collated forms of S1 and S2. */
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Put a transformation of SRC into no more than N bytes of DEST. */
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+
+
+/* The following functions are equivalent to the both above but they
+ take the locale they use for the collation as an extra argument.
+ This is not standardsized but something like will come. */
+#include <xlocale.h>
+
+/* Compare the collated forms of S1 and S2 using rules from L. */
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3) )) ;
+/* Put a transformation of SRC into no more than N bytes of DEST. */
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2, 4) )) ;
+
+
+
+
+/* Duplicate S, returning an identical malloc'd string. */
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Return a malloc'd copy of at most N bytes of STRING. The
+ resultant string is terminated even if no null terminator
+ appears before STRING[N]. */
+
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+# 208 "/usr/include/string.h" 3
+
+
+
+/* Find the first occurrence of C in S. */
+# 234 "/usr/include/string.h" 3
+
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Find the last occurrence of C in S. */
+# 261 "/usr/include/string.h" 3
+
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+# 279 "/usr/include/string.h" 3
+
+
+
+/* Return the length of the initial segment of S which
+ consists entirely of characters not in REJECT. */
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Return the length of the initial segment of S which
+ consists entirely of characters in ACCEPT. */
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Find the first occurrence in S of any character in ACCEPT. */
+# 313 "/usr/include/string.h" 3
+
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Find the first occurrence of NEEDLE in HAYSTACK. */
+# 341 "/usr/include/string.h" 3
+
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+
+/* Divide S into tokens separated by characters in DELIM. */
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+
+/* Divide S into tokens separated by characters in DELIM. Information
+ passed between calls are stored in SAVE_PTR. */
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2, 3) )) ;
+
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2, 3) )) ;
+
+
+# 376 "/usr/include/string.h" 3
+
+
+# 394 "/usr/include/string.h" 3
+
+
+
+
+/* Return the length of S. */
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Find the length of STRING, but scan at most MAXLEN characters.
+ If no '0円' terminator is found in that many characters, return MAXLEN. */
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Return a string describing the meaning of the `errno' code in ERRNUM. */
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Reentrant version of `strerror'.
+ There are 2 flavors of `strerror_r', GNU which returns the string
+ and may or may not use the supplied temporary buffer and POSIX one
+ which fills the string into the buffer.
+ To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L
+ without -D_GNU_SOURCE is needed, otherwise the GNU version is
+ preferred. */
+
+/* Fill BUF with a string describing the meaning of the `errno' code in
+ ERRNUM. */
+
+extern int strerror_r
+ (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r" ) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Translate error number to string according to the locale L. */
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* We define this function always since `bzero' is sometimes needed when
+ the namespace rules does not allow this. */
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Set N bytes of S to 0. */
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Compare N bytes of S1 and S2 (same as memcmp). */
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Find the first occurrence of C in S (same as strchr). */
+# 488 "/usr/include/string.h" 3
+
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Find the last occurrence of C in S (same as strrchr). */
+# 516 "/usr/include/string.h" 3
+
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Return the position of the first bit set in I, or 0 if none are set.
+ The least-significant bit is position 1, the most-significant 32. */
+extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* The following two functions are non-standard but necessary for non-32 bit
+ platforms. */
+
+
+
+
+
+
+
+
+/* Compare S1 and S2, ignoring case. */
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Compare no more than N chars of S1 and S2, ignoring case. */
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Use BSD. */
+
+# 554 "/usr/include/string.h" 3
+
+
+
+/* Return the next DELIM-delimited token from *STRINGP,
+ terminating it with a '0円', and update *STRINGP to point past it. */
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+
+/* Return a string describing the meaning of the signal number in SIG. */
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Copy SRC to DEST, returning the address of the terminating '0円' in DEST. */
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Copy no more than N characters of SRC to DEST, returning the address of
+ the last character written into DEST. */
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+# 609 "/usr/include/string.h" 3
+
+
+
+
+# 638 "/usr/include/string.h" 3
+
+
+
+
+
+
+
+
+
+
+/* string.h */
+# 62 "include/forms.h" 2
+
+#include <limits.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 1 3
+/* Copyright (C) 1992, 1994, 1997, 1998 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/* This administrivia gets added to the beginning of limits.h
+ if the system has its own version of limits.h. */
+
+/* We use _GCC_LIMITS_H_ because we want this not to match
+ any macros that the system's limits.h uses for its own purposes. */
+/* Terminated in limity.h. */
+#define _GCC_LIMITS_H_
+
+
+/* Use "..." so that we find syslimits.h only in this same directory. */
+#include "syslimits.h"
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/syslimits.h" 1 3
+/* syslimits.h stands for the system's own limits.h file.
+ If we can use it ok unmodified, then we install this text.
+ If fixincludes fixes it, then the fixed version is installed
+ instead of this text. */
+
+#define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */
+#include_next <limits.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 1 3
+/* Copyright (C) 1992, 1994, 1997, 1998 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/* This administrivia gets added to the beginning of limits.h
+ if the system has its own version of limits.h. */
+
+/* We use _GCC_LIMITS_H_ because we want this not to match
+ any macros that the system's limits.h uses for its own purposes. */
+/* Terminated in limity.h. *//* not _GCC_LIMITS_H_ */
+# 166 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 3
+
+
+
+#include_next <limits.h> /* recurse down to the real one */
+# 1 "/usr/include/limits.h" 1 3
+/* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h>
+ */
+
+
+#define _LIBC_LIMITS_H_ 1
+
+#include <features.h>
+
+
+/* Maximum length of any multibyte character in any locale.
+ We define this value here since the gcc header does not define
+ the correct value. */
+#define MB_LEN_MAX 16
+
+
+/* If we are not using GNU CC we have to define all the symbols ourself.
+ Otherwise use gcc's definitions (see below). */
+/* GCC 2. */
+# 114 "/usr/include/limits.h" 3
+
+
+/* !_LIBC_LIMITS_H_ */
+
+ /* Get the compiler's limits.h, which defines almost all the ISO constants.
+
+ We put this #include_next outside the double inclusion check because
+ it should be possible to include this file more than once and still get
+ the definitions from gcc's header. */
+
+
+
+
+
+/* The <limits.h> files in some gcc versions don't define LLONG_MIN,
+ LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for
+ ages are available. */
+
+
+#define LLONG_MIN (-LLONG_MAX-1)
+
+
+#define LLONG_MAX __LONG_LONG_MAX__
+
+
+#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
+
+
+
+
+/* POSIX adds things to <limits.h>. */
+#include <bits/posix1_lim.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 1 3
+/* Copyright (C) 1991-1993,96,98,2000-2003,2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * POSIX Standard: 2.9.2 Minimum Values Added to <limits.h>
+ *
+ * Never include this file directly; use <limits.h> instead.
+ */
+
+
+#define _BITS_POSIX1_LIM_H 1
+
+
+/* These are the standard-mandated minimum values. */
+
+/* Minimum number of operations in one list I/O call. */
+#define _POSIX_AIO_LISTIO_MAX 2
+
+/* Minimal number of outstanding asynchronous I/O operations. */
+#define _POSIX_AIO_MAX 1
+
+/* Maximum length of arguments to `execve', including environment. */
+#define _POSIX_ARG_MAX 4096
+
+/* Maximum simultaneous processes per real user ID. */
+
+#define _POSIX_CHILD_MAX 25
+
+
+
+
+/* Minimal number of timer expiration overruns. */
+#define _POSIX_DELAYTIMER_MAX 32
+
+/* Maximum length of a host name (not including the terminating null)
+ as returned from the GETHOSTNAME function. */
+#define _POSIX_HOST_NAME_MAX 255
+
+/* Maximum link count of a file. */
+#define _POSIX_LINK_MAX 8
+
+/* Maximum length of login name. */
+#define _POSIX_LOGIN_NAME_MAX 9
+
+/* Number of bytes in a terminal canonical input queue. */
+#define _POSIX_MAX_CANON 255
+
+/* Number of bytes for which space will be
+ available in a terminal input queue. */
+#define _POSIX_MAX_INPUT 255
+
+/* Maximum number of message queues open for a process. */
+#define _POSIX_MQ_OPEN_MAX 8
+
+/* Maximum number of supported message priorities. */
+#define _POSIX_MQ_PRIO_MAX 32
+
+/* Number of bytes in a filename. */
+#define _POSIX_NAME_MAX 14
+
+/* Number of simultaneous supplementary group IDs per process. */
+
+#define _POSIX_NGROUPS_MAX 8
+
+
+
+
+/* Number of files one process can have open at once. */
+
+#define _POSIX_OPEN_MAX 20
+
+
+
+
+
+
+
+
+
+
+/* Number of bytes in a pathname. */
+#define _POSIX_PATH_MAX 256
+
+/* Number of bytes than can be written atomically to a pipe. */
+#define _POSIX_PIPE_BUF 512
+
+/* The number of repeated occurrences of a BRE permitted by the
+ REGEXEC and REGCOMP functions when using the interval notation. */
+#define _POSIX_RE_DUP_MAX 255
+
+/* Minimal number of realtime signals reserved for the application. */
+#define _POSIX_RTSIG_MAX 8
+
+/* Number of semaphores a process can have. */
+#define _POSIX_SEM_NSEMS_MAX 256
+
+/* Maximal value of a semaphore. */
+#define _POSIX_SEM_VALUE_MAX 32767
+
+/* Number of pending realtime signals. */
+#define _POSIX_SIGQUEUE_MAX 32
+
+/* Largest value of a `ssize_t'. */
+#define _POSIX_SSIZE_MAX 32767
+
+/* Number of streams a process can have open at once. */
+#define _POSIX_STREAM_MAX 8
+
+/* The number of bytes in a symbolic link. */
+#define _POSIX_SYMLINK_MAX 255
+
+/* The number of symbolic links that can be traversed in the
+ resolution of a pathname in the absence of a loop. */
+#define _POSIX_SYMLOOP_MAX 8
+
+/* Number of timer for a process. */
+#define _POSIX_TIMER_MAX 32
+
+/* Maximum number of characters in a tty name. */
+#define _POSIX_TTY_NAME_MAX 9
+
+/* Maximum length of a timezone name (element of `tzname'). */
+#define _POSIX_TZNAME_MAX 6
+
+# 150 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3
+
+
+/* Maximum clock resolution in nanoseconds. */
+#define _POSIX_CLOCKRES_MIN 20000000
+
+
+/* Get the implementation-specific values for the above. */
+#include <bits/local_lim.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 1 3
+/* Minimum guaranteed maximum values for system limits. Linux version.
+ Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* The kernel header pollutes the namespace with the NR_OPEN symbol
+ and defines LINK_MAX although filesystems have different maxima. A
+ similar thing is true for OPEN_MAX: the limit can be changed at
+ runtime and therefore the macro must not be defined. Remove this
+ after including the header if necessary. */
+
+#define __undef_NR_OPEN
+
+
+#define __undef_LINK_MAX
+
+
+#define __undef_OPEN_MAX
+
+
+#define __undef_ARG_MAX
+
+
+/* The kernel sources contain a file with all the needed information. */
+#include <linux/limits.h>
+# 1 "/usr/include/linux/limits.h" 1 3
+
+#define _LINUX_LIMITS_H
+
+#define NR_OPEN 1024
+
+#define NGROUPS_MAX 65536 /* supplemental group IDs are available */
+#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
+#define LINK_MAX 127 /* # links a file may have */
+#define MAX_CANON 255 /* size of the canonical input queue */
+#define MAX_INPUT 255 /* size of the type-ahead buffer */
+#define NAME_MAX 255 /* # chars in a file name */
+#define PATH_MAX 4096 /* # chars in a path name including nul */
+#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
+#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */
+#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */
+#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */
+
+#define RTSIG_MAX 32
+
+
+# 39 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 2 3
+
+
+/* Have to remove NR_OPEN? */
+
+#undef NR_OPEN
+#undef __undef_NR_OPEN
+
+/* Have to remove LINK_MAX? */
+
+#undef LINK_MAX
+#undef __undef_LINK_MAX
+
+/* Have to remove OPEN_MAX? */
+
+#undef OPEN_MAX
+#undef __undef_OPEN_MAX
+
+/* Have to remove ARG_MAX? */
+
+#undef ARG_MAX
+#undef __undef_ARG_MAX
+
+
+/* The number of data keys per process. */
+#define _POSIX_THREAD_KEYS_MAX 128
+/* This is the value this implementation supports. */
+#define PTHREAD_KEYS_MAX 1024
+
+/* Controlling the iterations of destructors for thread-specific data. */
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+/* Number of iterations this implementation does. */
+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+
+/* The number of threads per process. */
+#define _POSIX_THREAD_THREADS_MAX 64
+/* We have no predefined limit on the number of threads. */
+#undef PTHREAD_THREADS_MAX
+
+/* Maximum amount by which a process can descrease its asynchronous I/O
+ priority level. */
+#define AIO_PRIO_DELTA_MAX 20
+
+/* Minimum size for a thread. We are free to choose a reasonable value. */
+#define PTHREAD_STACK_MIN 16384
+
+/* Maximum number of timer expiration overruns. */
+#define DELAYTIMER_MAX 2147483647
+
+/* Maximum tty name length. */
+#define TTY_NAME_MAX 32
+
+/* Maximum login name length. This is arbitrary. */
+#define LOGIN_NAME_MAX 256
+
+/* Maximum host name length. */
+#define HOST_NAME_MAX 64
+
+/* Maximum message queue priority level. */
+#define MQ_PRIO_MAX 32768
+
+/* Maximum value the semaphore can have. */
+#define SEM_VALUE_MAX (2147483647)
+# 157 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 2 3
+
+
+
+
+#define SSIZE_MAX LONG_MAX
+
+
+
+/* This value is a guaranteed minimum maximum.
+ The current maximum can be got from `sysconf'. */
+
+
+
+
+
+/* bits/posix1_lim.h */
+# 145 "/usr/include/limits.h" 2 3
+
+
+
+
+#include <bits/posix2_lim.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 1 3
+/* Copyright (C) 1991, 1996, 1999, 2000, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * Never include this file directly; include <limits.h> instead.
+ */
+
+
+#define _BITS_POSIX2_LIM_H 1
+
+
+/* The maximum `ibase' and `obase' values allowed by the `bc' utility. */
+#define _POSIX2_BC_BASE_MAX 99
+
+/* The maximum number of elements allowed in an array by the `bc' utility. */
+#define _POSIX2_BC_DIM_MAX 2048
+
+/* The maximum `scale' value allowed by the `bc' utility. */
+#define _POSIX2_BC_SCALE_MAX 99
+
+/* The maximum length of a string constant accepted by the `bc' utility. */
+#define _POSIX2_BC_STRING_MAX 1000
+
+/* The maximum number of weights that can be assigned to an entry of
+ the LC_COLLATE `order' keyword in the locale definition file. */
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+
+/* The maximum number of expressions that can be nested
+ within parentheses by the `expr' utility. */
+#define _POSIX2_EXPR_NEST_MAX 32
+
+/* The maximum length, in bytes, of an input line. */
+#define _POSIX2_LINE_MAX 2048
+
+/* The maximum number of repeated occurrences of a regular expression
+ permitted when using the interval notation `\{M,N\}'. */
+#define _POSIX2_RE_DUP_MAX 255
+
+/* The maximum number of bytes in a character class name. We have no
+ fixed limit, 2048 is a high number. */
+#define _POSIX2_CHARCLASS_NAME_MAX 14
+
+
+/* These values are implementation-specific,
+ and may vary within the implementation.
+ Their precise values can be obtained from sysconf. */
+
+
+#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
+
+
+#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
+
+
+#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
+
+
+#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
+
+
+#define COLL_WEIGHTS_MAX 255
+
+
+#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
+
+
+#define LINE_MAX _POSIX2_LINE_MAX
+
+
+#define CHARCLASS_NAME_MAX 2048
+
+
+/* This value is defined like this in regex.h. */
+#define RE_DUP_MAX (0x7fff)
+
+/* bits/posix2_lim.h */
+# 149 "/usr/include/limits.h" 2 3
+
+
+
+
+
+
+# 169 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 2 3
+
+
+
+/* not _GCC_LIMITS_H_ */
+# 7 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/syslimits.h" 2 3
+
+#undef _GCC_NEXT_LIMITS_H
+# 34 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 2 3
+
+
+/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+
+#define _LIMITS_H___
+
+/* Number of bits in a `char'. */
+#undef CHAR_BIT
+#define CHAR_BIT __CHAR_BIT__
+
+/* Maximum length of a multibyte character. */
+
+
+
+
+/* Minimum and maximum values a `signed char' can hold. */
+#undef SCHAR_MIN
+#define SCHAR_MIN (-SCHAR_MAX - 1)
+#undef SCHAR_MAX
+#define SCHAR_MAX __SCHAR_MAX__
+
+/* Maximum value an `unsigned char' can hold. (Minimum is 0). */
+#undef UCHAR_MAX
+
+
+
+#define UCHAR_MAX (SCHAR_MAX * 2 + 1)
+
+
+/* Minimum and maximum values a `char' can hold. */
+# 96 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 3
+
+#undef CHAR_MIN
+#define CHAR_MIN SCHAR_MIN
+#undef CHAR_MAX
+#define CHAR_MAX SCHAR_MAX
+
+
+/* Minimum and maximum values a `signed short int' can hold. */
+#undef SHRT_MIN
+#define SHRT_MIN (-SHRT_MAX - 1)
+#undef SHRT_MAX
+#define SHRT_MAX __SHRT_MAX__
+
+/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */
+#undef USHRT_MAX
+
+
+
+#define USHRT_MAX (SHRT_MAX * 2 + 1)
+
+
+/* Minimum and maximum values a `signed int' can hold. */
+#undef INT_MIN
+#define INT_MIN (-INT_MAX - 1)
+#undef INT_MAX
+#define INT_MAX __INT_MAX__
+
+/* Maximum value an `unsigned int' can hold. (Minimum is 0). */
+#undef UINT_MAX
+#define UINT_MAX (INT_MAX * 2U + 1U)
+
+/* Minimum and maximum values a `signed long int' can hold.
+ (Same as `int'). */
+#undef LONG_MIN
+#define LONG_MIN (-LONG_MAX - 1L)
+#undef LONG_MAX
+#define LONG_MAX __LONG_MAX__
+
+/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */
+#undef ULONG_MAX
+#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
+
+# 148 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 3
+
+
+# 160 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed/limits.h" 3
+
+
+/* _LIMITS_H___ */
+/* This administrivia gets added to the end of limits.h
+ if the system has its own version of limits.h. */
+
+/* not _GCC_LIMITS_H_ *//* not _GCC_LIMITS_H_ */
+
+
+
+
+
+
+# 63 "include/forms.h" 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+#define FL_EXPORT extern
+/* FL_WIN32 */
+
+
+
+
+
+
+
+/**
+ * \file Basic.h
+ *
+ * Basic definitions and limits.
+ * Window system independent prototypes
+ *
+ * Modify with care
+ */
+
+
+#define FL_BASIC_H
+
+#include <math.h>
+# 1 "/usr/include/math.h" 1 3
+/* Declarations for math functions.
+ Copyright (C) 1991-1993, 1995-1999, 2001, 2002, 2004, 2006, 2009, 2011
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.12 Mathematics <math.h>
+ */
+
+
+#define _MATH_H 1
+
+#include <features.h>
+
+
+
+/* Get machine-dependent HUGE_VAL value (returned on overflow).
+ On all IEEE754 machines, this is +Infinity. */
+#include <bits/huge_val.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/huge_val.h" 1 3
+/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity).
+ Used by <stdlib.h> and <math.h> functions for overflow.
+ Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
+
+
+#define HUGE_VAL (__builtin_huge_val())
+/* not GCC *//* GCC. */
+# 55 "/usr/include/x86_64-linux-gnu/bits/huge_val.h" 3
+
+# 34 "/usr/include/math.h" 2 3
+
+
+#include <bits/huge_valf.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/huge_valf.h" 1 3
+/* `HUGE_VALF' constant for IEEE 754 machines (where it is infinity).
+ Used by <stdlib.h> and <math.h> functions for overflow.
+ Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+/* IEEE positive infinity (-HUGE_VAL is negative infinity). */
+
+
+#define HUGE_VALF (__builtin_huge_valf())
+/* not GCC *//* GCC. */
+# 53 "/usr/include/x86_64-linux-gnu/bits/huge_valf.h" 3
+
+# 36 "/usr/include/math.h" 2 3
+
+#include <bits/huge_vall.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/huge_vall.h" 1 3
+/* Default `HUGE_VALL' constant.
+ Used by <stdlib.h> and <math.h> functions for overflow.
+ Copyright (C) 1992, 1996, 1997, 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#define HUGE_VALL (__builtin_huge_vall())
+
+
+
+# 37 "/usr/include/math.h" 2 3
+
+
+/* Get machine-dependent INFINITY value. */
+#include <bits/inf.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/inf.h" 1 3
+/* `INFINITY' constant for IEEE 754 machines.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+/* IEEE positive infinity. */
+
+
+#define INFINITY (__builtin_inff())
+
+
+
+# 40 "/usr/include/math.h" 2 3
+
+
+/* Get machine-dependent NAN value (returned for some domain errors). */
+#include <bits/nan.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/nan.h" 1 3
+/* `NAN' constant for IEEE 754 machines.
+ Copyright (C) 1992,1996,1997,1999,2004,2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+/* IEEE Not A Number. */
+
+
+
+#define NAN (__builtin_nanf (""))
+
+/* GCC. */
+# 53 "/usr/include/x86_64-linux-gnu/bits/nan.h" 3
+
+# 43 "/usr/include/math.h" 2 3
+
+/* __USE_ISOC99 */
+
+/* Get general and ISO C99 specific information. */
+#include <bits/mathdef.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/mathdef.h" 1 3
+/* Copyright (C) 2001, 2004, 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#define _MATH_H_MATHDEF 1
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 26 "/usr/include/x86_64-linux-gnu/bits/mathdef.h" 2 3
+
+
+
+/* The x86-64 architecture computes values with the precission of the
+ used type. Similarly for -m32 -mfpmath=sse. */
+typedef float float_t; /* `float' expressions are evaluated as `float'. */
+typedef double double_t; /* `double' expressions are evaluated
+ as `double'. */
+# 42 "/usr/include/x86_64-linux-gnu/bits/mathdef.h" 3
+
+
+/* The values returned by `ilogb' for 0 and NaN respectively. */
+#define FP_ILOGB0 (-2147483647 - 1)
+#define FP_ILOGBNAN (-2147483647 - 1)
+
+/* The GCC 4.6 compiler will define __FP_FAST_FMA{,F,L} if the fma{,f,l}
+ builtins are supported. */
+
+
+
+
+
+
+
+
+
+
+
+
+/* ISO C99 */
+# 47 "/usr/include/math.h" 2 3
+
+
+/* The file <bits/mathcalls.h> contains the prototypes for all the
+ actual math functions. These macros are used for those prototypes,
+ so we can easily declare each function as both `name' and `__name',
+ and can declare the float versions `namef' and `__namef'. */
+
+#define __MATHCALL(function,suffix, args) \
+ __MATHDECL (_Mdouble_,function,suffix, args)
+#define __MATHDECL(type, function,suffix, args) \
+ __MATHDECL_1(type, function,suffix, args); \
+ __MATHDECL_1(type, __CONCAT(__,function),suffix, args)
+#define __MATHCALLX(function,suffix, args, attrib) \
+ __MATHDECLX (_Mdouble_,function,suffix, args, attrib)
+#define __MATHDECLX(type, function,suffix, args, attrib) \
+ __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); \
+ __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)
+#define __MATHDECL_1(type, function,suffix, args) \
+ extern type __MATH_PRECNAME(function,suffix) args __THROW
+
+#define _Mdouble_ double
+#define __MATH_PRECNAME(name,r) __CONCAT(name,r)
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_STD
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_STD
+#include <bits/mathcalls.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/mathcalls.h" 1 3
+/* Prototype declarations for math functions; helper file for <math.h>.
+ Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* NOTE: Because of the special way this file is used by <math.h>, this
+ file must NOT be protected from multiple inclusion as header files
+ usually are.
+
+ This file provides prototype declarations for the math functions.
+ Most functions are declared using the macro:
+
+ __MATHCALL (NAME,[_r], (ARGS...));
+
+ This means there is a function `NAME' returning `double' and a function
+ `NAMEf' returning `float'. Each place `_Mdouble_' appears in the
+ prototype, that is actually `double' in the prototype for `NAME' and
+ `float' in the prototype for `NAMEf'. Reentrant variant functions are
+ called `NAME_r' and `NAMEf_r'.
+
+ Functions returning other types like `int' are declared using the macro:
+
+ __MATHDECL (TYPE, NAME,[_r], (ARGS...));
+
+ This is just like __MATHCALL but for a function returning `TYPE'
+ instead of `_Mdouble_'. In all of these cases, there is still
+ both a `NAME' and a `NAMEf' that takes `float' arguments.
+
+ Note that there must be no whitespace before the argument passed for
+ NAME, to make token pasting work with -traditional. */
+
+
+
+
+
+
+/* Trigonometric functions. */
+
+
+/* Arc cosine of X. */
+extern double acos (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __acos (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc sine of X. */
+extern double asin (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __asin (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc tangent of X. */
+extern double atan (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __atan (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc tangent of Y/X. */
+extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Cosine of X. */
+extern double cos (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __cos (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Sine of X. */
+extern double sin (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __sin (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Tangent of X. */
+extern double tan (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __tan (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Hyperbolic functions. */
+
+/* Hyperbolic cosine of X. */
+extern double cosh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __cosh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic sine of X. */
+extern double sinh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __sinh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic tangent of X. */
+extern double tanh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __tanh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+/* Hyperbolic arc cosine of X. */
+extern double acosh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __acosh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic arc sine of X. */
+extern double asinh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __asinh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic arc tangent of X. */
+extern double atanh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __atanh (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Exponential and logarithmic functions. */
+
+
+/* Exponential function of X. */
+extern double exp (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __exp (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Break VALUE into a normalized fraction and an integral power of 2. */
+extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* X times (two to the EXP power). */
+extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Natural logarithm of X. */
+extern double log (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __log (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Base-ten logarithm of X. */
+extern double log10 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __log10 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Break VALUE into integral and fractional parts. */
+extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+
+
+
+
+
+/* Return exp(X) - 1. */
+extern double expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return log(1 + X). */
+extern double log1p (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __log1p (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the base 2 signed integral exponent of X. */
+extern double logb (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __logb (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Compute base-2 exponential of X. */
+extern double exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Compute base-2 logarithm of X. */
+extern double log2 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __log2 (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Power functions. */
+
+
+/* Return X to the Y power. */
+extern double pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the square root of X. */
+extern double sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Return `sqrt(X*X + Y*Y)'. */
+extern double hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Return the cube root of X. */
+extern double cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Nearest integer, absolute value, and remainder functions. */
+
+
+/* Smallest integral value not less than X. */
+extern double ceil (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __ceil (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Absolute value of X. */
+extern double fabs (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __fabs (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Largest integer not greater than X. */
+extern double floor (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __floor (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Floating-point modulo remainder of X/Y. */
+extern double fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+extern int __isinf (double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+extern int __finite (double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+extern int isinf (double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+extern int finite (double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return the remainder of X/Y. */
+extern double drem (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __drem (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the fractional part of X after dividing out `ilogb (X)'. */
+extern double significand (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __significand (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use misc. */
+
+
+
+/* Return X with its signed changed to Y's. */
+extern double copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+
+
+
+/* Return representation of NaN for double type. */
+extern double nan (__const char *__tagb) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+
+
+/* Return nonzero if VALUE is not a number. */
+extern int __isnan (double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+/* Return nonzero if VALUE is not a number. */
+extern int isnan (double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Bessel functions. */
+extern double j0 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __j0 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double j1 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __j1 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double jn (int, double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __jn (int, double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double y0 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __y0 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double y1 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __y1 (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double yn (int, double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __yn (int, double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Error and gamma functions. */
+extern double erf (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __erf (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double erfc (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __erfc (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double lgamma (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __lgamma (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* True gamma function. */
+extern double tgamma (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __tgamma (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Obsolete alias for `lgamma'. */
+extern double gamma (double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __gamma (double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Reentrant version of lgamma. This function uses the global variable
+ `signgam'. The reentrant version instead takes a pointer and stores
+ the value through it. */
+extern double lgamma_r (double , int *__signgamp) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __lgamma_r (double , int *__signgamp) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Return the integer nearest X in the direction of the
+ prevailing rounding mode. */
+extern double rint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __rint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
+extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+/* Return the remainder of integer divison X / Y with infinite precision. */
+extern double remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return X times (2 to the Nth power). */
+extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the binary exponent of X, which must be nonzero. */
+extern int ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern int __ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Return X times (2 to the Nth power). */
+extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to integral value in floating-point format using current
+ rounding direction, but do not raise inexact exception. */
+extern double nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+extern double round (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __round (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Round X to the integral value in floating-point format nearest but
+ not larger in magnitude. */
+extern double trunc (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern double __trunc (double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Compute remainder of X and Y and put in *QUO a value with sign of x/y
+ and magnitude congruent `mod 2^n' to the magnitude of the integral
+ quotient x/y, with n >= 3. */
+extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Conversion functions. */
+
+/* Round X to nearest integral value according to current rounding
+ direction. */
+extern long int lrint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long int __lrint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long long int llrint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long long int __llrint (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+extern long int lround (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long int __lround (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long long int llround (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long long int __llround (double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return positive difference between X and Y. */
+extern double fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return maximum numeric value from X and Y. */
+extern double fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return minimum numeric value from X and Y. */
+extern double fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Classify given number. */
+extern int __fpclassify (double __value) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__const__));
+
+/* Test for negative number. */
+extern int __signbit (double __value) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__const__));
+
+
+/* Multiply-add function computed as a ternary operation. */
+extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use ISO C99. */
+
+
+
+
+
+
+/* Return X times (2 to the Nth power). */
+extern double scalb (double __x, double __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+# 71 "/usr/include/math.h" 2 3
+
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+
+
+
+
+/* Include the file of declarations again, this time using `float'
+ instead of `double' and appending f to each function name. */
+
+
+#define _Mfloat_ float
+
+#define _Mdouble_ _Mfloat_
+
+#define __MATH_PRECNAME(name,r) name##f##r
+
+
+
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
+#include <bits/mathcalls.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/mathcalls.h" 1 3
+/* Prototype declarations for math functions; helper file for <math.h>.
+ Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* NOTE: Because of the special way this file is used by <math.h>, this
+ file must NOT be protected from multiple inclusion as header files
+ usually are.
+
+ This file provides prototype declarations for the math functions.
+ Most functions are declared using the macro:
+
+ __MATHCALL (NAME,[_r], (ARGS...));
+
+ This means there is a function `NAME' returning `double' and a function
+ `NAMEf' returning `float'. Each place `_Mdouble_' appears in the
+ prototype, that is actually `double' in the prototype for `NAME' and
+ `float' in the prototype for `NAMEf'. Reentrant variant functions are
+ called `NAME_r' and `NAMEf_r'.
+
+ Functions returning other types like `int' are declared using the macro:
+
+ __MATHDECL (TYPE, NAME,[_r], (ARGS...));
+
+ This is just like __MATHCALL but for a function returning `TYPE'
+ instead of `_Mdouble_'. In all of these cases, there is still
+ both a `NAME' and a `NAMEf' that takes `float' arguments.
+
+ Note that there must be no whitespace before the argument passed for
+ NAME, to make token pasting work with -traditional. */
+
+
+
+
+
+
+/* Trigonometric functions. */
+
+
+/* Arc cosine of X. */
+extern float acosf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __acosf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc sine of X. */
+extern float asinf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __asinf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc tangent of X. */
+extern float atanf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __atanf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc tangent of Y/X. */
+extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Cosine of X. */
+extern float cosf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __cosf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Sine of X. */
+extern float sinf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __sinf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Tangent of X. */
+extern float tanf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __tanf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Hyperbolic functions. */
+
+/* Hyperbolic cosine of X. */
+extern float coshf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __coshf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic sine of X. */
+extern float sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic tangent of X. */
+extern float tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+/* Hyperbolic arc cosine of X. */
+extern float acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic arc sine of X. */
+extern float asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic arc tangent of X. */
+extern float atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Exponential and logarithmic functions. */
+
+
+/* Exponential function of X. */
+extern float expf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __expf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Break VALUE into a normalized fraction and an integral power of 2. */
+extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* X times (two to the EXP power). */
+extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Natural logarithm of X. */
+extern float logf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __logf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Base-ten logarithm of X. */
+extern float log10f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __log10f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Break VALUE into integral and fractional parts. */
+extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+
+
+
+
+
+/* Return exp(X) - 1. */
+extern float expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return log(1 + X). */
+extern float log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the base 2 signed integral exponent of X. */
+extern float logbf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __logbf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Compute base-2 exponential of X. */
+extern float exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Compute base-2 logarithm of X. */
+extern float log2f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __log2f (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Power functions. */
+
+
+/* Return X to the Y power. */
+extern float powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the square root of X. */
+extern float sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Return `sqrt(X*X + Y*Y)'. */
+extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Return the cube root of X. */
+extern float cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Nearest integer, absolute value, and remainder functions. */
+
+
+/* Smallest integral value not less than X. */
+extern float ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Absolute value of X. */
+extern float fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Largest integer not greater than X. */
+extern float floorf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __floorf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Floating-point modulo remainder of X/Y. */
+extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+extern int __isinff (float __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+extern int __finitef (float __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+extern int isinff (float __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+extern int finitef (float __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return the remainder of X/Y. */
+extern float dremf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the fractional part of X after dividing out `ilogb (X)'. */
+extern float significandf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __significandf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use misc. */
+
+
+
+/* Return X with its signed changed to Y's. */
+extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+
+
+
+/* Return representation of NaN for double type. */
+extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+
+
+/* Return nonzero if VALUE is not a number. */
+extern int __isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+/* Return nonzero if VALUE is not a number. */
+extern int isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Bessel functions. */
+extern float j0f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __j0f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float j1f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __j1f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float jnf (int, float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __jnf (int, float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float y0f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __y0f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float y1f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __y1f (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float ynf (int, float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __ynf (int, float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Error and gamma functions. */
+extern float erff (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __erff (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float erfcf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __erfcf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern float lgammaf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __lgammaf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* True gamma function. */
+extern float tgammaf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __tgammaf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Obsolete alias for `lgamma'. */
+extern float gammaf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __gammaf (float ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Reentrant version of lgamma. This function uses the global variable
+ `signgam'. The reentrant version instead takes a pointer and stores
+ the value through it. */
+extern float lgammaf_r (float , int *__signgamp) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __lgammaf_r (float , int *__signgamp) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Return the integer nearest X in the direction of the
+ prevailing rounding mode. */
+extern float rintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __rintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
+extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+/* Return the remainder of integer divison X / Y with infinite precision. */
+extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return X times (2 to the Nth power). */
+extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the binary exponent of X, which must be nonzero. */
+extern int ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern int __ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Return X times (2 to the Nth power). */
+extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to integral value in floating-point format using current
+ rounding direction, but do not raise inexact exception. */
+extern float nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+extern float roundf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __roundf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Round X to the integral value in floating-point format nearest but
+ not larger in magnitude. */
+extern float truncf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern float __truncf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Compute remainder of X and Y and put in *QUO a value with sign of x/y
+ and magnitude congruent `mod 2^n' to the magnitude of the integral
+ quotient x/y, with n >= 3. */
+extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Conversion functions. */
+
+/* Round X to nearest integral value according to current rounding
+ direction. */
+extern long int lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long int __lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long long int llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long long int __llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+extern long int lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long int __lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long long int llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long long int __llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return positive difference between X and Y. */
+extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return maximum numeric value from X and Y. */
+extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return minimum numeric value from X and Y. */
+extern float fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Classify given number. */
+extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__const__));
+
+/* Test for negative number. */
+extern int __signbitf (float __value) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__const__));
+
+
+/* Multiply-add function computed as a ternary operation. */
+extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use ISO C99. */
+
+
+
+
+
+
+/* Return X times (2 to the Nth power). */
+extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+# 94 "/usr/include/math.h" 2 3
+
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+
+
+
+
+# 119 "/usr/include/math.h" 3
+
+
+# 129 "/usr/include/math.h" 3
+
+
+/* Include the file of declarations again, this time using `long double'
+ instead of `double' and appending l to each function name. */
+
+
+#define _Mlong_double_ long double
+
+#define _Mdouble_ _Mlong_double_
+
+#define __MATH_PRECNAME(name,r) name##l##r
+
+
+
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
+#define __MATH_DECLARE_LDOUBLE 1
+#include <bits/mathcalls.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/mathcalls.h" 1 3
+/* Prototype declarations for math functions; helper file for <math.h>.
+ Copyright (C) 1996-2002, 2003, 2006, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* NOTE: Because of the special way this file is used by <math.h>, this
+ file must NOT be protected from multiple inclusion as header files
+ usually are.
+
+ This file provides prototype declarations for the math functions.
+ Most functions are declared using the macro:
+
+ __MATHCALL (NAME,[_r], (ARGS...));
+
+ This means there is a function `NAME' returning `double' and a function
+ `NAMEf' returning `float'. Each place `_Mdouble_' appears in the
+ prototype, that is actually `double' in the prototype for `NAME' and
+ `float' in the prototype for `NAMEf'. Reentrant variant functions are
+ called `NAME_r' and `NAMEf_r'.
+
+ Functions returning other types like `int' are declared using the macro:
+
+ __MATHDECL (TYPE, NAME,[_r], (ARGS...));
+
+ This is just like __MATHCALL but for a function returning `TYPE'
+ instead of `_Mdouble_'. In all of these cases, there is still
+ both a `NAME' and a `NAMEf' that takes `float' arguments.
+
+ Note that there must be no whitespace before the argument passed for
+ NAME, to make token pasting work with -traditional. */
+
+
+
+
+
+
+/* Trigonometric functions. */
+
+
+/* Arc cosine of X. */
+extern long double acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc sine of X. */
+extern long double asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc tangent of X. */
+extern long double atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Arc tangent of Y/X. */
+extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Cosine of X. */
+extern long double cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Sine of X. */
+extern long double sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Tangent of X. */
+extern long double tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Hyperbolic functions. */
+
+/* Hyperbolic cosine of X. */
+extern long double coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic sine of X. */
+extern long double sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic tangent of X. */
+extern long double tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+/* Hyperbolic arc cosine of X. */
+extern long double acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic arc sine of X. */
+extern long double asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Hyperbolic arc tangent of X. */
+extern long double atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Exponential and logarithmic functions. */
+
+
+/* Exponential function of X. */
+extern long double expl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __expl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Break VALUE into a normalized fraction and an integral power of 2. */
+extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* X times (two to the EXP power). */
+extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Natural logarithm of X. */
+extern long double logl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __logl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Base-ten logarithm of X. */
+extern long double log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Break VALUE into integral and fractional parts. */
+extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+
+
+
+
+
+/* Return exp(X) - 1. */
+extern long double expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return log(1 + X). */
+extern long double log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the base 2 signed integral exponent of X. */
+extern long double logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Compute base-2 exponential of X. */
+extern long double exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Compute base-2 logarithm of X. */
+extern long double log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Power functions. */
+
+
+/* Return X to the Y power. */
+extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return the square root of X. */
+extern long double sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Return `sqrt(X*X + Y*Y)'. */
+extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Return the cube root of X. */
+extern long double cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Nearest integer, absolute value, and remainder functions. */
+
+
+/* Smallest integral value not less than X. */
+extern long double ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Absolute value of X. */
+extern long double fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Largest integer not greater than X. */
+extern long double floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Floating-point modulo remainder of X/Y. */
+extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+extern int __isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+extern int __finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+extern int isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+extern int finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Return the remainder of X/Y. */
+extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the fractional part of X after dividing out `ilogb (X)'. */
+extern long double significandl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __significandl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use misc. */
+
+
+
+/* Return X with its signed changed to Y's. */
+extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+
+
+
+/* Return representation of NaN for double type. */
+extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+
+
+/* Return nonzero if VALUE is not a number. */
+extern int __isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+/* Return nonzero if VALUE is not a number. */
+extern int isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+/* Bessel functions. */
+extern long double j0l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __j0l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double j1l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __j1l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double jnl (int, long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __jnl (int, long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double y0l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __y0l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double y1l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __y1l (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double ynl (int, long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __ynl (int, long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Error and gamma functions. */
+extern long double erfl (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __erfl (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double erfcl (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __erfcl (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long double lgammal (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __lgammal (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* True gamma function. */
+extern long double tgammal (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __tgammal (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Obsolete alias for `lgamma'. */
+extern long double gammal (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __gammal (long double ) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Reentrant version of lgamma. This function uses the global variable
+ `signgam'. The reentrant version instead takes a pointer and stores
+ the value through it. */
+extern long double lgammal_r (long double , int *__signgamp) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __lgammal_r (long double , int *__signgamp) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Return the integer nearest X in the direction of the
+ prevailing rounding mode. */
+extern long double rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
+extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+
+/* Return the remainder of integer divison X / Y with infinite precision. */
+extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return X times (2 to the Nth power). */
+extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the binary exponent of X, which must be nonzero. */
+extern int ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern int __ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Return X times (2 to the Nth power). */
+extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to integral value in floating-point format using current
+ rounding direction, but do not raise inexact exception. */
+extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+extern long double roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Round X to the integral value in floating-point format nearest but
+ not larger in magnitude. */
+extern long double truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ); extern long double __truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ( (__const__) ) ;
+
+/* Compute remainder of X and Y and put in *QUO a value with sign of x/y
+ and magnitude congruent `mod 2^n' to the magnitude of the integral
+ quotient x/y, with n >= 3. */
+extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Conversion functions. */
+
+/* Round X to nearest integral value according to current rounding
+ direction. */
+extern long int lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long int __lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long long int llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Round X to nearest integral value, rounding halfway cases away from
+ zero. */
+extern long int lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long int __lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long long int llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return positive difference between X and Y. */
+extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return maximum numeric value from X and Y. */
+extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Return minimum numeric value from X and Y. */
+extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Classify given number. */
+extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__const__));
+
+/* Test for negative number. */
+extern int __signbitl (long double __value) __attribute__ ((__nothrow__ , __leaf__ ))
+ __attribute__ ((__const__));
+
+
+/* Multiply-add function computed as a ternary operation. */
+extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use ISO C99. */
+
+
+
+
+
+
+/* Return X times (2 to the Nth power). */
+extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ , __leaf__ )) ; extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+# 146 "/usr/include/math.h" 2 3
+
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+
+/* __STDC__ || __GNUC__ */
+
+/* Use misc or ISO C99. */
+#undef __MATHDECL_1
+#undef __MATHDECL
+#undef __MATHCALL
+
+
+
+/* This variable is used by `gamma' and `lgamma'. */
+extern int signgam;
+
+
+
+/* ISO C99 defines some generic macros which work on any data type. */
+
+
+/* Get the architecture specific values describing the floating-point
+ evaluation. The following symbols will get defined:
+
+ float_t floating-point type at least as wide as `float' used
+ to evaluate `float' expressions
+ double_t floating-point type at least as wide as `double' used
+ to evaluate `double' expressions
+
+ FLT_EVAL_METHOD
+ Defined to
+ 0 if `float_t' is `float' and `double_t' is `double'
+ 1 if `float_t' and `double_t' are `double'
+ 2 if `float_t' and `double_t' are `long double'
+ else `float_t' and `double_t' are unspecified
+
+ INFINITY representation of the infinity value of type `float'
+
+ FP_FAST_FMA
+ FP_FAST_FMAF
+ FP_FAST_FMAL
+ If defined it indicates that the `fma' function
+ generally executes about as fast as a multiply and an add.
+ This macro is defined only iff the `fma' function is
+ implemented directly with a hardware multiply-add instructions.
+
+ FP_ILOGB0 Expands to a value returned by `ilogb (0.0)'.
+ FP_ILOGBNAN Expands to a value returned by `ilogb (NAN)'.
+
+ DECIMAL_DIG Number of decimal digits supported by conversion between
+ decimal and all internal floating-point formats.
+
+*/
+
+/* All floating-point numbers can be put in one of these categories. */
+enum
+ {
+ FP_NAN,
+#define FP_NAN FP_NAN
+ FP_INFINITE,
+#define FP_INFINITE FP_INFINITE
+ FP_ZERO,
+#define FP_ZERO FP_ZERO
+ FP_SUBNORMAL,
+#define FP_SUBNORMAL FP_SUBNORMAL
+ FP_NORMAL
+#define FP_NORMAL FP_NORMAL
+ };
+
+/* Return number of classification appropriate for X. */
+
+
+
+
+#define fpclassify(x) \
+ (sizeof (x) == sizeof (float) \
+ ? __fpclassifyf (x) \
+ : sizeof (x) == sizeof (double) \
+ ? __fpclassify (x) : __fpclassifyl (x))
+
+
+/* Return nonzero value if sign of X is negative. */
+
+
+
+
+#define signbit(x) \
+ (sizeof (x) == sizeof (float) \
+ ? __signbitf (x) \
+ : sizeof (x) == sizeof (double) \
+ ? __signbit (x) : __signbitl (x))
+
+
+/* Return nonzero value if X is not +-Inf or NaN. */
+
+
+
+
+#define isfinite(x) \
+ (sizeof (x) == sizeof (float) \
+ ? __finitef (x) \
+ : sizeof (x) == sizeof (double) \
+ ? __finite (x) : __finitel (x))
+
+
+/* Return nonzero value if X is neither zero, subnormal, Inf, nor NaN. */
+#define isnormal(x) (fpclassify (x) == FP_NORMAL)
+
+/* Return nonzero value if X is a NaN. We could use `fpclassify' but
+ we already have this functions `__isnan' and it is faster. */
+
+
+
+
+#define isnan(x) \
+ (sizeof (x) == sizeof (float) \
+ ? __isnanf (x) \
+ : sizeof (x) == sizeof (double) \
+ ? __isnan (x) : __isnanl (x))
+
+
+/* Return nonzero value if X is positive or negative infinity. */
+
+
+
+
+#define isinf(x) \
+ (sizeof (x) == sizeof (float) \
+ ? __isinff (x) \
+ : sizeof (x) == sizeof (double) \
+ ? __isinf (x) : __isinfl (x))
+
+
+/* Bitmasks for the math_errhandling macro. */
+#define MATH_ERRNO 1 /* errno set by math functions. */
+#define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */
+
+/* By default all functions support both errno and exception handling.
+ In gcc's fast math mode and if inline functions are defined this
+ might not be true. */
+
+#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
+
+
+/* Use ISO C99. */
+
+
+/* Support for various different standard error handling behaviors. */
+typedef enum
+{
+ _IEEE_ = -1, /* According to IEEE 754/IEEE 854. */
+ _SVID_, /* According to System V, release 4. */
+ _XOPEN_, /* Nowadays also Unix98. */
+ _POSIX_,
+ _ISOC_ /* Actually this is ISO C99. */
+} _LIB_VERSION_TYPE;
+
+/* This variable can be changed at run-time to any of the values above to
+ affect floating point error handling behavior (it may also be necessary
+ to change the hardware FPU exception settings). */
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+
+
+
+
+/* In SVID error handling, `matherr' is called with this description
+ of the exceptional condition.
+
+ We have a problem when using C++ since `exception' is a reserved
+ name in C++. */
+
+
+
+struct exception
+
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+
+
+
+
+extern int matherr (struct exception *__exc);
+
+
+#define X_TLOSS 1.41484755040568800000e+16
+
+/* Types of exceptions in the `type' field. */
+#define DOMAIN 1
+#define SING 2
+#define OVERFLOW 3
+#define UNDERFLOW 4
+#define TLOSS 5
+#define PLOSS 6
+
+/* SVID mode specifies returning this large value instead of infinity. */
+#define HUGE 3.40282347e+38F
+
+/* !SVID *//* SVID */
+
+
+
+
+
+
+
+
+
+/* Some useful constants. */
+
+#define M_E 2.7182818284590452354 /* e */
+#define M_LOG2E 1.4426950408889634074 /* log_2 e */
+#define M_LOG10E 0.43429448190325182765 /* log_10 e */
+#define M_LN2 0.69314718055994530942 /* log_e 2 */
+#define M_LN10 2.30258509299404568402 /* log_e 10 */
+#define M_PI 3.14159265358979323846 /* pi */
+#define M_PI_2 1.57079632679489661923 /* pi/2 */
+#define M_PI_4 0.78539816339744830962 /* pi/4 */
+#define M_1_PI 0.31830988618379067154 /* 1/pi */
+#define M_2_PI 0.63661977236758134308 /* 2/pi */
+#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */
+#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
+#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
+
+
+/* The above constants are not adequate for computation using `long double's.
+ Therefore we provide as an extension constants with similar names as a
+ GNU extension. Provide enough digits for the 128-bit IEEE quad. */
+# 394 "/usr/include/math.h" 3
+
+
+
+/* When compiling in strict ISO C compatible mode we must not use the
+ inline functions since they, among other things, do not set the
+ `errno' variable correctly. */
+
+
+
+
+
+/* ISO C99 defines some macros to compare number while taking care for
+ unordered numbers. Many FPUs provide special instructions to support
+ these operations. Generic support in GCC for these as builtins went
+ in before 3.0.0, but not all cpus added their patterns. We define
+ versions that use the builtins here, and <bits/mathinline.h> will
+ undef/redefine as appropriate for the specific GCC version in use. */
+#define isgreater(x, y) __builtin_isgreater(x, y)
+#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+#define isless(x, y) __builtin_isless(x, y)
+#define islessequal(x, y) __builtin_islessequal(x, y)
+#define islessgreater(x, y) __builtin_islessgreater(x, y)
+#define isunordered(u, v) __builtin_isunordered(u, v)
+
+
+/* Get machine-dependent inline versions (if there are any). */
+
+
+
+
+/* Define special entry points to use when the compiler got told to
+ only expect finite results. */
+
+
+
+
+
+/* If we've still got undefined comparison macros, provide defaults. */
+
+/* Return nonzero value if X is greater than Y. */
+
+
+
+
+
+
+
+/* Return nonzero value if X is greater than or equal to Y. */
+
+
+
+
+
+
+
+/* Return nonzero value if X is less than Y. */
+
+
+
+
+
+
+
+/* Return nonzero value if X is less than or equal to Y. */
+
+
+
+
+
+
+
+/* Return nonzero value if either X is less than Y or Y is less than X. */
+
+
+
+
+
+
+
+/* Return nonzero value if arguments are unordered. */
+
+
+
+
+
+
+
+
+
+
+
+
+/* math.h */
+# 97 "include/forms.h" 2
+
+
+#include <X11/Xlib.h>
+# 1 "/usr/include/X11/Xlib.h" 1 3
+/*
+
+Copyright 1985, 1986, 1987, 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+
+/*
+ * Xlib.h - Header definition and support file for the C subroutine
+ * interface library (Xlib) to the X Window System Protocol (V11).
+ * Structures and symbols starting with "_" are private to the library.
+ */
+
+#define _X11_XLIB_H_
+
+#define XlibSpecificationRelease 6
+
+#include <sys/types.h>
+# 1 "/usr/include/x86_64-linux-gnu/sys/types.h" 1 3
+/* Copyright (C) 1991,1992,1994-2002,2006,2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
+ */
+
+
+#define _SYS_TYPES_H 1
+
+#include <features.h>
+
+
+
+#include <bits/types.h>
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+#define __u_char_defined
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+
+
+
+#define __ino_t_defined
+
+
+
+
+
+
+
+typedef __dev_t dev_t;
+#define __dev_t_defined
+
+
+
+typedef __gid_t gid_t;
+#define __gid_t_defined
+
+
+
+typedef __mode_t mode_t;
+#define __mode_t_defined
+
+
+
+typedef __nlink_t nlink_t;
+#define __nlink_t_defined
+
+
+
+typedef __uid_t uid_t;
+#define __uid_t_defined
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef __pid_t pid_t;
+#define __pid_t_defined
+
+
+
+
+typedef __id_t id_t;
+#define __id_t_defined
+
+
+
+
+
+
+
+
+
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+#define __daddr_t_defined
+
+
+
+
+typedef __key_t key_t;
+#define __key_t_defined
+
+
+
+#define __need_clock_t
+
+#define __need_time_t
+#define __need_timer_t
+#define __need_clockid_t
+#include <time.h>
+# 1 "/usr/include/time.h" 1 3
+/* Copyright (C) 1991-2003,2006,2009,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.23 Date and time <time.h>
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+/* <time.h> included. */
+# 51 "/usr/include/time.h" 3
+
+
+
+#define __clock_t_defined 1
+
+#include <bits/types.h>
+
+
+/* Returned by `clock'. */
+typedef __clock_t clock_t;
+
+
+
+
+
+/* clock_t not defined and <time.h> or need clock_t. */
+#undef __need_clock_t
+
+
+#define __time_t_defined 1
+
+#include <bits/types.h>
+
+
+/* Returned by `time'. */
+typedef __time_t time_t;
+
+
+
+
+
+/* time_t not defined and <time.h> or need time_t. */
+#undef __need_time_t
+
+
+
+#define __clockid_t_defined 1
+
+#include <bits/types.h>
+
+/* Clock ID used in clock and timer functions. */
+typedef __clockid_t clockid_t;
+
+/* clockid_t not defined and <time.h> or need clockid_t. */
+#undef __clockid_time_t
+
+
+
+#define __timer_t_defined 1
+
+#include <bits/types.h>
+
+/* Timer ID returned by `timer_create'. */
+typedef __timer_t timer_t;
+
+/* timer_t not defined and <time.h> or need timer_t. */
+#undef __need_timer_t
+
+
+/* timespec not defined and <time.h> or need timespec. */
+# 126 "/usr/include/time.h" 3
+
+#undef __need_timespec
+
+
+/* <time.h> included. */
+# 419 "/usr/include/time.h" 3
+
+
+/* <time.h> not already included. */
+# 133 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3
+
+
+# 144 "/usr/include/x86_64-linux-gnu/sys/types.h" 3
+
+
+#define __need_size_t
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_ptrdiff_t. */
+# 163 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+/* _STDDEF_H or __need_wchar_t. */
+# 344 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+/* NULL not defined and <stddef.h> or need NULL. */
+# 407 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_NULL
+
+/* _STDDEF_H was defined this time */
+
+
+
+
+
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 147 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3
+
+
+
+/* Old compatibility names for C types. */
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+
+
+/* These size-specific names are used by some of the inet code. */
+
+# 185 "/usr/include/x86_64-linux-gnu/sys/types.h" 3
+
+
+/* For GCC 2.7 and later, we can use specific type-size attributes. */
+#define __intN_t(N, MODE) \
+ typedef int int##N##_t __attribute__ ((__mode__ (MODE)))
+#define __u_intN_t(N, MODE) \
+ typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE)))
+
+
+#define __int8_t_defined
+typedef int int8_t __attribute__ ((__mode__ ( __QI__ ))) ;
+typedef int int16_t __attribute__ ((__mode__ ( __HI__ ))) ;
+typedef int int32_t __attribute__ ((__mode__ ( __SI__ ))) ;
+typedef int int64_t __attribute__ ((__mode__ ( __DI__ ))) ;
+
+
+typedef unsigned int u_int8_t __attribute__ ((__mode__ ( __QI__ ))) ;
+typedef unsigned int u_int16_t __attribute__ ((__mode__ ( __HI__ ))) ;
+typedef unsigned int u_int32_t __attribute__ ((__mode__ ( __SI__ ))) ;
+typedef unsigned int u_int64_t __attribute__ ((__mode__ ( __DI__ ))) ;
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+
+
+/* Some code from BIND tests this macro to see if the types above are
+ defined. */
+
+#define __BIT_TYPES_DEFINED__ 1
+
+
+
+/* In BSD <sys/types.h> is expected to define BYTE_ORDER. */
+#include <endian.h>
+
+/* It also defines `fd_set' and the FD_* macros for `select'. */
+#include <sys/select.h>
+# 1 "/usr/include/x86_64-linux-gnu/sys/select.h" 1 3
+/* `fd_set' type and related macros, and `select'/`pselect' declarations.
+ Copyright (C) 1996-2003, 2009, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */
+
+
+#define _SYS_SELECT_H 1
+
+#include <features.h>
+
+/* Get definition of needed basic types. */
+#include <bits/types.h>
+
+/* Get __FD_* definitions. */
+#include <bits/select.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/select.h" 1 3
+/* Copyright (C) 1997-1999,2001,2008,2009,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 23 "/usr/include/x86_64-linux-gnu/bits/select.h" 2 3
+
+
+
+
+
+
+#define __FD_ZERO_STOS "stosq"
+
+
+
+
+#define __FD_ZERO(fdsp) \
+ do { \
+ int __d0, __d1; \
+ __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
+ : "=c" (__d0), "=D" (__d1) \
+ : "a" (0), "0" (sizeof (fd_set) \
+ / sizeof (__fd_mask)), \
+ "1" (&__FDS_BITS (fdsp)[0]) \
+ : "memory"); \
+ } while (0)
+
+/* ! GNU CC *//* GNU CC */
+# 57 "/usr/include/x86_64-linux-gnu/bits/select.h" 3
+
+
+#define __FD_SET(d, set) \
+ ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
+#define __FD_CLR(d, set) \
+ ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
+#define __FD_ISSET(d, set) \
+ ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
+# 31 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3
+
+
+/* Get __sigset_t. */
+#include <bits/sigset.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 1 3
+/* __sig_atomic_t, __sigset_t, and related definitions. Linux version.
+ Copyright (C) 1991, 1992, 1994, 1996, 1997, 2007
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _SIGSET_H_types 1
+
+typedef int __sig_atomic_t;
+
+/* A `sigset_t' has a bit for each signal. */
+
+#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int))) ];
+ } __sigset_t;
+
+
+
+
+/* We only want to define these functions if <signal.h> was actually
+ included; otherwise we were included just to define the types. Since we
+ are namespace-clean, it wouldn't hurt to define extra macros. But
+ trouble can be caused by functions being defined (e.g., any global
+ register vars declared later will cause compilation errors). */
+
+/* ! _SIGSET_H_fns. */
+# 126 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3
+
+# 34 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3
+
+
+
+#define __sigset_t_defined
+typedef __sigset_t sigset_t;
+
+
+/* Get definition of timer specification structures. */
+#define __need_time_t
+#define __need_timespec
+#include <time.h>
+# 1 "/usr/include/time.h" 1 3
+/* Copyright (C) 1991-2003,2006,2009,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.23 Date and time <time.h>
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+/* <time.h> included. */
+# 51 "/usr/include/time.h" 3
+
+
+/* clock_t not defined and <time.h> or need clock_t. */
+# 66 "/usr/include/time.h" 3
+
+#undef __need_clock_t
+
+/* time_t not defined and <time.h> or need time_t. */
+# 82 "/usr/include/time.h" 3
+
+#undef __need_time_t
+
+/* clockid_t not defined and <time.h> or need clockid_t. */
+# 94 "/usr/include/time.h" 3
+
+#undef __clockid_time_t
+
+/* timer_t not defined and <time.h> or need timer_t. */
+# 106 "/usr/include/time.h" 3
+
+#undef __need_timer_t
+
+
+
+
+
+
+#define __timespec_defined 1
+
+#include <bits/types.h> /* This defines __time_t for us. */
+
+/* POSIX.1b structure for a time value. This is like a `struct timeval' but
+ has nanoseconds instead of microseconds. */
+struct timespec
+ {
+ __time_t tv_sec; /* Seconds. */
+ long int tv_nsec; /* Nanoseconds. */
+ };
+
+/* timespec not defined and <time.h> or need timespec. */
+#undef __need_timespec
+
+
+/* <time.h> included. */
+# 419 "/usr/include/time.h" 3
+
+
+/* <time.h> not already included. */
+# 44 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3
+
+#define __need_timeval
+#include <bits/time.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/time.h" 1 3
+/* System-dependent timing definitions. Linux version.
+ Copyright (C) 1996,1997,1999-2003,2010,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * Never include this file directly; use <time.h> instead.
+ */
+
+
+
+#define _STRUCT_TIMEVAL 1
+#include <bits/types.h>
+
+/* A time value that is accurate to the nearest
+ microsecond but also has a range of years. */
+struct timeval
+ {
+ __time_t tv_sec; /* Seconds. */
+ __suseconds_t tv_usec; /* Microseconds. */
+ };
+/* struct timeval */
+
+
+# 97 "/usr/include/x86_64-linux-gnu/bits/time.h" 3
+
+
+#undef __need_timeval
+# 46 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3
+
+
+
+typedef __suseconds_t suseconds_t;
+#define __suseconds_t_defined
+
+
+
+/* The fd_set member is required to be an array of longs. */
+typedef long int __fd_mask;
+
+/* Some versions of <linux/posix_types.h> define this macros. */
+#undef __NFDBITS
+/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
+#define __NFDBITS (8 * (int) sizeof (__fd_mask))
+#define __FD_ELT(d) ((d) / __NFDBITS)
+#define __FD_MASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
+
+/* fd_set for select and pselect. */
+typedef struct
+ {
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the global namespace. */
+
+
+
+
+ __fd_mask __fds_bits[1024 / (8 * (int) sizeof (__fd_mask)) ];
+#define __FDS_BITS(set) ((set)->__fds_bits)
+
+ } fd_set;
+
+/* Maximum number of file descriptors in `fd_set'. */
+#define FD_SETSIZE __FD_SETSIZE
+
+
+/* Sometimes the fd_set member is assumed to have this type. */
+typedef __fd_mask fd_mask;
+
+/* Number of bits per word of `fd_set' (some code assumes this is 32). */
+#define NFDBITS __NFDBITS
+
+
+
+/* Access macros for `fd_set'. */
+#define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)
+#define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp)
+#define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp)
+#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
+
+
+
+
+/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
+ readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
+ (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
+ after waiting the interval specified therein. Returns the number of ready
+ descriptors, or -1 for errors.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+
+
+/* Same as above only that the TIMEOUT value is given with higher
+ resolution and a sigmask which is been set temporarily. This version
+ should be used.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+
+
+
+/* Define some inlines helping to catch common problems. */
+
+
+
+
+
+
+/* sys/select.h */
+# 220 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3
+
+
+/* BSD defines these symbols, so we follow. */
+#include <sys/sysmacros.h>
+# 1 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 1 3
+/* Definitions of macros to access `dev_t' values.
+ Copyright (C) 1996, 1997, 1999, 2003, 2004, 2007, 2011
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _SYS_SYSMACROS_H 1
+
+#include <features.h>
+
+/* If the compiler does not know long long it is out of luck. We are
+ not going to hack weird hacks to support the dev_t representation
+ they need. */
+
+
+
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+
+# 63 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3
+
+
+
+/* Access the functions with their traditional names. */
+#define major(dev) gnu_dev_major (dev)
+#define minor(dev) gnu_dev_minor (dev)
+#define makedev(maj, min) gnu_dev_makedev (maj, min)
+
+
+/* sys/sysmacros.h */
+# 223 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3
+
+/* Use BSD. */
+
+
+
+
+typedef __blksize_t blksize_t;
+#define __blksize_t_defined
+
+
+/* Types from the Large File Support interface. */
+
+
+typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */
+#define __blkcnt_t_defined
+
+
+typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */
+#define __fsblkcnt_t_defined
+
+
+typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */
+#define __fsfilcnt_t_defined
+
+# 260 "/usr/include/x86_64-linux-gnu/sys/types.h" 3
+
+
+
+
+
+
+
+
+
+/* Now add the thread types. */
+
+#include <bits/pthreadtypes.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 1 3
+/* Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _BITS_PTHREADTYPES_H 1
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 23 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 2 3
+
+
+
+#define __SIZEOF_PTHREAD_ATTR_T 56
+#define __SIZEOF_PTHREAD_MUTEX_T 40
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_CONDATTR_T 4
+#define __SIZEOF_PTHREAD_RWLOCK_T 56
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+#define __SIZEOF_PTHREAD_BARRIER_T 32
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+# 45 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3
+
+
+
+/* Thread identifiers. The structure of the attribute type is not
+ exposed on purpose. */
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+ char __size[56 ];
+ long int __align;
+} pthread_attr_t;
+
+
+
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+
+
+
+
+
+
+
+
+/* Data structures for mutex handling. The structure of the attribute
+ type is not exposed on purpose. */
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+
+ unsigned int __nusers;
+
+ /* KIND must stay at this position in the structure to maintain
+ binary compatibility. */
+ int __kind;
+
+ int __spins;
+ __pthread_list_t __list;
+#define __PTHREAD_MUTEX_HAVE_PREV 1
+
+
+
+
+
+
+
+
+ } __data;
+ char __size[40 ];
+ long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+ char __size[4 ];
+ int __align;
+} pthread_mutexattr_t;
+
+
+/* Data structure for conditional variable handling. The structure of
+ the attribute type is not exposed on purpose. */
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48 ];
+ __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+ char __size[4 ];
+ int __align;
+} pthread_condattr_t;
+
+
+/* Keys for thread-specific data */
+typedef unsigned int pthread_key_t;
+
+
+/* Once-only execution */
+typedef int pthread_once_t;
+
+
+
+/* Data structure for read-write lock variable handling. The
+ structure of the attribute type is not exposed on purpose. */
+typedef union
+{
+
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ int __writer;
+ int __shared;
+ unsigned long int __pad1;
+ unsigned long int __pad2;
+ /* FLAGS must stay at this position in the structure to maintain
+ binary compatibility. */
+ unsigned int __flags;
+ } __data;
+# 186 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3
+
+ char __size[56 ];
+ long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+ char __size[8 ];
+ long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+/* POSIX spinlock data type. */
+typedef volatile int pthread_spinlock_t;
+
+
+/* POSIX barriers data type. The structure of the type is
+ deliberately not exposed. */
+typedef union
+{
+ char __size[32 ];
+ long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+ char __size[4 ];
+ int __align;
+} pthread_barrierattr_t;
+
+
+
+
+
+
+
+
+/* bits/pthreadtypes.h */
+# 271 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3
+
+
+
+
+
+/* sys/types.h */
+# 38 "/usr/include/X11/Xlib.h" 2 3
+
+
+
+
+
+
+#include <X11/X.h>
+# 1 "/usr/include/X11/X.h" 1 3
+/* Definitions for the X window system likely to be used by applications */
+
+
+#define X_H
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#define X_PROTOCOL 11 /* current protocol version */
+#define X_PROTOCOL_REVISION 0 /* current minor version */
+
+/* Resources */
+
+/*
+ * _XSERVER64 must ONLY be defined when compiling X server sources on
+ * systems where unsigned long is not 32 bits, must NOT be used in
+ * client or library code.
+ */
+
+
+#define _XTYPEDEF_XID
+typedef unsigned long XID;
+
+
+#define _XTYPEDEF_MASK
+typedef unsigned long Mask;
+
+
+#define _XTYPEDEF_ATOM
+typedef unsigned long Atom; /* Also in Xdefs.h */
+
+typedef unsigned long VisualID;
+typedef unsigned long Time;
+# 94 "/usr/include/X11/X.h" 3
+
+
+typedef XID Window;
+typedef XID Drawable;
+
+#define _XTYPEDEF_FONT
+typedef XID Font;
+
+typedef XID Pixmap;
+typedef XID Cursor;
+typedef XID Colormap;
+typedef XID GContext;
+typedef XID KeySym;
+
+typedef unsigned char KeyCode;
+
+/*****************************************************************
+ * RESERVED RESOURCE AND CONSTANT DEFINITIONS
+ *****************************************************************/
+
+
+#define None 0L /* universal null resource or null atom */
+
+
+#define ParentRelative 1L /* background pixmap in CreateWindow
+ and ChangeWindowAttributes */
+
+#define CopyFromParent 0L /* border pixmap in CreateWindow
+ and ChangeWindowAttributes
+ special VisualID and special window
+ class passed to CreateWindow */
+
+#define PointerWindow 0L /* destination window in SendEvent */
+#define InputFocus 1L /* destination window in SendEvent */
+
+#define PointerRoot 1L /* focus window in SetInputFocus */
+
+#define AnyPropertyType 0L /* special Atom, passed to GetProperty */
+
+#define AnyKey 0L /* special Key Code, passed to GrabKey */
+
+#define AnyButton 0L /* special Button Code, passed to GrabButton */
+
+#define AllTemporary 0L /* special Resource ID passed to KillClient */
+
+#define CurrentTime 0L /* special Time */
+
+#define NoSymbol 0L /* special KeySym */
+
+/*****************************************************************
+ * EVENT DEFINITIONS
+ *****************************************************************/
+
+/* Input Event Masks. Used as event-mask window attribute and as arguments
+ to Grab requests. Not to be confused with event names. */
+
+#define NoEventMask 0L
+#define KeyPressMask (1L<<0)
+#define KeyReleaseMask (1L<<1)
+#define ButtonPressMask (1L<<2)
+#define ButtonReleaseMask (1L<<3)
+#define EnterWindowMask (1L<<4)
+#define LeaveWindowMask (1L<<5)
+#define PointerMotionMask (1L<<6)
+#define PointerMotionHintMask (1L<<7)
+#define Button1MotionMask (1L<<8)
+#define Button2MotionMask (1L<<9)
+#define Button3MotionMask (1L<<10)
+#define Button4MotionMask (1L<<11)
+#define Button5MotionMask (1L<<12)
+#define ButtonMotionMask (1L<<13)
+#define KeymapStateMask (1L<<14)
+#define ExposureMask (1L<<15)
+#define VisibilityChangeMask (1L<<16)
+#define StructureNotifyMask (1L<<17)
+#define ResizeRedirectMask (1L<<18)
+#define SubstructureNotifyMask (1L<<19)
+#define SubstructureRedirectMask (1L<<20)
+#define FocusChangeMask (1L<<21)
+#define PropertyChangeMask (1L<<22)
+#define ColormapChangeMask (1L<<23)
+#define OwnerGrabButtonMask (1L<<24)
+
+/* Event names. Used in "type" field in XEvent structures. Not to be
+confused with event masks above. They start from 2 because 0 and 1
+are reserved in the protocol for errors and replies. */
+
+#define KeyPress 2
+#define KeyRelease 3
+#define ButtonPress 4
+#define ButtonRelease 5
+#define MotionNotify 6
+#define EnterNotify 7
+#define LeaveNotify 8
+#define FocusIn 9
+#define FocusOut 10
+#define KeymapNotify 11
+#define Expose 12
+#define GraphicsExpose 13
+#define NoExpose 14
+#define VisibilityNotify 15
+#define CreateNotify 16
+#define DestroyNotify 17
+#define UnmapNotify 18
+#define MapNotify 19
+#define MapRequest 20
+#define ReparentNotify 21
+#define ConfigureNotify 22
+#define ConfigureRequest 23
+#define GravityNotify 24
+#define ResizeRequest 25
+#define CirculateNotify 26
+#define CirculateRequest 27
+#define PropertyNotify 28
+#define SelectionClear 29
+#define SelectionRequest 30
+#define SelectionNotify 31
+#define ColormapNotify 32
+#define ClientMessage 33
+#define MappingNotify 34
+#define GenericEvent 35
+#define LASTEvent 36 /* must be bigger than any event # */
+
+
+/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
+ state in various key-, mouse-, and button-related events. */
+
+#define ShiftMask (1<<0)
+#define LockMask (1<<1)
+#define ControlMask (1<<2)
+#define Mod1Mask (1<<3)
+#define Mod2Mask (1<<4)
+#define Mod3Mask (1<<5)
+#define Mod4Mask (1<<6)
+#define Mod5Mask (1<<7)
+
+/* modifier names. Used to build a SetModifierMapping request or
+ to read a GetModifierMapping request. These correspond to the
+ masks defined above. */
+#define ShiftMapIndex 0
+#define LockMapIndex 1
+#define ControlMapIndex 2
+#define Mod1MapIndex 3
+#define Mod2MapIndex 4
+#define Mod3MapIndex 5
+#define Mod4MapIndex 6
+#define Mod5MapIndex 7
+
+
+/* button masks. Used in same manner as Key masks above. Not to be confused
+ with button names below. */
+
+#define Button1Mask (1<<8)
+#define Button2Mask (1<<9)
+#define Button3Mask (1<<10)
+#define Button4Mask (1<<11)
+#define Button5Mask (1<<12)
+
+#define AnyModifier (1<<15) /* used in GrabButton, GrabKey */
+
+
+/* button names. Used as arguments to GrabButton and as detail in ButtonPress
+ and ButtonRelease events. Not to be confused with button masks above.
+ Note that 0 is already defined above as "AnyButton". */
+
+#define Button1 1
+#define Button2 2
+#define Button3 3
+#define Button4 4
+#define Button5 5
+
+/* Notify modes */
+
+#define NotifyNormal 0
+#define NotifyGrab 1
+#define NotifyUngrab 2
+#define NotifyWhileGrabbed 3
+
+#define NotifyHint 1 /* for MotionNotify events */
+
+/* Notify detail */
+
+#define NotifyAncestor 0
+#define NotifyVirtual 1
+#define NotifyInferior 2
+#define NotifyNonlinear 3
+#define NotifyNonlinearVirtual 4
+#define NotifyPointer 5
+#define NotifyPointerRoot 6
+#define NotifyDetailNone 7
+
+/* Visibility notify */
+
+#define VisibilityUnobscured 0
+#define VisibilityPartiallyObscured 1
+#define VisibilityFullyObscured 2
+
+/* Circulation request */
+
+#define PlaceOnTop 0
+#define PlaceOnBottom 1
+
+/* protocol families */
+
+#define FamilyInternet 0 /* IPv4 */
+#define FamilyDECnet 1
+#define FamilyChaos 2
+#define FamilyInternet6 6 /* IPv6 */
+
+/* authentication families not tied to a specific protocol */
+#define FamilyServerInterpreted 5
+
+/* Property notification */
+
+#define PropertyNewValue 0
+#define PropertyDelete 1
+
+/* Color Map notification */
+
+#define ColormapUninstalled 0
+#define ColormapInstalled 1
+
+/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
+
+#define GrabModeSync 0
+#define GrabModeAsync 1
+
+/* GrabPointer, GrabKeyboard reply status */
+
+#define GrabSuccess 0
+#define AlreadyGrabbed 1
+#define GrabInvalidTime 2
+#define GrabNotViewable 3
+#define GrabFrozen 4
+
+/* AllowEvents modes */
+
+#define AsyncPointer 0
+#define SyncPointer 1
+#define ReplayPointer 2
+#define AsyncKeyboard 3
+#define SyncKeyboard 4
+#define ReplayKeyboard 5
+#define AsyncBoth 6
+#define SyncBoth 7
+
+/* Used in SetInputFocus, GetInputFocus */
+
+#define RevertToNone (int)None
+#define RevertToPointerRoot (int)PointerRoot
+#define RevertToParent 2
+
+/*****************************************************************
+ * ERROR CODES
+ *****************************************************************/
+
+#define Success 0 /* everything's okay */
+#define BadRequest 1 /* bad request code */
+#define BadValue 2 /* int parameter out of range */
+#define BadWindow 3 /* parameter not a Window */
+#define BadPixmap 4 /* parameter not a Pixmap */
+#define BadAtom 5 /* parameter not an Atom */
+#define BadCursor 6 /* parameter not a Cursor */
+#define BadFont 7 /* parameter not a Font */
+#define BadMatch 8 /* parameter mismatch */
+#define BadDrawable 9 /* parameter not a Pixmap or Window */
+#define BadAccess 10 /* depending on context:
+ - key/button already grabbed
+ - attempt to free an illegal
+ cmap entry
+ - attempt to store into a read-only
+ color map entry.
+ - attempt to modify the access control
+ list from other than the local host.
+ */
+#define BadAlloc 11 /* insufficient resources */
+#define BadColor 12 /* no such colormap */
+#define BadGC 13 /* parameter not a GC */
+#define BadIDChoice 14 /* choice not in range or already used */
+#define BadName 15 /* font or color name doesn't exist */
+#define BadLength 16 /* Request length incorrect */
+#define BadImplementation 17 /* server is defective */
+
+#define FirstExtensionError 128
+#define LastExtensionError 255
+
+/*****************************************************************
+ * WINDOW DEFINITIONS
+ *****************************************************************/
+
+/* Window classes used by CreateWindow */
+/* Note that CopyFromParent is already defined as 0 above */
+
+#define InputOutput 1
+#define InputOnly 2
+
+/* Window attributes for CreateWindow and ChangeWindowAttributes */
+
+#define CWBackPixmap (1L<<0)
+#define CWBackPixel (1L<<1)
+#define CWBorderPixmap (1L<<2)
+#define CWBorderPixel (1L<<3)
+#define CWBitGravity (1L<<4)
+#define CWWinGravity (1L<<5)
+#define CWBackingStore (1L<<6)
+#define CWBackingPlanes (1L<<7)
+#define CWBackingPixel (1L<<8)
+#define CWOverrideRedirect (1L<<9)
+#define CWSaveUnder (1L<<10)
+#define CWEventMask (1L<<11)
+#define CWDontPropagate (1L<<12)
+#define CWColormap (1L<<13)
+#define CWCursor (1L<<14)
+
+/* ConfigureWindow structure */
+
+#define CWX (1<<0)
+#define CWY (1<<1)
+#define CWWidth (1<<2)
+#define CWHeight (1<<3)
+#define CWBorderWidth (1<<4)
+#define CWSibling (1<<5)
+#define CWStackMode (1<<6)
+
+
+/* Bit Gravity */
+
+#define ForgetGravity 0
+#define NorthWestGravity 1
+#define NorthGravity 2
+#define NorthEastGravity 3
+#define WestGravity 4
+#define CenterGravity 5
+#define EastGravity 6
+#define SouthWestGravity 7
+#define SouthGravity 8
+#define SouthEastGravity 9
+#define StaticGravity 10
+
+/* Window gravity + bit gravity above */
+
+#define UnmapGravity 0
+
+/* Used in CreateWindow for backing-store hint */
+
+#define NotUseful 0
+#define WhenMapped 1
+#define Always 2
+
+/* Used in GetWindowAttributes reply */
+
+#define IsUnmapped 0
+#define IsUnviewable 1
+#define IsViewable 2
+
+/* Used in ChangeSaveSet */
+
+#define SetModeInsert 0
+#define SetModeDelete 1
+
+/* Used in ChangeCloseDownMode */
+
+#define DestroyAll 0
+#define RetainPermanent 1
+#define RetainTemporary 2
+
+/* Window stacking method (in configureWindow) */
+
+#define Above 0
+#define Below 1
+#define TopIf 2
+#define BottomIf 3
+#define Opposite 4
+
+/* Circulation direction */
+
+#define RaiseLowest 0
+#define LowerHighest 1
+
+/* Property modes */
+
+#define PropModeReplace 0
+#define PropModePrepend 1
+#define PropModeAppend 2
+
+/*****************************************************************
+ * GRAPHICS DEFINITIONS
+ *****************************************************************/
+
+/* graphics functions, as in GC.alu */
+
+#define GXclear 0x0 /* 0 */
+#define GXand 0x1 /* src AND dst */
+#define GXandReverse 0x2 /* src AND NOT dst */
+#define GXcopy 0x3 /* src */
+#define GXandInverted 0x4 /* NOT src AND dst */
+#define GXnoop 0x5 /* dst */
+#define GXxor 0x6 /* src XOR dst */
+#define GXor 0x7 /* src OR dst */
+#define GXnor 0x8 /* NOT src AND NOT dst */
+#define GXequiv 0x9 /* NOT src XOR dst */
+#define GXinvert 0xa /* NOT dst */
+#define GXorReverse 0xb /* src OR NOT dst */
+#define GXcopyInverted 0xc /* NOT src */
+#define GXorInverted 0xd /* NOT src OR dst */
+#define GXnand 0xe /* NOT src OR NOT dst */
+#define GXset 0xf /* 1 */
+
+/* LineStyle */
+
+#define LineSolid 0
+#define LineOnOffDash 1
+#define LineDoubleDash 2
+
+/* capStyle */
+
+#define CapNotLast 0
+#define CapButt 1
+#define CapRound 2
+#define CapProjecting 3
+
+/* joinStyle */
+
+#define JoinMiter 0
+#define JoinRound 1
+#define JoinBevel 2
+
+/* fillStyle */
+
+#define FillSolid 0
+#define FillTiled 1
+#define FillStippled 2
+#define FillOpaqueStippled 3
+
+/* fillRule */
+
+#define EvenOddRule 0
+#define WindingRule 1
+
+/* subwindow mode */
+
+#define ClipByChildren 0
+#define IncludeInferiors 1
+
+/* SetClipRectangles ordering */
+
+#define Unsorted 0
+#define YSorted 1
+#define YXSorted 2
+#define YXBanded 3
+
+/* CoordinateMode for drawing routines */
+
+#define CoordModeOrigin 0 /* relative to the origin */
+#define CoordModePrevious 1 /* relative to previous point */
+
+/* Polygon shapes */
+
+#define Complex 0 /* paths may intersect */
+#define Nonconvex 1 /* no paths intersect, but not convex */
+#define Convex 2 /* wholly convex */
+
+/* Arc modes for PolyFillArc */
+
+#define ArcChord 0 /* join endpoints of arc */
+#define ArcPieSlice 1 /* join endpoints to center of arc */
+
+/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
+ GC.stateChanges */
+
+#define GCFunction (1L<<0)
+#define GCPlaneMask (1L<<1)
+#define GCForeground (1L<<2)
+#define GCBackground (1L<<3)
+#define GCLineWidth (1L<<4)
+#define GCLineStyle (1L<<5)
+#define GCCapStyle (1L<<6)
+#define GCJoinStyle (1L<<7)
+#define GCFillStyle (1L<<8)
+#define GCFillRule (1L<<9)
+#define GCTile (1L<<10)
+#define GCStipple (1L<<11)
+#define GCTileStipXOrigin (1L<<12)
+#define GCTileStipYOrigin (1L<<13)
+#define GCFont (1L<<14)
+#define GCSubwindowMode (1L<<15)
+#define GCGraphicsExposures (1L<<16)
+#define GCClipXOrigin (1L<<17)
+#define GCClipYOrigin (1L<<18)
+#define GCClipMask (1L<<19)
+#define GCDashOffset (1L<<20)
+#define GCDashList (1L<<21)
+#define GCArcMode (1L<<22)
+
+#define GCLastBit 22
+/*****************************************************************
+ * FONTS
+ *****************************************************************/
+
+/* used in QueryFont -- draw direction */
+
+#define FontLeftToRight 0
+#define FontRightToLeft 1
+
+#define FontChange 255
+
+/*****************************************************************
+ * IMAGING
+ *****************************************************************/
+
+/* ImageFormat -- PutImage, GetImage */
+
+#define XYBitmap 0 /* depth 1, XYFormat */
+#define XYPixmap 1 /* depth == drawable depth */
+#define ZPixmap 2 /* depth == drawable depth */
+
+/*****************************************************************
+ * COLOR MAP STUFF
+ *****************************************************************/
+
+/* For CreateColormap */
+
+#define AllocNone 0 /* create map with no entries */
+#define AllocAll 1 /* allocate entire map writeable */
+
+
+/* Flags used in StoreNamedColor, StoreColors */
+
+#define DoRed (1<<0)
+#define DoGreen (1<<1)
+#define DoBlue (1<<2)
+
+/*****************************************************************
+ * CURSOR STUFF
+ *****************************************************************/
+
+/* QueryBestSize Class */
+
+#define CursorShape 0 /* largest size that can be displayed */
+#define TileShape 1 /* size tiled fastest */
+#define StippleShape 2 /* size stippled fastest */
+
+/*****************************************************************
+ * KEYBOARD/POINTER STUFF
+ *****************************************************************/
+
+#define AutoRepeatModeOff 0
+#define AutoRepeatModeOn 1
+#define AutoRepeatModeDefault 2
+
+#define LedModeOff 0
+#define LedModeOn 1
+
+/* masks for ChangeKeyboardControl */
+
+#define KBKeyClickPercent (1L<<0)
+#define KBBellPercent (1L<<1)
+#define KBBellPitch (1L<<2)
+#define KBBellDuration (1L<<3)
+#define KBLed (1L<<4)
+#define KBLedMode (1L<<5)
+#define KBKey (1L<<6)
+#define KBAutoRepeatMode (1L<<7)
+
+#define MappingSuccess 0
+#define MappingBusy 1
+#define MappingFailed 2
+
+#define MappingModifier 0
+#define MappingKeyboard 1
+#define MappingPointer 2
+
+/*****************************************************************
+ * SCREEN SAVER STUFF
+ *****************************************************************/
+
+#define DontPreferBlanking 0
+#define PreferBlanking 1
+#define DefaultBlanking 2
+
+#define DisableScreenSaver 0
+#define DisableScreenInterval 0
+
+#define DontAllowExposures 0
+#define AllowExposures 1
+#define DefaultExposures 2
+
+/* for ForceScreenSaver */
+
+#define ScreenSaverReset 0
+#define ScreenSaverActive 1
+
+/*****************************************************************
+ * HOSTS AND CONNECTIONS
+ *****************************************************************/
+
+/* for ChangeHosts */
+
+#define HostInsert 0
+#define HostDelete 1
+
+/* for ChangeAccessControl */
+
+#define EnableAccess 1
+#define DisableAccess 0
+
+/* Display classes used in opening the connection
+ * Note that the statically allocated ones are even numbered and the
+ * dynamically changeable ones are odd numbered */
+
+#define StaticGray 0
+#define GrayScale 1
+#define StaticColor 2
+#define PseudoColor 3
+#define TrueColor 4
+#define DirectColor 5
+
+
+/* Byte order used in imageByteOrder and bitmapBitOrder */
+
+#define LSBFirst 0
+#define MSBFirst 1
+
+/* X_H */
+# 44 "/usr/include/X11/Xlib.h" 2 3
+
+
+/* applications should not depend on these two headers being included! */
+#include <X11/Xfuncproto.h>
+# 1 "/usr/include/X11/Xfuncproto.h" 1 3
+/* Xfuncproto.h. Generated from Xfuncproto.h.in by configure. */
+/*
+ *
+Copyright 1989, 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ */
+
+/* Definitions to make function prototypes manageable */
+
+
+#define _XFUNCPROTO_H_
+
+
+#define NeedFunctionPrototypes 1
+/* NeedFunctionPrototypes */
+
+
+#define NeedVarargsPrototypes 1
+/* NeedVarargsPrototypes */
+
+
+
+
+#define NeedNestedPrototypes 1
+/* NeedNestedPrototypes */
+
+
+#define _Xconst const
+/* _Xconst */
+
+/* Function prototype configuration (see configure for more info) */
+
+#define NARROWPROTO /**/
+
+
+#define FUNCPROTO 15
+
+
+
+
+#define NeedWidePrototypes 0
+
+
+
+/* NeedWidePrototypes */
+
+/* NeedFunctionPrototypes */
+
+
+/* for C++ V2.0 */
+
+
+
+#define _XFUNCPROTOBEGIN
+#define _XFUNCPROTOEND
+
+/* _XFUNCPROTOBEGIN */
+
+/* Added in X11R6.9, so available in any version of modular xproto */
+
+#define _X_SENTINEL(x) __attribute__ ((__sentinel__(x)))
+/* GNUC >= 4 */
+
+
+
+/* Added in X11R6.9, so available in any version of modular xproto */
+
+#define _X_EXPORT __attribute__((visibility("default")))
+#define _X_HIDDEN __attribute__((visibility("hidden")))
+#define _X_INTERNAL __attribute__((visibility("internal")))
+/* not gcc >= 4 and not Sun Studio >= 8 *//* GNUC >= 4 */
+# 99 "/usr/include/X11/Xfuncproto.h" 3
+
+
+/* requires xproto >= 7.0.9 */
+
+#define _X_LIKELY(x) __builtin_expect(!!(x), 1)
+#define _X_UNLIKELY(x) __builtin_expect(!!(x), 0)
+/* not gcc >= 3.3 */
+
+
+
+
+/* Added in X11R6.9, so available in any version of modular xproto */
+
+#define _X_DEPRECATED __attribute__((deprecated))
+/* not gcc >= 3.1 */
+
+
+
+/* requires xproto >= 7.0.17 */
+
+
+#define _X_NORETURN __attribute((noreturn))
+/* GNUC */
+
+
+
+/* Added in X11R6.9, so available in any version of modular xproto */
+
+#define _X_ATTRIBUTE_PRINTF(x,y) __attribute__((__format__(__printf__,x,y)))
+/* not gcc >= 2.3 */
+
+
+
+/* requires xproto >= 7.0.22 */
+
+#define _X_NONNULL(args...) __attribute__((nonnull(args)))
+
+
+
+
+/* requires xproto >= 7.0.22 */
+
+#define _X_UNUSED __attribute__((__unused__))
+
+
+
+
+/* C99 keyword "inline" or equivalent extensions in pre-C99 compilers */
+/* requires xproto >= 7.0.9
+ (introduced in 7.0.8 but didn't support all compilers until 7.0.9) */
+/* assume autoconf set it correctly *//* C99 *//* gcc w/C89+extensions */
+
+
+
+
+#define _X_INLINE __inline__
+
+
+
+
+/* C99 keyword "restrict" or equivalent extensions in pre-C99 compilers */
+/* requires xproto >= 7.0.21 */
+
+/* assume autoconf set it correctly *//* C99 *//* gcc w/C89+extensions */
+
+
+
+#define _X_RESTRICT_KYWD __restrict__
+
+
+
+
+
+/* _XFUNCPROTO_H_ */
+# 47 "/usr/include/X11/Xlib.h" 2 3
+
+#include <X11/Xosdefs.h>
+# 1 "/usr/include/X11/Xosdefs.h" 1 3
+/*
+ * O/S-dependent (mis)feature macro definitions
+ *
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+
+#define _XOSDEFS_H_
+
+/*
+ * X_NOT_POSIX means does not have POSIX header files. Lack of this
+ * symbol does NOT mean that the POSIX environment is the default.
+ * You may still have to define _POSIX_SOURCE to get it.
+ */
+
+
+
+
+
+
+
+
+# 52 "/usr/include/X11/Xosdefs.h" 3
+
+
+# 65 "/usr/include/X11/Xosdefs.h" 3
+
+
+
+
+
+
+
+
+
+# 88 "/usr/include/X11/Xosdefs.h" 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* _XOSDEFS_H_ */
+
+# 48 "/usr/include/X11/Xlib.h" 2 3
+
+
+
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+
+
+
+#define _STDDEF_H
+#define _STDDEF_H_
+/* snaroff@next.com says the NeXT needs this. */
+#define _ANSI_STDDEF_H
+/* Irix 5.1 needs this. */
+#define __STDDEF_H__
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* in case <sys/types.h> has defined it. */
+
+
+
+
+
+
+
+#define _PTRDIFF_T
+#define _T_PTRDIFF_
+#define _T_PTRDIFF
+#define __PTRDIFF_T
+#define _PTRDIFF_T_
+#define _BSD_PTRDIFF_T_
+#define ___int_ptrdiff_t_h
+#define _GCC_PTRDIFF_T
+
+
+
+typedef long int ptrdiff_t;
+/* _GCC_PTRDIFF_T */
+/* ___int_ptrdiff_t_h */
+/* _BSD_PTRDIFF_T_ */
+/* _PTRDIFF_T_ */
+/* __PTRDIFF_T */
+/* _T_PTRDIFF */
+/* _T_PTRDIFF_ */
+/* _PTRDIFF_T */
+
+/* If this symbol has done its job, get rid of it. */
+#undef __need_ptrdiff_t
+
+/* _STDDEF_H or __need_ptrdiff_t. */
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS */
+/* Cray Unicos/Mk */
+
+
+
+
+
+
+/* Darwin */
+/* Darwin */
+/* FreeBSD 5 */
+
+
+
+
+
+
+#define __wchar_t__ /* BeOS */
+#define __WCHAR_T__ /* Cray Unicos/Mk */
+#define _WCHAR_T
+#define _T_WCHAR_
+#define _T_WCHAR
+#define __WCHAR_T
+#define _WCHAR_T_
+#define _BSD_WCHAR_T_
+#define _WCHAR_T_DEFINED_
+#define _WCHAR_T_DEFINED
+#define _WCHAR_T_H
+#define ___int_wchar_t_h
+#define __INT_WCHAR_T_H
+#define _GCC_WCHAR_T
+#define _WCHAR_T_DECLARED
+
+/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
+ instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
+ symbols in the _FOO_T_ family, stays defined even after its
+ corresponding type is defined). If we define wchar_t, then we
+ must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if
+ we undef _WCHAR_T_, then we must also define rune_t, since
+ headers like runetype.h assume that if machine/ansi.h is included,
+ and _BSD_WCHAR_T_ is not defined, then rune_t is available.
+ machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of
+ the same type." */
+
+#undef _BSD_WCHAR_T_
+# 304 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* FreeBSD 5 can't be handled well using "traditional" logic above
+ since it no longer defines _BSD_RUNE_T_ yet still desires to export
+ rune_t in some cases... */
+# 318 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+
+
+
+typedef int wchar_t;
+
+
+
+
+
+
+
+/* _WCHAR_T_DECLARED */
+/* _BSD_RUNE_T_DEFINED_ */
+
+
+
+
+
+
+
+/* __WCHAR_T__ */
+/* __wchar_t__ */
+#undef __need_wchar_t
+/* _STDDEF_H or __need_wchar_t. */
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+
+
+/* Offset of member MEMBER in a struct of type TYPE. */
+#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+
+/* _STDDEF_H was defined this time */
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 51 "/usr/include/X11/Xlib.h" 2 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+extern int
+_Xmblen(
+
+
+
+
+ char *str,
+ int len
+
+ );
+
+/* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
+ November 2000. Its presence is indicated through the following macro. */
+#define X_HAVE_UTF8_STRING 1
+
+typedef char *XPointer;
+
+#define Bool int
+#define Status int
+#define True 1
+#define False 0
+
+#define QueuedAlready 0
+#define QueuedAfterReading 1
+#define QueuedAfterFlush 2
+
+#define ConnectionNumber(dpy) (((_XPrivDisplay)dpy)->fd)
+#define RootWindow(dpy, scr) (ScreenOfDisplay(dpy,scr)->root)
+#define DefaultScreen(dpy) (((_XPrivDisplay)dpy)->default_screen)
+#define DefaultRootWindow(dpy) (ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
+#define DefaultVisual(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_visual)
+#define DefaultGC(dpy, scr) (ScreenOfDisplay(dpy,scr)->default_gc)
+#define BlackPixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->black_pixel)
+#define WhitePixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->white_pixel)
+#define AllPlanes ((unsigned long)~0L)
+#define QLength(dpy) (((_XPrivDisplay)dpy)->qlen)
+#define DisplayWidth(dpy, scr) (ScreenOfDisplay(dpy,scr)->width)
+#define DisplayHeight(dpy, scr) (ScreenOfDisplay(dpy,scr)->height)
+#define DisplayWidthMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mwidth)
+#define DisplayHeightMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mheight)
+#define DisplayPlanes(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth)
+#define DisplayCells(dpy, scr) (DefaultVisual(dpy,scr)->map_entries)
+#define ScreenCount(dpy) (((_XPrivDisplay)dpy)->nscreens)
+#define ServerVendor(dpy) (((_XPrivDisplay)dpy)->vendor)
+#define ProtocolVersion(dpy) (((_XPrivDisplay)dpy)->proto_major_version)
+#define ProtocolRevision(dpy) (((_XPrivDisplay)dpy)->proto_minor_version)
+#define VendorRelease(dpy) (((_XPrivDisplay)dpy)->release)
+#define DisplayString(dpy) (((_XPrivDisplay)dpy)->display_name)
+#define DefaultDepth(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth)
+#define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
+#define BitmapUnit(dpy) (((_XPrivDisplay)dpy)->bitmap_unit)
+#define BitmapBitOrder(dpy) (((_XPrivDisplay)dpy)->bitmap_bit_order)
+#define BitmapPad(dpy) (((_XPrivDisplay)dpy)->bitmap_pad)
+#define ImageByteOrder(dpy) (((_XPrivDisplay)dpy)->byte_order)
+/* unable to get WORD64 without pulling in other symbols */
+
+
+#define NextRequest(dpy) (((_XPrivDisplay)dpy)->request + 1)
+
+#define LastKnownRequestProcessed(dpy) (((_XPrivDisplay)dpy)->last_request_read)
+
+/* macros for screen oriented applications (toolkit) */
+#define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
+#define DefaultScreenOfDisplay(dpy) ScreenOfDisplay(dpy,DefaultScreen(dpy))
+#define DisplayOfScreen(s) ((s)->display)
+#define RootWindowOfScreen(s) ((s)->root)
+#define BlackPixelOfScreen(s) ((s)->black_pixel)
+#define WhitePixelOfScreen(s) ((s)->white_pixel)
+#define DefaultColormapOfScreen(s)((s)->cmap)
+#define DefaultDepthOfScreen(s) ((s)->root_depth)
+#define DefaultGCOfScreen(s) ((s)->default_gc)
+#define DefaultVisualOfScreen(s)((s)->root_visual)
+#define WidthOfScreen(s) ((s)->width)
+#define HeightOfScreen(s) ((s)->height)
+#define WidthMMOfScreen(s) ((s)->mwidth)
+#define HeightMMOfScreen(s) ((s)->mheight)
+#define PlanesOfScreen(s) ((s)->root_depth)
+#define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries)
+#define MinCmapsOfScreen(s) ((s)->min_maps)
+#define MaxCmapsOfScreen(s) ((s)->max_maps)
+#define DoesSaveUnders(s) ((s)->save_unders)
+#define DoesBackingStore(s) ((s)->backing_store)
+#define EventMaskOfScreen(s) ((s)->root_input_mask)
+
+/*
+ * Extensions need a way to hang private data on some structures.
+ */
+typedef struct _XExtData {
+ int number; /* number returned by XRegisterExtension */
+ struct _XExtData *next; /* next item on list of data for structure */
+ int (*free_private)( /* called to free private storage */
+ struct _XExtData *extension
+ );
+ XPointer private_data; /* data private to this extension. */
+} XExtData;
+
+/*
+ * This file contains structures used by the extension mechanism.
+ */
+typedef struct { /* public to extension, cannot be changed */
+ int extension; /* extension number */
+ int major_opcode; /* major op-code assigned by server */
+ int first_event; /* first event number for the extension */
+ int first_error; /* first error number for the extension */
+} XExtCodes;
+
+/*
+ * Data structure for retrieving info about pixmap formats.
+ */
+
+typedef struct {
+ int depth;
+ int bits_per_pixel;
+ int scanline_pad;
+} XPixmapFormatValues;
+
+
+/*
+ * Data structure for setting graphics context.
+ */
+typedef struct {
+ int function; /* logical operation */
+ unsigned long plane_mask;/* plane mask */
+ unsigned long foreground;/* foreground pixel */
+ unsigned long background;/* background pixel */
+ int line_width; /* line width */
+ int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
+ int cap_style; /* CapNotLast, CapButt,
+ CapRound, CapProjecting */
+ int join_style; /* JoinMiter, JoinRound, JoinBevel */
+ int fill_style; /* FillSolid, FillTiled,
+ FillStippled, FillOpaeueStippled */
+ int fill_rule; /* EvenOddRule, WindingRule */
+ int arc_mode; /* ArcChord, ArcPieSlice */
+ Pixmap tile; /* tile pixmap for tiling operations */
+ Pixmap stipple; /* stipple 1 plane pixmap for stipping */
+ int ts_x_origin; /* offset for tile or stipple operations */
+ int ts_y_origin;
+ Font font; /* default text font for text operations */
+ int subwindow_mode; /* ClipByChildren, IncludeInferiors */
+ int graphics_exposures;/* boolean, should exposures be generated */
+ int clip_x_origin; /* origin for clipping */
+ int clip_y_origin;
+ Pixmap clip_mask; /* bitmap clipping; other calls for rects */
+ int dash_offset; /* patterned/dashed line information */
+ char dashes;
+} XGCValues;
+
+/*
+ * Graphics context. The contents of this structure are implementation
+ * dependent. A GC should be treated as opaque by application code.
+ */
+
+typedef struct _XGC
+
+
+
+
+
+
+
+*GC;
+
+/*
+ * Visual structure; contains information about colormapping possible.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ VisualID visualid; /* visual id of this visual */
+
+
+
+ int class; /* class of screen (monochrome, etc.) */
+
+ unsigned long red_mask, green_mask, blue_mask; /* mask values */
+ int bits_per_rgb; /* log base 2 of distinct color values */
+ int map_entries; /* color map entries */
+} Visual;
+
+/*
+ * Depth structure; contains information for each possible depth.
+ */
+typedef struct {
+ int depth; /* this depth (Z) of the depth */
+ int nvisuals; /* number of Visual types at this depth */
+ Visual *visuals; /* list of visuals possible at this depth */
+} Depth;
+
+/*
+ * Information about the screen. The contents of this structure are
+ * implementation dependent. A Screen should be treated as opaque
+ * by application code.
+ */
+
+struct _XDisplay; /* Forward declare before use for C++ */
+
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ struct _XDisplay *display;/* back pointer to display structure */
+ Window root; /* Root window id. */
+ int width, height; /* width and height of screen */
+ int mwidth, mheight; /* width and height of in millimeters */
+ int ndepths; /* number of depths possible */
+ Depth *depths; /* list of allowable depths on the screen */
+ int root_depth; /* bits per pixel */
+ Visual *root_visual; /* root visual */
+ GC default_gc; /* GC for the root root visual */
+ Colormap cmap; /* default color map */
+ unsigned long white_pixel;
+ unsigned long black_pixel; /* White and Black pixel values */
+ int max_maps, min_maps; /* max and min color maps */
+ int backing_store; /* Never, WhenMapped, Always */
+ int save_unders;
+ long root_input_mask; /* initial root input mask */
+} Screen;
+
+/*
+ * Format structure; describes ZFormat data the screen will understand.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ int depth; /* depth of this image format */
+ int bits_per_pixel; /* bits/pixel at this depth */
+ int scanline_pad; /* scanline must padded to this multiple */
+} ScreenFormat;
+
+/*
+ * Data structure for setting window attributes.
+ */
+typedef struct {
+ Pixmap background_pixmap; /* background or None or ParentRelative */
+ unsigned long background_pixel; /* background pixel */
+ Pixmap border_pixmap; /* border of the window */
+ unsigned long border_pixel; /* border pixel value */
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes;/* planes to be preseved if possible */
+ unsigned long backing_pixel;/* value to use in restoring planes */
+ int save_under; /* should bits under be saved? (popups) */
+ long event_mask; /* set of events that should be saved */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ int override_redirect; /* boolean value for override-redirect */
+ Colormap colormap; /* color map to be associated with window */
+ Cursor cursor; /* cursor to be displayed (or None) */
+} XSetWindowAttributes;
+
+typedef struct {
+ int x, y; /* location of window */
+ int width, height; /* width and height of window */
+ int border_width; /* border width of window */
+ int depth; /* depth of window */
+ Visual *visual; /* the associated visual structure */
+ Window root; /* root of screen containing window */
+
+
+
+ int class; /* InputOutput, InputOnly*/
+
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes;/* planes to be preserved if possible */
+ unsigned long backing_pixel;/* value to be used when restoring planes */
+ int save_under; /* boolean, should bits under be saved? */
+ Colormap colormap; /* color map to be associated with window */
+ int map_installed; /* boolean, is color map currently installed*/
+ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
+ long all_event_masks; /* set of events all people have interest in*/
+ long your_event_mask; /* my event mask */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ int override_redirect; /* boolean value for override-redirect */
+ Screen *screen; /* back pointer to correct screen */
+} XWindowAttributes;
+
+/*
+ * Data structure for host setting; getting routines.
+ *
+ */
+
+typedef struct {
+ int family; /* for example FamilyInternet */
+ int length; /* length of address, in bytes */
+ char *address; /* pointer to where to find the bytes */
+} XHostAddress;
+
+/*
+ * Data structure for ServerFamilyInterpreted addresses in host routines
+ */
+typedef struct {
+ int typelength; /* length of type string, in bytes */
+ int valuelength; /* length of value string, in bytes */
+ char *type; /* pointer to where to find the type string */
+ char *value; /* pointer to where to find the address */
+} XServerInterpretedAddress;
+
+/*
+ * Data structure for "image" data, used by image manipulation routines.
+ */
+typedef struct _XImage {
+ int width, height; /* size of image */
+ int xoffset; /* number of pixels offset in X direction */
+ int format; /* XYBitmap, XYPixmap, ZPixmap */
+ char *data; /* pointer to image data */
+ int byte_order; /* data byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* quant. of scanline 8, 16, 32 */
+ int bitmap_bit_order; /* LSBFirst, MSBFirst */
+ int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */
+ int depth; /* depth of image */
+ int bytes_per_line; /* accelarator to next line */
+ int bits_per_pixel; /* bits per pixel (ZPixmap) */
+ unsigned long red_mask; /* bits in z arrangment */
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ XPointer obdata; /* hook for the object routines to hang on */
+ struct funcs { /* image manipulation routines */
+ struct _XImage *(*create_image)(
+ struct _XDisplay* /* display */,
+ Visual* /* visual */,
+ unsigned int /* depth */,
+ int /* format */,
+ int /* offset */,
+ char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* bitmap_pad */,
+ int /* bytes_per_line */);
+ int (*destroy_image) (struct _XImage *);
+ unsigned long (*get_pixel) (struct _XImage *, int, int);
+ int (*put_pixel) (struct _XImage *, int, int, unsigned long);
+ struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
+ int (*add_pixel) (struct _XImage *, long);
+ } f;
+} XImage;
+
+/*
+ * Data structure for XReconfigureWindow
+ */
+typedef struct {
+ int x, y;
+ int width, height;
+ int border_width;
+ Window sibling;
+ int stack_mode;
+} XWindowChanges;
+
+/*
+ * Data structure used by color operations
+ */
+typedef struct {
+ unsigned long pixel;
+ unsigned short red, green, blue;
+ char flags; /* do_red, do_green, do_blue */
+ char pad;
+} XColor;
+
+/*
+ * Data structures for graphics operations. On most machines, these are
+ * congruent with the wire protocol structures, so reformatting the data
+ * can be avoided on these architectures.
+ */
+typedef struct {
+ short x1, y1, x2, y2;
+} XSegment;
+
+typedef struct {
+ short x, y;
+} XPoint;
+
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+} XRectangle;
+
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+ short angle1, angle2;
+} XArc;
+
+
+/* Data structure for XChangeKeyboardControl */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ int bell_pitch;
+ int bell_duration;
+ int led;
+ int led_mode;
+ int key;
+ int auto_repeat_mode; /* On, Off, Default */
+} XKeyboardControl;
+
+/* Data structure for XGetKeyboardControl */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ unsigned int bell_pitch, bell_duration;
+ unsigned long led_mask;
+ int global_auto_repeat;
+ char auto_repeats[32];
+} XKeyboardState;
+
+/* Data structure for XGetMotionEvents. */
+
+typedef struct {
+ Time time;
+ short x, y;
+} XTimeCoord;
+
+/* Data structure for X{Set,Get}ModifierMapping */
+
+typedef struct {
+ int max_keypermod; /* The server's max # of keys per modifier */
+ KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */
+} XModifierKeymap;
+
+
+/*
+ * Display datatype maintaining display specific data.
+ * The contents of this structure are implementation dependent.
+ * A Display should be treated as opaque by application code.
+ */
+
+typedef struct _XDisplay Display;
+
+
+struct _XPrivate; /* Forward declare before use for C++ */
+struct _XrmHashBucketRec;
+
+typedef struct
+
+
+
+{
+ XExtData *ext_data; /* hook for extension to hang data */
+ struct _XPrivate *private1;
+ int fd; /* Network socket. */
+ int private2;
+ int proto_major_version;/* major version of server's X protocol */
+ int proto_minor_version;/* minor version of servers X protocol */
+ char *vendor; /* vendor of the server hardware */
+ XID private3;
+ XID private4;
+ XID private5;
+ int private6;
+ XID (*resource_alloc)( /* allocator function */
+ struct _XDisplay*
+ );
+ int byte_order; /* screen byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* padding and data requirements */
+ int bitmap_pad; /* padding requirements on bitmaps */
+ int bitmap_bit_order; /* LeastSignificant or MostSignificant */
+ int nformats; /* number of pixmap formats in list */
+ ScreenFormat *pixmap_format; /* pixmap format list */
+ int private8;
+ int release; /* release of the server */
+ struct _XPrivate *private9, *private10;
+ int qlen; /* Length of input event queue */
+ unsigned long last_request_read; /* seq number of last event read */
+ unsigned long request; /* sequence number of last request. */
+ XPointer private11;
+ XPointer private12;
+ XPointer private13;
+ XPointer private14;
+ unsigned max_request_size; /* maximum number 32 bit words in request*/
+ struct _XrmHashBucketRec *db;
+ int (*private15)(
+ struct _XDisplay*
+ );
+ char *display_name; /* "host:display" string used on this connect*/
+ int default_screen; /* default screen for operations */
+ int nscreens; /* number of screens on this server*/
+ Screen *screens; /* pointer to list of screens */
+ unsigned long motion_buffer; /* size of motion buffer */
+ unsigned long private16;
+ int min_keycode; /* minimum defined keycode */
+ int max_keycode; /* maximum defined keycode */
+ XPointer private17;
+ XPointer private18;
+ int private19;
+ char *xdefaults; /* contents of defaults from server */
+ /* there is more to this structure, but it is private to Xlib */
+}
+
+
+
+*_XPrivDisplay;
+
+#undef _XEVENT_
+
+/*
+ * Definitions of specific events.
+ */
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int keycode; /* detail */
+ int same_screen; /* same screen flag */
+} XKeyEvent;
+typedef XKeyEvent XKeyPressedEvent;
+typedef XKeyEvent XKeyReleasedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int button; /* detail */
+ int same_screen; /* same screen flag */
+} XButtonEvent;
+typedef XButtonEvent XButtonPressedEvent;
+typedef XButtonEvent XButtonReleasedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ char is_hint; /* detail */
+ int same_screen; /* same screen flag */
+} XMotionEvent;
+typedef XMotionEvent XPointerMovedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ Window root; /* root window that the event occurred on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual
+ */
+ int same_screen; /* same screen flag */
+ int focus; /* boolean focus */
+ unsigned int state; /* key or button mask */
+} XCrossingEvent;
+typedef XCrossingEvent XEnterWindowEvent;
+typedef XCrossingEvent XLeaveWindowEvent;
+
+typedef struct {
+ int type; /* FocusIn or FocusOut */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int mode; /* NotifyNormal, NotifyWhileGrabbed,
+ NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
+ * NotifyPointerRoot, NotifyDetailNone
+ */
+} XFocusChangeEvent;
+typedef XFocusChangeEvent XFocusInEvent;
+typedef XFocusChangeEvent XFocusOutEvent;
+
+/* generated on EnterWindow and FocusIn when KeyMapState selected */
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ char key_vector[32];
+} XKeymapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int x, y;
+ int width, height;
+ int count; /* if non-zero, at least this many more */
+} XExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int x, y;
+ int width, height;
+ int count; /* if non-zero, at least this many more */
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XGraphicsExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XNoExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int state; /* Visibility state */
+} XVisibilityEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent; /* parent of the window */
+ Window window; /* window id of window created */
+ int x, y; /* window location */
+ int width, height; /* size of window */
+ int border_width; /* border width */
+ int override_redirect; /* creation should be overridden */
+} XCreateWindowEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+} XDestroyWindowEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int from_configure;
+} XUnmapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int override_redirect; /* boolean, is override set... */
+} XMapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+} XMapRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Window parent;
+ int x, y;
+ int override_redirect;
+} XReparentEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ int override_redirect;
+} XConfigureEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+} XGravityEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int width, height;
+} XResizeRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ int detail; /* Above, Below, TopIf, BottomIf, Opposite */
+ unsigned long value_mask;
+} XConfigureRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom atom;
+ Time time;
+ int state; /* NewValue, Deleted */
+} XPropertyEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom selection;
+ Time time;
+} XSelectionClearEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window owner;
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property;
+ Time time;
+} XSelectionRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property; /* ATOM or None */
+ Time time;
+} XSelectionEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Colormap colormap; /* COLORMAP or None */
+
+
+
+ int new;
+
+ int state; /* ColormapInstalled, ColormapUninstalled */
+} XColormapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom message_type;
+ int format;
+ union {
+ char b[20];
+ short s[10];
+ long l[5];
+ } data;
+} XClientMessageEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* unused */
+ int request; /* one of MappingModifier, MappingKeyboard,
+ MappingPointer */
+ int first_keycode; /* first keycode */
+ int count; /* defines range of change w. first_keycode*/
+} XMappingEvent;
+
+typedef struct {
+ int type;
+ Display *display; /* Display the event was read from */
+ XID resourceid; /* resource id */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error code of failed request */
+ unsigned char request_code; /* Major op-code of failed request */
+ unsigned char minor_code; /* Minor op-code of failed request */
+} XErrorEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came from a SendEvent request */
+ Display *display;/* Display the event was read from */
+ Window window; /* window on which event was requested in event mask */
+} XAnyEvent;
+
+
+/***************************************************************
+ *
+ * GenericEvent. This event is the standard event for all newer extensions.
+ */
+
+typedef struct
+ {
+ int type; /* of event. Always GenericEvent */
+ unsigned long serial; /* # of last request processed */
+ int send_event; /* true if from SendEvent request */
+ Display *display; /* Display the event was read from */
+ int extension; /* major opcode of extension that caused the event */
+ int evtype; /* actual event type. */
+ } XGenericEvent;
+
+typedef struct {
+ int type; /* of event. Always GenericEvent */
+ unsigned long serial; /* # of last request processed */
+ int send_event; /* true if from SendEvent request */
+ Display *display; /* Display the event was read from */
+ int extension; /* major opcode of extension that caused the event */
+ int evtype; /* actual event type. */
+ unsigned int cookie;
+ void *data;
+} XGenericEventCookie;
+
+/*
+ * this union is defined so Xlib can always use the same sized
+ * event structure internally, to avoid memory fragmentation.
+ */
+typedef union _XEvent {
+ int type; /* must not be changed; first element */
+ XAnyEvent xany;
+ XKeyEvent xkey;
+ XButtonEvent xbutton;
+ XMotionEvent xmotion;
+ XCrossingEvent xcrossing;
+ XFocusChangeEvent xfocus;
+ XExposeEvent xexpose;
+ XGraphicsExposeEvent xgraphicsexpose;
+ XNoExposeEvent xnoexpose;
+ XVisibilityEvent xvisibility;
+ XCreateWindowEvent xcreatewindow;
+ XDestroyWindowEvent xdestroywindow;
+ XUnmapEvent xunmap;
+ XMapEvent xmap;
+ XMapRequestEvent xmaprequest;
+ XReparentEvent xreparent;
+ XConfigureEvent xconfigure;
+ XGravityEvent xgravity;
+ XResizeRequestEvent xresizerequest;
+ XConfigureRequestEvent xconfigurerequest;
+ XCirculateEvent xcirculate;
+ XCirculateRequestEvent xcirculaterequest;
+ XPropertyEvent xproperty;
+ XSelectionClearEvent xselectionclear;
+ XSelectionRequestEvent xselectionrequest;
+ XSelectionEvent xselection;
+ XColormapEvent xcolormap;
+ XClientMessageEvent xclient;
+ XMappingEvent xmapping;
+ XErrorEvent xerror;
+ XKeymapEvent xkeymap;
+ XGenericEvent xgeneric;
+ XGenericEventCookie xcookie;
+ long pad[24];
+} XEvent;
+
+
+#define XAllocID(dpy) ((*((_XPrivDisplay)dpy)->resource_alloc)((dpy)))
+
+/*
+ * per character font metric information.
+ */
+typedef struct {
+ short lbearing; /* origin to left edge of raster */
+ short rbearing; /* origin to right edge of raster */
+ short width; /* advance to next char's origin */
+ short ascent; /* baseline to top edge of raster */
+ short descent; /* baseline to bottom edge of raster */
+ unsigned short attributes; /* per char flags (not predefined) */
+} XCharStruct;
+
+/*
+ * To allow arbitrary information with fonts, there are additional properties
+ * returned.
+ */
+typedef struct {
+ Atom name;
+ unsigned long card32;
+} XFontProp;
+
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ Font fid; /* Font id for this font */
+ unsigned direction; /* hint about direction the font is painted */
+ unsigned min_char_or_byte2;/* first character */
+ unsigned max_char_or_byte2;/* last character */
+ unsigned min_byte1; /* first row that exists */
+ unsigned max_byte1; /* last row that exists */
+ int all_chars_exist;/* flag if all characters have non-zero size*/
+ unsigned default_char; /* char to print for undefined character */
+ int n_properties; /* how many properties there are */
+ XFontProp *properties; /* pointer to array of additional properties*/
+ XCharStruct min_bounds; /* minimum bounds over all existing char*/
+ XCharStruct max_bounds; /* maximum bounds over all existing char*/
+ XCharStruct *per_char; /* first_char to last_char information */
+ int ascent; /* log. extent above baseline for spacing */
+ int descent; /* log. descent below baseline for spacing */
+} XFontStruct;
+
+/*
+ * PolyText routines take these as arguments.
+ */
+typedef struct {
+ char *chars; /* pointer to string */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem;
+
+typedef struct { /* normal 16 bit characters are two bytes */
+ unsigned char byte1;
+ unsigned char byte2;
+} XChar2b;
+
+typedef struct {
+ XChar2b *chars; /* two byte characters */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem16;
+
+
+typedef union { Display *display;
+ GC gc;
+ Visual *visual;
+ Screen *screen;
+ ScreenFormat *pixmap_format;
+ XFontStruct *font; } XEDataObject;
+
+typedef struct {
+ XRectangle max_ink_extent;
+ XRectangle max_logical_extent;
+} XFontSetExtents;
+
+/* unused:
+typedef void (*XOMProc)();
+ */
+
+typedef struct _XOM *XOM;
+typedef struct _XOC *XOC, *XFontSet;
+
+typedef struct {
+ char *chars;
+ int nchars;
+ int delta;
+ XFontSet font_set;
+} XmbTextItem;
+
+typedef struct {
+ wchar_t *chars;
+ int nchars;
+ int delta;
+ XFontSet font_set;
+} XwcTextItem;
+
+#define XNRequiredCharSet "requiredCharSet"
+#define XNQueryOrientation "queryOrientation"
+#define XNBaseFontName "baseFontName"
+#define XNOMAutomatic "omAutomatic"
+#define XNMissingCharSet "missingCharSet"
+#define XNDefaultString "defaultString"
+#define XNOrientation "orientation"
+#define XNDirectionalDependentDrawing "directionalDependentDrawing"
+#define XNContextualDrawing "contextualDrawing"
+#define XNFontInfo "fontInfo"
+
+typedef struct {
+ int charset_count;
+ char **charset_list;
+} XOMCharSetList;
+
+typedef enum {
+ XOMOrientation_LTR_TTB,
+ XOMOrientation_RTL_TTB,
+ XOMOrientation_TTB_LTR,
+ XOMOrientation_TTB_RTL,
+ XOMOrientation_Context
+} XOrientation;
+
+typedef struct {
+ int num_orientation;
+ XOrientation *orientation; /* Input Text description */
+} XOMOrientation;
+
+typedef struct {
+ int num_font;
+ XFontStruct **font_struct_list;
+ char **font_name_list;
+} XOMFontInfo;
+
+typedef struct _XIM *XIM;
+typedef struct _XIC *XIC;
+
+typedef void (*XIMProc)(
+ XIM,
+ XPointer,
+ XPointer
+);
+
+typedef int (*XICProc)(
+ XIC,
+ XPointer,
+ XPointer
+);
+
+typedef void (*XIDProc)(
+ Display*,
+ XPointer,
+ XPointer
+);
+
+typedef unsigned long XIMStyle;
+
+typedef struct {
+ unsigned short count_styles;
+ XIMStyle *supported_styles;
+} XIMStyles;
+
+#define XIMPreeditArea 0x0001L
+#define XIMPreeditCallbacks 0x0002L
+#define XIMPreeditPosition 0x0004L
+#define XIMPreeditNothing 0x0008L
+#define XIMPreeditNone 0x0010L
+#define XIMStatusArea 0x0100L
+#define XIMStatusCallbacks 0x0200L
+#define XIMStatusNothing 0x0400L
+#define XIMStatusNone 0x0800L
+
+#define XNVaNestedList "XNVaNestedList"
+#define XNQueryInputStyle "queryInputStyle"
+#define XNClientWindow "clientWindow"
+#define XNInputStyle "inputStyle"
+#define XNFocusWindow "focusWindow"
+#define XNResourceName "resourceName"
+#define XNResourceClass "resourcegeometryCallback"
+#define XNDestroyCallback "destroyCallback"
+#define XNFilterEvents "filterEvents"
+#define XNPreeditStartCallback "preeditStartCallback"
+#define XNPreeditDoneCallback "preeditDoneCallback"
+#define XNPreeditDrawCallback "preeditDrawCallback"
+#define XNPreeditCaretCallback "preeditCaretCallback"
+#define XNPreeditStateNotifyCallback "preeditStateNotifyCallback"
+#define XNPreeditAttributes "preeditAttributes"
+#define XNStatusStartCallback "statusStartCallback"
+#define XNStatusDoneCallback "statusDoneCallback"
+#define XNStatusDrawCallback "statusDrawCallback"
+#define XNStatusAttributes "statusAttributes"
+#define XNArea "area"
+#define XNAreaNeeded "areaNeeded"
+#define XNSpotLocation "spotLocation"
+#define XNColormap "colorMap"
+#define XNStdColormap "stdColorMap"
+#define XNForeground "foreground"
+#define XNBackground "background"
+#define XNBackgroundPixmap "backgroundPixmap"
+#define XNFontSet "fontSet"
+#define XNLineSpace "lineSpace"
+#define XNCursor "cursor"
+
+#define XNQueryIMValuesList "queryIMValuesList"
+#define XNQueryICValuesList "queryICValuesList"
+#define XNVisiblePosition "visiblePosition"
+#define XNR6PreeditCallback "r6PreeditCallback"
+#define XNStringConversionCallback "stringConversionCallback"
+#define XNStringConversion "stringConversion"
+#define XNResetState "resetState"
+#define XNHotKey "hotKey"
+#define XNHotKeyState "hotKeyState"
+#define XNPreeditState "preeditState"
+#define XNSeparatorofNestedList "separatorofNestedList"
+
+#define XBufferOverflow -1
+#define XLookupNone 1
+#define XLookupChars 2
+#define XLookupKeySym 3
+#define XLookupBoth 4
+
+typedef void *XVaNestedList;
+
+typedef struct {
+ XPointer client_data;
+ XIMProc callback;
+} XIMCallback;
+
+typedef struct {
+ XPointer client_data;
+ XICProc callback;
+} XICCallback;
+
+typedef unsigned long XIMFeedback;
+
+#define XIMReverse 1L
+#define XIMUnderline (1L<<1)
+#define XIMHighlight (1L<<2)
+#define XIMPrimary (1L<<5)
+#define XIMSecondary (1L<<6)
+#define XIMTertiary (1L<<7)
+#define XIMVisibleToForward (1L<<8)
+#define XIMVisibleToBackword (1L<<9)
+#define XIMVisibleToCenter (1L<<10)
+
+typedef struct _XIMText {
+ unsigned short length;
+ XIMFeedback *feedback;
+ int encoding_is_wchar;
+ union {
+ char *multi_byte;
+ wchar_t *wide_char;
+ } string;
+} XIMText;
+
+typedef unsigned long XIMPreeditState;
+
+#define XIMPreeditUnKnown 0L
+#define XIMPreeditEnable 1L
+#define XIMPreeditDisable (1L<<1)
+
+typedef struct _XIMPreeditStateNotifyCallbackStruct {
+ XIMPreeditState state;
+} XIMPreeditStateNotifyCallbackStruct;
+
+typedef unsigned long XIMResetState;
+
+#define XIMInitialState 1L
+#define XIMPreserveState (1L<<1)
+
+typedef unsigned long XIMStringConversionFeedback;
+
+#define XIMStringConversionLeftEdge (0x00000001)
+#define XIMStringConversionRightEdge (0x00000002)
+#define XIMStringConversionTopEdge (0x00000004)
+#define XIMStringConversionBottomEdge (0x00000008)
+#define XIMStringConversionConcealed (0x00000010)
+#define XIMStringConversionWrapped (0x00000020)
+
+typedef struct _XIMStringConversionText {
+ unsigned short length;
+ XIMStringConversionFeedback *feedback;
+ int encoding_is_wchar;
+ union {
+ char *mbs;
+ wchar_t *wcs;
+ } string;
+} XIMStringConversionText;
+
+typedef unsigned short XIMStringConversionPosition;
+
+typedef unsigned short XIMStringConversionType;
+
+#define XIMStringConversionBuffer (0x0001)
+#define XIMStringConversionLine (0x0002)
+#define XIMStringConversionWord (0x0003)
+#define XIMStringConversionChar (0x0004)
+
+typedef unsigned short XIMStringConversionOperation;
+
+#define XIMStringConversionSubstitution (0x0001)
+#define XIMStringConversionRetrieval (0x0002)
+
+typedef enum {
+ XIMForwardChar, XIMBackwardChar,
+ XIMForwardWord, XIMBackwardWord,
+ XIMCaretUp, XIMCaretDown,
+ XIMNextLine, XIMPreviousLine,
+ XIMLineStart, XIMLineEnd,
+ XIMAbsolutePosition,
+ XIMDontChange
+} XIMCaretDirection;
+
+typedef struct _XIMStringConversionCallbackStruct {
+ XIMStringConversionPosition position;
+ XIMCaretDirection direction;
+ XIMStringConversionOperation operation;
+ unsigned short factor;
+ XIMStringConversionText *text;
+} XIMStringConversionCallbackStruct;
+
+typedef struct _XIMPreeditDrawCallbackStruct {
+ int caret; /* Cursor offset within pre-edit string */
+ int chg_first; /* Starting change position */
+ int chg_length; /* Length of the change in character count */
+ XIMText *text;
+} XIMPreeditDrawCallbackStruct;
+
+typedef enum {
+ XIMIsInvisible, /* Disable caret feedback */
+ XIMIsPrimary, /* UI defined caret feedback */
+ XIMIsSecondary /* UI defined caret feedback */
+} XIMCaretStyle;
+
+typedef struct _XIMPreeditCaretCallbackStruct {
+ int position; /* Caret offset within pre-edit string */
+ XIMCaretDirection direction; /* Caret moves direction */
+ XIMCaretStyle style; /* Feedback of the caret */
+} XIMPreeditCaretCallbackStruct;
+
+typedef enum {
+ XIMTextType,
+ XIMBitmapType
+} XIMStatusDataType;
+
+typedef struct _XIMStatusDrawCallbackStruct {
+ XIMStatusDataType type;
+ union {
+ XIMText *text;
+ Pixmap bitmap;
+ } data;
+} XIMStatusDrawCallbackStruct;
+
+typedef struct _XIMHotKeyTrigger {
+ KeySym keysym;
+ int modifier;
+ int modifier_mask;
+} XIMHotKeyTrigger;
+
+typedef struct _XIMHotKeyTriggers {
+ int num_hot_key;
+ XIMHotKeyTrigger *key;
+} XIMHotKeyTriggers;
+
+typedef unsigned long XIMHotKeyState;
+
+#define XIMHotKeyStateON (0x0001L)
+#define XIMHotKeyStateOFF (0x0002L)
+
+typedef struct {
+ unsigned short count_values;
+ char **supported_values;
+} XIMValuesList;
+
+
+
+
+
+
+
+extern int _Xdebug;
+
+extern XFontStruct *XLoadQueryFont(
+ Display* /* display */,
+ const char* /* name */
+);
+
+extern XFontStruct *XQueryFont(
+ Display* /* display */,
+ XID /* font_ID */
+);
+
+
+extern XTimeCoord *XGetMotionEvents(
+ Display* /* display */,
+ Window /* w */,
+ Time /* start */,
+ Time /* stop */,
+ int* /* nevents_return */
+);
+
+extern XModifierKeymap *XDeleteModifiermapEntry(
+ XModifierKeymap* /* modmap */,
+
+
+
+ KeyCode /* keycode_entry */,
+
+ int /* modifier */
+);
+
+extern XModifierKeymap *XGetModifierMapping(
+ Display* /* display */
+);
+
+extern XModifierKeymap *XInsertModifiermapEntry(
+ XModifierKeymap* /* modmap */,
+
+
+
+ KeyCode /* keycode_entry */,
+
+ int /* modifier */
+);
+
+extern XModifierKeymap *XNewModifiermap(
+ int /* max_keys_per_mod */
+);
+
+extern XImage *XCreateImage(
+ Display* /* display */,
+ Visual* /* visual */,
+ unsigned int /* depth */,
+ int /* format */,
+ int /* offset */,
+ char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* bitmap_pad */,
+ int /* bytes_per_line */
+);
+extern int XInitImage(
+ XImage* /* image */
+);
+extern XImage *XGetImage(
+ Display* /* display */,
+ Drawable /* d */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned long /* plane_mask */,
+ int /* format */
+);
+extern XImage *XGetSubImage(
+ Display* /* display */,
+ Drawable /* d */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned long /* plane_mask */,
+ int /* format */,
+ XImage* /* dest_image */,
+ int /* dest_x */,
+ int /* dest_y */
+);
+
+/*
+ * X function declarations.
+ */
+extern Display *XOpenDisplay(
+ const char* /* display_name */
+);
+
+extern void XrmInitialize(
+ void
+);
+
+extern char *XFetchBytes(
+ Display* /* display */,
+ int* /* nbytes_return */
+);
+extern char *XFetchBuffer(
+ Display* /* display */,
+ int* /* nbytes_return */,
+ int /* buffer */
+);
+extern char *XGetAtomName(
+ Display* /* display */,
+ Atom /* atom */
+);
+extern int XGetAtomNames(
+ Display* /* dpy */,
+ Atom* /* atoms */,
+ int /* count */,
+ char** /* names_return */
+);
+extern char *XGetDefault(
+ Display* /* display */,
+ const char* /* program */,
+ const char* /* option */
+);
+extern char *XDisplayName(
+ const char* /* string */
+);
+extern char *XKeysymToString(
+ KeySym /* keysym */
+);
+
+extern int (*XSynchronize(
+ Display* /* display */,
+ int /* onoff */
+))(
+ Display* /* display */
+);
+extern int (*XSetAfterFunction(
+ Display* /* display */,
+ int (*) (
+ Display* /* display */
+ ) /* procedure */
+))(
+ Display* /* display */
+);
+extern Atom XInternAtom(
+ Display* /* display */,
+ const char* /* atom_name */,
+ int /* only_if_exists */
+);
+extern int XInternAtoms(
+ Display* /* dpy */,
+ char** /* names */,
+ int /* count */,
+ int /* onlyIfExists */,
+ Atom* /* atoms_return */
+);
+extern Colormap XCopyColormapAndFree(
+ Display* /* display */,
+ Colormap /* colormap */
+);
+extern Colormap XCreateColormap(
+ Display* /* display */,
+ Window /* w */,
+ Visual* /* visual */,
+ int /* alloc */
+);
+extern Cursor XCreatePixmapCursor(
+ Display* /* display */,
+ Pixmap /* source */,
+ Pixmap /* mask */,
+ XColor* /* foreground_color */,
+ XColor* /* background_color */,
+ unsigned int /* x */,
+ unsigned int /* y */
+);
+extern Cursor XCreateGlyphCursor(
+ Display* /* display */,
+ Font /* source_font */,
+ Font /* mask_font */,
+ unsigned int /* source_char */,
+ unsigned int /* mask_char */,
+ XColor const * /* foreground_color */,
+ XColor const * /* background_color */
+);
+extern Cursor XCreateFontCursor(
+ Display* /* display */,
+ unsigned int /* shape */
+);
+extern Font XLoadFont(
+ Display* /* display */,
+ const char* /* name */
+);
+extern GC XCreateGC(
+ Display* /* display */,
+ Drawable /* d */,
+ unsigned long /* valuemask */,
+ XGCValues* /* values */
+);
+extern GContext XGContextFromGC(
+ GC /* gc */
+);
+extern void XFlushGC(
+ Display* /* display */,
+ GC /* gc */
+);
+extern Pixmap XCreatePixmap(
+ Display* /* display */,
+ Drawable /* d */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* depth */
+);
+extern Pixmap XCreateBitmapFromData(
+ Display* /* display */,
+ Drawable /* d */,
+ const char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+extern Pixmap XCreatePixmapFromBitmapData(
+ Display* /* display */,
+ Drawable /* d */,
+ char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned long /* fg */,
+ unsigned long /* bg */,
+ unsigned int /* depth */
+);
+extern Window XCreateSimpleWindow(
+ Display* /* display */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* border_width */,
+ unsigned long /* border */,
+ unsigned long /* background */
+);
+extern Window XGetSelectionOwner(
+ Display* /* display */,
+ Atom /* selection */
+);
+extern Window XCreateWindow(
+ Display* /* display */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* border_width */,
+ int /* depth */,
+ unsigned int /* class */,
+ Visual* /* visual */,
+ unsigned long /* valuemask */,
+ XSetWindowAttributes* /* attributes */
+);
+extern Colormap *XListInstalledColormaps(
+ Display* /* display */,
+ Window /* w */,
+ int* /* num_return */
+);
+extern char **XListFonts(
+ Display* /* display */,
+ const char* /* pattern */,
+ int /* maxnames */,
+ int* /* actual_count_return */
+);
+extern char **XListFontsWithInfo(
+ Display* /* display */,
+ const char* /* pattern */,
+ int /* maxnames */,
+ int* /* count_return */,
+ XFontStruct** /* info_return */
+);
+extern char **XGetFontPath(
+ Display* /* display */,
+ int* /* npaths_return */
+);
+extern char **XListExtensions(
+ Display* /* display */,
+ int* /* nextensions_return */
+);
+extern Atom *XListProperties(
+ Display* /* display */,
+ Window /* w */,
+ int* /* num_prop_return */
+);
+extern XHostAddress *XListHosts(
+ Display* /* display */,
+ int* /* nhosts_return */,
+ int * /* state_return */
+);
+__attribute__((deprecated))
+extern KeySym XKeycodeToKeysym(
+ Display* /* display */,
+
+
+
+ KeyCode /* keycode */,
+
+ int /* index */
+);
+extern KeySym XLookupKeysym(
+ XKeyEvent* /* key_event */,
+ int /* index */
+);
+extern KeySym *XGetKeyboardMapping(
+ Display* /* display */,
+
+
+
+ KeyCode /* first_keycode */,
+
+ int /* keycode_count */,
+ int* /* keysyms_per_keycode_return */
+);
+extern KeySym XStringToKeysym(
+ const char* /* string */
+);
+extern long XMaxRequestSize(
+ Display* /* display */
+);
+extern long XExtendedMaxRequestSize(
+ Display* /* display */
+);
+extern char *XResourceManagerString(
+ Display* /* display */
+);
+extern char *XScreenResourceString(
+ Screen* /* screen */
+);
+extern unsigned long XDisplayMotionBufferSize(
+ Display* /* display */
+);
+extern VisualID XVisualIDFromVisual(
+ Visual* /* visual */
+);
+
+/* multithread routines */
+
+extern int XInitThreads(
+ void
+);
+
+extern void XLockDisplay(
+ Display* /* display */
+);
+
+extern void XUnlockDisplay(
+ Display* /* display */
+);
+
+/* routines for dealing with extensions */
+
+extern XExtCodes *XInitExtension(
+ Display* /* display */,
+ const char* /* name */
+);
+
+extern XExtCodes *XAddExtension(
+ Display* /* display */
+);
+extern XExtData *XFindOnExtensionList(
+ XExtData** /* structure */,
+ int /* number */
+);
+extern XExtData **XEHeadOfExtensionList(
+ XEDataObject /* object */
+);
+
+/* these are routines for which there are also macros */
+extern Window XRootWindow(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern Window XDefaultRootWindow(
+ Display* /* display */
+);
+extern Window XRootWindowOfScreen(
+ Screen* /* screen */
+);
+extern Visual *XDefaultVisual(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern Visual *XDefaultVisualOfScreen(
+ Screen* /* screen */
+);
+extern GC XDefaultGC(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern GC XDefaultGCOfScreen(
+ Screen* /* screen */
+);
+extern unsigned long XBlackPixel(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern unsigned long XWhitePixel(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern unsigned long XAllPlanes(
+ void
+);
+extern unsigned long XBlackPixelOfScreen(
+ Screen* /* screen */
+);
+extern unsigned long XWhitePixelOfScreen(
+ Screen* /* screen */
+);
+extern unsigned long XNextRequest(
+ Display* /* display */
+);
+extern unsigned long XLastKnownRequestProcessed(
+ Display* /* display */
+);
+extern char *XServerVendor(
+ Display* /* display */
+);
+extern char *XDisplayString(
+ Display* /* display */
+);
+extern Colormap XDefaultColormap(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern Colormap XDefaultColormapOfScreen(
+ Screen* /* screen */
+);
+extern Display *XDisplayOfScreen(
+ Screen* /* screen */
+);
+extern Screen *XScreenOfDisplay(
+ Display* /* display */,
+ int /* screen_number */
+);
+extern Screen *XDefaultScreenOfDisplay(
+ Display* /* display */
+);
+extern long XEventMaskOfScreen(
+ Screen* /* screen */
+);
+
+extern int XScreenNumberOfScreen(
+ Screen* /* screen */
+);
+
+typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
+ Display* /* display */,
+ XErrorEvent* /* error_event */
+);
+
+extern XErrorHandler XSetErrorHandler (
+ XErrorHandler /* handler */
+);
+
+
+typedef int (*XIOErrorHandler) ( /* WARNING, this type not in Xlib spec */
+ Display* /* display */
+);
+
+extern XIOErrorHandler XSetIOErrorHandler (
+ XIOErrorHandler /* handler */
+);
+
+
+extern XPixmapFormatValues *XListPixmapFormats(
+ Display* /* display */,
+ int* /* count_return */
+);
+extern int *XListDepths(
+ Display* /* display */,
+ int /* screen_number */,
+ int* /* count_return */
+);
+
+/* ICCCM routines for things that don't require special include files; */
+/* other declarations are given in Xutil.h */
+extern int XReconfigureWMWindow(
+ Display* /* display */,
+ Window /* w */,
+ int /* screen_number */,
+ unsigned int /* mask */,
+ XWindowChanges* /* changes */
+);
+
+extern int XGetWMProtocols(
+ Display* /* display */,
+ Window /* w */,
+ Atom** /* protocols_return */,
+ int* /* count_return */
+);
+extern int XSetWMProtocols(
+ Display* /* display */,
+ Window /* w */,
+ Atom* /* protocols */,
+ int /* count */
+);
+extern int XIconifyWindow(
+ Display* /* display */,
+ Window /* w */,
+ int /* screen_number */
+);
+extern int XWithdrawWindow(
+ Display* /* display */,
+ Window /* w */,
+ int /* screen_number */
+);
+extern int XGetCommand(
+ Display* /* display */,
+ Window /* w */,
+ char*** /* argv_return */,
+ int* /* argc_return */
+);
+extern int XGetWMColormapWindows(
+ Display* /* display */,
+ Window /* w */,
+ Window** /* windows_return */,
+ int* /* count_return */
+);
+extern int XSetWMColormapWindows(
+ Display* /* display */,
+ Window /* w */,
+ Window* /* colormap_windows */,
+ int /* count */
+);
+extern void XFreeStringList(
+ char** /* list */
+);
+extern int XSetTransientForHint(
+ Display* /* display */,
+ Window /* w */,
+ Window /* prop_window */
+);
+
+/* The following are given in alphabetical order */
+
+extern int XActivateScreenSaver(
+ Display* /* display */
+);
+
+extern int XAddHost(
+ Display* /* display */,
+ XHostAddress* /* host */
+);
+
+extern int XAddHosts(
+ Display* /* display */,
+ XHostAddress* /* hosts */,
+ int /* num_hosts */
+);
+
+extern int XAddToExtensionList(
+ struct _XExtData** /* structure */,
+ XExtData* /* ext_data */
+);
+
+extern int XAddToSaveSet(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XAllocColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */
+);
+
+extern int XAllocColorCells(
+ Display* /* display */,
+ Colormap /* colormap */,
+ int /* contig */,
+ unsigned long* /* plane_masks_return */,
+ unsigned int /* nplanes */,
+ unsigned long* /* pixels_return */,
+ unsigned int /* npixels */
+);
+
+extern int XAllocColorPlanes(
+ Display* /* display */,
+ Colormap /* colormap */,
+ int /* contig */,
+ unsigned long* /* pixels_return */,
+ int /* ncolors */,
+ int /* nreds */,
+ int /* ngreens */,
+ int /* nblues */,
+ unsigned long* /* rmask_return */,
+ unsigned long* /* gmask_return */,
+ unsigned long* /* bmask_return */
+);
+
+extern int XAllocNamedColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ const char* /* color_name */,
+ XColor* /* screen_def_return */,
+ XColor* /* exact_def_return */
+);
+
+extern int XAllowEvents(
+ Display* /* display */,
+ int /* event_mode */,
+ Time /* time */
+);
+
+extern int XAutoRepeatOff(
+ Display* /* display */
+);
+
+extern int XAutoRepeatOn(
+ Display* /* display */
+);
+
+extern int XBell(
+ Display* /* display */,
+ int /* percent */
+);
+
+extern int XBitmapBitOrder(
+ Display* /* display */
+);
+
+extern int XBitmapPad(
+ Display* /* display */
+);
+
+extern int XBitmapUnit(
+ Display* /* display */
+);
+
+extern int XCellsOfScreen(
+ Screen* /* screen */
+);
+
+extern int XChangeActivePointerGrab(
+ Display* /* display */,
+ unsigned int /* event_mask */,
+ Cursor /* cursor */,
+ Time /* time */
+);
+
+extern int XChangeGC(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* valuemask */,
+ XGCValues* /* values */
+);
+
+extern int XChangeKeyboardControl(
+ Display* /* display */,
+ unsigned long /* value_mask */,
+ XKeyboardControl* /* values */
+);
+
+extern int XChangeKeyboardMapping(
+ Display* /* display */,
+ int /* first_keycode */,
+ int /* keysyms_per_keycode */,
+ KeySym* /* keysyms */,
+ int /* num_codes */
+);
+
+extern int XChangePointerControl(
+ Display* /* display */,
+ int /* do_accel */,
+ int /* do_threshold */,
+ int /* accel_numerator */,
+ int /* accel_denominator */,
+ int /* threshold */
+);
+
+extern int XChangeProperty(
+ Display* /* display */,
+ Window /* w */,
+ Atom /* property */,
+ Atom /* type */,
+ int /* format */,
+ int /* mode */,
+ const unsigned char* /* data */,
+ int /* nelements */
+);
+
+extern int XChangeSaveSet(
+ Display* /* display */,
+ Window /* w */,
+ int /* change_mode */
+);
+
+extern int XChangeWindowAttributes(
+ Display* /* display */,
+ Window /* w */,
+ unsigned long /* valuemask */,
+ XSetWindowAttributes* /* attributes */
+);
+
+extern int XCheckIfEvent(
+ Display* /* display */,
+ XEvent* /* event_return */,
+ int (*) (
+ Display* /* display */,
+ XEvent* /* event */,
+ XPointer /* arg */
+ ) /* predicate */,
+ XPointer /* arg */
+);
+
+extern int XCheckMaskEvent(
+ Display* /* display */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+);
+
+extern int XCheckTypedEvent(
+ Display* /* display */,
+ int /* event_type */,
+ XEvent* /* event_return */
+);
+
+extern int XCheckTypedWindowEvent(
+ Display* /* display */,
+ Window /* w */,
+ int /* event_type */,
+ XEvent* /* event_return */
+);
+
+extern int XCheckWindowEvent(
+ Display* /* display */,
+ Window /* w */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+);
+
+extern int XCirculateSubwindows(
+ Display* /* display */,
+ Window /* w */,
+ int /* direction */
+);
+
+extern int XCirculateSubwindowsDown(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XCirculateSubwindowsUp(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XClearArea(
+ Display* /* display */,
+ Window /* w */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* exposures */
+);
+
+extern int XClearWindow(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XCloseDisplay(
+ Display* /* display */
+);
+
+extern int XConfigureWindow(
+ Display* /* display */,
+ Window /* w */,
+ unsigned int /* value_mask */,
+ XWindowChanges* /* values */
+);
+
+extern int XConnectionNumber(
+ Display* /* display */
+);
+
+extern int XConvertSelection(
+ Display* /* display */,
+ Atom /* selection */,
+ Atom /* target */,
+ Atom /* property */,
+ Window /* requestor */,
+ Time /* time */
+);
+
+extern int XCopyArea(
+ Display* /* display */,
+ Drawable /* src */,
+ Drawable /* dest */,
+ GC /* gc */,
+ int /* src_x */,
+ int /* src_y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* dest_x */,
+ int /* dest_y */
+);
+
+extern int XCopyGC(
+ Display* /* display */,
+ GC /* src */,
+ unsigned long /* valuemask */,
+ GC /* dest */
+);
+
+extern int XCopyPlane(
+ Display* /* display */,
+ Drawable /* src */,
+ Drawable /* dest */,
+ GC /* gc */,
+ int /* src_x */,
+ int /* src_y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* dest_x */,
+ int /* dest_y */,
+ unsigned long /* plane */
+);
+
+extern int XDefaultDepth(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDefaultDepthOfScreen(
+ Screen* /* screen */
+);
+
+extern int XDefaultScreen(
+ Display* /* display */
+);
+
+extern int XDefineCursor(
+ Display* /* display */,
+ Window /* w */,
+ Cursor /* cursor */
+);
+
+extern int XDeleteProperty(
+ Display* /* display */,
+ Window /* w */,
+ Atom /* property */
+);
+
+extern int XDestroyWindow(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XDestroySubwindows(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XDoesBackingStore(
+ Screen* /* screen */
+);
+
+extern int XDoesSaveUnders(
+ Screen* /* screen */
+);
+
+extern int XDisableAccessControl(
+ Display* /* display */
+);
+
+
+extern int XDisplayCells(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDisplayHeight(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDisplayHeightMM(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDisplayKeycodes(
+ Display* /* display */,
+ int* /* min_keycodes_return */,
+ int* /* max_keycodes_return */
+);
+
+extern int XDisplayPlanes(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDisplayWidth(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDisplayWidthMM(
+ Display* /* display */,
+ int /* screen_number */
+);
+
+extern int XDrawArc(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* angle1 */,
+ int /* angle2 */
+);
+
+extern int XDrawArcs(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XArc* /* arcs */,
+ int /* narcs */
+);
+
+extern int XDrawImageString(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const char* /* string */,
+ int /* length */
+);
+
+extern int XDrawImageString16(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const XChar2b* /* string */,
+ int /* length */
+);
+
+extern int XDrawLine(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x1 */,
+ int /* y1 */,
+ int /* x2 */,
+ int /* y2 */
+);
+
+extern int XDrawLines(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XPoint* /* points */,
+ int /* npoints */,
+ int /* mode */
+);
+
+extern int XDrawPoint(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */
+);
+
+extern int XDrawPoints(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XPoint* /* points */,
+ int /* npoints */,
+ int /* mode */
+);
+
+extern int XDrawRectangle(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+extern int XDrawRectangles(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XRectangle* /* rectangles */,
+ int /* nrectangles */
+);
+
+extern int XDrawSegments(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XSegment* /* segments */,
+ int /* nsegments */
+);
+
+extern int XDrawString(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const char* /* string */,
+ int /* length */
+);
+
+extern int XDrawString16(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const XChar2b* /* string */,
+ int /* length */
+);
+
+extern int XDrawText(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XTextItem* /* items */,
+ int /* nitems */
+);
+
+extern int XDrawText16(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XTextItem16* /* items */,
+ int /* nitems */
+);
+
+extern int XEnableAccessControl(
+ Display* /* display */
+);
+
+extern int XEventsQueued(
+ Display* /* display */,
+ int /* mode */
+);
+
+extern int XFetchName(
+ Display* /* display */,
+ Window /* w */,
+ char** /* window_name_return */
+);
+
+extern int XFillArc(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* angle1 */,
+ int /* angle2 */
+);
+
+extern int XFillArcs(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XArc* /* arcs */,
+ int /* narcs */
+);
+
+extern int XFillPolygon(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XPoint* /* points */,
+ int /* npoints */,
+ int /* shape */,
+ int /* mode */
+);
+
+extern int XFillRectangle(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+extern int XFillRectangles(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XRectangle* /* rectangles */,
+ int /* nrectangles */
+);
+
+extern int XFlush(
+ Display* /* display */
+);
+
+extern int XForceScreenSaver(
+ Display* /* display */,
+ int /* mode */
+);
+
+extern int XFree(
+ void* /* data */
+);
+
+extern int XFreeColormap(
+ Display* /* display */,
+ Colormap /* colormap */
+);
+
+extern int XFreeColors(
+ Display* /* display */,
+ Colormap /* colormap */,
+ unsigned long* /* pixels */,
+ int /* npixels */,
+ unsigned long /* planes */
+);
+
+extern int XFreeCursor(
+ Display* /* display */,
+ Cursor /* cursor */
+);
+
+extern int XFreeExtensionList(
+ char** /* list */
+);
+
+extern int XFreeFont(
+ Display* /* display */,
+ XFontStruct* /* font_struct */
+);
+
+extern int XFreeFontInfo(
+ char** /* names */,
+ XFontStruct* /* free_info */,
+ int /* actual_count */
+);
+
+extern int XFreeFontNames(
+ char** /* list */
+);
+
+extern int XFreeFontPath(
+ char** /* list */
+);
+
+extern int XFreeGC(
+ Display* /* display */,
+ GC /* gc */
+);
+
+extern int XFreeModifiermap(
+ XModifierKeymap* /* modmap */
+);
+
+extern int XFreePixmap(
+ Display* /* display */,
+ Pixmap /* pixmap */
+);
+
+extern int XGeometry(
+ Display* /* display */,
+ int /* screen */,
+ const char* /* position */,
+ const char* /* default_position */,
+ unsigned int /* bwidth */,
+ unsigned int /* fwidth */,
+ unsigned int /* fheight */,
+ int /* xadder */,
+ int /* yadder */,
+ int* /* x_return */,
+ int* /* y_return */,
+ int* /* width_return */,
+ int* /* height_return */
+);
+
+extern int XGetErrorDatabaseText(
+ Display* /* display */,
+ const char* /* name */,
+ const char* /* message */,
+ const char* /* default_string */,
+ char* /* buffer_return */,
+ int /* length */
+);
+
+extern int XGetErrorText(
+ Display* /* display */,
+ int /* code */,
+ char* /* buffer_return */,
+ int /* length */
+);
+
+extern int XGetFontProperty(
+ XFontStruct* /* font_struct */,
+ Atom /* atom */,
+ unsigned long* /* value_return */
+);
+
+extern int XGetGCValues(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* valuemask */,
+ XGCValues* /* values_return */
+);
+
+extern int XGetGeometry(
+ Display* /* display */,
+ Drawable /* d */,
+ Window* /* root_return */,
+ int* /* x_return */,
+ int* /* y_return */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */,
+ unsigned int* /* border_width_return */,
+ unsigned int* /* depth_return */
+);
+
+extern int XGetIconName(
+ Display* /* display */,
+ Window /* w */,
+ char** /* icon_name_return */
+);
+
+extern int XGetInputFocus(
+ Display* /* display */,
+ Window* /* focus_return */,
+ int* /* revert_to_return */
+);
+
+extern int XGetKeyboardControl(
+ Display* /* display */,
+ XKeyboardState* /* values_return */
+);
+
+extern int XGetPointerControl(
+ Display* /* display */,
+ int* /* accel_numerator_return */,
+ int* /* accel_denominator_return */,
+ int* /* threshold_return */
+);
+
+extern int XGetPointerMapping(
+ Display* /* display */,
+ unsigned char* /* map_return */,
+ int /* nmap */
+);
+
+extern int XGetScreenSaver(
+ Display* /* display */,
+ int* /* timeout_return */,
+ int* /* interval_return */,
+ int* /* prefer_blanking_return */,
+ int* /* allow_exposures_return */
+);
+
+extern int XGetTransientForHint(
+ Display* /* display */,
+ Window /* w */,
+ Window* /* prop_window_return */
+);
+
+extern int XGetWindowProperty(
+ Display* /* display */,
+ Window /* w */,
+ Atom /* property */,
+ long /* long_offset */,
+ long /* long_length */,
+ int /* delete */,
+ Atom /* req_type */,
+ Atom* /* actual_type_return */,
+ int* /* actual_format_return */,
+ unsigned long* /* nitems_return */,
+ unsigned long* /* bytes_after_return */,
+ unsigned char** /* prop_return */
+);
+
+extern int XGetWindowAttributes(
+ Display* /* display */,
+ Window /* w */,
+ XWindowAttributes* /* window_attributes_return */
+);
+
+extern int XGrabButton(
+ Display* /* display */,
+ unsigned int /* button */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */,
+ int /* owner_events */,
+ unsigned int /* event_mask */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */,
+ Window /* confine_to */,
+ Cursor /* cursor */
+);
+
+extern int XGrabKey(
+ Display* /* display */,
+ int /* keycode */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */,
+ int /* owner_events */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */
+);
+
+extern int XGrabKeyboard(
+ Display* /* display */,
+ Window /* grab_window */,
+ int /* owner_events */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */,
+ Time /* time */
+);
+
+extern int XGrabPointer(
+ Display* /* display */,
+ Window /* grab_window */,
+ int /* owner_events */,
+ unsigned int /* event_mask */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */,
+ Window /* confine_to */,
+ Cursor /* cursor */,
+ Time /* time */
+);
+
+extern int XGrabServer(
+ Display* /* display */
+);
+
+extern int XHeightMMOfScreen(
+ Screen* /* screen */
+);
+
+extern int XHeightOfScreen(
+ Screen* /* screen */
+);
+
+extern int XIfEvent(
+ Display* /* display */,
+ XEvent* /* event_return */,
+ int (*) (
+ Display* /* display */,
+ XEvent* /* event */,
+ XPointer /* arg */
+ ) /* predicate */,
+ XPointer /* arg */
+);
+
+extern int XImageByteOrder(
+ Display* /* display */
+);
+
+extern int XInstallColormap(
+ Display* /* display */,
+ Colormap /* colormap */
+);
+
+extern KeyCode XKeysymToKeycode(
+ Display* /* display */,
+ KeySym /* keysym */
+);
+
+extern int XKillClient(
+ Display* /* display */,
+ XID /* resource */
+);
+
+extern int XLookupColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ const char* /* color_name */,
+ XColor* /* exact_def_return */,
+ XColor* /* screen_def_return */
+);
+
+extern int XLowerWindow(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XMapRaised(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XMapSubwindows(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XMapWindow(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XMaskEvent(
+ Display* /* display */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+);
+
+extern int XMaxCmapsOfScreen(
+ Screen* /* screen */
+);
+
+extern int XMinCmapsOfScreen(
+ Screen* /* screen */
+);
+
+extern int XMoveResizeWindow(
+ Display* /* display */,
+ Window /* w */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+extern int XMoveWindow(
+ Display* /* display */,
+ Window /* w */,
+ int /* x */,
+ int /* y */
+);
+
+extern int XNextEvent(
+ Display* /* display */,
+ XEvent* /* event_return */
+);
+
+extern int XNoOp(
+ Display* /* display */
+);
+
+extern int XParseColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ const char* /* spec */,
+ XColor* /* exact_def_return */
+);
+
+extern int XParseGeometry(
+ const char* /* parsestring */,
+ int* /* x_return */,
+ int* /* y_return */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+);
+
+extern int XPeekEvent(
+ Display* /* display */,
+ XEvent* /* event_return */
+);
+
+extern int XPeekIfEvent(
+ Display* /* display */,
+ XEvent* /* event_return */,
+ int (*) (
+ Display* /* display */,
+ XEvent* /* event */,
+ XPointer /* arg */
+ ) /* predicate */,
+ XPointer /* arg */
+);
+
+extern int XPending(
+ Display* /* display */
+);
+
+extern int XPlanesOfScreen(
+ Screen* /* screen */
+);
+
+extern int XProtocolRevision(
+ Display* /* display */
+);
+
+extern int XProtocolVersion(
+ Display* /* display */
+);
+
+
+extern int XPutBackEvent(
+ Display* /* display */,
+ XEvent* /* event */
+);
+
+extern int XPutImage(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XImage* /* image */,
+ int /* src_x */,
+ int /* src_y */,
+ int /* dest_x */,
+ int /* dest_y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+extern int XQLength(
+ Display* /* display */
+);
+
+extern int XQueryBestCursor(
+ Display* /* display */,
+ Drawable /* d */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+);
+
+extern int XQueryBestSize(
+ Display* /* display */,
+ int /* class */,
+ Drawable /* which_screen */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+);
+
+extern int XQueryBestStipple(
+ Display* /* display */,
+ Drawable /* which_screen */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+);
+
+extern int XQueryBestTile(
+ Display* /* display */,
+ Drawable /* which_screen */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+);
+
+extern int XQueryColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* def_in_out */
+);
+
+extern int XQueryColors(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* defs_in_out */,
+ int /* ncolors */
+);
+
+extern int XQueryExtension(
+ Display* /* display */,
+ const char* /* name */,
+ int* /* major_opcode_return */,
+ int* /* first_event_return */,
+ int* /* first_error_return */
+);
+
+extern int XQueryKeymap(
+ Display* /* display */,
+ char [32] /* keys_return */
+);
+
+extern int XQueryPointer(
+ Display* /* display */,
+ Window /* w */,
+ Window* /* root_return */,
+ Window* /* child_return */,
+ int* /* root_x_return */,
+ int* /* root_y_return */,
+ int* /* win_x_return */,
+ int* /* win_y_return */,
+ unsigned int* /* mask_return */
+);
+
+extern int XQueryTextExtents(
+ Display* /* display */,
+ XID /* font_ID */,
+ const char* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+);
+
+extern int XQueryTextExtents16(
+ Display* /* display */,
+ XID /* font_ID */,
+ const XChar2b* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+);
+
+extern int XQueryTree(
+ Display* /* display */,
+ Window /* w */,
+ Window* /* root_return */,
+ Window* /* parent_return */,
+ Window** /* children_return */,
+ unsigned int* /* nchildren_return */
+);
+
+extern int XRaiseWindow(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XReadBitmapFile(
+ Display* /* display */,
+ Drawable /* d */,
+ const char* /* filename */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */,
+ Pixmap* /* bitmap_return */,
+ int* /* x_hot_return */,
+ int* /* y_hot_return */
+);
+
+extern int XReadBitmapFileData(
+ const char* /* filename */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */,
+ unsigned char** /* data_return */,
+ int* /* x_hot_return */,
+ int* /* y_hot_return */
+);
+
+extern int XRebindKeysym(
+ Display* /* display */,
+ KeySym /* keysym */,
+ KeySym* /* list */,
+ int /* mod_count */,
+ const unsigned char* /* string */,
+ int /* bytes_string */
+);
+
+extern int XRecolorCursor(
+ Display* /* display */,
+ Cursor /* cursor */,
+ XColor* /* foreground_color */,
+ XColor* /* background_color */
+);
+
+extern int XRefreshKeyboardMapping(
+ XMappingEvent* /* event_map */
+);
+
+extern int XRemoveFromSaveSet(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XRemoveHost(
+ Display* /* display */,
+ XHostAddress* /* host */
+);
+
+extern int XRemoveHosts(
+ Display* /* display */,
+ XHostAddress* /* hosts */,
+ int /* num_hosts */
+);
+
+extern int XReparentWindow(
+ Display* /* display */,
+ Window /* w */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */
+);
+
+extern int XResetScreenSaver(
+ Display* /* display */
+);
+
+extern int XResizeWindow(
+ Display* /* display */,
+ Window /* w */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+extern int XRestackWindows(
+ Display* /* display */,
+ Window* /* windows */,
+ int /* nwindows */
+);
+
+extern int XRotateBuffers(
+ Display* /* display */,
+ int /* rotate */
+);
+
+extern int XRotateWindowProperties(
+ Display* /* display */,
+ Window /* w */,
+ Atom* /* properties */,
+ int /* num_prop */,
+ int /* npositions */
+);
+
+extern int XScreenCount(
+ Display* /* display */
+);
+
+extern int XSelectInput(
+ Display* /* display */,
+ Window /* w */,
+ long /* event_mask */
+);
+
+extern int XSendEvent(
+ Display* /* display */,
+ Window /* w */,
+ int /* propagate */,
+ long /* event_mask */,
+ XEvent* /* event_send */
+);
+
+extern int XSetAccessControl(
+ Display* /* display */,
+ int /* mode */
+);
+
+extern int XSetArcMode(
+ Display* /* display */,
+ GC /* gc */,
+ int /* arc_mode */
+);
+
+extern int XSetBackground(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* background */
+);
+
+extern int XSetClipMask(
+ Display* /* display */,
+ GC /* gc */,
+ Pixmap /* pixmap */
+);
+
+extern int XSetClipOrigin(
+ Display* /* display */,
+ GC /* gc */,
+ int /* clip_x_origin */,
+ int /* clip_y_origin */
+);
+
+extern int XSetClipRectangles(
+ Display* /* display */,
+ GC /* gc */,
+ int /* clip_x_origin */,
+ int /* clip_y_origin */,
+ XRectangle* /* rectangles */,
+ int /* n */,
+ int /* ordering */
+);
+
+extern int XSetCloseDownMode(
+ Display* /* display */,
+ int /* close_mode */
+);
+
+extern int XSetCommand(
+ Display* /* display */,
+ Window /* w */,
+ char** /* argv */,
+ int /* argc */
+);
+
+extern int XSetDashes(
+ Display* /* display */,
+ GC /* gc */,
+ int /* dash_offset */,
+ const char* /* dash_list */,
+ int /* n */
+);
+
+extern int XSetFillRule(
+ Display* /* display */,
+ GC /* gc */,
+ int /* fill_rule */
+);
+
+extern int XSetFillStyle(
+ Display* /* display */,
+ GC /* gc */,
+ int /* fill_style */
+);
+
+extern int XSetFont(
+ Display* /* display */,
+ GC /* gc */,
+ Font /* font */
+);
+
+extern int XSetFontPath(
+ Display* /* display */,
+ char** /* directories */,
+ int /* ndirs */
+);
+
+extern int XSetForeground(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* foreground */
+);
+
+extern int XSetFunction(
+ Display* /* display */,
+ GC /* gc */,
+ int /* function */
+);
+
+extern int XSetGraphicsExposures(
+ Display* /* display */,
+ GC /* gc */,
+ int /* graphics_exposures */
+);
+
+extern int XSetIconName(
+ Display* /* display */,
+ Window /* w */,
+ const char* /* icon_name */
+);
+
+extern int XSetInputFocus(
+ Display* /* display */,
+ Window /* focus */,
+ int /* revert_to */,
+ Time /* time */
+);
+
+extern int XSetLineAttributes(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned int /* line_width */,
+ int /* line_style */,
+ int /* cap_style */,
+ int /* join_style */
+);
+
+extern int XSetModifierMapping(
+ Display* /* display */,
+ XModifierKeymap* /* modmap */
+);
+
+extern int XSetPlaneMask(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* plane_mask */
+);
+
+extern int XSetPointerMapping(
+ Display* /* display */,
+ const unsigned char* /* map */,
+ int /* nmap */
+);
+
+extern int XSetScreenSaver(
+ Display* /* display */,
+ int /* timeout */,
+ int /* interval */,
+ int /* prefer_blanking */,
+ int /* allow_exposures */
+);
+
+extern int XSetSelectionOwner(
+ Display* /* display */,
+ Atom /* selection */,
+ Window /* owner */,
+ Time /* time */
+);
+
+extern int XSetState(
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* foreground */,
+ unsigned long /* background */,
+ int /* function */,
+ unsigned long /* plane_mask */
+);
+
+extern int XSetStipple(
+ Display* /* display */,
+ GC /* gc */,
+ Pixmap /* stipple */
+);
+
+extern int XSetSubwindowMode(
+ Display* /* display */,
+ GC /* gc */,
+ int /* subwindow_mode */
+);
+
+extern int XSetTSOrigin(
+ Display* /* display */,
+ GC /* gc */,
+ int /* ts_x_origin */,
+ int /* ts_y_origin */
+);
+
+extern int XSetTile(
+ Display* /* display */,
+ GC /* gc */,
+ Pixmap /* tile */
+);
+
+extern int XSetWindowBackground(
+ Display* /* display */,
+ Window /* w */,
+ unsigned long /* background_pixel */
+);
+
+extern int XSetWindowBackgroundPixmap(
+ Display* /* display */,
+ Window /* w */,
+ Pixmap /* background_pixmap */
+);
+
+extern int XSetWindowBorder(
+ Display* /* display */,
+ Window /* w */,
+ unsigned long /* border_pixel */
+);
+
+extern int XSetWindowBorderPixmap(
+ Display* /* display */,
+ Window /* w */,
+ Pixmap /* border_pixmap */
+);
+
+extern int XSetWindowBorderWidth(
+ Display* /* display */,
+ Window /* w */,
+ unsigned int /* width */
+);
+
+extern int XSetWindowColormap(
+ Display* /* display */,
+ Window /* w */,
+ Colormap /* colormap */
+);
+
+extern int XStoreBuffer(
+ Display* /* display */,
+ const char* /* bytes */,
+ int /* nbytes */,
+ int /* buffer */
+);
+
+extern int XStoreBytes(
+ Display* /* display */,
+ const char* /* bytes */,
+ int /* nbytes */
+);
+
+extern int XStoreColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* color */
+);
+
+extern int XStoreColors(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* color */,
+ int /* ncolors */
+);
+
+extern int XStoreName(
+ Display* /* display */,
+ Window /* w */,
+ const char* /* window_name */
+);
+
+extern int XStoreNamedColor(
+ Display* /* display */,
+ Colormap /* colormap */,
+ const char* /* color */,
+ unsigned long /* pixel */,
+ int /* flags */
+);
+
+extern int XSync(
+ Display* /* display */,
+ int /* discard */
+);
+
+extern int XTextExtents(
+ XFontStruct* /* font_struct */,
+ const char* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+);
+
+extern int XTextExtents16(
+ XFontStruct* /* font_struct */,
+ const XChar2b* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+);
+
+extern int XTextWidth(
+ XFontStruct* /* font_struct */,
+ const char* /* string */,
+ int /* count */
+);
+
+extern int XTextWidth16(
+ XFontStruct* /* font_struct */,
+ const XChar2b* /* string */,
+ int /* count */
+);
+
+extern int XTranslateCoordinates(
+ Display* /* display */,
+ Window /* src_w */,
+ Window /* dest_w */,
+ int /* src_x */,
+ int /* src_y */,
+ int* /* dest_x_return */,
+ int* /* dest_y_return */,
+ Window* /* child_return */
+);
+
+extern int XUndefineCursor(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XUngrabButton(
+ Display* /* display */,
+ unsigned int /* button */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */
+);
+
+extern int XUngrabKey(
+ Display* /* display */,
+ int /* keycode */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */
+);
+
+extern int XUngrabKeyboard(
+ Display* /* display */,
+ Time /* time */
+);
+
+extern int XUngrabPointer(
+ Display* /* display */,
+ Time /* time */
+);
+
+extern int XUngrabServer(
+ Display* /* display */
+);
+
+extern int XUninstallColormap(
+ Display* /* display */,
+ Colormap /* colormap */
+);
+
+extern int XUnloadFont(
+ Display* /* display */,
+ Font /* font */
+);
+
+extern int XUnmapSubwindows(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XUnmapWindow(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XVendorRelease(
+ Display* /* display */
+);
+
+extern int XWarpPointer(
+ Display* /* display */,
+ Window /* src_w */,
+ Window /* dest_w */,
+ int /* src_x */,
+ int /* src_y */,
+ unsigned int /* src_width */,
+ unsigned int /* src_height */,
+ int /* dest_x */,
+ int /* dest_y */
+);
+
+extern int XWidthMMOfScreen(
+ Screen* /* screen */
+);
+
+extern int XWidthOfScreen(
+ Screen* /* screen */
+);
+
+extern int XWindowEvent(
+ Display* /* display */,
+ Window /* w */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+);
+
+extern int XWriteBitmapFile(
+ Display* /* display */,
+ const char* /* filename */,
+ Pixmap /* bitmap */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* x_hot */,
+ int /* y_hot */
+);
+
+extern int XSupportsLocale (void);
+
+extern char *XSetLocaleModifiers(
+ const char* /* modifier_list */
+);
+
+extern XOM XOpenOM(
+ Display* /* display */,
+ struct _XrmHashBucketRec* /* rdb */,
+ const char* /* res_name */,
+ const char* /* res_class */
+);
+
+extern int XCloseOM(
+ XOM /* om */
+);
+
+extern char *XSetOMValues(
+ XOM /* om */,
+ ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern char *XGetOMValues(
+ XOM /* om */,
+ ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern Display *XDisplayOfOM(
+ XOM /* om */
+);
+
+extern char *XLocaleOfOM(
+ XOM /* om */
+);
+
+extern XOC XCreateOC(
+ XOM /* om */,
+ ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern void XDestroyOC(
+ XOC /* oc */
+);
+
+extern XOM XOMOfOC(
+ XOC /* oc */
+);
+
+extern char *XSetOCValues(
+ XOC /* oc */,
+ ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern char *XGetOCValues(
+ XOC /* oc */,
+ ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern XFontSet XCreateFontSet(
+ Display* /* display */,
+ const char* /* base_font_name_list */,
+ char*** /* missing_charset_list */,
+ int* /* missing_charset_count */,
+ char** /* def_string */
+);
+
+extern void XFreeFontSet(
+ Display* /* display */,
+ XFontSet /* font_set */
+);
+
+extern int XFontsOfFontSet(
+ XFontSet /* font_set */,
+ XFontStruct*** /* font_struct_list */,
+ char*** /* font_name_list */
+);
+
+extern char *XBaseFontNameListOfFontSet(
+ XFontSet /* font_set */
+);
+
+extern char *XLocaleOfFontSet(
+ XFontSet /* font_set */
+);
+
+extern int XContextDependentDrawing(
+ XFontSet /* font_set */
+);
+
+extern int XDirectionalDependentDrawing(
+ XFontSet /* font_set */
+);
+
+extern int XContextualDrawing(
+ XFontSet /* font_set */
+);
+
+extern XFontSetExtents *XExtentsOfFontSet(
+ XFontSet /* font_set */
+);
+
+extern int XmbTextEscapement(
+ XFontSet /* font_set */,
+ const char* /* text */,
+ int /* bytes_text */
+);
+
+extern int XwcTextEscapement(
+ XFontSet /* font_set */,
+ const wchar_t* /* text */,
+ int /* num_wchars */
+);
+
+extern int Xutf8TextEscapement(
+ XFontSet /* font_set */,
+ const char* /* text */,
+ int /* bytes_text */
+);
+
+extern int XmbTextExtents(
+ XFontSet /* font_set */,
+ const char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+);
+
+extern int XwcTextExtents(
+ XFontSet /* font_set */,
+ const wchar_t* /* text */,
+ int /* num_wchars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+);
+
+extern int Xutf8TextExtents(
+ XFontSet /* font_set */,
+ const char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+);
+
+extern int XmbTextPerCharExtents(
+ XFontSet /* font_set */,
+ const char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+);
+
+extern int XwcTextPerCharExtents(
+ XFontSet /* font_set */,
+ const wchar_t* /* text */,
+ int /* num_wchars */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+);
+
+extern int Xutf8TextPerCharExtents(
+ XFontSet /* font_set */,
+ const char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+);
+
+extern void XmbDrawText(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XmbTextItem* /* text_items */,
+ int /* nitems */
+);
+
+extern void XwcDrawText(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XwcTextItem* /* text_items */,
+ int /* nitems */
+);
+
+extern void Xutf8DrawText(
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XmbTextItem* /* text_items */,
+ int /* nitems */
+);
+
+extern void XmbDrawString(
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const char* /* text */,
+ int /* bytes_text */
+);
+
+extern void XwcDrawString(
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const wchar_t* /* text */,
+ int /* num_wchars */
+);
+
+extern void Xutf8DrawString(
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const char* /* text */,
+ int /* bytes_text */
+);
+
+extern void XmbDrawImageString(
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const char* /* text */,
+ int /* bytes_text */
+);
+
+extern void XwcDrawImageString(
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const wchar_t* /* text */,
+ int /* num_wchars */
+);
+
+extern void Xutf8DrawImageString(
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ const char* /* text */,
+ int /* bytes_text */
+);
+
+extern XIM XOpenIM(
+ Display* /* dpy */,
+ struct _XrmHashBucketRec* /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */
+);
+
+extern int XCloseIM(
+ XIM /* im */
+);
+
+extern char *XGetIMValues(
+ XIM /* im */, ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern char *XSetIMValues(
+ XIM /* im */, ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern Display *XDisplayOfIM(
+ XIM /* im */
+);
+
+extern char *XLocaleOfIM(
+ XIM /* im*/
+);
+
+extern XIC XCreateIC(
+ XIM /* im */, ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern void XDestroyIC(
+ XIC /* ic */
+);
+
+extern void XSetICFocus(
+ XIC /* ic */
+);
+
+extern void XUnsetICFocus(
+ XIC /* ic */
+);
+
+extern wchar_t *XwcResetIC(
+ XIC /* ic */
+);
+
+extern char *XmbResetIC(
+ XIC /* ic */
+);
+
+extern char *Xutf8ResetIC(
+ XIC /* ic */
+);
+
+extern char *XSetICValues(
+ XIC /* ic */, ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern char *XGetICValues(
+ XIC /* ic */, ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+extern XIM XIMOfIC(
+ XIC /* ic */
+);
+
+extern int XFilterEvent(
+ XEvent* /* event */,
+ Window /* window */
+);
+
+extern int XmbLookupString(
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ int * /* status_return */
+);
+
+extern int XwcLookupString(
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ wchar_t* /* buffer_return */,
+ int /* wchars_buffer */,
+ KeySym* /* keysym_return */,
+ int * /* status_return */
+);
+
+extern int Xutf8LookupString(
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ int * /* status_return */
+);
+
+extern XVaNestedList XVaCreateNestedList(
+ int /*unused*/, ...
+) __attribute__ ((__sentinel__( 0 ))) ;
+
+/* internal connections for IMs */
+
+extern int XRegisterIMInstantiateCallback(
+ Display* /* dpy */,
+ struct _XrmHashBucketRec* /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */,
+ XIDProc /* callback */,
+ XPointer /* client_data */
+);
+
+extern int XUnregisterIMInstantiateCallback(
+ Display* /* dpy */,
+ struct _XrmHashBucketRec* /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */,
+ XIDProc /* callback */,
+ XPointer /* client_data */
+);
+
+typedef void (*XConnectionWatchProc)(
+ Display* /* dpy */,
+ XPointer /* client_data */,
+ int /* fd */,
+ int /* opening */, /* open or close flag */
+ XPointer* /* watch_data */ /* open sets, close uses */
+);
+
+
+extern int XInternalConnectionNumbers(
+ Display* /* dpy */,
+ int** /* fd_return */,
+ int* /* count_return */
+);
+
+extern void XProcessInternalConnection(
+ Display* /* dpy */,
+ int /* fd */
+);
+
+extern int XAddConnectionWatch(
+ Display* /* dpy */,
+ XConnectionWatchProc /* callback */,
+ XPointer /* client_data */
+);
+
+extern void XRemoveConnectionWatch(
+ Display* /* dpy */,
+ XConnectionWatchProc /* callback */,
+ XPointer /* client_data */
+);
+
+extern void XSetAuthorization(
+ char * /* name */,
+ int /* namelen */,
+ char * /* data */,
+ int /* datalen */
+);
+
+extern int _Xmbtowc(
+ wchar_t * /* wstr */,
+
+
+
+
+ char * /* str */,
+ int /* len */
+
+);
+
+extern int _Xwctomb(
+ char * /* str */,
+ wchar_t /* wc */
+);
+
+extern int XGetEventData(
+ Display* /* dpy */,
+ XGenericEventCookie* /* cookie*/
+);
+
+extern void XFreeEventData(
+ Display* /* dpy */,
+ XGenericEventCookie* /* cookie*/
+);
+
+
+
+/* _X11_XLIB_H_ */
+# 99 "include/forms.h" 2
+
+#include <X11/Xutil.h>
+# 1 "/usr/include/X11/Xutil.h" 1 3
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+
+#define _X11_XUTIL_H_
+
+/* You must include <X11/Xlib.h> before including this file */
+#include <X11/Xlib.h>
+#include <X11/keysym.h>
+# 1 "/usr/include/X11/keysym.h" 1 3
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/* default keysyms */
+#define XK_MISCELLANY
+#define XK_XKB_KEYS
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+#define XK_LATIN8
+#define XK_LATIN9
+#define XK_CAUCASUS
+#define XK_GREEK
+#define XK_KATAKANA
+#define XK_ARABIC
+#define XK_CYRILLIC
+#define XK_HEBREW
+#define XK_THAI
+#define XK_KOREAN
+#define XK_ARMENIAN
+#define XK_GEORGIAN
+#define XK_VIETNAMESE
+#define XK_CURRENCY
+#define XK_MATHEMATICAL
+#define XK_BRAILLE
+#define XK_SINHALA
+
+#include <X11/keysymdef.h>
+# 1 "/usr/include/X11/keysymdef.h" 1 3
+/***********************************************************
+Copyright 1987, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/*
+ * The "X11 Window System Protocol" standard defines in Appendix A the
+ * keysym codes. These 29-bit integer values identify characters or
+ * functions associated with each key (e.g., via the visible
+ * engraving) of a keyboard layout. This file assigns mnemonic macro
+ * names for these keysyms.
+ *
+ * This file is also compiled (by src/util/makekeys.c in libX11) into
+ * hash tables that can be accessed with X11 library functions such as
+ * XStringToKeysym() and XKeysymToString().
+ *
+ * Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
+ * character, this is noted in a comment that provides both the U+xxxx
+ * Unicode position, as well as the official Unicode name of the
+ * character.
+ *
+ * Where the correspondence is either not one-to-one or semantically
+ * unclear, the Unicode position and name are enclosed in
+ * parentheses. Such legacy keysyms should be considered deprecated
+ * and are not recommended for use in future keyboard mappings.
+ *
+ * For any future extension of the keysyms with characters already
+ * found in ISO 10646 / Unicode, the following algorithm shall be
+ * used. The new keysym code position will simply be the character's
+ * Unicode number plus 0x01000000. The keysym values in the range
+ * 0x01000100 to 0x0110ffff are reserved to represent Unicode
+ * characters in the range U+0100 to U+10FFFF.
+ *
+ * While most newer Unicode-based X11 clients do already accept
+ * Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
+ * will remain necessary for clients -- in the interest of
+ * compatibility with existing servers -- to also understand the
+ * existing legacy keysym values in the range 0x0100 to 0x20ff.
+ *
+ * Where several mnemonic names are defined for the same keysym in this
+ * file, all but the first one listed should be considered deprecated.
+ *
+ * Mnemonic names for keysyms are defined in this file with lines
+ * that match one of these Perl regular expressions:
+ *
+ * /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/
+ * /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
+ * /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
+ *
+ * Before adding new keysyms, please do consider the following: In
+ * addition to the keysym names defined in this file, the
+ * XStringToKeysym() and XKeysymToString() functions will also handle
+ * any keysym string of the form "U0020" to "U007E" and "U00A0" to
+ * "U10FFFF" for all possible Unicode characters. In other words,
+ * every possible Unicode character has already a keysym string
+ * defined algorithmically, even if it is not listed here. Therefore,
+ * defining an additional keysym macro is only necessary where a
+ * non-hexadecimal mnemonic name is needed, or where the new keysym
+ * does not represent any existing Unicode character.
+ *
+ * When adding new keysyms to this file, do not forget to also update the
+ * following:
+ *
+ * - the mappings in src/KeyBind.c in the repo
+ * git://anongit.freedesktop.org/xorg/lib/libX11
+ *
+ * - the protocol specification in specs/XProtocol/X11.keysyms
+ * in the repo git://anongit.freedesktop.org/xorg/doc/xorg-docs
+ *
+ */
+
+#define XK_VoidSymbol 0xffffff /* Void symbol */
+
+
+/*
+ * TTY function keys, cleverly chosen to map to ASCII, for convenience of
+ * programming, but could have been arbitrary (at the cost of lookup
+ * tables in client code).
+ */
+
+#define XK_BackSpace 0xff08 /* Back space, back char */
+#define XK_Tab 0xff09
+#define XK_Linefeed 0xff0a /* Linefeed, LF */
+#define XK_Clear 0xff0b
+#define XK_Return 0xff0d /* Return, enter */
+#define XK_Pause 0xff13 /* Pause, hold */
+#define XK_Scroll_Lock 0xff14
+#define XK_Sys_Req 0xff15
+#define XK_Escape 0xff1b
+#define XK_Delete 0xffff /* Delete, rubout */
+
+
+
+/* International & multi-key character composition */
+
+#define XK_Multi_key 0xff20 /* Multi-key character compose */
+#define XK_Codeinput 0xff37
+#define XK_SingleCandidate 0xff3c
+#define XK_MultipleCandidate 0xff3d
+#define XK_PreviousCandidate 0xff3e
+
+/* Japanese keyboard support */
+
+#define XK_Kanji 0xff21 /* Kanji, Kanji convert */
+#define XK_Muhenkan 0xff22 /* Cancel Conversion */
+#define XK_Henkan_Mode 0xff23 /* Start/Stop Conversion */
+#define XK_Henkan 0xff23 /* Alias for Henkan_Mode */
+#define XK_Romaji 0xff24 /* to Romaji */
+#define XK_Hiragana 0xff25 /* to Hiragana */
+#define XK_Katakana 0xff26 /* to Katakana */
+#define XK_Hiragana_Katakana 0xff27 /* Hiragana/Katakana toggle */
+#define XK_Zenkaku 0xff28 /* to Zenkaku */
+#define XK_Hankaku 0xff29 /* to Hankaku */
+#define XK_Zenkaku_Hankaku 0xff2a /* Zenkaku/Hankaku toggle */
+#define XK_Touroku 0xff2b /* Add to Dictionary */
+#define XK_Massyo 0xff2c /* Delete from Dictionary */
+#define XK_Kana_Lock 0xff2d /* Kana Lock */
+#define XK_Kana_Shift 0xff2e /* Kana Shift */
+#define XK_Eisu_Shift 0xff2f /* Alphanumeric Shift */
+#define XK_Eisu_toggle 0xff30 /* Alphanumeric toggle */
+#define XK_Kanji_Bangou 0xff37 /* Codeinput */
+#define XK_Zen_Koho 0xff3d /* Multiple/All Candidate(s) */
+#define XK_Mae_Koho 0xff3e /* Previous Candidate */
+
+/* 0xff31 thru 0xff3f are under XK_KOREAN */
+
+/* Cursor control & motion */
+
+#define XK_Home 0xff50
+#define XK_Left 0xff51 /* Move left, left arrow */
+#define XK_Up 0xff52 /* Move up, up arrow */
+#define XK_Right 0xff53 /* Move right, right arrow */
+#define XK_Down 0xff54 /* Move down, down arrow */
+#define XK_Prior 0xff55 /* Prior, previous */
+#define XK_Page_Up 0xff55
+#define XK_Next 0xff56 /* Next */
+#define XK_Page_Down 0xff56
+#define XK_End 0xff57 /* EOL */
+#define XK_Begin 0xff58 /* BOL */
+
+
+/* Misc functions */
+
+#define XK_Select 0xff60 /* Select, mark */
+#define XK_Print 0xff61
+#define XK_Execute 0xff62 /* Execute, run, do */
+#define XK_Insert 0xff63 /* Insert, insert here */
+#define XK_Undo 0xff65
+#define XK_Redo 0xff66 /* Redo, again */
+#define XK_Menu 0xff67
+#define XK_Find 0xff68 /* Find, search */
+#define XK_Cancel 0xff69 /* Cancel, stop, abort, exit */
+#define XK_Help 0xff6a /* Help */
+#define XK_Break 0xff6b
+#define XK_Mode_switch 0xff7e /* Character set switch */
+#define XK_script_switch 0xff7e /* Alias for mode_switch */
+#define XK_Num_Lock 0xff7f
+
+/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
+
+#define XK_KP_Space 0xff80 /* Space */
+#define XK_KP_Tab 0xff89
+#define XK_KP_Enter 0xff8d /* Enter */
+#define XK_KP_F1 0xff91 /* PF1, KP_A, ... */
+#define XK_KP_F2 0xff92
+#define XK_KP_F3 0xff93
+#define XK_KP_F4 0xff94
+#define XK_KP_Home 0xff95
+#define XK_KP_Left 0xff96
+#define XK_KP_Up 0xff97
+#define XK_KP_Right 0xff98
+#define XK_KP_Down 0xff99
+#define XK_KP_Prior 0xff9a
+#define XK_KP_Page_Up 0xff9a
+#define XK_KP_Next 0xff9b
+#define XK_KP_Page_Down 0xff9b
+#define XK_KP_End 0xff9c
+#define XK_KP_Begin 0xff9d
+#define XK_KP_Insert 0xff9e
+#define XK_KP_Delete 0xff9f
+#define XK_KP_Equal 0xffbd /* Equals */
+#define XK_KP_Multiply 0xffaa
+#define XK_KP_Add 0xffab
+#define XK_KP_Separator 0xffac /* Separator, often comma */
+#define XK_KP_Subtract 0xffad
+#define XK_KP_Decimal 0xffae
+#define XK_KP_Divide 0xffaf
+
+#define XK_KP_0 0xffb0
+#define XK_KP_1 0xffb1
+#define XK_KP_2 0xffb2
+#define XK_KP_3 0xffb3
+#define XK_KP_4 0xffb4
+#define XK_KP_5 0xffb5
+#define XK_KP_6 0xffb6
+#define XK_KP_7 0xffb7
+#define XK_KP_8 0xffb8
+#define XK_KP_9 0xffb9
+
+
+
+/*
+ * Auxiliary functions; note the duplicate definitions for left and right
+ * function keys; Sun keyboards and a few other manufacturers have such
+ * function key groups on the left and/or right sides of the keyboard.
+ * We've not found a keyboard with more than 35 function keys total.
+ */
+
+#define XK_F1 0xffbe
+#define XK_F2 0xffbf
+#define XK_F3 0xffc0
+#define XK_F4 0xffc1
+#define XK_F5 0xffc2
+#define XK_F6 0xffc3
+#define XK_F7 0xffc4
+#define XK_F8 0xffc5
+#define XK_F9 0xffc6
+#define XK_F10 0xffc7
+#define XK_F11 0xffc8
+#define XK_L1 0xffc8
+#define XK_F12 0xffc9
+#define XK_L2 0xffc9
+#define XK_F13 0xffca
+#define XK_L3 0xffca
+#define XK_F14 0xffcb
+#define XK_L4 0xffcb
+#define XK_F15 0xffcc
+#define XK_L5 0xffcc
+#define XK_F16 0xffcd
+#define XK_L6 0xffcd
+#define XK_F17 0xffce
+#define XK_L7 0xffce
+#define XK_F18 0xffcf
+#define XK_L8 0xffcf
+#define XK_F19 0xffd0
+#define XK_L9 0xffd0
+#define XK_F20 0xffd1
+#define XK_L10 0xffd1
+#define XK_F21 0xffd2
+#define XK_R1 0xffd2
+#define XK_F22 0xffd3
+#define XK_R2 0xffd3
+#define XK_F23 0xffd4
+#define XK_R3 0xffd4
+#define XK_F24 0xffd5
+#define XK_R4 0xffd5
+#define XK_F25 0xffd6
+#define XK_R5 0xffd6
+#define XK_F26 0xffd7
+#define XK_R6 0xffd7
+#define XK_F27 0xffd8
+#define XK_R7 0xffd8
+#define XK_F28 0xffd9
+#define XK_R8 0xffd9
+#define XK_F29 0xffda
+#define XK_R9 0xffda
+#define XK_F30 0xffdb
+#define XK_R10 0xffdb
+#define XK_F31 0xffdc
+#define XK_R11 0xffdc
+#define XK_F32 0xffdd
+#define XK_R12 0xffdd
+#define XK_F33 0xffde
+#define XK_R13 0xffde
+#define XK_F34 0xffdf
+#define XK_R14 0xffdf
+#define XK_F35 0xffe0
+#define XK_R15 0xffe0
+
+/* Modifiers */
+
+#define XK_Shift_L 0xffe1 /* Left shift */
+#define XK_Shift_R 0xffe2 /* Right shift */
+#define XK_Control_L 0xffe3 /* Left control */
+#define XK_Control_R 0xffe4 /* Right control */
+#define XK_Caps_Lock 0xffe5 /* Caps lock */
+#define XK_Shift_Lock 0xffe6 /* Shift lock */
+
+#define XK_Meta_L 0xffe7 /* Left meta */
+#define XK_Meta_R 0xffe8 /* Right meta */
+#define XK_Alt_L 0xffe9 /* Left alt */
+#define XK_Alt_R 0xffea /* Right alt */
+#define XK_Super_L 0xffeb /* Left super */
+#define XK_Super_R 0xffec /* Right super */
+#define XK_Hyper_L 0xffed /* Left hyper */
+#define XK_Hyper_R 0xffee /* Right hyper */
+/* XK_MISCELLANY */
+
+/*
+ * Keyboard (XKB) Extension function and modifier keys
+ * (from Appendix C of "The X Keyboard Extension: Protocol Specification")
+ * Byte 3 = 0xfe
+ */
+
+
+#define XK_ISO_Lock 0xfe01
+#define XK_ISO_Level2_Latch 0xfe02
+#define XK_ISO_Level3_Shift 0xfe03
+#define XK_ISO_Level3_Latch 0xfe04
+#define XK_ISO_Level3_Lock 0xfe05
+#define XK_ISO_Level5_Shift 0xfe11
+#define XK_ISO_Level5_Latch 0xfe12
+#define XK_ISO_Level5_Lock 0xfe13
+#define XK_ISO_Group_Shift 0xff7e /* Alias for mode_switch */
+#define XK_ISO_Group_Latch 0xfe06
+#define XK_ISO_Group_Lock 0xfe07
+#define XK_ISO_Next_Group 0xfe08
+#define XK_ISO_Next_Group_Lock 0xfe09
+#define XK_ISO_Prev_Group 0xfe0a
+#define XK_ISO_Prev_Group_Lock 0xfe0b
+#define XK_ISO_First_Group 0xfe0c
+#define XK_ISO_First_Group_Lock 0xfe0d
+#define XK_ISO_Last_Group 0xfe0e
+#define XK_ISO_Last_Group_Lock 0xfe0f
+
+#define XK_ISO_Left_Tab 0xfe20
+#define XK_ISO_Move_Line_Up 0xfe21
+#define XK_ISO_Move_Line_Down 0xfe22
+#define XK_ISO_Partial_Line_Up 0xfe23
+#define XK_ISO_Partial_Line_Down 0xfe24
+#define XK_ISO_Partial_Space_Left 0xfe25
+#define XK_ISO_Partial_Space_Right 0xfe26
+#define XK_ISO_Set_Margin_Left 0xfe27
+#define XK_ISO_Set_Margin_Right 0xfe28
+#define XK_ISO_Release_Margin_Left 0xfe29
+#define XK_ISO_Release_Margin_Right 0xfe2a
+#define XK_ISO_Release_Both_Margins 0xfe2b
+#define XK_ISO_Fast_Cursor_Left 0xfe2c
+#define XK_ISO_Fast_Cursor_Right 0xfe2d
+#define XK_ISO_Fast_Cursor_Up 0xfe2e
+#define XK_ISO_Fast_Cursor_Down 0xfe2f
+#define XK_ISO_Continuous_Underline 0xfe30
+#define XK_ISO_Discontinuous_Underline 0xfe31
+#define XK_ISO_Emphasize 0xfe32
+#define XK_ISO_Center_Object 0xfe33
+#define XK_ISO_Enter 0xfe34
+
+#define XK_dead_grave 0xfe50
+#define XK_dead_acute 0xfe51
+#define XK_dead_circumflex 0xfe52
+#define XK_dead_tilde 0xfe53
+#define XK_dead_perispomeni 0xfe53 /* alias for dead_tilde */
+#define XK_dead_macron 0xfe54
+#define XK_dead_breve 0xfe55
+#define XK_dead_abovedot 0xfe56
+#define XK_dead_diaeresis 0xfe57
+#define XK_dead_abovering 0xfe58
+#define XK_dead_doubleacute 0xfe59
+#define XK_dead_caron 0xfe5a
+#define XK_dead_cedilla 0xfe5b
+#define XK_dead_ogonek 0xfe5c
+#define XK_dead_iota 0xfe5d
+#define XK_dead_voiced_sound 0xfe5e
+#define XK_dead_semivoiced_sound 0xfe5f
+#define XK_dead_belowdot 0xfe60
+#define XK_dead_hook 0xfe61
+#define XK_dead_horn 0xfe62
+#define XK_dead_stroke 0xfe63
+#define XK_dead_abovecomma 0xfe64
+#define XK_dead_psili 0xfe64 /* alias for dead_abovecomma */
+#define XK_dead_abovereversedcomma 0xfe65
+#define XK_dead_dasia 0xfe65 /* alias for dead_abovereversedcomma */
+#define XK_dead_doublegrave 0xfe66
+#define XK_dead_belowring 0xfe67
+#define XK_dead_belowmacron 0xfe68
+#define XK_dead_belowcircumflex 0xfe69
+#define XK_dead_belowtilde 0xfe6a
+#define XK_dead_belowbreve 0xfe6b
+#define XK_dead_belowdiaeresis 0xfe6c
+#define XK_dead_invertedbreve 0xfe6d
+#define XK_dead_belowcomma 0xfe6e
+#define XK_dead_currency 0xfe6f
+
+/* dead vowels for universal syllable entry */
+#define XK_dead_a 0xfe80
+#define XK_dead_A 0xfe81
+#define XK_dead_e 0xfe82
+#define XK_dead_E 0xfe83
+#define XK_dead_i 0xfe84
+#define XK_dead_I 0xfe85
+#define XK_dead_o 0xfe86
+#define XK_dead_O 0xfe87
+#define XK_dead_u 0xfe88
+#define XK_dead_U 0xfe89
+#define XK_dead_small_schwa 0xfe8a
+#define XK_dead_capital_schwa 0xfe8b
+
+#define XK_First_Virtual_Screen 0xfed0
+#define XK_Prev_Virtual_Screen 0xfed1
+#define XK_Next_Virtual_Screen 0xfed2
+#define XK_Last_Virtual_Screen 0xfed4
+#define XK_Terminate_Server 0xfed5
+
+#define XK_AccessX_Enable 0xfe70
+#define XK_AccessX_Feedback_Enable 0xfe71
+#define XK_RepeatKeys_Enable 0xfe72
+#define XK_SlowKeys_Enable 0xfe73
+#define XK_BounceKeys_Enable 0xfe74
+#define XK_StickyKeys_Enable 0xfe75
+#define XK_MouseKeys_Enable 0xfe76
+#define XK_MouseKeys_Accel_Enable 0xfe77
+#define XK_Overlay1_Enable 0xfe78
+#define XK_Overlay2_Enable 0xfe79
+#define XK_AudibleBell_Enable 0xfe7a
+
+#define XK_Pointer_Left 0xfee0
+#define XK_Pointer_Right 0xfee1
+#define XK_Pointer_Up 0xfee2
+#define XK_Pointer_Down 0xfee3
+#define XK_Pointer_UpLeft 0xfee4
+#define XK_Pointer_UpRight 0xfee5
+#define XK_Pointer_DownLeft 0xfee6
+#define XK_Pointer_DownRight 0xfee7
+#define XK_Pointer_Button_Dflt 0xfee8
+#define XK_Pointer_Button1 0xfee9
+#define XK_Pointer_Button2 0xfeea
+#define XK_Pointer_Button3 0xfeeb
+#define XK_Pointer_Button4 0xfeec
+#define XK_Pointer_Button5 0xfeed
+#define XK_Pointer_DblClick_Dflt 0xfeee
+#define XK_Pointer_DblClick1 0xfeef
+#define XK_Pointer_DblClick2 0xfef0
+#define XK_Pointer_DblClick3 0xfef1
+#define XK_Pointer_DblClick4 0xfef2
+#define XK_Pointer_DblClick5 0xfef3
+#define XK_Pointer_Drag_Dflt 0xfef4
+#define XK_Pointer_Drag1 0xfef5
+#define XK_Pointer_Drag2 0xfef6
+#define XK_Pointer_Drag3 0xfef7
+#define XK_Pointer_Drag4 0xfef8
+#define XK_Pointer_Drag5 0xfefd
+
+#define XK_Pointer_EnableKeys 0xfef9
+#define XK_Pointer_Accelerate 0xfefa
+#define XK_Pointer_DfltBtnNext 0xfefb
+#define XK_Pointer_DfltBtnPrev 0xfefc
+
+/* XK_XKB_KEYS */
+
+/*
+ * 3270 Terminal Keys
+ * Byte 3 = 0xfd
+ */
+
+/* XK_3270 */
+# 519 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Latin 1
+ * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
+ * Byte 3 = 0
+ */
+
+#define XK_space 0x0020 /* U+0020 SPACE */
+#define XK_exclam 0x0021 /* U+0021 EXCLAMATION MARK */
+#define XK_quotedbl 0x0022 /* U+0022 QUOTATION MARK */
+#define XK_numbersign 0x0023 /* U+0023 NUMBER SIGN */
+#define XK_dollar 0x0024 /* U+0024 DOLLAR SIGN */
+#define XK_percent 0x0025 /* U+0025 PERCENT SIGN */
+#define XK_ampersand 0x0026 /* U+0026 AMPERSAND */
+#define XK_apostrophe 0x0027 /* U+0027 APOSTROPHE */
+#define XK_quoteright 0x0027 /* deprecated */
+#define XK_parenleft 0x0028 /* U+0028 LEFT PARENTHESIS */
+#define XK_parenright 0x0029 /* U+0029 RIGHT PARENTHESIS */
+#define XK_asterisk 0x002a /* U+002A ASTERISK */
+#define XK_plus 0x002b /* U+002B PLUS SIGN */
+#define XK_comma 0x002c /* U+002C COMMA */
+#define XK_minus 0x002d /* U+002D HYPHEN-MINUS */
+#define XK_period 0x002e /* U+002E FULL STOP */
+#define XK_slash 0x002f /* U+002F SOLIDUS */
+#define XK_0 0x0030 /* U+0030 DIGIT ZERO */
+#define XK_1 0x0031 /* U+0031 DIGIT ONE */
+#define XK_2 0x0032 /* U+0032 DIGIT TWO */
+#define XK_3 0x0033 /* U+0033 DIGIT THREE */
+#define XK_4 0x0034 /* U+0034 DIGIT FOUR */
+#define XK_5 0x0035 /* U+0035 DIGIT FIVE */
+#define XK_6 0x0036 /* U+0036 DIGIT SIX */
+#define XK_7 0x0037 /* U+0037 DIGIT SEVEN */
+#define XK_8 0x0038 /* U+0038 DIGIT EIGHT */
+#define XK_9 0x0039 /* U+0039 DIGIT NINE */
+#define XK_colon 0x003a /* U+003A COLON */
+#define XK_semicolon 0x003b /* U+003B SEMICOLON */
+#define XK_less 0x003c /* U+003C LESS-THAN SIGN */
+#define XK_equal 0x003d /* U+003D EQUALS SIGN */
+#define XK_greater 0x003e /* U+003E GREATER-THAN SIGN */
+#define XK_question 0x003f /* U+003F QUESTION MARK */
+#define XK_at 0x0040 /* U+0040 COMMERCIAL AT */
+#define XK_A 0x0041 /* U+0041 LATIN CAPITAL LETTER A */
+#define XK_B 0x0042 /* U+0042 LATIN CAPITAL LETTER B */
+#define XK_C 0x0043 /* U+0043 LATIN CAPITAL LETTER C */
+#define XK_D 0x0044 /* U+0044 LATIN CAPITAL LETTER D */
+#define XK_E 0x0045 /* U+0045 LATIN CAPITAL LETTER E */
+#define XK_F 0x0046 /* U+0046 LATIN CAPITAL LETTER F */
+#define XK_G 0x0047 /* U+0047 LATIN CAPITAL LETTER G */
+#define XK_H 0x0048 /* U+0048 LATIN CAPITAL LETTER H */
+#define XK_I 0x0049 /* U+0049 LATIN CAPITAL LETTER I */
+#define XK_J 0x004a /* U+004A LATIN CAPITAL LETTER J */
+#define XK_K 0x004b /* U+004B LATIN CAPITAL LETTER K */
+#define XK_L 0x004c /* U+004C LATIN CAPITAL LETTER L */
+#define XK_M 0x004d /* U+004D LATIN CAPITAL LETTER M */
+#define XK_N 0x004e /* U+004E LATIN CAPITAL LETTER N */
+#define XK_O 0x004f /* U+004F LATIN CAPITAL LETTER O */
+#define XK_P 0x0050 /* U+0050 LATIN CAPITAL LETTER P */
+#define XK_Q 0x0051 /* U+0051 LATIN CAPITAL LETTER Q */
+#define XK_R 0x0052 /* U+0052 LATIN CAPITAL LETTER R */
+#define XK_S 0x0053 /* U+0053 LATIN CAPITAL LETTER S */
+#define XK_T 0x0054 /* U+0054 LATIN CAPITAL LETTER T */
+#define XK_U 0x0055 /* U+0055 LATIN CAPITAL LETTER U */
+#define XK_V 0x0056 /* U+0056 LATIN CAPITAL LETTER V */
+#define XK_W 0x0057 /* U+0057 LATIN CAPITAL LETTER W */
+#define XK_X 0x0058 /* U+0058 LATIN CAPITAL LETTER X */
+#define XK_Y 0x0059 /* U+0059 LATIN CAPITAL LETTER Y */
+#define XK_Z 0x005a /* U+005A LATIN CAPITAL LETTER Z */
+#define XK_bracketleft 0x005b /* U+005B LEFT SQUARE BRACKET */
+#define XK_backslash 0x005c /* U+005C REVERSE SOLIDUS */
+#define XK_bracketright 0x005d /* U+005D RIGHT SQUARE BRACKET */
+#define XK_asciicircum 0x005e /* U+005E CIRCUMFLEX ACCENT */
+#define XK_underscore 0x005f /* U+005F LOW LINE */
+#define XK_grave 0x0060 /* U+0060 GRAVE ACCENT */
+#define XK_quoteleft 0x0060 /* deprecated */
+#define XK_a 0x0061 /* U+0061 LATIN SMALL LETTER A */
+#define XK_b 0x0062 /* U+0062 LATIN SMALL LETTER B */
+#define XK_c 0x0063 /* U+0063 LATIN SMALL LETTER C */
+#define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
+#define XK_e 0x0065 /* U+0065 LATIN SMALL LETTER E */
+#define XK_f 0x0066 /* U+0066 LATIN SMALL LETTER F */
+#define XK_g 0x0067 /* U+0067 LATIN SMALL LETTER G */
+#define XK_h 0x0068 /* U+0068 LATIN SMALL LETTER H */
+#define XK_i 0x0069 /* U+0069 LATIN SMALL LETTER I */
+#define XK_j 0x006a /* U+006A LATIN SMALL LETTER J */
+#define XK_k 0x006b /* U+006B LATIN SMALL LETTER K */
+#define XK_l 0x006c /* U+006C LATIN SMALL LETTER L */
+#define XK_m 0x006d /* U+006D LATIN SMALL LETTER M */
+#define XK_n 0x006e /* U+006E LATIN SMALL LETTER N */
+#define XK_o 0x006f /* U+006F LATIN SMALL LETTER O */
+#define XK_p 0x0070 /* U+0070 LATIN SMALL LETTER P */
+#define XK_q 0x0071 /* U+0071 LATIN SMALL LETTER Q */
+#define XK_r 0x0072 /* U+0072 LATIN SMALL LETTER R */
+#define XK_s 0x0073 /* U+0073 LATIN SMALL LETTER S */
+#define XK_t 0x0074 /* U+0074 LATIN SMALL LETTER T */
+#define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
+#define XK_v 0x0076 /* U+0076 LATIN SMALL LETTER V */
+#define XK_w 0x0077 /* U+0077 LATIN SMALL LETTER W */
+#define XK_x 0x0078 /* U+0078 LATIN SMALL LETTER X */
+#define XK_y 0x0079 /* U+0079 LATIN SMALL LETTER Y */
+#define XK_z 0x007a /* U+007A LATIN SMALL LETTER Z */
+#define XK_braceleft 0x007b /* U+007B LEFT CURLY BRACKET */
+#define XK_bar 0x007c /* U+007C VERTICAL LINE */
+#define XK_braceright 0x007d /* U+007D RIGHT CURLY BRACKET */
+#define XK_asciitilde 0x007e /* U+007E TILDE */
+
+#define XK_nobreakspace 0x00a0 /* U+00A0 NO-BREAK SPACE */
+#define XK_exclamdown 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */
+#define XK_cent 0x00a2 /* U+00A2 CENT SIGN */
+#define XK_sterling 0x00a3 /* U+00A3 POUND SIGN */
+#define XK_currency 0x00a4 /* U+00A4 CURRENCY SIGN */
+#define XK_yen 0x00a5 /* U+00A5 YEN SIGN */
+#define XK_brokenbar 0x00a6 /* U+00A6 BROKEN BAR */
+#define XK_section 0x00a7 /* U+00A7 SECTION SIGN */
+#define XK_diaeresis 0x00a8 /* U+00A8 DIAERESIS */
+#define XK_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */
+#define XK_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */
+#define XK_guillemotleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
+#define XK_notsign 0x00ac /* U+00AC NOT SIGN */
+#define XK_hyphen 0x00ad /* U+00AD SOFT HYPHEN */
+#define XK_registered 0x00ae /* U+00AE REGISTERED SIGN */
+#define XK_macron 0x00af /* U+00AF MACRON */
+#define XK_degree 0x00b0 /* U+00B0 DEGREE SIGN */
+#define XK_plusminus 0x00b1 /* U+00B1 PLUS-MINUS SIGN */
+#define XK_twosuperior 0x00b2 /* U+00B2 SUPERSCRIPT TWO */
+#define XK_threesuperior 0x00b3 /* U+00B3 SUPERSCRIPT THREE */
+#define XK_acute 0x00b4 /* U+00B4 ACUTE ACCENT */
+#define XK_mu 0x00b5 /* U+00B5 MICRO SIGN */
+#define XK_paragraph 0x00b6 /* U+00B6 PILCROW SIGN */
+#define XK_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */
+#define XK_cedilla 0x00b8 /* U+00B8 CEDILLA */
+#define XK_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */
+#define XK_masculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */
+#define XK_guillemotright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
+#define XK_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */
+#define XK_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */
+#define XK_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */
+#define XK_questiondown 0x00bf /* U+00BF INVERTED QUESTION MARK */
+#define XK_Agrave 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */
+#define XK_Aacute 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */
+#define XK_Acircumflex 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
+#define XK_Atilde 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */
+#define XK_Adiaeresis 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */
+#define XK_Aring 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */
+#define XK_AE 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */
+#define XK_Ccedilla 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */
+#define XK_Egrave 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */
+#define XK_Eacute 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+#define XK_Ecircumflex 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
+#define XK_Ediaeresis 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */
+#define XK_Igrave 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */
+#define XK_Iacute 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */
+#define XK_Icircumflex 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
+#define XK_Idiaeresis 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */
+#define XK_ETH 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */
+#define XK_Eth 0x00d0 /* deprecated */
+#define XK_Ntilde 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */
+#define XK_Ograve 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */
+#define XK_Oacute 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */
+#define XK_Ocircumflex 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
+#define XK_Otilde 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */
+#define XK_Odiaeresis 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */
+#define XK_multiply 0x00d7 /* U+00D7 MULTIPLICATION SIGN */
+#define XK_Oslash 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+#define XK_Ooblique 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+#define XK_Ugrave 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */
+#define XK_Uacute 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */
+#define XK_Ucircumflex 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
+#define XK_Udiaeresis 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */
+#define XK_Yacute 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */
+#define XK_THORN 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */
+#define XK_Thorn 0x00de /* deprecated */
+#define XK_ssharp 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */
+#define XK_agrave 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */
+#define XK_aacute 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */
+#define XK_acircumflex 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */
+#define XK_atilde 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */
+#define XK_adiaeresis 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */
+#define XK_aring 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */
+#define XK_ae 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */
+#define XK_ccedilla 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */
+#define XK_egrave 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */
+#define XK_eacute 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+#define XK_ecircumflex 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */
+#define XK_ediaeresis 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */
+#define XK_igrave 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */
+#define XK_iacute 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */
+#define XK_icircumflex 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */
+#define XK_idiaeresis 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */
+#define XK_eth 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */
+#define XK_ntilde 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */
+#define XK_ograve 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */
+#define XK_oacute 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */
+#define XK_ocircumflex 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */
+#define XK_otilde 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */
+#define XK_odiaeresis 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */
+#define XK_division 0x00f7 /* U+00F7 DIVISION SIGN */
+#define XK_oslash 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
+#define XK_ooblique 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
+#define XK_ugrave 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */
+#define XK_uacute 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */
+#define XK_ucircumflex 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */
+#define XK_udiaeresis 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */
+#define XK_yacute 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */
+#define XK_thorn 0x00fe /* U+00FE LATIN SMALL LETTER THORN */
+#define XK_ydiaeresis 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+/* XK_LATIN1 */
+
+/*
+ * Latin 2
+ * Byte 3 = 1
+ */
+
+
+#define XK_Aogonek 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */
+#define XK_breve 0x01a2 /* U+02D8 BREVE */
+#define XK_Lstroke 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+#define XK_Lcaron 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */
+#define XK_Sacute 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */
+#define XK_Scaron 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */
+#define XK_Scedilla 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */
+#define XK_Tcaron 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */
+#define XK_Zacute 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */
+#define XK_Zcaron 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */
+#define XK_Zabovedot 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */
+#define XK_aogonek 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */
+#define XK_ogonek 0x01b2 /* U+02DB OGONEK */
+#define XK_lstroke 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+#define XK_lcaron 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */
+#define XK_sacute 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */
+#define XK_caron 0x01b7 /* U+02C7 CARON */
+#define XK_scaron 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */
+#define XK_scedilla 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */
+#define XK_tcaron 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */
+#define XK_zacute 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */
+#define XK_doubleacute 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */
+#define XK_zcaron 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */
+#define XK_zabovedot 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */
+#define XK_Racute 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */
+#define XK_Abreve 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */
+#define XK_Lacute 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */
+#define XK_Cacute 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */
+#define XK_Ccaron 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */
+#define XK_Eogonek 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */
+#define XK_Ecaron 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */
+#define XK_Dcaron 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */
+#define XK_Dstroke 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */
+#define XK_Nacute 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */
+#define XK_Ncaron 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */
+#define XK_Odoubleacute 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
+#define XK_Rcaron 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */
+#define XK_Uring 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */
+#define XK_Udoubleacute 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
+#define XK_Tcedilla 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */
+#define XK_racute 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */
+#define XK_abreve 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */
+#define XK_lacute 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */
+#define XK_cacute 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */
+#define XK_ccaron 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */
+#define XK_eogonek 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */
+#define XK_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */
+#define XK_dcaron 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */
+#define XK_dstroke 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */
+#define XK_nacute 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */
+#define XK_ncaron 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */
+#define XK_odoubleacute 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */
+#define XK_rcaron 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */
+#define XK_uring 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */
+#define XK_udoubleacute 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */
+#define XK_tcedilla 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */
+#define XK_abovedot 0x01ff /* U+02D9 DOT ABOVE */
+/* XK_LATIN2 */
+
+/*
+ * Latin 3
+ * Byte 3 = 2
+ */
+
+
+#define XK_Hstroke 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */
+#define XK_Hcircumflex 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
+#define XK_Iabovedot 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */
+#define XK_Gbreve 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */
+#define XK_Jcircumflex 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
+#define XK_hstroke 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */
+#define XK_hcircumflex 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */
+#define XK_idotless 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */
+#define XK_gbreve 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */
+#define XK_jcircumflex 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */
+#define XK_Cabovedot 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */
+#define XK_Ccircumflex 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
+#define XK_Gabovedot 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */
+#define XK_Gcircumflex 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
+#define XK_Ubreve 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */
+#define XK_Scircumflex 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
+#define XK_cabovedot 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */
+#define XK_ccircumflex 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */
+#define XK_gabovedot 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */
+#define XK_gcircumflex 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */
+#define XK_ubreve 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */
+#define XK_scircumflex 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */
+/* XK_LATIN3 */
+
+
+/*
+ * Latin 4
+ * Byte 3 = 3
+ */
+
+
+#define XK_kra 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */
+#define XK_kappa 0x03a2 /* deprecated */
+#define XK_Rcedilla 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */
+#define XK_Itilde 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */
+#define XK_Lcedilla 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */
+#define XK_Emacron 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */
+#define XK_Gcedilla 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */
+#define XK_Tslash 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */
+#define XK_rcedilla 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */
+#define XK_itilde 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */
+#define XK_lcedilla 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */
+#define XK_emacron 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */
+#define XK_gcedilla 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */
+#define XK_tslash 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */
+#define XK_ENG 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */
+#define XK_eng 0x03bf /* U+014B LATIN SMALL LETTER ENG */
+#define XK_Amacron 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */
+#define XK_Iogonek 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */
+#define XK_Eabovedot 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */
+#define XK_Imacron 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */
+#define XK_Ncedilla 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */
+#define XK_Omacron 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */
+#define XK_Kcedilla 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */
+#define XK_Uogonek 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */
+#define XK_Utilde 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */
+#define XK_Umacron 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */
+#define XK_amacron 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */
+#define XK_iogonek 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */
+#define XK_eabovedot 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */
+#define XK_imacron 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */
+#define XK_ncedilla 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */
+#define XK_omacron 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */
+#define XK_kcedilla 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */
+#define XK_uogonek 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */
+#define XK_utilde 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */
+#define XK_umacron 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */
+/* XK_LATIN4 */
+
+/*
+ * Latin 8
+ */
+
+#define XK_Wcircumflex 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */
+#define XK_wcircumflex 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */
+#define XK_Ycircumflex 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */
+#define XK_ycircumflex 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */
+#define XK_Babovedot 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */
+#define XK_babovedot 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */
+#define XK_Dabovedot 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */
+#define XK_dabovedot 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */
+#define XK_Fabovedot 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */
+#define XK_fabovedot 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */
+#define XK_Mabovedot 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */
+#define XK_mabovedot 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */
+#define XK_Pabovedot 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */
+#define XK_pabovedot 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */
+#define XK_Sabovedot 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */
+#define XK_sabovedot 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */
+#define XK_Tabovedot 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */
+#define XK_tabovedot 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */
+#define XK_Wgrave 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */
+#define XK_wgrave 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */
+#define XK_Wacute 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */
+#define XK_wacute 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */
+#define XK_Wdiaeresis 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */
+#define XK_wdiaeresis 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */
+#define XK_Ygrave 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */
+#define XK_ygrave 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */
+/* XK_LATIN8 */
+
+/*
+ * Latin 9
+ * Byte 3 = 0x13
+ */
+
+
+#define XK_OE 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */
+#define XK_oe 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */
+#define XK_Ydiaeresis 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */
+/* XK_LATIN9 */
+
+/*
+ * Katakana
+ * Byte 3 = 4
+ */
+
+
+#define XK_overline 0x047e /* U+203E OVERLINE */
+#define XK_kana_fullstop 0x04a1 /* U+3002 IDEOGRAPHIC FULL STOP */
+#define XK_kana_openingbracket 0x04a2 /* U+300C LEFT CORNER BRACKET */
+#define XK_kana_closingbracket 0x04a3 /* U+300D RIGHT CORNER BRACKET */
+#define XK_kana_comma 0x04a4 /* U+3001 IDEOGRAPHIC COMMA */
+#define XK_kana_conjunctive 0x04a5 /* U+30FB KATAKANA MIDDLE DOT */
+#define XK_kana_middledot 0x04a5 /* deprecated */
+#define XK_kana_WO 0x04a6 /* U+30F2 KATAKANA LETTER WO */
+#define XK_kana_a 0x04a7 /* U+30A1 KATAKANA LETTER SMALL A */
+#define XK_kana_i 0x04a8 /* U+30A3 KATAKANA LETTER SMALL I */
+#define XK_kana_u 0x04a9 /* U+30A5 KATAKANA LETTER SMALL U */
+#define XK_kana_e 0x04aa /* U+30A7 KATAKANA LETTER SMALL E */
+#define XK_kana_o 0x04ab /* U+30A9 KATAKANA LETTER SMALL O */
+#define XK_kana_ya 0x04ac /* U+30E3 KATAKANA LETTER SMALL YA */
+#define XK_kana_yu 0x04ad /* U+30E5 KATAKANA LETTER SMALL YU */
+#define XK_kana_yo 0x04ae /* U+30E7 KATAKANA LETTER SMALL YO */
+#define XK_kana_tsu 0x04af /* U+30C3 KATAKANA LETTER SMALL TU */
+#define XK_kana_tu 0x04af /* deprecated */
+#define XK_prolongedsound 0x04b0 /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */
+#define XK_kana_A 0x04b1 /* U+30A2 KATAKANA LETTER A */
+#define XK_kana_I 0x04b2 /* U+30A4 KATAKANA LETTER I */
+#define XK_kana_U 0x04b3 /* U+30A6 KATAKANA LETTER U */
+#define XK_kana_E 0x04b4 /* U+30A8 KATAKANA LETTER E */
+#define XK_kana_O 0x04b5 /* U+30AA KATAKANA LETTER O */
+#define XK_kana_KA 0x04b6 /* U+30AB KATAKANA LETTER KA */
+#define XK_kana_KI 0x04b7 /* U+30AD KATAKANA LETTER KI */
+#define XK_kana_KU 0x04b8 /* U+30AF KATAKANA LETTER KU */
+#define XK_kana_KE 0x04b9 /* U+30B1 KATAKANA LETTER KE */
+#define XK_kana_KO 0x04ba /* U+30B3 KATAKANA LETTER KO */
+#define XK_kana_SA 0x04bb /* U+30B5 KATAKANA LETTER SA */
+#define XK_kana_SHI 0x04bc /* U+30B7 KATAKANA LETTER SI */
+#define XK_kana_SU 0x04bd /* U+30B9 KATAKANA LETTER SU */
+#define XK_kana_SE 0x04be /* U+30BB KATAKANA LETTER SE */
+#define XK_kana_SO 0x04bf /* U+30BD KATAKANA LETTER SO */
+#define XK_kana_TA 0x04c0 /* U+30BF KATAKANA LETTER TA */
+#define XK_kana_CHI 0x04c1 /* U+30C1 KATAKANA LETTER TI */
+#define XK_kana_TI 0x04c1 /* deprecated */
+#define XK_kana_TSU 0x04c2 /* U+30C4 KATAKANA LETTER TU */
+#define XK_kana_TU 0x04c2 /* deprecated */
+#define XK_kana_TE 0x04c3 /* U+30C6 KATAKANA LETTER TE */
+#define XK_kana_TO 0x04c4 /* U+30C8 KATAKANA LETTER TO */
+#define XK_kana_NA 0x04c5 /* U+30CA KATAKANA LETTER NA */
+#define XK_kana_NI 0x04c6 /* U+30CB KATAKANA LETTER NI */
+#define XK_kana_NU 0x04c7 /* U+30CC KATAKANA LETTER NU */
+#define XK_kana_NE 0x04c8 /* U+30CD KATAKANA LETTER NE */
+#define XK_kana_NO 0x04c9 /* U+30CE KATAKANA LETTER NO */
+#define XK_kana_HA 0x04ca /* U+30CF KATAKANA LETTER HA */
+#define XK_kana_HI 0x04cb /* U+30D2 KATAKANA LETTER HI */
+#define XK_kana_FU 0x04cc /* U+30D5 KATAKANA LETTER HU */
+#define XK_kana_HU 0x04cc /* deprecated */
+#define XK_kana_HE 0x04cd /* U+30D8 KATAKANA LETTER HE */
+#define XK_kana_HO 0x04ce /* U+30DB KATAKANA LETTER HO */
+#define XK_kana_MA 0x04cf /* U+30DE KATAKANA LETTER MA */
+#define XK_kana_MI 0x04d0 /* U+30DF KATAKANA LETTER MI */
+#define XK_kana_MU 0x04d1 /* U+30E0 KATAKANA LETTER MU */
+#define XK_kana_ME 0x04d2 /* U+30E1 KATAKANA LETTER ME */
+#define XK_kana_MO 0x04d3 /* U+30E2 KATAKANA LETTER MO */
+#define XK_kana_YA 0x04d4 /* U+30E4 KATAKANA LETTER YA */
+#define XK_kana_YU 0x04d5 /* U+30E6 KATAKANA LETTER YU */
+#define XK_kana_YO 0x04d6 /* U+30E8 KATAKANA LETTER YO */
+#define XK_kana_RA 0x04d7 /* U+30E9 KATAKANA LETTER RA */
+#define XK_kana_RI 0x04d8 /* U+30EA KATAKANA LETTER RI */
+#define XK_kana_RU 0x04d9 /* U+30EB KATAKANA LETTER RU */
+#define XK_kana_RE 0x04da /* U+30EC KATAKANA LETTER RE */
+#define XK_kana_RO 0x04db /* U+30ED KATAKANA LETTER RO */
+#define XK_kana_WA 0x04dc /* U+30EF KATAKANA LETTER WA */
+#define XK_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */
+#define XK_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
+#define XK_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+#define XK_kana_switch 0xff7e /* Alias for mode_switch */
+/* XK_KATAKANA */
+
+/*
+ * Arabic
+ * Byte 3 = 5
+ */
+
+
+#define XK_Farsi_0 0x10006f0 /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */
+#define XK_Farsi_1 0x10006f1 /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */
+#define XK_Farsi_2 0x10006f2 /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */
+#define XK_Farsi_3 0x10006f3 /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */
+#define XK_Farsi_4 0x10006f4 /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */
+#define XK_Farsi_5 0x10006f5 /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */
+#define XK_Farsi_6 0x10006f6 /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */
+#define XK_Farsi_7 0x10006f7 /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */
+#define XK_Farsi_8 0x10006f8 /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */
+#define XK_Farsi_9 0x10006f9 /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */
+#define XK_Arabic_percent 0x100066a /* U+066A ARABIC PERCENT SIGN */
+#define XK_Arabic_superscript_alef 0x1000670 /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */
+#define XK_Arabic_tteh 0x1000679 /* U+0679 ARABIC LETTER TTEH */
+#define XK_Arabic_peh 0x100067e /* U+067E ARABIC LETTER PEH */
+#define XK_Arabic_tcheh 0x1000686 /* U+0686 ARABIC LETTER TCHEH */
+#define XK_Arabic_ddal 0x1000688 /* U+0688 ARABIC LETTER DDAL */
+#define XK_Arabic_rreh 0x1000691 /* U+0691 ARABIC LETTER RREH */
+#define XK_Arabic_comma 0x05ac /* U+060C ARABIC COMMA */
+#define XK_Arabic_fullstop 0x10006d4 /* U+06D4 ARABIC FULL STOP */
+#define XK_Arabic_0 0x1000660 /* U+0660 ARABIC-INDIC DIGIT ZERO */
+#define XK_Arabic_1 0x1000661 /* U+0661 ARABIC-INDIC DIGIT ONE */
+#define XK_Arabic_2 0x1000662 /* U+0662 ARABIC-INDIC DIGIT TWO */
+#define XK_Arabic_3 0x1000663 /* U+0663 ARABIC-INDIC DIGIT THREE */
+#define XK_Arabic_4 0x1000664 /* U+0664 ARABIC-INDIC DIGIT FOUR */
+#define XK_Arabic_5 0x1000665 /* U+0665 ARABIC-INDIC DIGIT FIVE */
+#define XK_Arabic_6 0x1000666 /* U+0666 ARABIC-INDIC DIGIT SIX */
+#define XK_Arabic_7 0x1000667 /* U+0667 ARABIC-INDIC DIGIT SEVEN */
+#define XK_Arabic_8 0x1000668 /* U+0668 ARABIC-INDIC DIGIT EIGHT */
+#define XK_Arabic_9 0x1000669 /* U+0669 ARABIC-INDIC DIGIT NINE */
+#define XK_Arabic_semicolon 0x05bb /* U+061B ARABIC SEMICOLON */
+#define XK_Arabic_question_mark 0x05bf /* U+061F ARABIC QUESTION MARK */
+#define XK_Arabic_hamza 0x05c1 /* U+0621 ARABIC LETTER HAMZA */
+#define XK_Arabic_maddaonalef 0x05c2 /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */
+#define XK_Arabic_hamzaonalef 0x05c3 /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */
+#define XK_Arabic_hamzaonwaw 0x05c4 /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */
+#define XK_Arabic_hamzaunderalef 0x05c5 /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */
+#define XK_Arabic_hamzaonyeh 0x05c6 /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */
+#define XK_Arabic_alef 0x05c7 /* U+0627 ARABIC LETTER ALEF */
+#define XK_Arabic_beh 0x05c8 /* U+0628 ARABIC LETTER BEH */
+#define XK_Arabic_tehmarbuta 0x05c9 /* U+0629 ARABIC LETTER TEH MARBUTA */
+#define XK_Arabic_teh 0x05ca /* U+062A ARABIC LETTER TEH */
+#define XK_Arabic_theh 0x05cb /* U+062B ARABIC LETTER THEH */
+#define XK_Arabic_jeem 0x05cc /* U+062C ARABIC LETTER JEEM */
+#define XK_Arabic_hah 0x05cd /* U+062D ARABIC LETTER HAH */
+#define XK_Arabic_khah 0x05ce /* U+062E ARABIC LETTER KHAH */
+#define XK_Arabic_dal 0x05cf /* U+062F ARABIC LETTER DAL */
+#define XK_Arabic_thal 0x05d0 /* U+0630 ARABIC LETTER THAL */
+#define XK_Arabic_ra 0x05d1 /* U+0631 ARABIC LETTER REH */
+#define XK_Arabic_zain 0x05d2 /* U+0632 ARABIC LETTER ZAIN */
+#define XK_Arabic_seen 0x05d3 /* U+0633 ARABIC LETTER SEEN */
+#define XK_Arabic_sheen 0x05d4 /* U+0634 ARABIC LETTER SHEEN */
+#define XK_Arabic_sad 0x05d5 /* U+0635 ARABIC LETTER SAD */
+#define XK_Arabic_dad 0x05d6 /* U+0636 ARABIC LETTER DAD */
+#define XK_Arabic_tah 0x05d7 /* U+0637 ARABIC LETTER TAH */
+#define XK_Arabic_zah 0x05d8 /* U+0638 ARABIC LETTER ZAH */
+#define XK_Arabic_ain 0x05d9 /* U+0639 ARABIC LETTER AIN */
+#define XK_Arabic_ghain 0x05da /* U+063A ARABIC LETTER GHAIN */
+#define XK_Arabic_tatweel 0x05e0 /* U+0640 ARABIC TATWEEL */
+#define XK_Arabic_feh 0x05e1 /* U+0641 ARABIC LETTER FEH */
+#define XK_Arabic_qaf 0x05e2 /* U+0642 ARABIC LETTER QAF */
+#define XK_Arabic_kaf 0x05e3 /* U+0643 ARABIC LETTER KAF */
+#define XK_Arabic_lam 0x05e4 /* U+0644 ARABIC LETTER LAM */
+#define XK_Arabic_meem 0x05e5 /* U+0645 ARABIC LETTER MEEM */
+#define XK_Arabic_noon 0x05e6 /* U+0646 ARABIC LETTER NOON */
+#define XK_Arabic_ha 0x05e7 /* U+0647 ARABIC LETTER HEH */
+#define XK_Arabic_heh 0x05e7 /* deprecated */
+#define XK_Arabic_waw 0x05e8 /* U+0648 ARABIC LETTER WAW */
+#define XK_Arabic_alefmaksura 0x05e9 /* U+0649 ARABIC LETTER ALEF MAKSURA */
+#define XK_Arabic_yeh 0x05ea /* U+064A ARABIC LETTER YEH */
+#define XK_Arabic_fathatan 0x05eb /* U+064B ARABIC FATHATAN */
+#define XK_Arabic_dammatan 0x05ec /* U+064C ARABIC DAMMATAN */
+#define XK_Arabic_kasratan 0x05ed /* U+064D ARABIC KASRATAN */
+#define XK_Arabic_fatha 0x05ee /* U+064E ARABIC FATHA */
+#define XK_Arabic_damma 0x05ef /* U+064F ARABIC DAMMA */
+#define XK_Arabic_kasra 0x05f0 /* U+0650 ARABIC KASRA */
+#define XK_Arabic_shadda 0x05f1 /* U+0651 ARABIC SHADDA */
+#define XK_Arabic_sukun 0x05f2 /* U+0652 ARABIC SUKUN */
+#define XK_Arabic_madda_above 0x1000653 /* U+0653 ARABIC MADDAH ABOVE */
+#define XK_Arabic_hamza_above 0x1000654 /* U+0654 ARABIC HAMZA ABOVE */
+#define XK_Arabic_hamza_below 0x1000655 /* U+0655 ARABIC HAMZA BELOW */
+#define XK_Arabic_jeh 0x1000698 /* U+0698 ARABIC LETTER JEH */
+#define XK_Arabic_veh 0x10006a4 /* U+06A4 ARABIC LETTER VEH */
+#define XK_Arabic_keheh 0x10006a9 /* U+06A9 ARABIC LETTER KEHEH */
+#define XK_Arabic_gaf 0x10006af /* U+06AF ARABIC LETTER GAF */
+#define XK_Arabic_noon_ghunna 0x10006ba /* U+06BA ARABIC LETTER NOON GHUNNA */
+#define XK_Arabic_heh_doachashmee 0x10006be /* U+06BE ARABIC LETTER HEH DOACHASHMEE */
+#define XK_Farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */
+#define XK_Arabic_farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */
+#define XK_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */
+#define XK_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */
+#define XK_Arabic_switch 0xff7e /* Alias for mode_switch */
+/* XK_ARABIC */
+
+/*
+ * Cyrillic
+ * Byte 3 = 6
+ */
+
+#define XK_Cyrillic_GHE_bar 0x1000492 /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */
+#define XK_Cyrillic_ghe_bar 0x1000493 /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */
+#define XK_Cyrillic_ZHE_descender 0x1000496 /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */
+#define XK_Cyrillic_zhe_descender 0x1000497 /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */
+#define XK_Cyrillic_KA_descender 0x100049a /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */
+#define XK_Cyrillic_ka_descender 0x100049b /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */
+#define XK_Cyrillic_KA_vertstroke 0x100049c /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */
+#define XK_Cyrillic_ka_vertstroke 0x100049d /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */
+#define XK_Cyrillic_EN_descender 0x10004a2 /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */
+#define XK_Cyrillic_en_descender 0x10004a3 /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */
+#define XK_Cyrillic_U_straight 0x10004ae /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */
+#define XK_Cyrillic_u_straight 0x10004af /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */
+#define XK_Cyrillic_U_straight_bar 0x10004b0 /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */
+#define XK_Cyrillic_u_straight_bar 0x10004b1 /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */
+#define XK_Cyrillic_HA_descender 0x10004b2 /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */
+#define XK_Cyrillic_ha_descender 0x10004b3 /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */
+#define XK_Cyrillic_CHE_descender 0x10004b6 /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */
+#define XK_Cyrillic_che_descender 0x10004b7 /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */
+#define XK_Cyrillic_CHE_vertstroke 0x10004b8 /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */
+#define XK_Cyrillic_che_vertstroke 0x10004b9 /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */
+#define XK_Cyrillic_SHHA 0x10004ba /* U+04BA CYRILLIC CAPITAL LETTER SHHA */
+#define XK_Cyrillic_shha 0x10004bb /* U+04BB CYRILLIC SMALL LETTER SHHA */
+
+#define XK_Cyrillic_SCHWA 0x10004d8 /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */
+#define XK_Cyrillic_schwa 0x10004d9 /* U+04D9 CYRILLIC SMALL LETTER SCHWA */
+#define XK_Cyrillic_I_macron 0x10004e2 /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */
+#define XK_Cyrillic_i_macron 0x10004e3 /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */
+#define XK_Cyrillic_O_bar 0x10004e8 /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */
+#define XK_Cyrillic_o_bar 0x10004e9 /* U+04E9 CYRILLIC SMALL LETTER BARRED O */
+#define XK_Cyrillic_U_macron 0x10004ee /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */
+#define XK_Cyrillic_u_macron 0x10004ef /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */
+
+#define XK_Serbian_dje 0x06a1 /* U+0452 CYRILLIC SMALL LETTER DJE */
+#define XK_Macedonia_gje 0x06a2 /* U+0453 CYRILLIC SMALL LETTER GJE */
+#define XK_Cyrillic_io 0x06a3 /* U+0451 CYRILLIC SMALL LETTER IO */
+#define XK_Ukrainian_ie 0x06a4 /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */
+#define XK_Ukranian_je 0x06a4 /* deprecated */
+#define XK_Macedonia_dse 0x06a5 /* U+0455 CYRILLIC SMALL LETTER DZE */
+#define XK_Ukrainian_i 0x06a6 /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
+#define XK_Ukranian_i 0x06a6 /* deprecated */
+#define XK_Ukrainian_yi 0x06a7 /* U+0457 CYRILLIC SMALL LETTER YI */
+#define XK_Ukranian_yi 0x06a7 /* deprecated */
+#define XK_Cyrillic_je 0x06a8 /* U+0458 CYRILLIC SMALL LETTER JE */
+#define XK_Serbian_je 0x06a8 /* deprecated */
+#define XK_Cyrillic_lje 0x06a9 /* U+0459 CYRILLIC SMALL LETTER LJE */
+#define XK_Serbian_lje 0x06a9 /* deprecated */
+#define XK_Cyrillic_nje 0x06aa /* U+045A CYRILLIC SMALL LETTER NJE */
+#define XK_Serbian_nje 0x06aa /* deprecated */
+#define XK_Serbian_tshe 0x06ab /* U+045B CYRILLIC SMALL LETTER TSHE */
+#define XK_Macedonia_kje 0x06ac /* U+045C CYRILLIC SMALL LETTER KJE */
+#define XK_Ukrainian_ghe_with_upturn 0x06ad /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */
+#define XK_Byelorussian_shortu 0x06ae /* U+045E CYRILLIC SMALL LETTER SHORT U */
+#define XK_Cyrillic_dzhe 0x06af /* U+045F CYRILLIC SMALL LETTER DZHE */
+#define XK_Serbian_dze 0x06af /* deprecated */
+#define XK_numerosign 0x06b0 /* U+2116 NUMERO SIGN */
+#define XK_Serbian_DJE 0x06b1 /* U+0402 CYRILLIC CAPITAL LETTER DJE */
+#define XK_Macedonia_GJE 0x06b2 /* U+0403 CYRILLIC CAPITAL LETTER GJE */
+#define XK_Cyrillic_IO 0x06b3 /* U+0401 CYRILLIC CAPITAL LETTER IO */
+#define XK_Ukrainian_IE 0x06b4 /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */
+#define XK_Ukranian_JE 0x06b4 /* deprecated */
+#define XK_Macedonia_DSE 0x06b5 /* U+0405 CYRILLIC CAPITAL LETTER DZE */
+#define XK_Ukrainian_I 0x06b6 /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
+#define XK_Ukranian_I 0x06b6 /* deprecated */
+#define XK_Ukrainian_YI 0x06b7 /* U+0407 CYRILLIC CAPITAL LETTER YI */
+#define XK_Ukranian_YI 0x06b7 /* deprecated */
+#define XK_Cyrillic_JE 0x06b8 /* U+0408 CYRILLIC CAPITAL LETTER JE */
+#define XK_Serbian_JE 0x06b8 /* deprecated */
+#define XK_Cyrillic_LJE 0x06b9 /* U+0409 CYRILLIC CAPITAL LETTER LJE */
+#define XK_Serbian_LJE 0x06b9 /* deprecated */
+#define XK_Cyrillic_NJE 0x06ba /* U+040A CYRILLIC CAPITAL LETTER NJE */
+#define XK_Serbian_NJE 0x06ba /* deprecated */
+#define XK_Serbian_TSHE 0x06bb /* U+040B CYRILLIC CAPITAL LETTER TSHE */
+#define XK_Macedonia_KJE 0x06bc /* U+040C CYRILLIC CAPITAL LETTER KJE */
+#define XK_Ukrainian_GHE_WITH_UPTURN 0x06bd /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
+#define XK_Byelorussian_SHORTU 0x06be /* U+040E CYRILLIC CAPITAL LETTER SHORT U */
+#define XK_Cyrillic_DZHE 0x06bf /* U+040F CYRILLIC CAPITAL LETTER DZHE */
+#define XK_Serbian_DZE 0x06bf /* deprecated */
+#define XK_Cyrillic_yu 0x06c0 /* U+044E CYRILLIC SMALL LETTER YU */
+#define XK_Cyrillic_a 0x06c1 /* U+0430 CYRILLIC SMALL LETTER A */
+#define XK_Cyrillic_be 0x06c2 /* U+0431 CYRILLIC SMALL LETTER BE */
+#define XK_Cyrillic_tse 0x06c3 /* U+0446 CYRILLIC SMALL LETTER TSE */
+#define XK_Cyrillic_de 0x06c4 /* U+0434 CYRILLIC SMALL LETTER DE */
+#define XK_Cyrillic_ie 0x06c5 /* U+0435 CYRILLIC SMALL LETTER IE */
+#define XK_Cyrillic_ef 0x06c6 /* U+0444 CYRILLIC SMALL LETTER EF */
+#define XK_Cyrillic_ghe 0x06c7 /* U+0433 CYRILLIC SMALL LETTER GHE */
+#define XK_Cyrillic_ha 0x06c8 /* U+0445 CYRILLIC SMALL LETTER HA */
+#define XK_Cyrillic_i 0x06c9 /* U+0438 CYRILLIC SMALL LETTER I */
+#define XK_Cyrillic_shorti 0x06ca /* U+0439 CYRILLIC SMALL LETTER SHORT I */
+#define XK_Cyrillic_ka 0x06cb /* U+043A CYRILLIC SMALL LETTER KA */
+#define XK_Cyrillic_el 0x06cc /* U+043B CYRILLIC SMALL LETTER EL */
+#define XK_Cyrillic_em 0x06cd /* U+043C CYRILLIC SMALL LETTER EM */
+#define XK_Cyrillic_en 0x06ce /* U+043D CYRILLIC SMALL LETTER EN */
+#define XK_Cyrillic_o 0x06cf /* U+043E CYRILLIC SMALL LETTER O */
+#define XK_Cyrillic_pe 0x06d0 /* U+043F CYRILLIC SMALL LETTER PE */
+#define XK_Cyrillic_ya 0x06d1 /* U+044F CYRILLIC SMALL LETTER YA */
+#define XK_Cyrillic_er 0x06d2 /* U+0440 CYRILLIC SMALL LETTER ER */
+#define XK_Cyrillic_es 0x06d3 /* U+0441 CYRILLIC SMALL LETTER ES */
+#define XK_Cyrillic_te 0x06d4 /* U+0442 CYRILLIC SMALL LETTER TE */
+#define XK_Cyrillic_u 0x06d5 /* U+0443 CYRILLIC SMALL LETTER U */
+#define XK_Cyrillic_zhe 0x06d6 /* U+0436 CYRILLIC SMALL LETTER ZHE */
+#define XK_Cyrillic_ve 0x06d7 /* U+0432 CYRILLIC SMALL LETTER VE */
+#define XK_Cyrillic_softsign 0x06d8 /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */
+#define XK_Cyrillic_yeru 0x06d9 /* U+044B CYRILLIC SMALL LETTER YERU */
+#define XK_Cyrillic_ze 0x06da /* U+0437 CYRILLIC SMALL LETTER ZE */
+#define XK_Cyrillic_sha 0x06db /* U+0448 CYRILLIC SMALL LETTER SHA */
+#define XK_Cyrillic_e 0x06dc /* U+044D CYRILLIC SMALL LETTER E */
+#define XK_Cyrillic_shcha 0x06dd /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+#define XK_Cyrillic_che 0x06de /* U+0447 CYRILLIC SMALL LETTER CHE */
+#define XK_Cyrillic_hardsign 0x06df /* U+044A CYRILLIC SMALL LETTER HARD SIGN */
+#define XK_Cyrillic_YU 0x06e0 /* U+042E CYRILLIC CAPITAL LETTER YU */
+#define XK_Cyrillic_A 0x06e1 /* U+0410 CYRILLIC CAPITAL LETTER A */
+#define XK_Cyrillic_BE 0x06e2 /* U+0411 CYRILLIC CAPITAL LETTER BE */
+#define XK_Cyrillic_TSE 0x06e3 /* U+0426 CYRILLIC CAPITAL LETTER TSE */
+#define XK_Cyrillic_DE 0x06e4 /* U+0414 CYRILLIC CAPITAL LETTER DE */
+#define XK_Cyrillic_IE 0x06e5 /* U+0415 CYRILLIC CAPITAL LETTER IE */
+#define XK_Cyrillic_EF 0x06e6 /* U+0424 CYRILLIC CAPITAL LETTER EF */
+#define XK_Cyrillic_GHE 0x06e7 /* U+0413 CYRILLIC CAPITAL LETTER GHE */
+#define XK_Cyrillic_HA 0x06e8 /* U+0425 CYRILLIC CAPITAL LETTER HA */
+#define XK_Cyrillic_I 0x06e9 /* U+0418 CYRILLIC CAPITAL LETTER I */
+#define XK_Cyrillic_SHORTI 0x06ea /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */
+#define XK_Cyrillic_KA 0x06eb /* U+041A CYRILLIC CAPITAL LETTER KA */
+#define XK_Cyrillic_EL 0x06ec /* U+041B CYRILLIC CAPITAL LETTER EL */
+#define XK_Cyrillic_EM 0x06ed /* U+041C CYRILLIC CAPITAL LETTER EM */
+#define XK_Cyrillic_EN 0x06ee /* U+041D CYRILLIC CAPITAL LETTER EN */
+#define XK_Cyrillic_O 0x06ef /* U+041E CYRILLIC CAPITAL LETTER O */
+#define XK_Cyrillic_PE 0x06f0 /* U+041F CYRILLIC CAPITAL LETTER PE */
+#define XK_Cyrillic_YA 0x06f1 /* U+042F CYRILLIC CAPITAL LETTER YA */
+#define XK_Cyrillic_ER 0x06f2 /* U+0420 CYRILLIC CAPITAL LETTER ER */
+#define XK_Cyrillic_ES 0x06f3 /* U+0421 CYRILLIC CAPITAL LETTER ES */
+#define XK_Cyrillic_TE 0x06f4 /* U+0422 CYRILLIC CAPITAL LETTER TE */
+#define XK_Cyrillic_U 0x06f5 /* U+0423 CYRILLIC CAPITAL LETTER U */
+#define XK_Cyrillic_ZHE 0x06f6 /* U+0416 CYRILLIC CAPITAL LETTER ZHE */
+#define XK_Cyrillic_VE 0x06f7 /* U+0412 CYRILLIC CAPITAL LETTER VE */
+#define XK_Cyrillic_SOFTSIGN 0x06f8 /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */
+#define XK_Cyrillic_YERU 0x06f9 /* U+042B CYRILLIC CAPITAL LETTER YERU */
+#define XK_Cyrillic_ZE 0x06fa /* U+0417 CYRILLIC CAPITAL LETTER ZE */
+#define XK_Cyrillic_SHA 0x06fb /* U+0428 CYRILLIC CAPITAL LETTER SHA */
+#define XK_Cyrillic_E 0x06fc /* U+042D CYRILLIC CAPITAL LETTER E */
+#define XK_Cyrillic_SHCHA 0x06fd /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+#define XK_Cyrillic_CHE 0x06fe /* U+0427 CYRILLIC CAPITAL LETTER CHE */
+#define XK_Cyrillic_HARDSIGN 0x06ff /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */
+/* XK_CYRILLIC */
+
+/*
+ * Greek
+ * (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
+ * Byte 3 = 7
+ */
+
+
+#define XK_Greek_ALPHAaccent 0x07a1 /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */
+#define XK_Greek_EPSILONaccent 0x07a2 /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */
+#define XK_Greek_ETAaccent 0x07a3 /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */
+#define XK_Greek_IOTAaccent 0x07a4 /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */
+#define XK_Greek_IOTAdieresis 0x07a5 /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
+#define XK_Greek_IOTAdiaeresis 0x07a5 /* old typo */
+#define XK_Greek_OMICRONaccent 0x07a7 /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */
+#define XK_Greek_UPSILONaccent 0x07a8 /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */
+#define XK_Greek_UPSILONdieresis 0x07a9 /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
+#define XK_Greek_OMEGAaccent 0x07ab /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */
+#define XK_Greek_accentdieresis 0x07ae /* U+0385 GREEK DIALYTIKA TONOS */
+#define XK_Greek_horizbar 0x07af /* U+2015 HORIZONTAL BAR */
+#define XK_Greek_alphaaccent 0x07b1 /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */
+#define XK_Greek_epsilonaccent 0x07b2 /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */
+#define XK_Greek_etaaccent 0x07b3 /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */
+#define XK_Greek_iotaaccent 0x07b4 /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */
+#define XK_Greek_iotadieresis 0x07b5 /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */
+#define XK_Greek_iotaaccentdieresis 0x07b6 /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+#define XK_Greek_omicronaccent 0x07b7 /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */
+#define XK_Greek_upsilonaccent 0x07b8 /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */
+#define XK_Greek_upsilondieresis 0x07b9 /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
+#define XK_Greek_upsilonaccentdieresis 0x07ba /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+#define XK_Greek_omegaaccent 0x07bb /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */
+#define XK_Greek_ALPHA 0x07c1 /* U+0391 GREEK CAPITAL LETTER ALPHA */
+#define XK_Greek_BETA 0x07c2 /* U+0392 GREEK CAPITAL LETTER BETA */
+#define XK_Greek_GAMMA 0x07c3 /* U+0393 GREEK CAPITAL LETTER GAMMA */
+#define XK_Greek_DELTA 0x07c4 /* U+0394 GREEK CAPITAL LETTER DELTA */
+#define XK_Greek_EPSILON 0x07c5 /* U+0395 GREEK CAPITAL LETTER EPSILON */
+#define XK_Greek_ZETA 0x07c6 /* U+0396 GREEK CAPITAL LETTER ZETA */
+#define XK_Greek_ETA 0x07c7 /* U+0397 GREEK CAPITAL LETTER ETA */
+#define XK_Greek_THETA 0x07c8 /* U+0398 GREEK CAPITAL LETTER THETA */
+#define XK_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */
+#define XK_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */
+#define XK_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
+#define XK_Greek_LAMBDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
+#define XK_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */
+#define XK_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */
+#define XK_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */
+#define XK_Greek_OMICRON 0x07cf /* U+039F GREEK CAPITAL LETTER OMICRON */
+#define XK_Greek_PI 0x07d0 /* U+03A0 GREEK CAPITAL LETTER PI */
+#define XK_Greek_RHO 0x07d1 /* U+03A1 GREEK CAPITAL LETTER RHO */
+#define XK_Greek_SIGMA 0x07d2 /* U+03A3 GREEK CAPITAL LETTER SIGMA */
+#define XK_Greek_TAU 0x07d4 /* U+03A4 GREEK CAPITAL LETTER TAU */
+#define XK_Greek_UPSILON 0x07d5 /* U+03A5 GREEK CAPITAL LETTER UPSILON */
+#define XK_Greek_PHI 0x07d6 /* U+03A6 GREEK CAPITAL LETTER PHI */
+#define XK_Greek_CHI 0x07d7 /* U+03A7 GREEK CAPITAL LETTER CHI */
+#define XK_Greek_PSI 0x07d8 /* U+03A8 GREEK CAPITAL LETTER PSI */
+#define XK_Greek_OMEGA 0x07d9 /* U+03A9 GREEK CAPITAL LETTER OMEGA */
+#define XK_Greek_alpha 0x07e1 /* U+03B1 GREEK SMALL LETTER ALPHA */
+#define XK_Greek_beta 0x07e2 /* U+03B2 GREEK SMALL LETTER BETA */
+#define XK_Greek_gamma 0x07e3 /* U+03B3 GREEK SMALL LETTER GAMMA */
+#define XK_Greek_delta 0x07e4 /* U+03B4 GREEK SMALL LETTER DELTA */
+#define XK_Greek_epsilon 0x07e5 /* U+03B5 GREEK SMALL LETTER EPSILON */
+#define XK_Greek_zeta 0x07e6 /* U+03B6 GREEK SMALL LETTER ZETA */
+#define XK_Greek_eta 0x07e7 /* U+03B7 GREEK SMALL LETTER ETA */
+#define XK_Greek_theta 0x07e8 /* U+03B8 GREEK SMALL LETTER THETA */
+#define XK_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */
+#define XK_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */
+#define XK_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
+#define XK_Greek_lambda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
+#define XK_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */
+#define XK_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */
+#define XK_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */
+#define XK_Greek_omicron 0x07ef /* U+03BF GREEK SMALL LETTER OMICRON */
+#define XK_Greek_pi 0x07f0 /* U+03C0 GREEK SMALL LETTER PI */
+#define XK_Greek_rho 0x07f1 /* U+03C1 GREEK SMALL LETTER RHO */
+#define XK_Greek_sigma 0x07f2 /* U+03C3 GREEK SMALL LETTER SIGMA */
+#define XK_Greek_finalsmallsigma 0x07f3 /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */
+#define XK_Greek_tau 0x07f4 /* U+03C4 GREEK SMALL LETTER TAU */
+#define XK_Greek_upsilon 0x07f5 /* U+03C5 GREEK SMALL LETTER UPSILON */
+#define XK_Greek_phi 0x07f6 /* U+03C6 GREEK SMALL LETTER PHI */
+#define XK_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */
+#define XK_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */
+#define XK_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */
+#define XK_Greek_switch 0xff7e /* Alias for mode_switch */
+/* XK_GREEK */
+
+/*
+ * Technical
+ * (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
+ * Byte 3 = 8
+ */
+
+/* XK_TECHNICAL */
+# 1375 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Special
+ * (from the DEC VT100 Special Graphics Character Set)
+ * Byte 3 = 9
+ */
+
+/* XK_SPECIAL */
+# 1408 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Publishing
+ * (these are probably from a long forgotten DEC Publishing
+ * font that once shipped with DECwrite)
+ * Byte 3 = 0x0a
+ */
+
+/* XK_PUBLISHING */
+# 1501 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * APL
+ * Byte 3 = 0x0b
+ */
+
+/* XK_APL */
+# 1528 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Hebrew
+ * Byte 3 = 0x0c
+ */
+
+
+#define XK_hebrew_doublelowline 0x0cdf /* U+2017 DOUBLE LOW LINE */
+#define XK_hebrew_aleph 0x0ce0 /* U+05D0 HEBREW LETTER ALEF */
+#define XK_hebrew_bet 0x0ce1 /* U+05D1 HEBREW LETTER BET */
+#define XK_hebrew_beth 0x0ce1 /* deprecated */
+#define XK_hebrew_gimel 0x0ce2 /* U+05D2 HEBREW LETTER GIMEL */
+#define XK_hebrew_gimmel 0x0ce2 /* deprecated */
+#define XK_hebrew_dalet 0x0ce3 /* U+05D3 HEBREW LETTER DALET */
+#define XK_hebrew_daleth 0x0ce3 /* deprecated */
+#define XK_hebrew_he 0x0ce4 /* U+05D4 HEBREW LETTER HE */
+#define XK_hebrew_waw 0x0ce5 /* U+05D5 HEBREW LETTER VAV */
+#define XK_hebrew_zain 0x0ce6 /* U+05D6 HEBREW LETTER ZAYIN */
+#define XK_hebrew_zayin 0x0ce6 /* deprecated */
+#define XK_hebrew_chet 0x0ce7 /* U+05D7 HEBREW LETTER HET */
+#define XK_hebrew_het 0x0ce7 /* deprecated */
+#define XK_hebrew_tet 0x0ce8 /* U+05D8 HEBREW LETTER TET */
+#define XK_hebrew_teth 0x0ce8 /* deprecated */
+#define XK_hebrew_yod 0x0ce9 /* U+05D9 HEBREW LETTER YOD */
+#define XK_hebrew_finalkaph 0x0cea /* U+05DA HEBREW LETTER FINAL KAF */
+#define XK_hebrew_kaph 0x0ceb /* U+05DB HEBREW LETTER KAF */
+#define XK_hebrew_lamed 0x0cec /* U+05DC HEBREW LETTER LAMED */
+#define XK_hebrew_finalmem 0x0ced /* U+05DD HEBREW LETTER FINAL MEM */
+#define XK_hebrew_mem 0x0cee /* U+05DE HEBREW LETTER MEM */
+#define XK_hebrew_finalnun 0x0cef /* U+05DF HEBREW LETTER FINAL NUN */
+#define XK_hebrew_nun 0x0cf0 /* U+05E0 HEBREW LETTER NUN */
+#define XK_hebrew_samech 0x0cf1 /* U+05E1 HEBREW LETTER SAMEKH */
+#define XK_hebrew_samekh 0x0cf1 /* deprecated */
+#define XK_hebrew_ayin 0x0cf2 /* U+05E2 HEBREW LETTER AYIN */
+#define XK_hebrew_finalpe 0x0cf3 /* U+05E3 HEBREW LETTER FINAL PE */
+#define XK_hebrew_pe 0x0cf4 /* U+05E4 HEBREW LETTER PE */
+#define XK_hebrew_finalzade 0x0cf5 /* U+05E5 HEBREW LETTER FINAL TSADI */
+#define XK_hebrew_finalzadi 0x0cf5 /* deprecated */
+#define XK_hebrew_zade 0x0cf6 /* U+05E6 HEBREW LETTER TSADI */
+#define XK_hebrew_zadi 0x0cf6 /* deprecated */
+#define XK_hebrew_qoph 0x0cf7 /* U+05E7 HEBREW LETTER QOF */
+#define XK_hebrew_kuf 0x0cf7 /* deprecated */
+#define XK_hebrew_resh 0x0cf8 /* U+05E8 HEBREW LETTER RESH */
+#define XK_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */
+#define XK_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */
+#define XK_hebrew_taf 0x0cfa /* deprecated */
+#define XK_Hebrew_switch 0xff7e /* Alias for mode_switch */
+/* XK_HEBREW */
+
+/*
+ * Thai
+ * Byte 3 = 0x0d
+ */
+
+
+#define XK_Thai_kokai 0x0da1 /* U+0E01 THAI CHARACTER KO KAI */
+#define XK_Thai_khokhai 0x0da2 /* U+0E02 THAI CHARACTER KHO KHAI */
+#define XK_Thai_khokhuat 0x0da3 /* U+0E03 THAI CHARACTER KHO KHUAT */
+#define XK_Thai_khokhwai 0x0da4 /* U+0E04 THAI CHARACTER KHO KHWAI */
+#define XK_Thai_khokhon 0x0da5 /* U+0E05 THAI CHARACTER KHO KHON */
+#define XK_Thai_khorakhang 0x0da6 /* U+0E06 THAI CHARACTER KHO RAKHANG */
+#define XK_Thai_ngongu 0x0da7 /* U+0E07 THAI CHARACTER NGO NGU */
+#define XK_Thai_chochan 0x0da8 /* U+0E08 THAI CHARACTER CHO CHAN */
+#define XK_Thai_choching 0x0da9 /* U+0E09 THAI CHARACTER CHO CHING */
+#define XK_Thai_chochang 0x0daa /* U+0E0A THAI CHARACTER CHO CHANG */
+#define XK_Thai_soso 0x0dab /* U+0E0B THAI CHARACTER SO SO */
+#define XK_Thai_chochoe 0x0dac /* U+0E0C THAI CHARACTER CHO CHOE */
+#define XK_Thai_yoying 0x0dad /* U+0E0D THAI CHARACTER YO YING */
+#define XK_Thai_dochada 0x0dae /* U+0E0E THAI CHARACTER DO CHADA */
+#define XK_Thai_topatak 0x0daf /* U+0E0F THAI CHARACTER TO PATAK */
+#define XK_Thai_thothan 0x0db0 /* U+0E10 THAI CHARACTER THO THAN */
+#define XK_Thai_thonangmontho 0x0db1 /* U+0E11 THAI CHARACTER THO NANGMONTHO */
+#define XK_Thai_thophuthao 0x0db2 /* U+0E12 THAI CHARACTER THO PHUTHAO */
+#define XK_Thai_nonen 0x0db3 /* U+0E13 THAI CHARACTER NO NEN */
+#define XK_Thai_dodek 0x0db4 /* U+0E14 THAI CHARACTER DO DEK */
+#define XK_Thai_totao 0x0db5 /* U+0E15 THAI CHARACTER TO TAO */
+#define XK_Thai_thothung 0x0db6 /* U+0E16 THAI CHARACTER THO THUNG */
+#define XK_Thai_thothahan 0x0db7 /* U+0E17 THAI CHARACTER THO THAHAN */
+#define XK_Thai_thothong 0x0db8 /* U+0E18 THAI CHARACTER THO THONG */
+#define XK_Thai_nonu 0x0db9 /* U+0E19 THAI CHARACTER NO NU */
+#define XK_Thai_bobaimai 0x0dba /* U+0E1A THAI CHARACTER BO BAIMAI */
+#define XK_Thai_popla 0x0dbb /* U+0E1B THAI CHARACTER PO PLA */
+#define XK_Thai_phophung 0x0dbc /* U+0E1C THAI CHARACTER PHO PHUNG */
+#define XK_Thai_fofa 0x0dbd /* U+0E1D THAI CHARACTER FO FA */
+#define XK_Thai_phophan 0x0dbe /* U+0E1E THAI CHARACTER PHO PHAN */
+#define XK_Thai_fofan 0x0dbf /* U+0E1F THAI CHARACTER FO FAN */
+#define XK_Thai_phosamphao 0x0dc0 /* U+0E20 THAI CHARACTER PHO SAMPHAO */
+#define XK_Thai_moma 0x0dc1 /* U+0E21 THAI CHARACTER MO MA */
+#define XK_Thai_yoyak 0x0dc2 /* U+0E22 THAI CHARACTER YO YAK */
+#define XK_Thai_rorua 0x0dc3 /* U+0E23 THAI CHARACTER RO RUA */
+#define XK_Thai_ru 0x0dc4 /* U+0E24 THAI CHARACTER RU */
+#define XK_Thai_loling 0x0dc5 /* U+0E25 THAI CHARACTER LO LING */
+#define XK_Thai_lu 0x0dc6 /* U+0E26 THAI CHARACTER LU */
+#define XK_Thai_wowaen 0x0dc7 /* U+0E27 THAI CHARACTER WO WAEN */
+#define XK_Thai_sosala 0x0dc8 /* U+0E28 THAI CHARACTER SO SALA */
+#define XK_Thai_sorusi 0x0dc9 /* U+0E29 THAI CHARACTER SO RUSI */
+#define XK_Thai_sosua 0x0dca /* U+0E2A THAI CHARACTER SO SUA */
+#define XK_Thai_hohip 0x0dcb /* U+0E2B THAI CHARACTER HO HIP */
+#define XK_Thai_lochula 0x0dcc /* U+0E2C THAI CHARACTER LO CHULA */
+#define XK_Thai_oang 0x0dcd /* U+0E2D THAI CHARACTER O ANG */
+#define XK_Thai_honokhuk 0x0dce /* U+0E2E THAI CHARACTER HO NOKHUK */
+#define XK_Thai_paiyannoi 0x0dcf /* U+0E2F THAI CHARACTER PAIYANNOI */
+#define XK_Thai_saraa 0x0dd0 /* U+0E30 THAI CHARACTER SARA A */
+#define XK_Thai_maihanakat 0x0dd1 /* U+0E31 THAI CHARACTER MAI HAN-AKAT */
+#define XK_Thai_saraaa 0x0dd2 /* U+0E32 THAI CHARACTER SARA AA */
+#define XK_Thai_saraam 0x0dd3 /* U+0E33 THAI CHARACTER SARA AM */
+#define XK_Thai_sarai 0x0dd4 /* U+0E34 THAI CHARACTER SARA I */
+#define XK_Thai_saraii 0x0dd5 /* U+0E35 THAI CHARACTER SARA II */
+#define XK_Thai_saraue 0x0dd6 /* U+0E36 THAI CHARACTER SARA UE */
+#define XK_Thai_sarauee 0x0dd7 /* U+0E37 THAI CHARACTER SARA UEE */
+#define XK_Thai_sarau 0x0dd8 /* U+0E38 THAI CHARACTER SARA U */
+#define XK_Thai_sarauu 0x0dd9 /* U+0E39 THAI CHARACTER SARA UU */
+#define XK_Thai_phinthu 0x0dda /* U+0E3A THAI CHARACTER PHINTHU */
+#define XK_Thai_maihanakat_maitho 0x0dde
+#define XK_Thai_baht 0x0ddf /* U+0E3F THAI CURRENCY SYMBOL BAHT */
+#define XK_Thai_sarae 0x0de0 /* U+0E40 THAI CHARACTER SARA E */
+#define XK_Thai_saraae 0x0de1 /* U+0E41 THAI CHARACTER SARA AE */
+#define XK_Thai_sarao 0x0de2 /* U+0E42 THAI CHARACTER SARA O */
+#define XK_Thai_saraaimaimuan 0x0de3 /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */
+#define XK_Thai_saraaimaimalai 0x0de4 /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */
+#define XK_Thai_lakkhangyao 0x0de5 /* U+0E45 THAI CHARACTER LAKKHANGYAO */
+#define XK_Thai_maiyamok 0x0de6 /* U+0E46 THAI CHARACTER MAIYAMOK */
+#define XK_Thai_maitaikhu 0x0de7 /* U+0E47 THAI CHARACTER MAITAIKHU */
+#define XK_Thai_maiek 0x0de8 /* U+0E48 THAI CHARACTER MAI EK */
+#define XK_Thai_maitho 0x0de9 /* U+0E49 THAI CHARACTER MAI THO */
+#define XK_Thai_maitri 0x0dea /* U+0E4A THAI CHARACTER MAI TRI */
+#define XK_Thai_maichattawa 0x0deb /* U+0E4B THAI CHARACTER MAI CHATTAWA */
+#define XK_Thai_thanthakhat 0x0dec /* U+0E4C THAI CHARACTER THANTHAKHAT */
+#define XK_Thai_nikhahit 0x0ded /* U+0E4D THAI CHARACTER NIKHAHIT */
+#define XK_Thai_leksun 0x0df0 /* U+0E50 THAI DIGIT ZERO */
+#define XK_Thai_leknung 0x0df1 /* U+0E51 THAI DIGIT ONE */
+#define XK_Thai_leksong 0x0df2 /* U+0E52 THAI DIGIT TWO */
+#define XK_Thai_leksam 0x0df3 /* U+0E53 THAI DIGIT THREE */
+#define XK_Thai_leksi 0x0df4 /* U+0E54 THAI DIGIT FOUR */
+#define XK_Thai_lekha 0x0df5 /* U+0E55 THAI DIGIT FIVE */
+#define XK_Thai_lekhok 0x0df6 /* U+0E56 THAI DIGIT SIX */
+#define XK_Thai_lekchet 0x0df7 /* U+0E57 THAI DIGIT SEVEN */
+#define XK_Thai_lekpaet 0x0df8 /* U+0E58 THAI DIGIT EIGHT */
+#define XK_Thai_lekkao 0x0df9 /* U+0E59 THAI DIGIT NINE */
+/* XK_THAI */
+
+/*
+ * Korean
+ * Byte 3 = 0x0e
+ */
+
+
+
+#define XK_Hangul 0xff31 /* Hangul start/stop(toggle) */
+#define XK_Hangul_Start 0xff32 /* Hangul start */
+#define XK_Hangul_End 0xff33 /* Hangul end, English start */
+#define XK_Hangul_Hanja 0xff34 /* Start Hangul->Hanja Conversion */
+#define XK_Hangul_Jamo 0xff35 /* Hangul Jamo mode */
+#define XK_Hangul_Romaja 0xff36 /* Hangul Romaja mode */
+#define XK_Hangul_Codeinput 0xff37 /* Hangul code input mode */
+#define XK_Hangul_Jeonja 0xff38 /* Jeonja mode */
+#define XK_Hangul_Banja 0xff39 /* Banja mode */
+#define XK_Hangul_PreHanja 0xff3a /* Pre Hanja conversion */
+#define XK_Hangul_PostHanja 0xff3b /* Post Hanja conversion */
+#define XK_Hangul_SingleCandidate 0xff3c /* Single candidate */
+#define XK_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */
+#define XK_Hangul_PreviousCandidate 0xff3e /* Previous candidate */
+#define XK_Hangul_Special 0xff3f /* Special symbols */
+#define XK_Hangul_switch 0xff7e /* Alias for mode_switch */
+
+/* Hangul Consonant Characters */
+#define XK_Hangul_Kiyeog 0x0ea1
+#define XK_Hangul_SsangKiyeog 0x0ea2
+#define XK_Hangul_KiyeogSios 0x0ea3
+#define XK_Hangul_Nieun 0x0ea4
+#define XK_Hangul_NieunJieuj 0x0ea5
+#define XK_Hangul_NieunHieuh 0x0ea6
+#define XK_Hangul_Dikeud 0x0ea7
+#define XK_Hangul_SsangDikeud 0x0ea8
+#define XK_Hangul_Rieul 0x0ea9
+#define XK_Hangul_RieulKiyeog 0x0eaa
+#define XK_Hangul_RieulMieum 0x0eab
+#define XK_Hangul_RieulPieub 0x0eac
+#define XK_Hangul_RieulSios 0x0ead
+#define XK_Hangul_RieulTieut 0x0eae
+#define XK_Hangul_RieulPhieuf 0x0eaf
+#define XK_Hangul_RieulHieuh 0x0eb0
+#define XK_Hangul_Mieum 0x0eb1
+#define XK_Hangul_Pieub 0x0eb2
+#define XK_Hangul_SsangPieub 0x0eb3
+#define XK_Hangul_PieubSios 0x0eb4
+#define XK_Hangul_Sios 0x0eb5
+#define XK_Hangul_SsangSios 0x0eb6
+#define XK_Hangul_Ieung 0x0eb7
+#define XK_Hangul_Jieuj 0x0eb8
+#define XK_Hangul_SsangJieuj 0x0eb9
+#define XK_Hangul_Cieuc 0x0eba
+#define XK_Hangul_Khieuq 0x0ebb
+#define XK_Hangul_Tieut 0x0ebc
+#define XK_Hangul_Phieuf 0x0ebd
+#define XK_Hangul_Hieuh 0x0ebe
+
+/* Hangul Vowel Characters */
+#define XK_Hangul_A 0x0ebf
+#define XK_Hangul_AE 0x0ec0
+#define XK_Hangul_YA 0x0ec1
+#define XK_Hangul_YAE 0x0ec2
+#define XK_Hangul_EO 0x0ec3
+#define XK_Hangul_E 0x0ec4
+#define XK_Hangul_YEO 0x0ec5
+#define XK_Hangul_YE 0x0ec6
+#define XK_Hangul_O 0x0ec7
+#define XK_Hangul_WA 0x0ec8
+#define XK_Hangul_WAE 0x0ec9
+#define XK_Hangul_OE 0x0eca
+#define XK_Hangul_YO 0x0ecb
+#define XK_Hangul_U 0x0ecc
+#define XK_Hangul_WEO 0x0ecd
+#define XK_Hangul_WE 0x0ece
+#define XK_Hangul_WI 0x0ecf
+#define XK_Hangul_YU 0x0ed0
+#define XK_Hangul_EU 0x0ed1
+#define XK_Hangul_YI 0x0ed2
+#define XK_Hangul_I 0x0ed3
+
+/* Hangul syllable-final (JongSeong) Characters */
+#define XK_Hangul_J_Kiyeog 0x0ed4
+#define XK_Hangul_J_SsangKiyeog 0x0ed5
+#define XK_Hangul_J_KiyeogSios 0x0ed6
+#define XK_Hangul_J_Nieun 0x0ed7
+#define XK_Hangul_J_NieunJieuj 0x0ed8
+#define XK_Hangul_J_NieunHieuh 0x0ed9
+#define XK_Hangul_J_Dikeud 0x0eda
+#define XK_Hangul_J_Rieul 0x0edb
+#define XK_Hangul_J_RieulKiyeog 0x0edc
+#define XK_Hangul_J_RieulMieum 0x0edd
+#define XK_Hangul_J_RieulPieub 0x0ede
+#define XK_Hangul_J_RieulSios 0x0edf
+#define XK_Hangul_J_RieulTieut 0x0ee0
+#define XK_Hangul_J_RieulPhieuf 0x0ee1
+#define XK_Hangul_J_RieulHieuh 0x0ee2
+#define XK_Hangul_J_Mieum 0x0ee3
+#define XK_Hangul_J_Pieub 0x0ee4
+#define XK_Hangul_J_PieubSios 0x0ee5
+#define XK_Hangul_J_Sios 0x0ee6
+#define XK_Hangul_J_SsangSios 0x0ee7
+#define XK_Hangul_J_Ieung 0x0ee8
+#define XK_Hangul_J_Jieuj 0x0ee9
+#define XK_Hangul_J_Cieuc 0x0eea
+#define XK_Hangul_J_Khieuq 0x0eeb
+#define XK_Hangul_J_Tieut 0x0eec
+#define XK_Hangul_J_Phieuf 0x0eed
+#define XK_Hangul_J_Hieuh 0x0eee
+
+/* Ancient Hangul Consonant Characters */
+#define XK_Hangul_RieulYeorinHieuh 0x0eef
+#define XK_Hangul_SunkyeongeumMieum 0x0ef0
+#define XK_Hangul_SunkyeongeumPieub 0x0ef1
+#define XK_Hangul_PanSios 0x0ef2
+#define XK_Hangul_KkogjiDalrinIeung 0x0ef3
+#define XK_Hangul_SunkyeongeumPhieuf 0x0ef4
+#define XK_Hangul_YeorinHieuh 0x0ef5
+
+/* Ancient Hangul Vowel Characters */
+#define XK_Hangul_AraeA 0x0ef6
+#define XK_Hangul_AraeAE 0x0ef7
+
+/* Ancient Hangul syllable-final (JongSeong) Characters */
+#define XK_Hangul_J_PanSios 0x0ef8
+#define XK_Hangul_J_KkogjiDalrinIeung 0x0ef9
+#define XK_Hangul_J_YeorinHieuh 0x0efa
+
+/* Korean currency symbol */
+#define XK_Korean_Won 0x0eff /*(U+20A9 WON SIGN)*/
+
+/* XK_KOREAN */
+
+/*
+ * Armenian
+ */
+
+
+#define XK_Armenian_ligature_ew 0x1000587 /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */
+#define XK_Armenian_full_stop 0x1000589 /* U+0589 ARMENIAN FULL STOP */
+#define XK_Armenian_verjaket 0x1000589 /* U+0589 ARMENIAN FULL STOP */
+#define XK_Armenian_separation_mark 0x100055d /* U+055D ARMENIAN COMMA */
+#define XK_Armenian_but 0x100055d /* U+055D ARMENIAN COMMA */
+#define XK_Armenian_hyphen 0x100058a /* U+058A ARMENIAN HYPHEN */
+#define XK_Armenian_yentamna 0x100058a /* U+058A ARMENIAN HYPHEN */
+#define XK_Armenian_exclam 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */
+#define XK_Armenian_amanak 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */
+#define XK_Armenian_accent 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */
+#define XK_Armenian_shesht 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */
+#define XK_Armenian_question 0x100055e /* U+055E ARMENIAN QUESTION MARK */
+#define XK_Armenian_paruyk 0x100055e /* U+055E ARMENIAN QUESTION MARK */
+#define XK_Armenian_AYB 0x1000531 /* U+0531 ARMENIAN CAPITAL LETTER AYB */
+#define XK_Armenian_ayb 0x1000561 /* U+0561 ARMENIAN SMALL LETTER AYB */
+#define XK_Armenian_BEN 0x1000532 /* U+0532 ARMENIAN CAPITAL LETTER BEN */
+#define XK_Armenian_ben 0x1000562 /* U+0562 ARMENIAN SMALL LETTER BEN */
+#define XK_Armenian_GIM 0x1000533 /* U+0533 ARMENIAN CAPITAL LETTER GIM */
+#define XK_Armenian_gim 0x1000563 /* U+0563 ARMENIAN SMALL LETTER GIM */
+#define XK_Armenian_DA 0x1000534 /* U+0534 ARMENIAN CAPITAL LETTER DA */
+#define XK_Armenian_da 0x1000564 /* U+0564 ARMENIAN SMALL LETTER DA */
+#define XK_Armenian_YECH 0x1000535 /* U+0535 ARMENIAN CAPITAL LETTER ECH */
+#define XK_Armenian_yech 0x1000565 /* U+0565 ARMENIAN SMALL LETTER ECH */
+#define XK_Armenian_ZA 0x1000536 /* U+0536 ARMENIAN CAPITAL LETTER ZA */
+#define XK_Armenian_za 0x1000566 /* U+0566 ARMENIAN SMALL LETTER ZA */
+#define XK_Armenian_E 0x1000537 /* U+0537 ARMENIAN CAPITAL LETTER EH */
+#define XK_Armenian_e 0x1000567 /* U+0567 ARMENIAN SMALL LETTER EH */
+#define XK_Armenian_AT 0x1000538 /* U+0538 ARMENIAN CAPITAL LETTER ET */
+#define XK_Armenian_at 0x1000568 /* U+0568 ARMENIAN SMALL LETTER ET */
+#define XK_Armenian_TO 0x1000539 /* U+0539 ARMENIAN CAPITAL LETTER TO */
+#define XK_Armenian_to 0x1000569 /* U+0569 ARMENIAN SMALL LETTER TO */
+#define XK_Armenian_ZHE 0x100053a /* U+053A ARMENIAN CAPITAL LETTER ZHE */
+#define XK_Armenian_zhe 0x100056a /* U+056A ARMENIAN SMALL LETTER ZHE */
+#define XK_Armenian_INI 0x100053b /* U+053B ARMENIAN CAPITAL LETTER INI */
+#define XK_Armenian_ini 0x100056b /* U+056B ARMENIAN SMALL LETTER INI */
+#define XK_Armenian_LYUN 0x100053c /* U+053C ARMENIAN CAPITAL LETTER LIWN */
+#define XK_Armenian_lyun 0x100056c /* U+056C ARMENIAN SMALL LETTER LIWN */
+#define XK_Armenian_KHE 0x100053d /* U+053D ARMENIAN CAPITAL LETTER XEH */
+#define XK_Armenian_khe 0x100056d /* U+056D ARMENIAN SMALL LETTER XEH */
+#define XK_Armenian_TSA 0x100053e /* U+053E ARMENIAN CAPITAL LETTER CA */
+#define XK_Armenian_tsa 0x100056e /* U+056E ARMENIAN SMALL LETTER CA */
+#define XK_Armenian_KEN 0x100053f /* U+053F ARMENIAN CAPITAL LETTER KEN */
+#define XK_Armenian_ken 0x100056f /* U+056F ARMENIAN SMALL LETTER KEN */
+#define XK_Armenian_HO 0x1000540 /* U+0540 ARMENIAN CAPITAL LETTER HO */
+#define XK_Armenian_ho 0x1000570 /* U+0570 ARMENIAN SMALL LETTER HO */
+#define XK_Armenian_DZA 0x1000541 /* U+0541 ARMENIAN CAPITAL LETTER JA */
+#define XK_Armenian_dza 0x1000571 /* U+0571 ARMENIAN SMALL LETTER JA */
+#define XK_Armenian_GHAT 0x1000542 /* U+0542 ARMENIAN CAPITAL LETTER GHAD */
+#define XK_Armenian_ghat 0x1000572 /* U+0572 ARMENIAN SMALL LETTER GHAD */
+#define XK_Armenian_TCHE 0x1000543 /* U+0543 ARMENIAN CAPITAL LETTER CHEH */
+#define XK_Armenian_tche 0x1000573 /* U+0573 ARMENIAN SMALL LETTER CHEH */
+#define XK_Armenian_MEN 0x1000544 /* U+0544 ARMENIAN CAPITAL LETTER MEN */
+#define XK_Armenian_men 0x1000574 /* U+0574 ARMENIAN SMALL LETTER MEN */
+#define XK_Armenian_HI 0x1000545 /* U+0545 ARMENIAN CAPITAL LETTER YI */
+#define XK_Armenian_hi 0x1000575 /* U+0575 ARMENIAN SMALL LETTER YI */
+#define XK_Armenian_NU 0x1000546 /* U+0546 ARMENIAN CAPITAL LETTER NOW */
+#define XK_Armenian_nu 0x1000576 /* U+0576 ARMENIAN SMALL LETTER NOW */
+#define XK_Armenian_SHA 0x1000547 /* U+0547 ARMENIAN CAPITAL LETTER SHA */
+#define XK_Armenian_sha 0x1000577 /* U+0577 ARMENIAN SMALL LETTER SHA */
+#define XK_Armenian_VO 0x1000548 /* U+0548 ARMENIAN CAPITAL LETTER VO */
+#define XK_Armenian_vo 0x1000578 /* U+0578 ARMENIAN SMALL LETTER VO */
+#define XK_Armenian_CHA 0x1000549 /* U+0549 ARMENIAN CAPITAL LETTER CHA */
+#define XK_Armenian_cha 0x1000579 /* U+0579 ARMENIAN SMALL LETTER CHA */
+#define XK_Armenian_PE 0x100054a /* U+054A ARMENIAN CAPITAL LETTER PEH */
+#define XK_Armenian_pe 0x100057a /* U+057A ARMENIAN SMALL LETTER PEH */
+#define XK_Armenian_JE 0x100054b /* U+054B ARMENIAN CAPITAL LETTER JHEH */
+#define XK_Armenian_je 0x100057b /* U+057B ARMENIAN SMALL LETTER JHEH */
+#define XK_Armenian_RA 0x100054c /* U+054C ARMENIAN CAPITAL LETTER RA */
+#define XK_Armenian_ra 0x100057c /* U+057C ARMENIAN SMALL LETTER RA */
+#define XK_Armenian_SE 0x100054d /* U+054D ARMENIAN CAPITAL LETTER SEH */
+#define XK_Armenian_se 0x100057d /* U+057D ARMENIAN SMALL LETTER SEH */
+#define XK_Armenian_VEV 0x100054e /* U+054E ARMENIAN CAPITAL LETTER VEW */
+#define XK_Armenian_vev 0x100057e /* U+057E ARMENIAN SMALL LETTER VEW */
+#define XK_Armenian_TYUN 0x100054f /* U+054F ARMENIAN CAPITAL LETTER TIWN */
+#define XK_Armenian_tyun 0x100057f /* U+057F ARMENIAN SMALL LETTER TIWN */
+#define XK_Armenian_RE 0x1000550 /* U+0550 ARMENIAN CAPITAL LETTER REH */
+#define XK_Armenian_re 0x1000580 /* U+0580 ARMENIAN SMALL LETTER REH */
+#define XK_Armenian_TSO 0x1000551 /* U+0551 ARMENIAN CAPITAL LETTER CO */
+#define XK_Armenian_tso 0x1000581 /* U+0581 ARMENIAN SMALL LETTER CO */
+#define XK_Armenian_VYUN 0x1000552 /* U+0552 ARMENIAN CAPITAL LETTER YIWN */
+#define XK_Armenian_vyun 0x1000582 /* U+0582 ARMENIAN SMALL LETTER YIWN */
+#define XK_Armenian_PYUR 0x1000553 /* U+0553 ARMENIAN CAPITAL LETTER PIWR */
+#define XK_Armenian_pyur 0x1000583 /* U+0583 ARMENIAN SMALL LETTER PIWR */
+#define XK_Armenian_KE 0x1000554 /* U+0554 ARMENIAN CAPITAL LETTER KEH */
+#define XK_Armenian_ke 0x1000584 /* U+0584 ARMENIAN SMALL LETTER KEH */
+#define XK_Armenian_O 0x1000555 /* U+0555 ARMENIAN CAPITAL LETTER OH */
+#define XK_Armenian_o 0x1000585 /* U+0585 ARMENIAN SMALL LETTER OH */
+#define XK_Armenian_FE 0x1000556 /* U+0556 ARMENIAN CAPITAL LETTER FEH */
+#define XK_Armenian_fe 0x1000586 /* U+0586 ARMENIAN SMALL LETTER FEH */
+#define XK_Armenian_apostrophe 0x100055a /* U+055A ARMENIAN APOSTROPHE */
+/* XK_ARMENIAN */
+
+/*
+ * Georgian
+ */
+
+
+#define XK_Georgian_an 0x10010d0 /* U+10D0 GEORGIAN LETTER AN */
+#define XK_Georgian_ban 0x10010d1 /* U+10D1 GEORGIAN LETTER BAN */
+#define XK_Georgian_gan 0x10010d2 /* U+10D2 GEORGIAN LETTER GAN */
+#define XK_Georgian_don 0x10010d3 /* U+10D3 GEORGIAN LETTER DON */
+#define XK_Georgian_en 0x10010d4 /* U+10D4 GEORGIAN LETTER EN */
+#define XK_Georgian_vin 0x10010d5 /* U+10D5 GEORGIAN LETTER VIN */
+#define XK_Georgian_zen 0x10010d6 /* U+10D6 GEORGIAN LETTER ZEN */
+#define XK_Georgian_tan 0x10010d7 /* U+10D7 GEORGIAN LETTER TAN */
+#define XK_Georgian_in 0x10010d8 /* U+10D8 GEORGIAN LETTER IN */
+#define XK_Georgian_kan 0x10010d9 /* U+10D9 GEORGIAN LETTER KAN */
+#define XK_Georgian_las 0x10010da /* U+10DA GEORGIAN LETTER LAS */
+#define XK_Georgian_man 0x10010db /* U+10DB GEORGIAN LETTER MAN */
+#define XK_Georgian_nar 0x10010dc /* U+10DC GEORGIAN LETTER NAR */
+#define XK_Georgian_on 0x10010dd /* U+10DD GEORGIAN LETTER ON */
+#define XK_Georgian_par 0x10010de /* U+10DE GEORGIAN LETTER PAR */
+#define XK_Georgian_zhar 0x10010df /* U+10DF GEORGIAN LETTER ZHAR */
+#define XK_Georgian_rae 0x10010e0 /* U+10E0 GEORGIAN LETTER RAE */
+#define XK_Georgian_san 0x10010e1 /* U+10E1 GEORGIAN LETTER SAN */
+#define XK_Georgian_tar 0x10010e2 /* U+10E2 GEORGIAN LETTER TAR */
+#define XK_Georgian_un 0x10010e3 /* U+10E3 GEORGIAN LETTER UN */
+#define XK_Georgian_phar 0x10010e4 /* U+10E4 GEORGIAN LETTER PHAR */
+#define XK_Georgian_khar 0x10010e5 /* U+10E5 GEORGIAN LETTER KHAR */
+#define XK_Georgian_ghan 0x10010e6 /* U+10E6 GEORGIAN LETTER GHAN */
+#define XK_Georgian_qar 0x10010e7 /* U+10E7 GEORGIAN LETTER QAR */
+#define XK_Georgian_shin 0x10010e8 /* U+10E8 GEORGIAN LETTER SHIN */
+#define XK_Georgian_chin 0x10010e9 /* U+10E9 GEORGIAN LETTER CHIN */
+#define XK_Georgian_can 0x10010ea /* U+10EA GEORGIAN LETTER CAN */
+#define XK_Georgian_jil 0x10010eb /* U+10EB GEORGIAN LETTER JIL */
+#define XK_Georgian_cil 0x10010ec /* U+10EC GEORGIAN LETTER CIL */
+#define XK_Georgian_char 0x10010ed /* U+10ED GEORGIAN LETTER CHAR */
+#define XK_Georgian_xan 0x10010ee /* U+10EE GEORGIAN LETTER XAN */
+#define XK_Georgian_jhan 0x10010ef /* U+10EF GEORGIAN LETTER JHAN */
+#define XK_Georgian_hae 0x10010f0 /* U+10F0 GEORGIAN LETTER HAE */
+#define XK_Georgian_he 0x10010f1 /* U+10F1 GEORGIAN LETTER HE */
+#define XK_Georgian_hie 0x10010f2 /* U+10F2 GEORGIAN LETTER HIE */
+#define XK_Georgian_we 0x10010f3 /* U+10F3 GEORGIAN LETTER WE */
+#define XK_Georgian_har 0x10010f4 /* U+10F4 GEORGIAN LETTER HAR */
+#define XK_Georgian_hoe 0x10010f5 /* U+10F5 GEORGIAN LETTER HOE */
+#define XK_Georgian_fi 0x10010f6 /* U+10F6 GEORGIAN LETTER FI */
+/* XK_GEORGIAN */
+
+/*
+ * Azeri (and other Turkic or Caucasian languages)
+ */
+
+
+/* latin */
+#define XK_Xabovedot 0x1001e8a /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */
+#define XK_Ibreve 0x100012c /* U+012C LATIN CAPITAL LETTER I WITH BREVE */
+#define XK_Zstroke 0x10001b5 /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */
+#define XK_Gcaron 0x10001e6 /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */
+#define XK_Ocaron 0x10001d1 /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */
+#define XK_Obarred 0x100019f /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */
+#define XK_xabovedot 0x1001e8b /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */
+#define XK_ibreve 0x100012d /* U+012D LATIN SMALL LETTER I WITH BREVE */
+#define XK_zstroke 0x10001b6 /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */
+#define XK_gcaron 0x10001e7 /* U+01E7 LATIN SMALL LETTER G WITH CARON */
+#define XK_ocaron 0x10001d2 /* U+01D2 LATIN SMALL LETTER O WITH CARON */
+#define XK_obarred 0x1000275 /* U+0275 LATIN SMALL LETTER BARRED O */
+#define XK_SCHWA 0x100018f /* U+018F LATIN CAPITAL LETTER SCHWA */
+#define XK_schwa 0x1000259 /* U+0259 LATIN SMALL LETTER SCHWA */
+/* those are not really Caucasus */
+/* For Inupiak */
+#define XK_Lbelowdot 0x1001e36 /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */
+#define XK_lbelowdot 0x1001e37 /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */
+/* XK_CAUCASUS */
+
+/*
+ * Vietnamese
+ */
+
+
+#define XK_Abelowdot 0x1001ea0 /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */
+#define XK_abelowdot 0x1001ea1 /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */
+#define XK_Ahook 0x1001ea2 /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */
+#define XK_ahook 0x1001ea3 /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */
+#define XK_Acircumflexacute 0x1001ea4 /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */
+#define XK_acircumflexacute 0x1001ea5 /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */
+#define XK_Acircumflexgrave 0x1001ea6 /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */
+#define XK_acircumflexgrave 0x1001ea7 /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */
+#define XK_Acircumflexhook 0x1001ea8 /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_acircumflexhook 0x1001ea9 /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_Acircumflextilde 0x1001eaa /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */
+#define XK_acircumflextilde 0x1001eab /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */
+#define XK_Acircumflexbelowdot 0x1001eac /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_acircumflexbelowdot 0x1001ead /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_Abreveacute 0x1001eae /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */
+#define XK_abreveacute 0x1001eaf /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */
+#define XK_Abrevegrave 0x1001eb0 /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */
+#define XK_abrevegrave 0x1001eb1 /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */
+#define XK_Abrevehook 0x1001eb2 /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */
+#define XK_abrevehook 0x1001eb3 /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */
+#define XK_Abrevetilde 0x1001eb4 /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */
+#define XK_abrevetilde 0x1001eb5 /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */
+#define XK_Abrevebelowdot 0x1001eb6 /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */
+#define XK_abrevebelowdot 0x1001eb7 /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */
+#define XK_Ebelowdot 0x1001eb8 /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */
+#define XK_ebelowdot 0x1001eb9 /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */
+#define XK_Ehook 0x1001eba /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */
+#define XK_ehook 0x1001ebb /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */
+#define XK_Etilde 0x1001ebc /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */
+#define XK_etilde 0x1001ebd /* U+1EBD LATIN SMALL LETTER E WITH TILDE */
+#define XK_Ecircumflexacute 0x1001ebe /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */
+#define XK_ecircumflexacute 0x1001ebf /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */
+#define XK_Ecircumflexgrave 0x1001ec0 /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */
+#define XK_ecircumflexgrave 0x1001ec1 /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */
+#define XK_Ecircumflexhook 0x1001ec2 /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_ecircumflexhook 0x1001ec3 /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_Ecircumflextilde 0x1001ec4 /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */
+#define XK_ecircumflextilde 0x1001ec5 /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */
+#define XK_Ecircumflexbelowdot 0x1001ec6 /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_ecircumflexbelowdot 0x1001ec7 /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_Ihook 0x1001ec8 /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */
+#define XK_ihook 0x1001ec9 /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */
+#define XK_Ibelowdot 0x1001eca /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */
+#define XK_ibelowdot 0x1001ecb /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */
+#define XK_Obelowdot 0x1001ecc /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */
+#define XK_obelowdot 0x1001ecd /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */
+#define XK_Ohook 0x1001ece /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */
+#define XK_ohook 0x1001ecf /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */
+#define XK_Ocircumflexacute 0x1001ed0 /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */
+#define XK_ocircumflexacute 0x1001ed1 /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */
+#define XK_Ocircumflexgrave 0x1001ed2 /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */
+#define XK_ocircumflexgrave 0x1001ed3 /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */
+#define XK_Ocircumflexhook 0x1001ed4 /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_ocircumflexhook 0x1001ed5 /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_Ocircumflextilde 0x1001ed6 /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */
+#define XK_ocircumflextilde 0x1001ed7 /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */
+#define XK_Ocircumflexbelowdot 0x1001ed8 /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_ocircumflexbelowdot 0x1001ed9 /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_Ohornacute 0x1001eda /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */
+#define XK_ohornacute 0x1001edb /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */
+#define XK_Ohorngrave 0x1001edc /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */
+#define XK_ohorngrave 0x1001edd /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */
+#define XK_Ohornhook 0x1001ede /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */
+#define XK_ohornhook 0x1001edf /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */
+#define XK_Ohorntilde 0x1001ee0 /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */
+#define XK_ohorntilde 0x1001ee1 /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */
+#define XK_Ohornbelowdot 0x1001ee2 /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */
+#define XK_ohornbelowdot 0x1001ee3 /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */
+#define XK_Ubelowdot 0x1001ee4 /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */
+#define XK_ubelowdot 0x1001ee5 /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */
+#define XK_Uhook 0x1001ee6 /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */
+#define XK_uhook 0x1001ee7 /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */
+#define XK_Uhornacute 0x1001ee8 /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */
+#define XK_uhornacute 0x1001ee9 /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */
+#define XK_Uhorngrave 0x1001eea /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */
+#define XK_uhorngrave 0x1001eeb /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */
+#define XK_Uhornhook 0x1001eec /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */
+#define XK_uhornhook 0x1001eed /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */
+#define XK_Uhorntilde 0x1001eee /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */
+#define XK_uhorntilde 0x1001eef /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */
+#define XK_Uhornbelowdot 0x1001ef0 /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */
+#define XK_uhornbelowdot 0x1001ef1 /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */
+#define XK_Ybelowdot 0x1001ef4 /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */
+#define XK_ybelowdot 0x1001ef5 /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */
+#define XK_Yhook 0x1001ef6 /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */
+#define XK_yhook 0x1001ef7 /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */
+#define XK_Ytilde 0x1001ef8 /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */
+#define XK_ytilde 0x1001ef9 /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */
+#define XK_Ohorn 0x10001a0 /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */
+#define XK_ohorn 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */
+#define XK_Uhorn 0x10001af /* U+01AF LATIN CAPITAL LETTER U WITH HORN */
+#define XK_uhorn 0x10001b0 /* U+01B0 LATIN SMALL LETTER U WITH HORN */
+
+/* XK_VIETNAMESE */
+
+
+#define XK_EcuSign 0x10020a0 /* U+20A0 EURO-CURRENCY SIGN */
+#define XK_ColonSign 0x10020a1 /* U+20A1 COLON SIGN */
+#define XK_CruzeiroSign 0x10020a2 /* U+20A2 CRUZEIRO SIGN */
+#define XK_FFrancSign 0x10020a3 /* U+20A3 FRENCH FRANC SIGN */
+#define XK_LiraSign 0x10020a4 /* U+20A4 LIRA SIGN */
+#define XK_MillSign 0x10020a5 /* U+20A5 MILL SIGN */
+#define XK_NairaSign 0x10020a6 /* U+20A6 NAIRA SIGN */
+#define XK_PesetaSign 0x10020a7 /* U+20A7 PESETA SIGN */
+#define XK_RupeeSign 0x10020a8 /* U+20A8 RUPEE SIGN */
+#define XK_WonSign 0x10020a9 /* U+20A9 WON SIGN */
+#define XK_NewSheqelSign 0x10020aa /* U+20AA NEW SHEQEL SIGN */
+#define XK_DongSign 0x10020ab /* U+20AB DONG SIGN */
+#define XK_EuroSign 0x20ac /* U+20AC EURO SIGN */
+/* XK_CURRENCY */
+
+
+/* one, two and three are defined above. */
+#define XK_zerosuperior 0x1002070 /* U+2070 SUPERSCRIPT ZERO */
+#define XK_foursuperior 0x1002074 /* U+2074 SUPERSCRIPT FOUR */
+#define XK_fivesuperior 0x1002075 /* U+2075 SUPERSCRIPT FIVE */
+#define XK_sixsuperior 0x1002076 /* U+2076 SUPERSCRIPT SIX */
+#define XK_sevensuperior 0x1002077 /* U+2077 SUPERSCRIPT SEVEN */
+#define XK_eightsuperior 0x1002078 /* U+2078 SUPERSCRIPT EIGHT */
+#define XK_ninesuperior 0x1002079 /* U+2079 SUPERSCRIPT NINE */
+#define XK_zerosubscript 0x1002080 /* U+2080 SUBSCRIPT ZERO */
+#define XK_onesubscript 0x1002081 /* U+2081 SUBSCRIPT ONE */
+#define XK_twosubscript 0x1002082 /* U+2082 SUBSCRIPT TWO */
+#define XK_threesubscript 0x1002083 /* U+2083 SUBSCRIPT THREE */
+#define XK_foursubscript 0x1002084 /* U+2084 SUBSCRIPT FOUR */
+#define XK_fivesubscript 0x1002085 /* U+2085 SUBSCRIPT FIVE */
+#define XK_sixsubscript 0x1002086 /* U+2086 SUBSCRIPT SIX */
+#define XK_sevensubscript 0x1002087 /* U+2087 SUBSCRIPT SEVEN */
+#define XK_eightsubscript 0x1002088 /* U+2088 SUBSCRIPT EIGHT */
+#define XK_ninesubscript 0x1002089 /* U+2089 SUBSCRIPT NINE */
+#define XK_partdifferential 0x1002202 /* U+2202 PARTIAL DIFFERENTIAL */
+#define XK_emptyset 0x1002205 /* U+2205 NULL SET */
+#define XK_elementof 0x1002208 /* U+2208 ELEMENT OF */
+#define XK_notelementof 0x1002209 /* U+2209 NOT AN ELEMENT OF */
+#define XK_containsas 0x100220B /* U+220B CONTAINS AS MEMBER */
+#define XK_squareroot 0x100221A /* U+221A SQUARE ROOT */
+#define XK_cuberoot 0x100221B /* U+221B CUBE ROOT */
+#define XK_fourthroot 0x100221C /* U+221C FOURTH ROOT */
+#define XK_dintegral 0x100222C /* U+222C DOUBLE INTEGRAL */
+#define XK_tintegral 0x100222D /* U+222D TRIPLE INTEGRAL */
+#define XK_because 0x1002235 /* U+2235 BECAUSE */
+#define XK_approxeq 0x1002248 /* U+2245 ALMOST EQUAL TO */
+#define XK_notapproxeq 0x1002247 /* U+2247 NOT ALMOST EQUAL TO */
+#define XK_notidentical 0x1002262 /* U+2262 NOT IDENTICAL TO */
+#define XK_stricteq 0x1002263 /* U+2263 STRICTLY EQUIVALENT TO */
+/* XK_MATHEMATICAL */
+
+
+#define XK_braille_dot_1 0xfff1
+#define XK_braille_dot_2 0xfff2
+#define XK_braille_dot_3 0xfff3
+#define XK_braille_dot_4 0xfff4
+#define XK_braille_dot_5 0xfff5
+#define XK_braille_dot_6 0xfff6
+#define XK_braille_dot_7 0xfff7
+#define XK_braille_dot_8 0xfff8
+#define XK_braille_dot_9 0xfff9
+#define XK_braille_dot_10 0xfffa
+#define XK_braille_blank 0x1002800 /* U+2800 BRAILLE PATTERN BLANK */
+#define XK_braille_dots_1 0x1002801 /* U+2801 BRAILLE PATTERN DOTS-1 */
+#define XK_braille_dots_2 0x1002802 /* U+2802 BRAILLE PATTERN DOTS-2 */
+#define XK_braille_dots_12 0x1002803 /* U+2803 BRAILLE PATTERN DOTS-12 */
+#define XK_braille_dots_3 0x1002804 /* U+2804 BRAILLE PATTERN DOTS-3 */
+#define XK_braille_dots_13 0x1002805 /* U+2805 BRAILLE PATTERN DOTS-13 */
+#define XK_braille_dots_23 0x1002806 /* U+2806 BRAILLE PATTERN DOTS-23 */
+#define XK_braille_dots_123 0x1002807 /* U+2807 BRAILLE PATTERN DOTS-123 */
+#define XK_braille_dots_4 0x1002808 /* U+2808 BRAILLE PATTERN DOTS-4 */
+#define XK_braille_dots_14 0x1002809 /* U+2809 BRAILLE PATTERN DOTS-14 */
+#define XK_braille_dots_24 0x100280a /* U+280a BRAILLE PATTERN DOTS-24 */
+#define XK_braille_dots_124 0x100280b /* U+280b BRAILLE PATTERN DOTS-124 */
+#define XK_braille_dots_34 0x100280c /* U+280c BRAILLE PATTERN DOTS-34 */
+#define XK_braille_dots_134 0x100280d /* U+280d BRAILLE PATTERN DOTS-134 */
+#define XK_braille_dots_234 0x100280e /* U+280e BRAILLE PATTERN DOTS-234 */
+#define XK_braille_dots_1234 0x100280f /* U+280f BRAILLE PATTERN DOTS-1234 */
+#define XK_braille_dots_5 0x1002810 /* U+2810 BRAILLE PATTERN DOTS-5 */
+#define XK_braille_dots_15 0x1002811 /* U+2811 BRAILLE PATTERN DOTS-15 */
+#define XK_braille_dots_25 0x1002812 /* U+2812 BRAILLE PATTERN DOTS-25 */
+#define XK_braille_dots_125 0x1002813 /* U+2813 BRAILLE PATTERN DOTS-125 */
+#define XK_braille_dots_35 0x1002814 /* U+2814 BRAILLE PATTERN DOTS-35 */
+#define XK_braille_dots_135 0x1002815 /* U+2815 BRAILLE PATTERN DOTS-135 */
+#define XK_braille_dots_235 0x1002816 /* U+2816 BRAILLE PATTERN DOTS-235 */
+#define XK_braille_dots_1235 0x1002817 /* U+2817 BRAILLE PATTERN DOTS-1235 */
+#define XK_braille_dots_45 0x1002818 /* U+2818 BRAILLE PATTERN DOTS-45 */
+#define XK_braille_dots_145 0x1002819 /* U+2819 BRAILLE PATTERN DOTS-145 */
+#define XK_braille_dots_245 0x100281a /* U+281a BRAILLE PATTERN DOTS-245 */
+#define XK_braille_dots_1245 0x100281b /* U+281b BRAILLE PATTERN DOTS-1245 */
+#define XK_braille_dots_345 0x100281c /* U+281c BRAILLE PATTERN DOTS-345 */
+#define XK_braille_dots_1345 0x100281d /* U+281d BRAILLE PATTERN DOTS-1345 */
+#define XK_braille_dots_2345 0x100281e /* U+281e BRAILLE PATTERN DOTS-2345 */
+#define XK_braille_dots_12345 0x100281f /* U+281f BRAILLE PATTERN DOTS-12345 */
+#define XK_braille_dots_6 0x1002820 /* U+2820 BRAILLE PATTERN DOTS-6 */
+#define XK_braille_dots_16 0x1002821 /* U+2821 BRAILLE PATTERN DOTS-16 */
+#define XK_braille_dots_26 0x1002822 /* U+2822 BRAILLE PATTERN DOTS-26 */
+#define XK_braille_dots_126 0x1002823 /* U+2823 BRAILLE PATTERN DOTS-126 */
+#define XK_braille_dots_36 0x1002824 /* U+2824 BRAILLE PATTERN DOTS-36 */
+#define XK_braille_dots_136 0x1002825 /* U+2825 BRAILLE PATTERN DOTS-136 */
+#define XK_braille_dots_236 0x1002826 /* U+2826 BRAILLE PATTERN DOTS-236 */
+#define XK_braille_dots_1236 0x1002827 /* U+2827 BRAILLE PATTERN DOTS-1236 */
+#define XK_braille_dots_46 0x1002828 /* U+2828 BRAILLE PATTERN DOTS-46 */
+#define XK_braille_dots_146 0x1002829 /* U+2829 BRAILLE PATTERN DOTS-146 */
+#define XK_braille_dots_246 0x100282a /* U+282a BRAILLE PATTERN DOTS-246 */
+#define XK_braille_dots_1246 0x100282b /* U+282b BRAILLE PATTERN DOTS-1246 */
+#define XK_braille_dots_346 0x100282c /* U+282c BRAILLE PATTERN DOTS-346 */
+#define XK_braille_dots_1346 0x100282d /* U+282d BRAILLE PATTERN DOTS-1346 */
+#define XK_braille_dots_2346 0x100282e /* U+282e BRAILLE PATTERN DOTS-2346 */
+#define XK_braille_dots_12346 0x100282f /* U+282f BRAILLE PATTERN DOTS-12346 */
+#define XK_braille_dots_56 0x1002830 /* U+2830 BRAILLE PATTERN DOTS-56 */
+#define XK_braille_dots_156 0x1002831 /* U+2831 BRAILLE PATTERN DOTS-156 */
+#define XK_braille_dots_256 0x1002832 /* U+2832 BRAILLE PATTERN DOTS-256 */
+#define XK_braille_dots_1256 0x1002833 /* U+2833 BRAILLE PATTERN DOTS-1256 */
+#define XK_braille_dots_356 0x1002834 /* U+2834 BRAILLE PATTERN DOTS-356 */
+#define XK_braille_dots_1356 0x1002835 /* U+2835 BRAILLE PATTERN DOTS-1356 */
+#define XK_braille_dots_2356 0x1002836 /* U+2836 BRAILLE PATTERN DOTS-2356 */
+#define XK_braille_dots_12356 0x1002837 /* U+2837 BRAILLE PATTERN DOTS-12356 */
+#define XK_braille_dots_456 0x1002838 /* U+2838 BRAILLE PATTERN DOTS-456 */
+#define XK_braille_dots_1456 0x1002839 /* U+2839 BRAILLE PATTERN DOTS-1456 */
+#define XK_braille_dots_2456 0x100283a /* U+283a BRAILLE PATTERN DOTS-2456 */
+#define XK_braille_dots_12456 0x100283b /* U+283b BRAILLE PATTERN DOTS-12456 */
+#define XK_braille_dots_3456 0x100283c /* U+283c BRAILLE PATTERN DOTS-3456 */
+#define XK_braille_dots_13456 0x100283d /* U+283d BRAILLE PATTERN DOTS-13456 */
+#define XK_braille_dots_23456 0x100283e /* U+283e BRAILLE PATTERN DOTS-23456 */
+#define XK_braille_dots_123456 0x100283f /* U+283f BRAILLE PATTERN DOTS-123456 */
+#define XK_braille_dots_7 0x1002840 /* U+2840 BRAILLE PATTERN DOTS-7 */
+#define XK_braille_dots_17 0x1002841 /* U+2841 BRAILLE PATTERN DOTS-17 */
+#define XK_braille_dots_27 0x1002842 /* U+2842 BRAILLE PATTERN DOTS-27 */
+#define XK_braille_dots_127 0x1002843 /* U+2843 BRAILLE PATTERN DOTS-127 */
+#define XK_braille_dots_37 0x1002844 /* U+2844 BRAILLE PATTERN DOTS-37 */
+#define XK_braille_dots_137 0x1002845 /* U+2845 BRAILLE PATTERN DOTS-137 */
+#define XK_braille_dots_237 0x1002846 /* U+2846 BRAILLE PATTERN DOTS-237 */
+#define XK_braille_dots_1237 0x1002847 /* U+2847 BRAILLE PATTERN DOTS-1237 */
+#define XK_braille_dots_47 0x1002848 /* U+2848 BRAILLE PATTERN DOTS-47 */
+#define XK_braille_dots_147 0x1002849 /* U+2849 BRAILLE PATTERN DOTS-147 */
+#define XK_braille_dots_247 0x100284a /* U+284a BRAILLE PATTERN DOTS-247 */
+#define XK_braille_dots_1247 0x100284b /* U+284b BRAILLE PATTERN DOTS-1247 */
+#define XK_braille_dots_347 0x100284c /* U+284c BRAILLE PATTERN DOTS-347 */
+#define XK_braille_dots_1347 0x100284d /* U+284d BRAILLE PATTERN DOTS-1347 */
+#define XK_braille_dots_2347 0x100284e /* U+284e BRAILLE PATTERN DOTS-2347 */
+#define XK_braille_dots_12347 0x100284f /* U+284f BRAILLE PATTERN DOTS-12347 */
+#define XK_braille_dots_57 0x1002850 /* U+2850 BRAILLE PATTERN DOTS-57 */
+#define XK_braille_dots_157 0x1002851 /* U+2851 BRAILLE PATTERN DOTS-157 */
+#define XK_braille_dots_257 0x1002852 /* U+2852 BRAILLE PATTERN DOTS-257 */
+#define XK_braille_dots_1257 0x1002853 /* U+2853 BRAILLE PATTERN DOTS-1257 */
+#define XK_braille_dots_357 0x1002854 /* U+2854 BRAILLE PATTERN DOTS-357 */
+#define XK_braille_dots_1357 0x1002855 /* U+2855 BRAILLE PATTERN DOTS-1357 */
+#define XK_braille_dots_2357 0x1002856 /* U+2856 BRAILLE PATTERN DOTS-2357 */
+#define XK_braille_dots_12357 0x1002857 /* U+2857 BRAILLE PATTERN DOTS-12357 */
+#define XK_braille_dots_457 0x1002858 /* U+2858 BRAILLE PATTERN DOTS-457 */
+#define XK_braille_dots_1457 0x1002859 /* U+2859 BRAILLE PATTERN DOTS-1457 */
+#define XK_braille_dots_2457 0x100285a /* U+285a BRAILLE PATTERN DOTS-2457 */
+#define XK_braille_dots_12457 0x100285b /* U+285b BRAILLE PATTERN DOTS-12457 */
+#define XK_braille_dots_3457 0x100285c /* U+285c BRAILLE PATTERN DOTS-3457 */
+#define XK_braille_dots_13457 0x100285d /* U+285d BRAILLE PATTERN DOTS-13457 */
+#define XK_braille_dots_23457 0x100285e /* U+285e BRAILLE PATTERN DOTS-23457 */
+#define XK_braille_dots_123457 0x100285f /* U+285f BRAILLE PATTERN DOTS-123457 */
+#define XK_braille_dots_67 0x1002860 /* U+2860 BRAILLE PATTERN DOTS-67 */
+#define XK_braille_dots_167 0x1002861 /* U+2861 BRAILLE PATTERN DOTS-167 */
+#define XK_braille_dots_267 0x1002862 /* U+2862 BRAILLE PATTERN DOTS-267 */
+#define XK_braille_dots_1267 0x1002863 /* U+2863 BRAILLE PATTERN DOTS-1267 */
+#define XK_braille_dots_367 0x1002864 /* U+2864 BRAILLE PATTERN DOTS-367 */
+#define XK_braille_dots_1367 0x1002865 /* U+2865 BRAILLE PATTERN DOTS-1367 */
+#define XK_braille_dots_2367 0x1002866 /* U+2866 BRAILLE PATTERN DOTS-2367 */
+#define XK_braille_dots_12367 0x1002867 /* U+2867 BRAILLE PATTERN DOTS-12367 */
+#define XK_braille_dots_467 0x1002868 /* U+2868 BRAILLE PATTERN DOTS-467 */
+#define XK_braille_dots_1467 0x1002869 /* U+2869 BRAILLE PATTERN DOTS-1467 */
+#define XK_braille_dots_2467 0x100286a /* U+286a BRAILLE PATTERN DOTS-2467 */
+#define XK_braille_dots_12467 0x100286b /* U+286b BRAILLE PATTERN DOTS-12467 */
+#define XK_braille_dots_3467 0x100286c /* U+286c BRAILLE PATTERN DOTS-3467 */
+#define XK_braille_dots_13467 0x100286d /* U+286d BRAILLE PATTERN DOTS-13467 */
+#define XK_braille_dots_23467 0x100286e /* U+286e BRAILLE PATTERN DOTS-23467 */
+#define XK_braille_dots_123467 0x100286f /* U+286f BRAILLE PATTERN DOTS-123467 */
+#define XK_braille_dots_567 0x1002870 /* U+2870 BRAILLE PATTERN DOTS-567 */
+#define XK_braille_dots_1567 0x1002871 /* U+2871 BRAILLE PATTERN DOTS-1567 */
+#define XK_braille_dots_2567 0x1002872 /* U+2872 BRAILLE PATTERN DOTS-2567 */
+#define XK_braille_dots_12567 0x1002873 /* U+2873 BRAILLE PATTERN DOTS-12567 */
+#define XK_braille_dots_3567 0x1002874 /* U+2874 BRAILLE PATTERN DOTS-3567 */
+#define XK_braille_dots_13567 0x1002875 /* U+2875 BRAILLE PATTERN DOTS-13567 */
+#define XK_braille_dots_23567 0x1002876 /* U+2876 BRAILLE PATTERN DOTS-23567 */
+#define XK_braille_dots_123567 0x1002877 /* U+2877 BRAILLE PATTERN DOTS-123567 */
+#define XK_braille_dots_4567 0x1002878 /* U+2878 BRAILLE PATTERN DOTS-4567 */
+#define XK_braille_dots_14567 0x1002879 /* U+2879 BRAILLE PATTERN DOTS-14567 */
+#define XK_braille_dots_24567 0x100287a /* U+287a BRAILLE PATTERN DOTS-24567 */
+#define XK_braille_dots_124567 0x100287b /* U+287b BRAILLE PATTERN DOTS-124567 */
+#define XK_braille_dots_34567 0x100287c /* U+287c BRAILLE PATTERN DOTS-34567 */
+#define XK_braille_dots_134567 0x100287d /* U+287d BRAILLE PATTERN DOTS-134567 */
+#define XK_braille_dots_234567 0x100287e /* U+287e BRAILLE PATTERN DOTS-234567 */
+#define XK_braille_dots_1234567 0x100287f /* U+287f BRAILLE PATTERN DOTS-1234567 */
+#define XK_braille_dots_8 0x1002880 /* U+2880 BRAILLE PATTERN DOTS-8 */
+#define XK_braille_dots_18 0x1002881 /* U+2881 BRAILLE PATTERN DOTS-18 */
+#define XK_braille_dots_28 0x1002882 /* U+2882 BRAILLE PATTERN DOTS-28 */
+#define XK_braille_dots_128 0x1002883 /* U+2883 BRAILLE PATTERN DOTS-128 */
+#define XK_braille_dots_38 0x1002884 /* U+2884 BRAILLE PATTERN DOTS-38 */
+#define XK_braille_dots_138 0x1002885 /* U+2885 BRAILLE PATTERN DOTS-138 */
+#define XK_braille_dots_238 0x1002886 /* U+2886 BRAILLE PATTERN DOTS-238 */
+#define XK_braille_dots_1238 0x1002887 /* U+2887 BRAILLE PATTERN DOTS-1238 */
+#define XK_braille_dots_48 0x1002888 /* U+2888 BRAILLE PATTERN DOTS-48 */
+#define XK_braille_dots_148 0x1002889 /* U+2889 BRAILLE PATTERN DOTS-148 */
+#define XK_braille_dots_248 0x100288a /* U+288a BRAILLE PATTERN DOTS-248 */
+#define XK_braille_dots_1248 0x100288b /* U+288b BRAILLE PATTERN DOTS-1248 */
+#define XK_braille_dots_348 0x100288c /* U+288c BRAILLE PATTERN DOTS-348 */
+#define XK_braille_dots_1348 0x100288d /* U+288d BRAILLE PATTERN DOTS-1348 */
+#define XK_braille_dots_2348 0x100288e /* U+288e BRAILLE PATTERN DOTS-2348 */
+#define XK_braille_dots_12348 0x100288f /* U+288f BRAILLE PATTERN DOTS-12348 */
+#define XK_braille_dots_58 0x1002890 /* U+2890 BRAILLE PATTERN DOTS-58 */
+#define XK_braille_dots_158 0x1002891 /* U+2891 BRAILLE PATTERN DOTS-158 */
+#define XK_braille_dots_258 0x1002892 /* U+2892 BRAILLE PATTERN DOTS-258 */
+#define XK_braille_dots_1258 0x1002893 /* U+2893 BRAILLE PATTERN DOTS-1258 */
+#define XK_braille_dots_358 0x1002894 /* U+2894 BRAILLE PATTERN DOTS-358 */
+#define XK_braille_dots_1358 0x1002895 /* U+2895 BRAILLE PATTERN DOTS-1358 */
+#define XK_braille_dots_2358 0x1002896 /* U+2896 BRAILLE PATTERN DOTS-2358 */
+#define XK_braille_dots_12358 0x1002897 /* U+2897 BRAILLE PATTERN DOTS-12358 */
+#define XK_braille_dots_458 0x1002898 /* U+2898 BRAILLE PATTERN DOTS-458 */
+#define XK_braille_dots_1458 0x1002899 /* U+2899 BRAILLE PATTERN DOTS-1458 */
+#define XK_braille_dots_2458 0x100289a /* U+289a BRAILLE PATTERN DOTS-2458 */
+#define XK_braille_dots_12458 0x100289b /* U+289b BRAILLE PATTERN DOTS-12458 */
+#define XK_braille_dots_3458 0x100289c /* U+289c BRAILLE PATTERN DOTS-3458 */
+#define XK_braille_dots_13458 0x100289d /* U+289d BRAILLE PATTERN DOTS-13458 */
+#define XK_braille_dots_23458 0x100289e /* U+289e BRAILLE PATTERN DOTS-23458 */
+#define XK_braille_dots_123458 0x100289f /* U+289f BRAILLE PATTERN DOTS-123458 */
+#define XK_braille_dots_68 0x10028a0 /* U+28a0 BRAILLE PATTERN DOTS-68 */
+#define XK_braille_dots_168 0x10028a1 /* U+28a1 BRAILLE PATTERN DOTS-168 */
+#define XK_braille_dots_268 0x10028a2 /* U+28a2 BRAILLE PATTERN DOTS-268 */
+#define XK_braille_dots_1268 0x10028a3 /* U+28a3 BRAILLE PATTERN DOTS-1268 */
+#define XK_braille_dots_368 0x10028a4 /* U+28a4 BRAILLE PATTERN DOTS-368 */
+#define XK_braille_dots_1368 0x10028a5 /* U+28a5 BRAILLE PATTERN DOTS-1368 */
+#define XK_braille_dots_2368 0x10028a6 /* U+28a6 BRAILLE PATTERN DOTS-2368 */
+#define XK_braille_dots_12368 0x10028a7 /* U+28a7 BRAILLE PATTERN DOTS-12368 */
+#define XK_braille_dots_468 0x10028a8 /* U+28a8 BRAILLE PATTERN DOTS-468 */
+#define XK_braille_dots_1468 0x10028a9 /* U+28a9 BRAILLE PATTERN DOTS-1468 */
+#define XK_braille_dots_2468 0x10028aa /* U+28aa BRAILLE PATTERN DOTS-2468 */
+#define XK_braille_dots_12468 0x10028ab /* U+28ab BRAILLE PATTERN DOTS-12468 */
+#define XK_braille_dots_3468 0x10028ac /* U+28ac BRAILLE PATTERN DOTS-3468 */
+#define XK_braille_dots_13468 0x10028ad /* U+28ad BRAILLE PATTERN DOTS-13468 */
+#define XK_braille_dots_23468 0x10028ae /* U+28ae BRAILLE PATTERN DOTS-23468 */
+#define XK_braille_dots_123468 0x10028af /* U+28af BRAILLE PATTERN DOTS-123468 */
+#define XK_braille_dots_568 0x10028b0 /* U+28b0 BRAILLE PATTERN DOTS-568 */
+#define XK_braille_dots_1568 0x10028b1 /* U+28b1 BRAILLE PATTERN DOTS-1568 */
+#define XK_braille_dots_2568 0x10028b2 /* U+28b2 BRAILLE PATTERN DOTS-2568 */
+#define XK_braille_dots_12568 0x10028b3 /* U+28b3 BRAILLE PATTERN DOTS-12568 */
+#define XK_braille_dots_3568 0x10028b4 /* U+28b4 BRAILLE PATTERN DOTS-3568 */
+#define XK_braille_dots_13568 0x10028b5 /* U+28b5 BRAILLE PATTERN DOTS-13568 */
+#define XK_braille_dots_23568 0x10028b6 /* U+28b6 BRAILLE PATTERN DOTS-23568 */
+#define XK_braille_dots_123568 0x10028b7 /* U+28b7 BRAILLE PATTERN DOTS-123568 */
+#define XK_braille_dots_4568 0x10028b8 /* U+28b8 BRAILLE PATTERN DOTS-4568 */
+#define XK_braille_dots_14568 0x10028b9 /* U+28b9 BRAILLE PATTERN DOTS-14568 */
+#define XK_braille_dots_24568 0x10028ba /* U+28ba BRAILLE PATTERN DOTS-24568 */
+#define XK_braille_dots_124568 0x10028bb /* U+28bb BRAILLE PATTERN DOTS-124568 */
+#define XK_braille_dots_34568 0x10028bc /* U+28bc BRAILLE PATTERN DOTS-34568 */
+#define XK_braille_dots_134568 0x10028bd /* U+28bd BRAILLE PATTERN DOTS-134568 */
+#define XK_braille_dots_234568 0x10028be /* U+28be BRAILLE PATTERN DOTS-234568 */
+#define XK_braille_dots_1234568 0x10028bf /* U+28bf BRAILLE PATTERN DOTS-1234568 */
+#define XK_braille_dots_78 0x10028c0 /* U+28c0 BRAILLE PATTERN DOTS-78 */
+#define XK_braille_dots_178 0x10028c1 /* U+28c1 BRAILLE PATTERN DOTS-178 */
+#define XK_braille_dots_278 0x10028c2 /* U+28c2 BRAILLE PATTERN DOTS-278 */
+#define XK_braille_dots_1278 0x10028c3 /* U+28c3 BRAILLE PATTERN DOTS-1278 */
+#define XK_braille_dots_378 0x10028c4 /* U+28c4 BRAILLE PATTERN DOTS-378 */
+#define XK_braille_dots_1378 0x10028c5 /* U+28c5 BRAILLE PATTERN DOTS-1378 */
+#define XK_braille_dots_2378 0x10028c6 /* U+28c6 BRAILLE PATTERN DOTS-2378 */
+#define XK_braille_dots_12378 0x10028c7 /* U+28c7 BRAILLE PATTERN DOTS-12378 */
+#define XK_braille_dots_478 0x10028c8 /* U+28c8 BRAILLE PATTERN DOTS-478 */
+#define XK_braille_dots_1478 0x10028c9 /* U+28c9 BRAILLE PATTERN DOTS-1478 */
+#define XK_braille_dots_2478 0x10028ca /* U+28ca BRAILLE PATTERN DOTS-2478 */
+#define XK_braille_dots_12478 0x10028cb /* U+28cb BRAILLE PATTERN DOTS-12478 */
+#define XK_braille_dots_3478 0x10028cc /* U+28cc BRAILLE PATTERN DOTS-3478 */
+#define XK_braille_dots_13478 0x10028cd /* U+28cd BRAILLE PATTERN DOTS-13478 */
+#define XK_braille_dots_23478 0x10028ce /* U+28ce BRAILLE PATTERN DOTS-23478 */
+#define XK_braille_dots_123478 0x10028cf /* U+28cf BRAILLE PATTERN DOTS-123478 */
+#define XK_braille_dots_578 0x10028d0 /* U+28d0 BRAILLE PATTERN DOTS-578 */
+#define XK_braille_dots_1578 0x10028d1 /* U+28d1 BRAILLE PATTERN DOTS-1578 */
+#define XK_braille_dots_2578 0x10028d2 /* U+28d2 BRAILLE PATTERN DOTS-2578 */
+#define XK_braille_dots_12578 0x10028d3 /* U+28d3 BRAILLE PATTERN DOTS-12578 */
+#define XK_braille_dots_3578 0x10028d4 /* U+28d4 BRAILLE PATTERN DOTS-3578 */
+#define XK_braille_dots_13578 0x10028d5 /* U+28d5 BRAILLE PATTERN DOTS-13578 */
+#define XK_braille_dots_23578 0x10028d6 /* U+28d6 BRAILLE PATTERN DOTS-23578 */
+#define XK_braille_dots_123578 0x10028d7 /* U+28d7 BRAILLE PATTERN DOTS-123578 */
+#define XK_braille_dots_4578 0x10028d8 /* U+28d8 BRAILLE PATTERN DOTS-4578 */
+#define XK_braille_dots_14578 0x10028d9 /* U+28d9 BRAILLE PATTERN DOTS-14578 */
+#define XK_braille_dots_24578 0x10028da /* U+28da BRAILLE PATTERN DOTS-24578 */
+#define XK_braille_dots_124578 0x10028db /* U+28db BRAILLE PATTERN DOTS-124578 */
+#define XK_braille_dots_34578 0x10028dc /* U+28dc BRAILLE PATTERN DOTS-34578 */
+#define XK_braille_dots_134578 0x10028dd /* U+28dd BRAILLE PATTERN DOTS-134578 */
+#define XK_braille_dots_234578 0x10028de /* U+28de BRAILLE PATTERN DOTS-234578 */
+#define XK_braille_dots_1234578 0x10028df /* U+28df BRAILLE PATTERN DOTS-1234578 */
+#define XK_braille_dots_678 0x10028e0 /* U+28e0 BRAILLE PATTERN DOTS-678 */
+#define XK_braille_dots_1678 0x10028e1 /* U+28e1 BRAILLE PATTERN DOTS-1678 */
+#define XK_braille_dots_2678 0x10028e2 /* U+28e2 BRAILLE PATTERN DOTS-2678 */
+#define XK_braille_dots_12678 0x10028e3 /* U+28e3 BRAILLE PATTERN DOTS-12678 */
+#define XK_braille_dots_3678 0x10028e4 /* U+28e4 BRAILLE PATTERN DOTS-3678 */
+#define XK_braille_dots_13678 0x10028e5 /* U+28e5 BRAILLE PATTERN DOTS-13678 */
+#define XK_braille_dots_23678 0x10028e6 /* U+28e6 BRAILLE PATTERN DOTS-23678 */
+#define XK_braille_dots_123678 0x10028e7 /* U+28e7 BRAILLE PATTERN DOTS-123678 */
+#define XK_braille_dots_4678 0x10028e8 /* U+28e8 BRAILLE PATTERN DOTS-4678 */
+#define XK_braille_dots_14678 0x10028e9 /* U+28e9 BRAILLE PATTERN DOTS-14678 */
+#define XK_braille_dots_24678 0x10028ea /* U+28ea BRAILLE PATTERN DOTS-24678 */
+#define XK_braille_dots_124678 0x10028eb /* U+28eb BRAILLE PATTERN DOTS-124678 */
+#define XK_braille_dots_34678 0x10028ec /* U+28ec BRAILLE PATTERN DOTS-34678 */
+#define XK_braille_dots_134678 0x10028ed /* U+28ed BRAILLE PATTERN DOTS-134678 */
+#define XK_braille_dots_234678 0x10028ee /* U+28ee BRAILLE PATTERN DOTS-234678 */
+#define XK_braille_dots_1234678 0x10028ef /* U+28ef BRAILLE PATTERN DOTS-1234678 */
+#define XK_braille_dots_5678 0x10028f0 /* U+28f0 BRAILLE PATTERN DOTS-5678 */
+#define XK_braille_dots_15678 0x10028f1 /* U+28f1 BRAILLE PATTERN DOTS-15678 */
+#define XK_braille_dots_25678 0x10028f2 /* U+28f2 BRAILLE PATTERN DOTS-25678 */
+#define XK_braille_dots_125678 0x10028f3 /* U+28f3 BRAILLE PATTERN DOTS-125678 */
+#define XK_braille_dots_35678 0x10028f4 /* U+28f4 BRAILLE PATTERN DOTS-35678 */
+#define XK_braille_dots_135678 0x10028f5 /* U+28f5 BRAILLE PATTERN DOTS-135678 */
+#define XK_braille_dots_235678 0x10028f6 /* U+28f6 BRAILLE PATTERN DOTS-235678 */
+#define XK_braille_dots_1235678 0x10028f7 /* U+28f7 BRAILLE PATTERN DOTS-1235678 */
+#define XK_braille_dots_45678 0x10028f8 /* U+28f8 BRAILLE PATTERN DOTS-45678 */
+#define XK_braille_dots_145678 0x10028f9 /* U+28f9 BRAILLE PATTERN DOTS-145678 */
+#define XK_braille_dots_245678 0x10028fa /* U+28fa BRAILLE PATTERN DOTS-245678 */
+#define XK_braille_dots_1245678 0x10028fb /* U+28fb BRAILLE PATTERN DOTS-1245678 */
+#define XK_braille_dots_345678 0x10028fc /* U+28fc BRAILLE PATTERN DOTS-345678 */
+#define XK_braille_dots_1345678 0x10028fd /* U+28fd BRAILLE PATTERN DOTS-1345678 */
+#define XK_braille_dots_2345678 0x10028fe /* U+28fe BRAILLE PATTERN DOTS-2345678 */
+#define XK_braille_dots_12345678 0x10028ff /* U+28ff BRAILLE PATTERN DOTS-12345678 */
+/* XK_BRAILLE */
+
+/*
+ * Sinhala (http://unicode.org/charts/PDF/U0D80.pdf)
+ * http://www.nongnu.org/sinhala/doc/transliteration/sinhala-transliteration_6.html
+ */
+
+
+#define XK_Sinh_ng 0x1000d82 /* U+0D82 SINHALA ANUSVARAYA */
+#define XK_Sinh_h2 0x1000d83 /* U+0D83 SINHALA VISARGAYA */
+#define XK_Sinh_a 0x1000d85 /* U+0D85 SINHALA AYANNA */
+#define XK_Sinh_aa 0x1000d86 /* U+0D86 SINHALA AAYANNA */
+#define XK_Sinh_ae 0x1000d87 /* U+0D87 SINHALA AEYANNA */
+#define XK_Sinh_aee 0x1000d88 /* U+0D88 SINHALA AEEYANNA */
+#define XK_Sinh_i 0x1000d89 /* U+0D89 SINHALA IYANNA */
+#define XK_Sinh_ii 0x1000d8a /* U+0D8A SINHALA IIYANNA */
+#define XK_Sinh_u 0x1000d8b /* U+0D8B SINHALA UYANNA */
+#define XK_Sinh_uu 0x1000d8c /* U+0D8C SINHALA UUYANNA */
+#define XK_Sinh_ri 0x1000d8d /* U+0D8D SINHALA IRUYANNA */
+#define XK_Sinh_rii 0x1000d8e /* U+0D8E SINHALA IRUUYANNA */
+#define XK_Sinh_lu 0x1000d8f /* U+0D8F SINHALA ILUYANNA */
+#define XK_Sinh_luu 0x1000d90 /* U+0D90 SINHALA ILUUYANNA */
+#define XK_Sinh_e 0x1000d91 /* U+0D91 SINHALA EYANNA */
+#define XK_Sinh_ee 0x1000d92 /* U+0D92 SINHALA EEYANNA */
+#define XK_Sinh_ai 0x1000d93 /* U+0D93 SINHALA AIYANNA */
+#define XK_Sinh_o 0x1000d94 /* U+0D94 SINHALA OYANNA */
+#define XK_Sinh_oo 0x1000d95 /* U+0D95 SINHALA OOYANNA */
+#define XK_Sinh_au 0x1000d96 /* U+0D96 SINHALA AUYANNA */
+#define XK_Sinh_ka 0x1000d9a /* U+0D9A SINHALA KAYANNA */
+#define XK_Sinh_kha 0x1000d9b /* U+0D9B SINHALA MAHA. KAYANNA */
+#define XK_Sinh_ga 0x1000d9c /* U+0D9C SINHALA GAYANNA */
+#define XK_Sinh_gha 0x1000d9d /* U+0D9D SINHALA MAHA. GAYANNA */
+#define XK_Sinh_ng2 0x1000d9e /* U+0D9E SINHALA KANTAJA NAASIKYAYA */
+#define XK_Sinh_nga 0x1000d9f /* U+0D9F SINHALA SANYAKA GAYANNA */
+#define XK_Sinh_ca 0x1000da0 /* U+0DA0 SINHALA CAYANNA */
+#define XK_Sinh_cha 0x1000da1 /* U+0DA1 SINHALA MAHA. CAYANNA */
+#define XK_Sinh_ja 0x1000da2 /* U+0DA2 SINHALA JAYANNA */
+#define XK_Sinh_jha 0x1000da3 /* U+0DA3 SINHALA MAHA. JAYANNA */
+#define XK_Sinh_nya 0x1000da4 /* U+0DA4 SINHALA TAALUJA NAASIKYAYA */
+#define XK_Sinh_jnya 0x1000da5 /* U+0DA5 SINHALA TAALUJA SANYOOGA NAASIKYAYA */
+#define XK_Sinh_nja 0x1000da6 /* U+0DA6 SINHALA SANYAKA JAYANNA */
+#define XK_Sinh_tta 0x1000da7 /* U+0DA7 SINHALA TTAYANNA */
+#define XK_Sinh_ttha 0x1000da8 /* U+0DA8 SINHALA MAHA. TTAYANNA */
+#define XK_Sinh_dda 0x1000da9 /* U+0DA9 SINHALA DDAYANNA */
+#define XK_Sinh_ddha 0x1000daa /* U+0DAA SINHALA MAHA. DDAYANNA */
+#define XK_Sinh_nna 0x1000dab /* U+0DAB SINHALA MUURDHAJA NAYANNA */
+#define XK_Sinh_ndda 0x1000dac /* U+0DAC SINHALA SANYAKA DDAYANNA */
+#define XK_Sinh_tha 0x1000dad /* U+0DAD SINHALA TAYANNA */
+#define XK_Sinh_thha 0x1000dae /* U+0DAE SINHALA MAHA. TAYANNA */
+#define XK_Sinh_dha 0x1000daf /* U+0DAF SINHALA DAYANNA */
+#define XK_Sinh_dhha 0x1000db0 /* U+0DB0 SINHALA MAHA. DAYANNA */
+#define XK_Sinh_na 0x1000db1 /* U+0DB1 SINHALA DANTAJA NAYANNA */
+#define XK_Sinh_ndha 0x1000db3 /* U+0DB3 SINHALA SANYAKA DAYANNA */
+#define XK_Sinh_pa 0x1000db4 /* U+0DB4 SINHALA PAYANNA */
+#define XK_Sinh_pha 0x1000db5 /* U+0DB5 SINHALA MAHA. PAYANNA */
+#define XK_Sinh_ba 0x1000db6 /* U+0DB6 SINHALA BAYANNA */
+#define XK_Sinh_bha 0x1000db7 /* U+0DB7 SINHALA MAHA. BAYANNA */
+#define XK_Sinh_ma 0x1000db8 /* U+0DB8 SINHALA MAYANNA */
+#define XK_Sinh_mba 0x1000db9 /* U+0DB9 SINHALA AMBA BAYANNA */
+#define XK_Sinh_ya 0x1000dba /* U+0DBA SINHALA YAYANNA */
+#define XK_Sinh_ra 0x1000dbb /* U+0DBB SINHALA RAYANNA */
+#define XK_Sinh_la 0x1000dbd /* U+0DBD SINHALA DANTAJA LAYANNA */
+#define XK_Sinh_va 0x1000dc0 /* U+0DC0 SINHALA VAYANNA */
+#define XK_Sinh_sha 0x1000dc1 /* U+0DC1 SINHALA TAALUJA SAYANNA */
+#define XK_Sinh_ssha 0x1000dc2 /* U+0DC2 SINHALA MUURDHAJA SAYANNA */
+#define XK_Sinh_sa 0x1000dc3 /* U+0DC3 SINHALA DANTAJA SAYANNA */
+#define XK_Sinh_ha 0x1000dc4 /* U+0DC4 SINHALA HAYANNA */
+#define XK_Sinh_lla 0x1000dc5 /* U+0DC5 SINHALA MUURDHAJA LAYANNA */
+#define XK_Sinh_fa 0x1000dc6 /* U+0DC6 SINHALA FAYANNA */
+#define XK_Sinh_al 0x1000dca /* U+0DCA SINHALA AL-LAKUNA */
+#define XK_Sinh_aa2 0x1000dcf /* U+0DCF SINHALA AELA-PILLA */
+#define XK_Sinh_ae2 0x1000dd0 /* U+0DD0 SINHALA AEDA-PILLA */
+#define XK_Sinh_aee2 0x1000dd1 /* U+0DD1 SINHALA DIGA AEDA-PILLA */
+#define XK_Sinh_i2 0x1000dd2 /* U+0DD2 SINHALA IS-PILLA */
+#define XK_Sinh_ii2 0x1000dd3 /* U+0DD3 SINHALA DIGA IS-PILLA */
+#define XK_Sinh_u2 0x1000dd4 /* U+0DD4 SINHALA PAA-PILLA */
+#define XK_Sinh_uu2 0x1000dd6 /* U+0DD6 SINHALA DIGA PAA-PILLA */
+#define XK_Sinh_ru2 0x1000dd8 /* U+0DD8 SINHALA GAETTA-PILLA */
+#define XK_Sinh_e2 0x1000dd9 /* U+0DD9 SINHALA KOMBUVA */
+#define XK_Sinh_ee2 0x1000dda /* U+0DDA SINHALA DIGA KOMBUVA */
+#define XK_Sinh_ai2 0x1000ddb /* U+0DDB SINHALA KOMBU DEKA */
+#define XK_Sinh_o2 0x1000ddc /* U+0DDC SINHALA KOMBUVA HAA AELA-PILLA*/
+#define XK_Sinh_oo2 0x1000ddd /* U+0DDD SINHALA KOMBUVA HAA DIGA AELA-PILLA*/
+#define XK_Sinh_au2 0x1000dde /* U+0DDE SINHALA KOMBUVA HAA GAYANUKITTA */
+#define XK_Sinh_lu2 0x1000ddf /* U+0DDF SINHALA GAYANUKITTA */
+#define XK_Sinh_ruu2 0x1000df2 /* U+0DF2 SINHALA DIGA GAETTA-PILLA */
+#define XK_Sinh_luu2 0x1000df3 /* U+0DF3 SINHALA DIGA GAYANUKITTA */
+#define XK_Sinh_kunddaliya 0x1000df4 /* U+0DF4 SINHALA KUNDDALIYA */
+/* XK_SINHALA */
+# 73 "/usr/include/X11/keysym.h" 2 3
+
+
+# 54 "/usr/include/X11/Xutil.h" 2 3
+
+
+/*
+ * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
+ * value (x, y, width, height) was found in the parsed string.
+ */
+#define NoValue 0x0000
+#define XValue 0x0001
+#define YValue 0x0002
+#define WidthValue 0x0004
+#define HeightValue 0x0008
+#define AllValues 0x000F
+#define XNegative 0x0010
+#define YNegative 0x0020
+
+/*
+ * new version containing base_width, base_height, and win_gravity fields;
+ * used with WM_NORMAL_HINTS.
+ */
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ int x, y; /* obsolete for new window mgrs, but clients */
+ int width, height; /* should set so old wm's don't mess up */
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+ struct {
+ int x; /* numerator */
+ int y; /* denominator */
+ } min_aspect, max_aspect;
+ int base_width, base_height; /* added by ICCCM version 1 */
+ int win_gravity; /* added by ICCCM version 1 */
+} XSizeHints;
+
+/*
+ * The next block of definitions are for window manager properties that
+ * clients and applications use for communication.
+ */
+
+/* flags argument in size hints */
+#define USPosition (1L << 0) /* user specified x, y */
+#define USSize (1L << 1) /* user specified width, height */
+
+#define PPosition (1L << 2) /* program specified position */
+#define PSize (1L << 3) /* program specified size */
+#define PMinSize (1L << 4) /* program specified minimum size */
+#define PMaxSize (1L << 5) /* program specified maximum size */
+#define PResizeInc (1L << 6) /* program specified resize increments */
+#define PAspect (1L << 7) /* program specified min and max aspect ratios */
+#define PBaseSize (1L << 8) /* program specified base for incrementing */
+#define PWinGravity (1L << 9) /* program specified window gravity */
+
+/* obsolete */
+#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
+
+
+
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ int input; /* does this application rely on the window manager to
+ get keyboard input? */
+ int initial_state; /* see below */
+ Pixmap icon_pixmap; /* pixmap to be used as icon */
+ Window icon_window; /* window to be used as icon */
+ int icon_x, icon_y; /* initial position of icon */
+ Pixmap icon_mask; /* icon mask bitmap */
+ XID window_group; /* id of related window group */
+ /* this structure may be extended in the future */
+} XWMHints;
+
+/* definition for flags of XWMHints */
+
+#define InputHint (1L << 0)
+#define StateHint (1L << 1)
+#define IconPixmapHint (1L << 2)
+#define IconWindowHint (1L << 3)
+#define IconPositionHint (1L << 4)
+#define IconMaskHint (1L << 5)
+#define WindowGroupHint (1L << 6)
+#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
+IconPositionHint|IconMaskHint|WindowGroupHint)
+#define XUrgencyHint (1L << 8)
+
+/* definitions for initial window state */
+#define WithdrawnState 0 /* for windows that are not mapped */
+#define NormalState 1 /* most applications want to start this way */
+#define IconicState 3 /* application wants to start as an icon */
+
+/*
+ * Obsolete states no longer defined by ICCCM
+ */
+#define DontCareState 0 /* don't know or care */
+#define ZoomState 2 /* application wants to start zoomed */
+#define InactiveState 4 /* application believes it is seldom used; */
+ /* some wm's may put it on inactive menu */
+
+
+/*
+ * new structure for manipulating TEXT properties; used with WM_NAME,
+ * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
+ */
+typedef struct {
+ unsigned char *value; /* same as Property routines */
+ Atom encoding; /* prop type */
+ int format; /* prop data format: 8, 16, or 32 */
+ unsigned long nitems; /* number of data items in value */
+} XTextProperty;
+
+#define XNoMemory -1
+#define XLocaleNotSupported -2
+#define XConverterNotFound -3
+
+typedef enum {
+ XStringStyle, /* STRING */
+ XCompoundTextStyle, /* COMPOUND_TEXT */
+ XTextStyle, /* text in owner's encoding (current locale)*/
+ XStdICCTextStyle, /* STRING, else COMPOUND_TEXT */
+ /* The following is an XFree86 extension, introduced in November 2000 */
+ XUTF8StringStyle /* UTF8_STRING */
+} XICCEncodingStyle;
+
+typedef struct {
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+} XIconSize;
+
+typedef struct {
+ char *res_name;
+ char *res_class;
+} XClassHint;
+
+# 203 "/usr/include/X11/Xutil.h" 3
+
+/*
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ */
+#define XDestroyImage(ximage) \
+ ((*((ximage)->f.destroy_image))((ximage)))
+#define XGetPixel(ximage, x, y) \
+ ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
+#define XPutPixel(ximage, x, y, pixel) \
+ ((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
+#define XSubImage(ximage, x, y, width, height) \
+ ((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
+#define XAddPixel(ximage, value) \
+ ((*((ximage)->f.add_pixel))((ximage), (value)))
+
+
+/*
+ * Compose sequence status structure, used in calling XLookupString.
+ */
+typedef struct _XComposeStatus {
+ XPointer compose_ptr; /* state table pointer */
+ int chars_matched; /* match state */
+} XComposeStatus;
+
+/*
+ * Keysym macros, used on Keysyms to test for classes of symbols
+ */
+#define IsKeypadKey(keysym) \
+ (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal))
+
+#define IsPrivateKeypadKey(keysym) \
+ (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))
+
+#define IsCursorKey(keysym) \
+ (((KeySym)(keysym) >= XK_Home) && ((KeySym)(keysym) < XK_Select))
+
+#define IsPFKey(keysym) \
+ (((KeySym)(keysym) >= XK_KP_F1) && ((KeySym)(keysym) <= XK_KP_F4))
+
+#define IsFunctionKey(keysym) \
+ (((KeySym)(keysym) >= XK_F1) && ((KeySym)(keysym) <= XK_F35))
+
+#define IsMiscFunctionKey(keysym) \
+ (((KeySym)(keysym) >= XK_Select) && ((KeySym)(keysym) <= XK_Break))
+
+
+#define IsModifierKey(keysym) \
+ ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
+ || (((KeySym)(keysym) >= XK_ISO_Lock) && \
+ ((KeySym)(keysym) <= XK_ISO_Level5_Lock)) \
+ || ((KeySym)(keysym) == XK_Mode_switch) \
+ || ((KeySym)(keysym) == XK_Num_Lock))
+
+
+
+
+
+
+/*
+ * opaque reference to Region data type
+ */
+typedef struct _XRegion *Region;
+
+/* Return values from XRectInRegion() */
+
+#define RectangleOut 0
+#define RectangleIn 1
+#define RectanglePart 2
+
+
+/*
+ * Information used by the visual utility routines to find desired visual
+ * type from the many visuals a display may support.
+ */
+
+typedef struct {
+ Visual *visual;
+ VisualID visualid;
+ int screen;
+ int depth;
+
+
+
+ int class;
+
+ unsigned long red_mask;
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ int colormap_size;
+ int bits_per_rgb;
+} XVisualInfo;
+
+#define VisualNoMask 0x0
+#define VisualIDMask 0x1
+#define VisualScreenMask 0x2
+#define VisualDepthMask 0x4
+#define VisualClassMask 0x8
+#define VisualRedMaskMask 0x10
+#define VisualGreenMaskMask 0x20
+#define VisualBlueMaskMask 0x40
+#define VisualColormapSizeMask 0x80
+#define VisualBitsPerRGBMask 0x100
+#define VisualAllMask 0x1FF
+
+/*
+ * This defines a window manager property that clients may use to
+ * share standard color maps of type RGB_COLOR_MAP:
+ */
+typedef struct {
+ Colormap colormap;
+ unsigned long red_max;
+ unsigned long red_mult;
+ unsigned long green_max;
+ unsigned long green_mult;
+ unsigned long blue_max;
+ unsigned long blue_mult;
+ unsigned long base_pixel;
+ VisualID visualid; /* added by ICCCM version 1 */
+ XID killid; /* added by ICCCM version 1 */
+} XStandardColormap;
+
+#define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */
+
+
+/*
+ * return codes for XReadBitmapFile and XWriteBitmapFile
+ */
+#define BitmapSuccess 0
+#define BitmapOpenFailed 1
+#define BitmapFileInvalid 2
+#define BitmapNoMemory 3
+
+/****************************************************************
+ *
+ * Context Management
+ *
+ ****************************************************************/
+
+
+/* Associative lookup table return codes */
+
+#define XCSUCCESS 0 /* No error. */
+#define XCNOMEM 1 /* Out of memory */
+#define XCNOENT 2 /* No entry in table */
+
+typedef int XContext;
+
+#define XUniqueContext() ((XContext) XrmUniqueQuark())
+#define XStringToContext(string) ((XContext) XrmStringToQuark(string))
+
+
+
+/* The following declarations are alphabetized. */
+
+extern XClassHint *XAllocClassHint (
+ void
+);
+
+extern XIconSize *XAllocIconSize (
+ void
+);
+
+extern XSizeHints *XAllocSizeHints (
+ void
+);
+
+extern XStandardColormap *XAllocStandardColormap (
+ void
+);
+
+extern XWMHints *XAllocWMHints (
+ void
+);
+
+extern int XClipBox(
+ Region /* r */,
+ XRectangle* /* rect_return */
+);
+
+extern Region XCreateRegion(
+ void
+);
+
+extern const char *XDefaultString (void);
+
+extern int XDeleteContext(
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */
+);
+
+extern int XDestroyRegion(
+ Region /* r */
+);
+
+extern int XEmptyRegion(
+ Region /* r */
+);
+
+extern int XEqualRegion(
+ Region /* r1 */,
+ Region /* r2 */
+);
+
+extern int XFindContext(
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */,
+ XPointer* /* data_return */
+);
+
+extern int XGetClassHint(
+ Display* /* display */,
+ Window /* w */,
+ XClassHint* /* class_hints_return */
+);
+
+extern int XGetIconSizes(
+ Display* /* display */,
+ Window /* w */,
+ XIconSize** /* size_list_return */,
+ int* /* count_return */
+);
+
+extern int XGetNormalHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */
+);
+
+extern int XGetRGBColormaps(
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap** /* stdcmap_return */,
+ int* /* count_return */,
+ Atom /* property */
+);
+
+extern int XGetSizeHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ Atom /* property */
+);
+
+extern int XGetStandardColormap(
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* colormap_return */,
+ Atom /* property */
+);
+
+extern int XGetTextProperty(
+ Display* /* display */,
+ Window /* window */,
+ XTextProperty* /* text_prop_return */,
+ Atom /* property */
+);
+
+extern XVisualInfo *XGetVisualInfo(
+ Display* /* display */,
+ long /* vinfo_mask */,
+ XVisualInfo* /* vinfo_template */,
+ int* /* nitems_return */
+);
+
+extern int XGetWMClientMachine(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+);
+
+extern XWMHints *XGetWMHints(
+ Display* /* display */,
+ Window /* w */
+);
+
+extern int XGetWMIconName(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+);
+
+extern int XGetWMName(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+);
+
+extern int XGetWMNormalHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ long* /* supplied_return */
+);
+
+extern int XGetWMSizeHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ long* /* supplied_return */,
+ Atom /* property */
+);
+
+extern int XGetZoomHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* zhints_return */
+);
+
+extern int XIntersectRegion(
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+);
+
+extern void XConvertCase(
+ KeySym /* sym */,
+ KeySym* /* lower */,
+ KeySym* /* upper */
+);
+
+extern int XLookupString(
+ XKeyEvent* /* event_struct */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ XComposeStatus* /* status_in_out */
+);
+
+extern int XMatchVisualInfo(
+ Display* /* display */,
+ int /* screen */,
+ int /* depth */,
+ int /* class */,
+ XVisualInfo* /* vinfo_return */
+);
+
+extern int XOffsetRegion(
+ Region /* r */,
+ int /* dx */,
+ int /* dy */
+);
+
+extern int XPointInRegion(
+ Region /* r */,
+ int /* x */,
+ int /* y */
+);
+
+extern Region XPolygonRegion(
+ XPoint* /* points */,
+ int /* n */,
+ int /* fill_rule */
+);
+
+extern int XRectInRegion(
+ Region /* r */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+extern int XSaveContext(
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */,
+ const char* /* data */
+);
+
+extern int XSetClassHint(
+ Display* /* display */,
+ Window /* w */,
+ XClassHint* /* class_hints */
+);
+
+extern int XSetIconSizes(
+ Display* /* display */,
+ Window /* w */,
+ XIconSize* /* size_list */,
+ int /* count */
+);
+
+extern int XSetNormalHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */
+);
+
+extern void XSetRGBColormaps(
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* stdcmaps */,
+ int /* count */,
+ Atom /* property */
+);
+
+extern int XSetSizeHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */,
+ Atom /* property */
+);
+
+extern int XSetStandardProperties(
+ Display* /* display */,
+ Window /* w */,
+ const char* /* window_name */,
+ const char* /* icon_name */,
+ Pixmap /* icon_pixmap */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* hints */
+);
+
+extern void XSetTextProperty(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */,
+ Atom /* property */
+);
+
+extern void XSetWMClientMachine(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+);
+
+extern int XSetWMHints(
+ Display* /* display */,
+ Window /* w */,
+ XWMHints* /* wm_hints */
+);
+
+extern void XSetWMIconName(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+);
+
+extern void XSetWMName(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+);
+
+extern void XSetWMNormalHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */
+);
+
+extern void XSetWMProperties(
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* window_name */,
+ XTextProperty* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+);
+
+extern void XmbSetWMProperties(
+ Display* /* display */,
+ Window /* w */,
+ const char* /* window_name */,
+ const char* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+);
+
+extern void Xutf8SetWMProperties(
+ Display* /* display */,
+ Window /* w */,
+ const char* /* window_name */,
+ const char* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+);
+
+extern void XSetWMSizeHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */,
+ Atom /* property */
+);
+
+extern int XSetRegion(
+ Display* /* display */,
+ GC /* gc */,
+ Region /* r */
+);
+
+extern void XSetStandardColormap(
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* colormap */,
+ Atom /* property */
+);
+
+extern int XSetZoomHints(
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* zhints */
+);
+
+extern int XShrinkRegion(
+ Region /* r */,
+ int /* dx */,
+ int /* dy */
+);
+
+extern int XStringListToTextProperty(
+ char** /* list */,
+ int /* count */,
+ XTextProperty* /* text_prop_return */
+);
+
+extern int XSubtractRegion(
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+);
+
+extern int XmbTextListToTextProperty(
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+extern int XwcTextListToTextProperty(
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+extern int Xutf8TextListToTextProperty(
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+extern void XwcFreeStringList(
+ wchar_t** list
+);
+
+extern int XTextPropertyToStringList(
+ XTextProperty* /* text_prop */,
+ char*** /* list_return */,
+ int* /* count_return */
+);
+
+extern int XmbTextPropertyToTextList(
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
+);
+
+extern int XwcTextPropertyToTextList(
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
+);
+
+extern int Xutf8TextPropertyToTextList(
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
+);
+
+extern int XUnionRectWithRegion(
+ XRectangle* /* rectangle */,
+ Region /* src_region */,
+ Region /* dest_region_return */
+);
+
+extern int XUnionRegion(
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+);
+
+extern int XWMGeometry(
+ Display* /* display */,
+ int /* screen_number */,
+ const char* /* user_geometry */,
+ const char* /* default_geometry */,
+ unsigned int /* border_width */,
+ XSizeHints* /* hints */,
+ int* /* x_return */,
+ int* /* y_return */,
+ int* /* width_return */,
+ int* /* height_return */,
+ int* /* gravity_return */
+);
+
+extern int XXorRegion(
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+);
+
+
+
+/* _X11_XUTIL_H_ */
+# 100 "include/forms.h" 2
+
+#include <X11/Xatom.h>
+# 1 "/usr/include/X11/Xatom.h" 1 3
+
+#define XATOM_H 1
+
+/* THIS IS A GENERATED FILE
+ *
+ * Do not change! Changing this file implies a protocol change!
+ */
+
+#define XA_PRIMARY ((Atom) 1)
+#define XA_SECONDARY ((Atom) 2)
+#define XA_ARC ((Atom) 3)
+#define XA_ATOM ((Atom) 4)
+#define XA_BITMAP ((Atom) 5)
+#define XA_CARDINAL ((Atom) 6)
+#define XA_COLORMAP ((Atom) 7)
+#define XA_CURSOR ((Atom) 8)
+#define XA_CUT_BUFFER0 ((Atom) 9)
+#define XA_CUT_BUFFER1 ((Atom) 10)
+#define XA_CUT_BUFFER2 ((Atom) 11)
+#define XA_CUT_BUFFER3 ((Atom) 12)
+#define XA_CUT_BUFFER4 ((Atom) 13)
+#define XA_CUT_BUFFER5 ((Atom) 14)
+#define XA_CUT_BUFFER6 ((Atom) 15)
+#define XA_CUT_BUFFER7 ((Atom) 16)
+#define XA_DRAWABLE ((Atom) 17)
+#define XA_FONT ((Atom) 18)
+#define XA_INTEGER ((Atom) 19)
+#define XA_PIXMAP ((Atom) 20)
+#define XA_POINT ((Atom) 21)
+#define XA_RECTANGLE ((Atom) 22)
+#define XA_RESOURCE_MANAGER ((Atom) 23)
+#define XA_RGB_COLOR_MAP ((Atom) 24)
+#define XA_RGB_BEST_MAP ((Atom) 25)
+#define XA_RGB_BLUE_MAP ((Atom) 26)
+#define XA_RGB_DEFAULT_MAP ((Atom) 27)
+#define XA_RGB_GRAY_MAP ((Atom) 28)
+#define XA_RGB_GREEN_MAP ((Atom) 29)
+#define XA_RGB_RED_MAP ((Atom) 30)
+#define XA_STRING ((Atom) 31)
+#define XA_VISUALID ((Atom) 32)
+#define XA_WINDOW ((Atom) 33)
+#define XA_WM_COMMAND ((Atom) 34)
+#define XA_WM_HINTS ((Atom) 35)
+#define XA_WM_CLIENT_MACHINE ((Atom) 36)
+#define XA_WM_ICON_NAME ((Atom) 37)
+#define XA_WM_ICON_SIZE ((Atom) 38)
+#define XA_WM_NAME ((Atom) 39)
+#define XA_WM_NORMAL_HINTS ((Atom) 40)
+#define XA_WM_SIZE_HINTS ((Atom) 41)
+#define XA_WM_ZOOM_HINTS ((Atom) 42)
+#define XA_MIN_SPACE ((Atom) 43)
+#define XA_NORM_SPACE ((Atom) 44)
+#define XA_MAX_SPACE ((Atom) 45)
+#define XA_END_SPACE ((Atom) 46)
+#define XA_SUPERSCRIPT_X ((Atom) 47)
+#define XA_SUPERSCRIPT_Y ((Atom) 48)
+#define XA_SUBSCRIPT_X ((Atom) 49)
+#define XA_SUBSCRIPT_Y ((Atom) 50)
+#define XA_UNDERLINE_POSITION ((Atom) 51)
+#define XA_UNDERLINE_THICKNESS ((Atom) 52)
+#define XA_STRIKEOUT_ASCENT ((Atom) 53)
+#define XA_STRIKEOUT_DESCENT ((Atom) 54)
+#define XA_ITALIC_ANGLE ((Atom) 55)
+#define XA_X_HEIGHT ((Atom) 56)
+#define XA_QUAD_WIDTH ((Atom) 57)
+#define XA_WEIGHT ((Atom) 58)
+#define XA_POINT_SIZE ((Atom) 59)
+#define XA_RESOLUTION ((Atom) 60)
+#define XA_COPYRIGHT ((Atom) 61)
+#define XA_NOTICE ((Atom) 62)
+#define XA_FONT_NAME ((Atom) 63)
+#define XA_FAMILY_NAME ((Atom) 64)
+#define XA_FULL_NAME ((Atom) 65)
+#define XA_CAP_HEIGHT ((Atom) 66)
+#define XA_WM_CLASS ((Atom) 67)
+#define XA_WM_TRANSIENT_FOR ((Atom) 68)
+
+#define XA_LAST_PREDEFINED ((Atom) 68)
+/* XATOM_H */
+# 101 "include/forms.h" 2
+
+#include <X11/keysym.h>
+# 1 "/usr/include/X11/keysym.h" 1 3
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/* default keysyms */
+#define XK_MISCELLANY
+#define XK_XKB_KEYS
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+#define XK_LATIN8
+#define XK_LATIN9
+#define XK_CAUCASUS
+#define XK_GREEK
+#define XK_KATAKANA
+#define XK_ARABIC
+#define XK_CYRILLIC
+#define XK_HEBREW
+#define XK_THAI
+#define XK_KOREAN
+#define XK_ARMENIAN
+#define XK_GEORGIAN
+#define XK_VIETNAMESE
+#define XK_CURRENCY
+#define XK_MATHEMATICAL
+#define XK_BRAILLE
+#define XK_SINHALA
+
+#include <X11/keysymdef.h>
+# 1 "/usr/include/X11/keysymdef.h" 1 3
+/***********************************************************
+Copyright 1987, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/*
+ * The "X11 Window System Protocol" standard defines in Appendix A the
+ * keysym codes. These 29-bit integer values identify characters or
+ * functions associated with each key (e.g., via the visible
+ * engraving) of a keyboard layout. This file assigns mnemonic macro
+ * names for these keysyms.
+ *
+ * This file is also compiled (by src/util/makekeys.c in libX11) into
+ * hash tables that can be accessed with X11 library functions such as
+ * XStringToKeysym() and XKeysymToString().
+ *
+ * Where a keysym corresponds one-to-one to an ISO 10646 / Unicode
+ * character, this is noted in a comment that provides both the U+xxxx
+ * Unicode position, as well as the official Unicode name of the
+ * character.
+ *
+ * Where the correspondence is either not one-to-one or semantically
+ * unclear, the Unicode position and name are enclosed in
+ * parentheses. Such legacy keysyms should be considered deprecated
+ * and are not recommended for use in future keyboard mappings.
+ *
+ * For any future extension of the keysyms with characters already
+ * found in ISO 10646 / Unicode, the following algorithm shall be
+ * used. The new keysym code position will simply be the character's
+ * Unicode number plus 0x01000000. The keysym values in the range
+ * 0x01000100 to 0x0110ffff are reserved to represent Unicode
+ * characters in the range U+0100 to U+10FFFF.
+ *
+ * While most newer Unicode-based X11 clients do already accept
+ * Unicode-mapped keysyms in the range 0x01000100 to 0x0110ffff, it
+ * will remain necessary for clients -- in the interest of
+ * compatibility with existing servers -- to also understand the
+ * existing legacy keysym values in the range 0x0100 to 0x20ff.
+ *
+ * Where several mnemonic names are defined for the same keysym in this
+ * file, all but the first one listed should be considered deprecated.
+ *
+ * Mnemonic names for keysyms are defined in this file with lines
+ * that match one of these Perl regular expressions:
+ *
+ * /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\* U+([0-9A-F]{4,6}) (.*) \*\/\s*$/
+ * /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*\/\*\(U+([0-9A-F]{4,6}) (.*)\)\*\/\s*$/
+ * /^\#define XK_([a-zA-Z_0-9]+)\s+0x([0-9a-f]+)\s*(\/\*\s*(.*)\s*\*\/)?\s*$/
+ *
+ * Before adding new keysyms, please do consider the following: In
+ * addition to the keysym names defined in this file, the
+ * XStringToKeysym() and XKeysymToString() functions will also handle
+ * any keysym string of the form "U0020" to "U007E" and "U00A0" to
+ * "U10FFFF" for all possible Unicode characters. In other words,
+ * every possible Unicode character has already a keysym string
+ * defined algorithmically, even if it is not listed here. Therefore,
+ * defining an additional keysym macro is only necessary where a
+ * non-hexadecimal mnemonic name is needed, or where the new keysym
+ * does not represent any existing Unicode character.
+ *
+ * When adding new keysyms to this file, do not forget to also update the
+ * following:
+ *
+ * - the mappings in src/KeyBind.c in the repo
+ * git://anongit.freedesktop.org/xorg/lib/libX11
+ *
+ * - the protocol specification in specs/XProtocol/X11.keysyms
+ * in the repo git://anongit.freedesktop.org/xorg/doc/xorg-docs
+ *
+ */
+
+#define XK_VoidSymbol 0xffffff /* Void symbol */
+
+
+/*
+ * TTY function keys, cleverly chosen to map to ASCII, for convenience of
+ * programming, but could have been arbitrary (at the cost of lookup
+ * tables in client code).
+ */
+
+#define XK_BackSpace 0xff08 /* Back space, back char */
+#define XK_Tab 0xff09
+#define XK_Linefeed 0xff0a /* Linefeed, LF */
+#define XK_Clear 0xff0b
+#define XK_Return 0xff0d /* Return, enter */
+#define XK_Pause 0xff13 /* Pause, hold */
+#define XK_Scroll_Lock 0xff14
+#define XK_Sys_Req 0xff15
+#define XK_Escape 0xff1b
+#define XK_Delete 0xffff /* Delete, rubout */
+
+
+
+/* International & multi-key character composition */
+
+#define XK_Multi_key 0xff20 /* Multi-key character compose */
+#define XK_Codeinput 0xff37
+#define XK_SingleCandidate 0xff3c
+#define XK_MultipleCandidate 0xff3d
+#define XK_PreviousCandidate 0xff3e
+
+/* Japanese keyboard support */
+
+#define XK_Kanji 0xff21 /* Kanji, Kanji convert */
+#define XK_Muhenkan 0xff22 /* Cancel Conversion */
+#define XK_Henkan_Mode 0xff23 /* Start/Stop Conversion */
+#define XK_Henkan 0xff23 /* Alias for Henkan_Mode */
+#define XK_Romaji 0xff24 /* to Romaji */
+#define XK_Hiragana 0xff25 /* to Hiragana */
+#define XK_Katakana 0xff26 /* to Katakana */
+#define XK_Hiragana_Katakana 0xff27 /* Hiragana/Katakana toggle */
+#define XK_Zenkaku 0xff28 /* to Zenkaku */
+#define XK_Hankaku 0xff29 /* to Hankaku */
+#define XK_Zenkaku_Hankaku 0xff2a /* Zenkaku/Hankaku toggle */
+#define XK_Touroku 0xff2b /* Add to Dictionary */
+#define XK_Massyo 0xff2c /* Delete from Dictionary */
+#define XK_Kana_Lock 0xff2d /* Kana Lock */
+#define XK_Kana_Shift 0xff2e /* Kana Shift */
+#define XK_Eisu_Shift 0xff2f /* Alphanumeric Shift */
+#define XK_Eisu_toggle 0xff30 /* Alphanumeric toggle */
+#define XK_Kanji_Bangou 0xff37 /* Codeinput */
+#define XK_Zen_Koho 0xff3d /* Multiple/All Candidate(s) */
+#define XK_Mae_Koho 0xff3e /* Previous Candidate */
+
+/* 0xff31 thru 0xff3f are under XK_KOREAN */
+
+/* Cursor control & motion */
+
+#define XK_Home 0xff50
+#define XK_Left 0xff51 /* Move left, left arrow */
+#define XK_Up 0xff52 /* Move up, up arrow */
+#define XK_Right 0xff53 /* Move right, right arrow */
+#define XK_Down 0xff54 /* Move down, down arrow */
+#define XK_Prior 0xff55 /* Prior, previous */
+#define XK_Page_Up 0xff55
+#define XK_Next 0xff56 /* Next */
+#define XK_Page_Down 0xff56
+#define XK_End 0xff57 /* EOL */
+#define XK_Begin 0xff58 /* BOL */
+
+
+/* Misc functions */
+
+#define XK_Select 0xff60 /* Select, mark */
+#define XK_Print 0xff61
+#define XK_Execute 0xff62 /* Execute, run, do */
+#define XK_Insert 0xff63 /* Insert, insert here */
+#define XK_Undo 0xff65
+#define XK_Redo 0xff66 /* Redo, again */
+#define XK_Menu 0xff67
+#define XK_Find 0xff68 /* Find, search */
+#define XK_Cancel 0xff69 /* Cancel, stop, abort, exit */
+#define XK_Help 0xff6a /* Help */
+#define XK_Break 0xff6b
+#define XK_Mode_switch 0xff7e /* Character set switch */
+#define XK_script_switch 0xff7e /* Alias for mode_switch */
+#define XK_Num_Lock 0xff7f
+
+/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */
+
+#define XK_KP_Space 0xff80 /* Space */
+#define XK_KP_Tab 0xff89
+#define XK_KP_Enter 0xff8d /* Enter */
+#define XK_KP_F1 0xff91 /* PF1, KP_A, ... */
+#define XK_KP_F2 0xff92
+#define XK_KP_F3 0xff93
+#define XK_KP_F4 0xff94
+#define XK_KP_Home 0xff95
+#define XK_KP_Left 0xff96
+#define XK_KP_Up 0xff97
+#define XK_KP_Right 0xff98
+#define XK_KP_Down 0xff99
+#define XK_KP_Prior 0xff9a
+#define XK_KP_Page_Up 0xff9a
+#define XK_KP_Next 0xff9b
+#define XK_KP_Page_Down 0xff9b
+#define XK_KP_End 0xff9c
+#define XK_KP_Begin 0xff9d
+#define XK_KP_Insert 0xff9e
+#define XK_KP_Delete 0xff9f
+#define XK_KP_Equal 0xffbd /* Equals */
+#define XK_KP_Multiply 0xffaa
+#define XK_KP_Add 0xffab
+#define XK_KP_Separator 0xffac /* Separator, often comma */
+#define XK_KP_Subtract 0xffad
+#define XK_KP_Decimal 0xffae
+#define XK_KP_Divide 0xffaf
+
+#define XK_KP_0 0xffb0
+#define XK_KP_1 0xffb1
+#define XK_KP_2 0xffb2
+#define XK_KP_3 0xffb3
+#define XK_KP_4 0xffb4
+#define XK_KP_5 0xffb5
+#define XK_KP_6 0xffb6
+#define XK_KP_7 0xffb7
+#define XK_KP_8 0xffb8
+#define XK_KP_9 0xffb9
+
+
+
+/*
+ * Auxiliary functions; note the duplicate definitions for left and right
+ * function keys; Sun keyboards and a few other manufacturers have such
+ * function key groups on the left and/or right sides of the keyboard.
+ * We've not found a keyboard with more than 35 function keys total.
+ */
+
+#define XK_F1 0xffbe
+#define XK_F2 0xffbf
+#define XK_F3 0xffc0
+#define XK_F4 0xffc1
+#define XK_F5 0xffc2
+#define XK_F6 0xffc3
+#define XK_F7 0xffc4
+#define XK_F8 0xffc5
+#define XK_F9 0xffc6
+#define XK_F10 0xffc7
+#define XK_F11 0xffc8
+#define XK_L1 0xffc8
+#define XK_F12 0xffc9
+#define XK_L2 0xffc9
+#define XK_F13 0xffca
+#define XK_L3 0xffca
+#define XK_F14 0xffcb
+#define XK_L4 0xffcb
+#define XK_F15 0xffcc
+#define XK_L5 0xffcc
+#define XK_F16 0xffcd
+#define XK_L6 0xffcd
+#define XK_F17 0xffce
+#define XK_L7 0xffce
+#define XK_F18 0xffcf
+#define XK_L8 0xffcf
+#define XK_F19 0xffd0
+#define XK_L9 0xffd0
+#define XK_F20 0xffd1
+#define XK_L10 0xffd1
+#define XK_F21 0xffd2
+#define XK_R1 0xffd2
+#define XK_F22 0xffd3
+#define XK_R2 0xffd3
+#define XK_F23 0xffd4
+#define XK_R3 0xffd4
+#define XK_F24 0xffd5
+#define XK_R4 0xffd5
+#define XK_F25 0xffd6
+#define XK_R5 0xffd6
+#define XK_F26 0xffd7
+#define XK_R6 0xffd7
+#define XK_F27 0xffd8
+#define XK_R7 0xffd8
+#define XK_F28 0xffd9
+#define XK_R8 0xffd9
+#define XK_F29 0xffda
+#define XK_R9 0xffda
+#define XK_F30 0xffdb
+#define XK_R10 0xffdb
+#define XK_F31 0xffdc
+#define XK_R11 0xffdc
+#define XK_F32 0xffdd
+#define XK_R12 0xffdd
+#define XK_F33 0xffde
+#define XK_R13 0xffde
+#define XK_F34 0xffdf
+#define XK_R14 0xffdf
+#define XK_F35 0xffe0
+#define XK_R15 0xffe0
+
+/* Modifiers */
+
+#define XK_Shift_L 0xffe1 /* Left shift */
+#define XK_Shift_R 0xffe2 /* Right shift */
+#define XK_Control_L 0xffe3 /* Left control */
+#define XK_Control_R 0xffe4 /* Right control */
+#define XK_Caps_Lock 0xffe5 /* Caps lock */
+#define XK_Shift_Lock 0xffe6 /* Shift lock */
+
+#define XK_Meta_L 0xffe7 /* Left meta */
+#define XK_Meta_R 0xffe8 /* Right meta */
+#define XK_Alt_L 0xffe9 /* Left alt */
+#define XK_Alt_R 0xffea /* Right alt */
+#define XK_Super_L 0xffeb /* Left super */
+#define XK_Super_R 0xffec /* Right super */
+#define XK_Hyper_L 0xffed /* Left hyper */
+#define XK_Hyper_R 0xffee /* Right hyper */
+/* XK_MISCELLANY */
+
+/*
+ * Keyboard (XKB) Extension function and modifier keys
+ * (from Appendix C of "The X Keyboard Extension: Protocol Specification")
+ * Byte 3 = 0xfe
+ */
+
+
+#define XK_ISO_Lock 0xfe01
+#define XK_ISO_Level2_Latch 0xfe02
+#define XK_ISO_Level3_Shift 0xfe03
+#define XK_ISO_Level3_Latch 0xfe04
+#define XK_ISO_Level3_Lock 0xfe05
+#define XK_ISO_Level5_Shift 0xfe11
+#define XK_ISO_Level5_Latch 0xfe12
+#define XK_ISO_Level5_Lock 0xfe13
+#define XK_ISO_Group_Shift 0xff7e /* Alias for mode_switch */
+#define XK_ISO_Group_Latch 0xfe06
+#define XK_ISO_Group_Lock 0xfe07
+#define XK_ISO_Next_Group 0xfe08
+#define XK_ISO_Next_Group_Lock 0xfe09
+#define XK_ISO_Prev_Group 0xfe0a
+#define XK_ISO_Prev_Group_Lock 0xfe0b
+#define XK_ISO_First_Group 0xfe0c
+#define XK_ISO_First_Group_Lock 0xfe0d
+#define XK_ISO_Last_Group 0xfe0e
+#define XK_ISO_Last_Group_Lock 0xfe0f
+
+#define XK_ISO_Left_Tab 0xfe20
+#define XK_ISO_Move_Line_Up 0xfe21
+#define XK_ISO_Move_Line_Down 0xfe22
+#define XK_ISO_Partial_Line_Up 0xfe23
+#define XK_ISO_Partial_Line_Down 0xfe24
+#define XK_ISO_Partial_Space_Left 0xfe25
+#define XK_ISO_Partial_Space_Right 0xfe26
+#define XK_ISO_Set_Margin_Left 0xfe27
+#define XK_ISO_Set_Margin_Right 0xfe28
+#define XK_ISO_Release_Margin_Left 0xfe29
+#define XK_ISO_Release_Margin_Right 0xfe2a
+#define XK_ISO_Release_Both_Margins 0xfe2b
+#define XK_ISO_Fast_Cursor_Left 0xfe2c
+#define XK_ISO_Fast_Cursor_Right 0xfe2d
+#define XK_ISO_Fast_Cursor_Up 0xfe2e
+#define XK_ISO_Fast_Cursor_Down 0xfe2f
+#define XK_ISO_Continuous_Underline 0xfe30
+#define XK_ISO_Discontinuous_Underline 0xfe31
+#define XK_ISO_Emphasize 0xfe32
+#define XK_ISO_Center_Object 0xfe33
+#define XK_ISO_Enter 0xfe34
+
+#define XK_dead_grave 0xfe50
+#define XK_dead_acute 0xfe51
+#define XK_dead_circumflex 0xfe52
+#define XK_dead_tilde 0xfe53
+#define XK_dead_perispomeni 0xfe53 /* alias for dead_tilde */
+#define XK_dead_macron 0xfe54
+#define XK_dead_breve 0xfe55
+#define XK_dead_abovedot 0xfe56
+#define XK_dead_diaeresis 0xfe57
+#define XK_dead_abovering 0xfe58
+#define XK_dead_doubleacute 0xfe59
+#define XK_dead_caron 0xfe5a
+#define XK_dead_cedilla 0xfe5b
+#define XK_dead_ogonek 0xfe5c
+#define XK_dead_iota 0xfe5d
+#define XK_dead_voiced_sound 0xfe5e
+#define XK_dead_semivoiced_sound 0xfe5f
+#define XK_dead_belowdot 0xfe60
+#define XK_dead_hook 0xfe61
+#define XK_dead_horn 0xfe62
+#define XK_dead_stroke 0xfe63
+#define XK_dead_abovecomma 0xfe64
+#define XK_dead_psili 0xfe64 /* alias for dead_abovecomma */
+#define XK_dead_abovereversedcomma 0xfe65
+#define XK_dead_dasia 0xfe65 /* alias for dead_abovereversedcomma */
+#define XK_dead_doublegrave 0xfe66
+#define XK_dead_belowring 0xfe67
+#define XK_dead_belowmacron 0xfe68
+#define XK_dead_belowcircumflex 0xfe69
+#define XK_dead_belowtilde 0xfe6a
+#define XK_dead_belowbreve 0xfe6b
+#define XK_dead_belowdiaeresis 0xfe6c
+#define XK_dead_invertedbreve 0xfe6d
+#define XK_dead_belowcomma 0xfe6e
+#define XK_dead_currency 0xfe6f
+
+/* dead vowels for universal syllable entry */
+#define XK_dead_a 0xfe80
+#define XK_dead_A 0xfe81
+#define XK_dead_e 0xfe82
+#define XK_dead_E 0xfe83
+#define XK_dead_i 0xfe84
+#define XK_dead_I 0xfe85
+#define XK_dead_o 0xfe86
+#define XK_dead_O 0xfe87
+#define XK_dead_u 0xfe88
+#define XK_dead_U 0xfe89
+#define XK_dead_small_schwa 0xfe8a
+#define XK_dead_capital_schwa 0xfe8b
+
+#define XK_First_Virtual_Screen 0xfed0
+#define XK_Prev_Virtual_Screen 0xfed1
+#define XK_Next_Virtual_Screen 0xfed2
+#define XK_Last_Virtual_Screen 0xfed4
+#define XK_Terminate_Server 0xfed5
+
+#define XK_AccessX_Enable 0xfe70
+#define XK_AccessX_Feedback_Enable 0xfe71
+#define XK_RepeatKeys_Enable 0xfe72
+#define XK_SlowKeys_Enable 0xfe73
+#define XK_BounceKeys_Enable 0xfe74
+#define XK_StickyKeys_Enable 0xfe75
+#define XK_MouseKeys_Enable 0xfe76
+#define XK_MouseKeys_Accel_Enable 0xfe77
+#define XK_Overlay1_Enable 0xfe78
+#define XK_Overlay2_Enable 0xfe79
+#define XK_AudibleBell_Enable 0xfe7a
+
+#define XK_Pointer_Left 0xfee0
+#define XK_Pointer_Right 0xfee1
+#define XK_Pointer_Up 0xfee2
+#define XK_Pointer_Down 0xfee3
+#define XK_Pointer_UpLeft 0xfee4
+#define XK_Pointer_UpRight 0xfee5
+#define XK_Pointer_DownLeft 0xfee6
+#define XK_Pointer_DownRight 0xfee7
+#define XK_Pointer_Button_Dflt 0xfee8
+#define XK_Pointer_Button1 0xfee9
+#define XK_Pointer_Button2 0xfeea
+#define XK_Pointer_Button3 0xfeeb
+#define XK_Pointer_Button4 0xfeec
+#define XK_Pointer_Button5 0xfeed
+#define XK_Pointer_DblClick_Dflt 0xfeee
+#define XK_Pointer_DblClick1 0xfeef
+#define XK_Pointer_DblClick2 0xfef0
+#define XK_Pointer_DblClick3 0xfef1
+#define XK_Pointer_DblClick4 0xfef2
+#define XK_Pointer_DblClick5 0xfef3
+#define XK_Pointer_Drag_Dflt 0xfef4
+#define XK_Pointer_Drag1 0xfef5
+#define XK_Pointer_Drag2 0xfef6
+#define XK_Pointer_Drag3 0xfef7
+#define XK_Pointer_Drag4 0xfef8
+#define XK_Pointer_Drag5 0xfefd
+
+#define XK_Pointer_EnableKeys 0xfef9
+#define XK_Pointer_Accelerate 0xfefa
+#define XK_Pointer_DfltBtnNext 0xfefb
+#define XK_Pointer_DfltBtnPrev 0xfefc
+
+/* XK_XKB_KEYS */
+
+/*
+ * 3270 Terminal Keys
+ * Byte 3 = 0xfd
+ */
+
+/* XK_3270 */
+# 519 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Latin 1
+ * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)
+ * Byte 3 = 0
+ */
+
+#define XK_space 0x0020 /* U+0020 SPACE */
+#define XK_exclam 0x0021 /* U+0021 EXCLAMATION MARK */
+#define XK_quotedbl 0x0022 /* U+0022 QUOTATION MARK */
+#define XK_numbersign 0x0023 /* U+0023 NUMBER SIGN */
+#define XK_dollar 0x0024 /* U+0024 DOLLAR SIGN */
+#define XK_percent 0x0025 /* U+0025 PERCENT SIGN */
+#define XK_ampersand 0x0026 /* U+0026 AMPERSAND */
+#define XK_apostrophe 0x0027 /* U+0027 APOSTROPHE */
+#define XK_quoteright 0x0027 /* deprecated */
+#define XK_parenleft 0x0028 /* U+0028 LEFT PARENTHESIS */
+#define XK_parenright 0x0029 /* U+0029 RIGHT PARENTHESIS */
+#define XK_asterisk 0x002a /* U+002A ASTERISK */
+#define XK_plus 0x002b /* U+002B PLUS SIGN */
+#define XK_comma 0x002c /* U+002C COMMA */
+#define XK_minus 0x002d /* U+002D HYPHEN-MINUS */
+#define XK_period 0x002e /* U+002E FULL STOP */
+#define XK_slash 0x002f /* U+002F SOLIDUS */
+#define XK_0 0x0030 /* U+0030 DIGIT ZERO */
+#define XK_1 0x0031 /* U+0031 DIGIT ONE */
+#define XK_2 0x0032 /* U+0032 DIGIT TWO */
+#define XK_3 0x0033 /* U+0033 DIGIT THREE */
+#define XK_4 0x0034 /* U+0034 DIGIT FOUR */
+#define XK_5 0x0035 /* U+0035 DIGIT FIVE */
+#define XK_6 0x0036 /* U+0036 DIGIT SIX */
+#define XK_7 0x0037 /* U+0037 DIGIT SEVEN */
+#define XK_8 0x0038 /* U+0038 DIGIT EIGHT */
+#define XK_9 0x0039 /* U+0039 DIGIT NINE */
+#define XK_colon 0x003a /* U+003A COLON */
+#define XK_semicolon 0x003b /* U+003B SEMICOLON */
+#define XK_less 0x003c /* U+003C LESS-THAN SIGN */
+#define XK_equal 0x003d /* U+003D EQUALS SIGN */
+#define XK_greater 0x003e /* U+003E GREATER-THAN SIGN */
+#define XK_question 0x003f /* U+003F QUESTION MARK */
+#define XK_at 0x0040 /* U+0040 COMMERCIAL AT */
+#define XK_A 0x0041 /* U+0041 LATIN CAPITAL LETTER A */
+#define XK_B 0x0042 /* U+0042 LATIN CAPITAL LETTER B */
+#define XK_C 0x0043 /* U+0043 LATIN CAPITAL LETTER C */
+#define XK_D 0x0044 /* U+0044 LATIN CAPITAL LETTER D */
+#define XK_E 0x0045 /* U+0045 LATIN CAPITAL LETTER E */
+#define XK_F 0x0046 /* U+0046 LATIN CAPITAL LETTER F */
+#define XK_G 0x0047 /* U+0047 LATIN CAPITAL LETTER G */
+#define XK_H 0x0048 /* U+0048 LATIN CAPITAL LETTER H */
+#define XK_I 0x0049 /* U+0049 LATIN CAPITAL LETTER I */
+#define XK_J 0x004a /* U+004A LATIN CAPITAL LETTER J */
+#define XK_K 0x004b /* U+004B LATIN CAPITAL LETTER K */
+#define XK_L 0x004c /* U+004C LATIN CAPITAL LETTER L */
+#define XK_M 0x004d /* U+004D LATIN CAPITAL LETTER M */
+#define XK_N 0x004e /* U+004E LATIN CAPITAL LETTER N */
+#define XK_O 0x004f /* U+004F LATIN CAPITAL LETTER O */
+#define XK_P 0x0050 /* U+0050 LATIN CAPITAL LETTER P */
+#define XK_Q 0x0051 /* U+0051 LATIN CAPITAL LETTER Q */
+#define XK_R 0x0052 /* U+0052 LATIN CAPITAL LETTER R */
+#define XK_S 0x0053 /* U+0053 LATIN CAPITAL LETTER S */
+#define XK_T 0x0054 /* U+0054 LATIN CAPITAL LETTER T */
+#define XK_U 0x0055 /* U+0055 LATIN CAPITAL LETTER U */
+#define XK_V 0x0056 /* U+0056 LATIN CAPITAL LETTER V */
+#define XK_W 0x0057 /* U+0057 LATIN CAPITAL LETTER W */
+#define XK_X 0x0058 /* U+0058 LATIN CAPITAL LETTER X */
+#define XK_Y 0x0059 /* U+0059 LATIN CAPITAL LETTER Y */
+#define XK_Z 0x005a /* U+005A LATIN CAPITAL LETTER Z */
+#define XK_bracketleft 0x005b /* U+005B LEFT SQUARE BRACKET */
+#define XK_backslash 0x005c /* U+005C REVERSE SOLIDUS */
+#define XK_bracketright 0x005d /* U+005D RIGHT SQUARE BRACKET */
+#define XK_asciicircum 0x005e /* U+005E CIRCUMFLEX ACCENT */
+#define XK_underscore 0x005f /* U+005F LOW LINE */
+#define XK_grave 0x0060 /* U+0060 GRAVE ACCENT */
+#define XK_quoteleft 0x0060 /* deprecated */
+#define XK_a 0x0061 /* U+0061 LATIN SMALL LETTER A */
+#define XK_b 0x0062 /* U+0062 LATIN SMALL LETTER B */
+#define XK_c 0x0063 /* U+0063 LATIN SMALL LETTER C */
+#define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
+#define XK_e 0x0065 /* U+0065 LATIN SMALL LETTER E */
+#define XK_f 0x0066 /* U+0066 LATIN SMALL LETTER F */
+#define XK_g 0x0067 /* U+0067 LATIN SMALL LETTER G */
+#define XK_h 0x0068 /* U+0068 LATIN SMALL LETTER H */
+#define XK_i 0x0069 /* U+0069 LATIN SMALL LETTER I */
+#define XK_j 0x006a /* U+006A LATIN SMALL LETTER J */
+#define XK_k 0x006b /* U+006B LATIN SMALL LETTER K */
+#define XK_l 0x006c /* U+006C LATIN SMALL LETTER L */
+#define XK_m 0x006d /* U+006D LATIN SMALL LETTER M */
+#define XK_n 0x006e /* U+006E LATIN SMALL LETTER N */
+#define XK_o 0x006f /* U+006F LATIN SMALL LETTER O */
+#define XK_p 0x0070 /* U+0070 LATIN SMALL LETTER P */
+#define XK_q 0x0071 /* U+0071 LATIN SMALL LETTER Q */
+#define XK_r 0x0072 /* U+0072 LATIN SMALL LETTER R */
+#define XK_s 0x0073 /* U+0073 LATIN SMALL LETTER S */
+#define XK_t 0x0074 /* U+0074 LATIN SMALL LETTER T */
+#define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
+#define XK_v 0x0076 /* U+0076 LATIN SMALL LETTER V */
+#define XK_w 0x0077 /* U+0077 LATIN SMALL LETTER W */
+#define XK_x 0x0078 /* U+0078 LATIN SMALL LETTER X */
+#define XK_y 0x0079 /* U+0079 LATIN SMALL LETTER Y */
+#define XK_z 0x007a /* U+007A LATIN SMALL LETTER Z */
+#define XK_braceleft 0x007b /* U+007B LEFT CURLY BRACKET */
+#define XK_bar 0x007c /* U+007C VERTICAL LINE */
+#define XK_braceright 0x007d /* U+007D RIGHT CURLY BRACKET */
+#define XK_asciitilde 0x007e /* U+007E TILDE */
+
+#define XK_nobreakspace 0x00a0 /* U+00A0 NO-BREAK SPACE */
+#define XK_exclamdown 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */
+#define XK_cent 0x00a2 /* U+00A2 CENT SIGN */
+#define XK_sterling 0x00a3 /* U+00A3 POUND SIGN */
+#define XK_currency 0x00a4 /* U+00A4 CURRENCY SIGN */
+#define XK_yen 0x00a5 /* U+00A5 YEN SIGN */
+#define XK_brokenbar 0x00a6 /* U+00A6 BROKEN BAR */
+#define XK_section 0x00a7 /* U+00A7 SECTION SIGN */
+#define XK_diaeresis 0x00a8 /* U+00A8 DIAERESIS */
+#define XK_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */
+#define XK_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */
+#define XK_guillemotleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
+#define XK_notsign 0x00ac /* U+00AC NOT SIGN */
+#define XK_hyphen 0x00ad /* U+00AD SOFT HYPHEN */
+#define XK_registered 0x00ae /* U+00AE REGISTERED SIGN */
+#define XK_macron 0x00af /* U+00AF MACRON */
+#define XK_degree 0x00b0 /* U+00B0 DEGREE SIGN */
+#define XK_plusminus 0x00b1 /* U+00B1 PLUS-MINUS SIGN */
+#define XK_twosuperior 0x00b2 /* U+00B2 SUPERSCRIPT TWO */
+#define XK_threesuperior 0x00b3 /* U+00B3 SUPERSCRIPT THREE */
+#define XK_acute 0x00b4 /* U+00B4 ACUTE ACCENT */
+#define XK_mu 0x00b5 /* U+00B5 MICRO SIGN */
+#define XK_paragraph 0x00b6 /* U+00B6 PILCROW SIGN */
+#define XK_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */
+#define XK_cedilla 0x00b8 /* U+00B8 CEDILLA */
+#define XK_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */
+#define XK_masculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */
+#define XK_guillemotright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
+#define XK_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */
+#define XK_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */
+#define XK_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */
+#define XK_questiondown 0x00bf /* U+00BF INVERTED QUESTION MARK */
+#define XK_Agrave 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */
+#define XK_Aacute 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */
+#define XK_Acircumflex 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
+#define XK_Atilde 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */
+#define XK_Adiaeresis 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */
+#define XK_Aring 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */
+#define XK_AE 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */
+#define XK_Ccedilla 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */
+#define XK_Egrave 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */
+#define XK_Eacute 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */
+#define XK_Ecircumflex 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
+#define XK_Ediaeresis 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */
+#define XK_Igrave 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */
+#define XK_Iacute 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */
+#define XK_Icircumflex 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
+#define XK_Idiaeresis 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */
+#define XK_ETH 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */
+#define XK_Eth 0x00d0 /* deprecated */
+#define XK_Ntilde 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */
+#define XK_Ograve 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */
+#define XK_Oacute 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */
+#define XK_Ocircumflex 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
+#define XK_Otilde 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */
+#define XK_Odiaeresis 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */
+#define XK_multiply 0x00d7 /* U+00D7 MULTIPLICATION SIGN */
+#define XK_Oslash 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+#define XK_Ooblique 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */
+#define XK_Ugrave 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */
+#define XK_Uacute 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */
+#define XK_Ucircumflex 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
+#define XK_Udiaeresis 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */
+#define XK_Yacute 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */
+#define XK_THORN 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */
+#define XK_Thorn 0x00de /* deprecated */
+#define XK_ssharp 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */
+#define XK_agrave 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */
+#define XK_aacute 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */
+#define XK_acircumflex 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */
+#define XK_atilde 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */
+#define XK_adiaeresis 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */
+#define XK_aring 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */
+#define XK_ae 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */
+#define XK_ccedilla 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */
+#define XK_egrave 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */
+#define XK_eacute 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */
+#define XK_ecircumflex 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */
+#define XK_ediaeresis 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */
+#define XK_igrave 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */
+#define XK_iacute 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */
+#define XK_icircumflex 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */
+#define XK_idiaeresis 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */
+#define XK_eth 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */
+#define XK_ntilde 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */
+#define XK_ograve 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */
+#define XK_oacute 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */
+#define XK_ocircumflex 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */
+#define XK_otilde 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */
+#define XK_odiaeresis 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */
+#define XK_division 0x00f7 /* U+00F7 DIVISION SIGN */
+#define XK_oslash 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
+#define XK_ooblique 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */
+#define XK_ugrave 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */
+#define XK_uacute 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */
+#define XK_ucircumflex 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */
+#define XK_udiaeresis 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */
+#define XK_yacute 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */
+#define XK_thorn 0x00fe /* U+00FE LATIN SMALL LETTER THORN */
+#define XK_ydiaeresis 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */
+/* XK_LATIN1 */
+
+/*
+ * Latin 2
+ * Byte 3 = 1
+ */
+
+
+#define XK_Aogonek 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */
+#define XK_breve 0x01a2 /* U+02D8 BREVE */
+#define XK_Lstroke 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */
+#define XK_Lcaron 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */
+#define XK_Sacute 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */
+#define XK_Scaron 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */
+#define XK_Scedilla 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */
+#define XK_Tcaron 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */
+#define XK_Zacute 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */
+#define XK_Zcaron 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */
+#define XK_Zabovedot 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */
+#define XK_aogonek 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */
+#define XK_ogonek 0x01b2 /* U+02DB OGONEK */
+#define XK_lstroke 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */
+#define XK_lcaron 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */
+#define XK_sacute 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */
+#define XK_caron 0x01b7 /* U+02C7 CARON */
+#define XK_scaron 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */
+#define XK_scedilla 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */
+#define XK_tcaron 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */
+#define XK_zacute 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */
+#define XK_doubleacute 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */
+#define XK_zcaron 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */
+#define XK_zabovedot 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */
+#define XK_Racute 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */
+#define XK_Abreve 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */
+#define XK_Lacute 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */
+#define XK_Cacute 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */
+#define XK_Ccaron 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */
+#define XK_Eogonek 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */
+#define XK_Ecaron 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */
+#define XK_Dcaron 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */
+#define XK_Dstroke 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */
+#define XK_Nacute 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */
+#define XK_Ncaron 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */
+#define XK_Odoubleacute 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */
+#define XK_Rcaron 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */
+#define XK_Uring 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */
+#define XK_Udoubleacute 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */
+#define XK_Tcedilla 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */
+#define XK_racute 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */
+#define XK_abreve 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */
+#define XK_lacute 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */
+#define XK_cacute 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */
+#define XK_ccaron 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */
+#define XK_eogonek 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */
+#define XK_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */
+#define XK_dcaron 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */
+#define XK_dstroke 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */
+#define XK_nacute 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */
+#define XK_ncaron 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */
+#define XK_odoubleacute 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */
+#define XK_rcaron 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */
+#define XK_uring 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */
+#define XK_udoubleacute 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */
+#define XK_tcedilla 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */
+#define XK_abovedot 0x01ff /* U+02D9 DOT ABOVE */
+/* XK_LATIN2 */
+
+/*
+ * Latin 3
+ * Byte 3 = 2
+ */
+
+
+#define XK_Hstroke 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */
+#define XK_Hcircumflex 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */
+#define XK_Iabovedot 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */
+#define XK_Gbreve 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */
+#define XK_Jcircumflex 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */
+#define XK_hstroke 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */
+#define XK_hcircumflex 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */
+#define XK_idotless 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */
+#define XK_gbreve 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */
+#define XK_jcircumflex 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */
+#define XK_Cabovedot 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */
+#define XK_Ccircumflex 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */
+#define XK_Gabovedot 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */
+#define XK_Gcircumflex 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */
+#define XK_Ubreve 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */
+#define XK_Scircumflex 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */
+#define XK_cabovedot 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */
+#define XK_ccircumflex 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */
+#define XK_gabovedot 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */
+#define XK_gcircumflex 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */
+#define XK_ubreve 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */
+#define XK_scircumflex 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */
+/* XK_LATIN3 */
+
+
+/*
+ * Latin 4
+ * Byte 3 = 3
+ */
+
+
+#define XK_kra 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */
+#define XK_kappa 0x03a2 /* deprecated */
+#define XK_Rcedilla 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */
+#define XK_Itilde 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */
+#define XK_Lcedilla 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */
+#define XK_Emacron 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */
+#define XK_Gcedilla 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */
+#define XK_Tslash 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */
+#define XK_rcedilla 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */
+#define XK_itilde 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */
+#define XK_lcedilla 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */
+#define XK_emacron 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */
+#define XK_gcedilla 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */
+#define XK_tslash 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */
+#define XK_ENG 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */
+#define XK_eng 0x03bf /* U+014B LATIN SMALL LETTER ENG */
+#define XK_Amacron 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */
+#define XK_Iogonek 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */
+#define XK_Eabovedot 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */
+#define XK_Imacron 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */
+#define XK_Ncedilla 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */
+#define XK_Omacron 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */
+#define XK_Kcedilla 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */
+#define XK_Uogonek 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */
+#define XK_Utilde 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */
+#define XK_Umacron 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */
+#define XK_amacron 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */
+#define XK_iogonek 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */
+#define XK_eabovedot 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */
+#define XK_imacron 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */
+#define XK_ncedilla 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */
+#define XK_omacron 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */
+#define XK_kcedilla 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */
+#define XK_uogonek 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */
+#define XK_utilde 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */
+#define XK_umacron 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */
+/* XK_LATIN4 */
+
+/*
+ * Latin 8
+ */
+
+#define XK_Wcircumflex 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */
+#define XK_wcircumflex 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */
+#define XK_Ycircumflex 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */
+#define XK_ycircumflex 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */
+#define XK_Babovedot 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */
+#define XK_babovedot 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */
+#define XK_Dabovedot 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */
+#define XK_dabovedot 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */
+#define XK_Fabovedot 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */
+#define XK_fabovedot 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */
+#define XK_Mabovedot 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */
+#define XK_mabovedot 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */
+#define XK_Pabovedot 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */
+#define XK_pabovedot 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */
+#define XK_Sabovedot 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */
+#define XK_sabovedot 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */
+#define XK_Tabovedot 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */
+#define XK_tabovedot 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */
+#define XK_Wgrave 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */
+#define XK_wgrave 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */
+#define XK_Wacute 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */
+#define XK_wacute 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */
+#define XK_Wdiaeresis 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */
+#define XK_wdiaeresis 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */
+#define XK_Ygrave 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */
+#define XK_ygrave 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */
+/* XK_LATIN8 */
+
+/*
+ * Latin 9
+ * Byte 3 = 0x13
+ */
+
+
+#define XK_OE 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */
+#define XK_oe 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */
+#define XK_Ydiaeresis 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */
+/* XK_LATIN9 */
+
+/*
+ * Katakana
+ * Byte 3 = 4
+ */
+
+
+#define XK_overline 0x047e /* U+203E OVERLINE */
+#define XK_kana_fullstop 0x04a1 /* U+3002 IDEOGRAPHIC FULL STOP */
+#define XK_kana_openingbracket 0x04a2 /* U+300C LEFT CORNER BRACKET */
+#define XK_kana_closingbracket 0x04a3 /* U+300D RIGHT CORNER BRACKET */
+#define XK_kana_comma 0x04a4 /* U+3001 IDEOGRAPHIC COMMA */
+#define XK_kana_conjunctive 0x04a5 /* U+30FB KATAKANA MIDDLE DOT */
+#define XK_kana_middledot 0x04a5 /* deprecated */
+#define XK_kana_WO 0x04a6 /* U+30F2 KATAKANA LETTER WO */
+#define XK_kana_a 0x04a7 /* U+30A1 KATAKANA LETTER SMALL A */
+#define XK_kana_i 0x04a8 /* U+30A3 KATAKANA LETTER SMALL I */
+#define XK_kana_u 0x04a9 /* U+30A5 KATAKANA LETTER SMALL U */
+#define XK_kana_e 0x04aa /* U+30A7 KATAKANA LETTER SMALL E */
+#define XK_kana_o 0x04ab /* U+30A9 KATAKANA LETTER SMALL O */
+#define XK_kana_ya 0x04ac /* U+30E3 KATAKANA LETTER SMALL YA */
+#define XK_kana_yu 0x04ad /* U+30E5 KATAKANA LETTER SMALL YU */
+#define XK_kana_yo 0x04ae /* U+30E7 KATAKANA LETTER SMALL YO */
+#define XK_kana_tsu 0x04af /* U+30C3 KATAKANA LETTER SMALL TU */
+#define XK_kana_tu 0x04af /* deprecated */
+#define XK_prolongedsound 0x04b0 /* U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK */
+#define XK_kana_A 0x04b1 /* U+30A2 KATAKANA LETTER A */
+#define XK_kana_I 0x04b2 /* U+30A4 KATAKANA LETTER I */
+#define XK_kana_U 0x04b3 /* U+30A6 KATAKANA LETTER U */
+#define XK_kana_E 0x04b4 /* U+30A8 KATAKANA LETTER E */
+#define XK_kana_O 0x04b5 /* U+30AA KATAKANA LETTER O */
+#define XK_kana_KA 0x04b6 /* U+30AB KATAKANA LETTER KA */
+#define XK_kana_KI 0x04b7 /* U+30AD KATAKANA LETTER KI */
+#define XK_kana_KU 0x04b8 /* U+30AF KATAKANA LETTER KU */
+#define XK_kana_KE 0x04b9 /* U+30B1 KATAKANA LETTER KE */
+#define XK_kana_KO 0x04ba /* U+30B3 KATAKANA LETTER KO */
+#define XK_kana_SA 0x04bb /* U+30B5 KATAKANA LETTER SA */
+#define XK_kana_SHI 0x04bc /* U+30B7 KATAKANA LETTER SI */
+#define XK_kana_SU 0x04bd /* U+30B9 KATAKANA LETTER SU */
+#define XK_kana_SE 0x04be /* U+30BB KATAKANA LETTER SE */
+#define XK_kana_SO 0x04bf /* U+30BD KATAKANA LETTER SO */
+#define XK_kana_TA 0x04c0 /* U+30BF KATAKANA LETTER TA */
+#define XK_kana_CHI 0x04c1 /* U+30C1 KATAKANA LETTER TI */
+#define XK_kana_TI 0x04c1 /* deprecated */
+#define XK_kana_TSU 0x04c2 /* U+30C4 KATAKANA LETTER TU */
+#define XK_kana_TU 0x04c2 /* deprecated */
+#define XK_kana_TE 0x04c3 /* U+30C6 KATAKANA LETTER TE */
+#define XK_kana_TO 0x04c4 /* U+30C8 KATAKANA LETTER TO */
+#define XK_kana_NA 0x04c5 /* U+30CA KATAKANA LETTER NA */
+#define XK_kana_NI 0x04c6 /* U+30CB KATAKANA LETTER NI */
+#define XK_kana_NU 0x04c7 /* U+30CC KATAKANA LETTER NU */
+#define XK_kana_NE 0x04c8 /* U+30CD KATAKANA LETTER NE */
+#define XK_kana_NO 0x04c9 /* U+30CE KATAKANA LETTER NO */
+#define XK_kana_HA 0x04ca /* U+30CF KATAKANA LETTER HA */
+#define XK_kana_HI 0x04cb /* U+30D2 KATAKANA LETTER HI */
+#define XK_kana_FU 0x04cc /* U+30D5 KATAKANA LETTER HU */
+#define XK_kana_HU 0x04cc /* deprecated */
+#define XK_kana_HE 0x04cd /* U+30D8 KATAKANA LETTER HE */
+#define XK_kana_HO 0x04ce /* U+30DB KATAKANA LETTER HO */
+#define XK_kana_MA 0x04cf /* U+30DE KATAKANA LETTER MA */
+#define XK_kana_MI 0x04d0 /* U+30DF KATAKANA LETTER MI */
+#define XK_kana_MU 0x04d1 /* U+30E0 KATAKANA LETTER MU */
+#define XK_kana_ME 0x04d2 /* U+30E1 KATAKANA LETTER ME */
+#define XK_kana_MO 0x04d3 /* U+30E2 KATAKANA LETTER MO */
+#define XK_kana_YA 0x04d4 /* U+30E4 KATAKANA LETTER YA */
+#define XK_kana_YU 0x04d5 /* U+30E6 KATAKANA LETTER YU */
+#define XK_kana_YO 0x04d6 /* U+30E8 KATAKANA LETTER YO */
+#define XK_kana_RA 0x04d7 /* U+30E9 KATAKANA LETTER RA */
+#define XK_kana_RI 0x04d8 /* U+30EA KATAKANA LETTER RI */
+#define XK_kana_RU 0x04d9 /* U+30EB KATAKANA LETTER RU */
+#define XK_kana_RE 0x04da /* U+30EC KATAKANA LETTER RE */
+#define XK_kana_RO 0x04db /* U+30ED KATAKANA LETTER RO */
+#define XK_kana_WA 0x04dc /* U+30EF KATAKANA LETTER WA */
+#define XK_kana_N 0x04dd /* U+30F3 KATAKANA LETTER N */
+#define XK_voicedsound 0x04de /* U+309B KATAKANA-HIRAGANA VOICED SOUND MARK */
+#define XK_semivoicedsound 0x04df /* U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK */
+#define XK_kana_switch 0xff7e /* Alias for mode_switch */
+/* XK_KATAKANA */
+
+/*
+ * Arabic
+ * Byte 3 = 5
+ */
+
+
+#define XK_Farsi_0 0x10006f0 /* U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO */
+#define XK_Farsi_1 0x10006f1 /* U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE */
+#define XK_Farsi_2 0x10006f2 /* U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO */
+#define XK_Farsi_3 0x10006f3 /* U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE */
+#define XK_Farsi_4 0x10006f4 /* U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR */
+#define XK_Farsi_5 0x10006f5 /* U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE */
+#define XK_Farsi_6 0x10006f6 /* U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX */
+#define XK_Farsi_7 0x10006f7 /* U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN */
+#define XK_Farsi_8 0x10006f8 /* U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT */
+#define XK_Farsi_9 0x10006f9 /* U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE */
+#define XK_Arabic_percent 0x100066a /* U+066A ARABIC PERCENT SIGN */
+#define XK_Arabic_superscript_alef 0x1000670 /* U+0670 ARABIC LETTER SUPERSCRIPT ALEF */
+#define XK_Arabic_tteh 0x1000679 /* U+0679 ARABIC LETTER TTEH */
+#define XK_Arabic_peh 0x100067e /* U+067E ARABIC LETTER PEH */
+#define XK_Arabic_tcheh 0x1000686 /* U+0686 ARABIC LETTER TCHEH */
+#define XK_Arabic_ddal 0x1000688 /* U+0688 ARABIC LETTER DDAL */
+#define XK_Arabic_rreh 0x1000691 /* U+0691 ARABIC LETTER RREH */
+#define XK_Arabic_comma 0x05ac /* U+060C ARABIC COMMA */
+#define XK_Arabic_fullstop 0x10006d4 /* U+06D4 ARABIC FULL STOP */
+#define XK_Arabic_0 0x1000660 /* U+0660 ARABIC-INDIC DIGIT ZERO */
+#define XK_Arabic_1 0x1000661 /* U+0661 ARABIC-INDIC DIGIT ONE */
+#define XK_Arabic_2 0x1000662 /* U+0662 ARABIC-INDIC DIGIT TWO */
+#define XK_Arabic_3 0x1000663 /* U+0663 ARABIC-INDIC DIGIT THREE */
+#define XK_Arabic_4 0x1000664 /* U+0664 ARABIC-INDIC DIGIT FOUR */
+#define XK_Arabic_5 0x1000665 /* U+0665 ARABIC-INDIC DIGIT FIVE */
+#define XK_Arabic_6 0x1000666 /* U+0666 ARABIC-INDIC DIGIT SIX */
+#define XK_Arabic_7 0x1000667 /* U+0667 ARABIC-INDIC DIGIT SEVEN */
+#define XK_Arabic_8 0x1000668 /* U+0668 ARABIC-INDIC DIGIT EIGHT */
+#define XK_Arabic_9 0x1000669 /* U+0669 ARABIC-INDIC DIGIT NINE */
+#define XK_Arabic_semicolon 0x05bb /* U+061B ARABIC SEMICOLON */
+#define XK_Arabic_question_mark 0x05bf /* U+061F ARABIC QUESTION MARK */
+#define XK_Arabic_hamza 0x05c1 /* U+0621 ARABIC LETTER HAMZA */
+#define XK_Arabic_maddaonalef 0x05c2 /* U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE */
+#define XK_Arabic_hamzaonalef 0x05c3 /* U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE */
+#define XK_Arabic_hamzaonwaw 0x05c4 /* U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE */
+#define XK_Arabic_hamzaunderalef 0x05c5 /* U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW */
+#define XK_Arabic_hamzaonyeh 0x05c6 /* U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE */
+#define XK_Arabic_alef 0x05c7 /* U+0627 ARABIC LETTER ALEF */
+#define XK_Arabic_beh 0x05c8 /* U+0628 ARABIC LETTER BEH */
+#define XK_Arabic_tehmarbuta 0x05c9 /* U+0629 ARABIC LETTER TEH MARBUTA */
+#define XK_Arabic_teh 0x05ca /* U+062A ARABIC LETTER TEH */
+#define XK_Arabic_theh 0x05cb /* U+062B ARABIC LETTER THEH */
+#define XK_Arabic_jeem 0x05cc /* U+062C ARABIC LETTER JEEM */
+#define XK_Arabic_hah 0x05cd /* U+062D ARABIC LETTER HAH */
+#define XK_Arabic_khah 0x05ce /* U+062E ARABIC LETTER KHAH */
+#define XK_Arabic_dal 0x05cf /* U+062F ARABIC LETTER DAL */
+#define XK_Arabic_thal 0x05d0 /* U+0630 ARABIC LETTER THAL */
+#define XK_Arabic_ra 0x05d1 /* U+0631 ARABIC LETTER REH */
+#define XK_Arabic_zain 0x05d2 /* U+0632 ARABIC LETTER ZAIN */
+#define XK_Arabic_seen 0x05d3 /* U+0633 ARABIC LETTER SEEN */
+#define XK_Arabic_sheen 0x05d4 /* U+0634 ARABIC LETTER SHEEN */
+#define XK_Arabic_sad 0x05d5 /* U+0635 ARABIC LETTER SAD */
+#define XK_Arabic_dad 0x05d6 /* U+0636 ARABIC LETTER DAD */
+#define XK_Arabic_tah 0x05d7 /* U+0637 ARABIC LETTER TAH */
+#define XK_Arabic_zah 0x05d8 /* U+0638 ARABIC LETTER ZAH */
+#define XK_Arabic_ain 0x05d9 /* U+0639 ARABIC LETTER AIN */
+#define XK_Arabic_ghain 0x05da /* U+063A ARABIC LETTER GHAIN */
+#define XK_Arabic_tatweel 0x05e0 /* U+0640 ARABIC TATWEEL */
+#define XK_Arabic_feh 0x05e1 /* U+0641 ARABIC LETTER FEH */
+#define XK_Arabic_qaf 0x05e2 /* U+0642 ARABIC LETTER QAF */
+#define XK_Arabic_kaf 0x05e3 /* U+0643 ARABIC LETTER KAF */
+#define XK_Arabic_lam 0x05e4 /* U+0644 ARABIC LETTER LAM */
+#define XK_Arabic_meem 0x05e5 /* U+0645 ARABIC LETTER MEEM */
+#define XK_Arabic_noon 0x05e6 /* U+0646 ARABIC LETTER NOON */
+#define XK_Arabic_ha 0x05e7 /* U+0647 ARABIC LETTER HEH */
+#define XK_Arabic_heh 0x05e7 /* deprecated */
+#define XK_Arabic_waw 0x05e8 /* U+0648 ARABIC LETTER WAW */
+#define XK_Arabic_alefmaksura 0x05e9 /* U+0649 ARABIC LETTER ALEF MAKSURA */
+#define XK_Arabic_yeh 0x05ea /* U+064A ARABIC LETTER YEH */
+#define XK_Arabic_fathatan 0x05eb /* U+064B ARABIC FATHATAN */
+#define XK_Arabic_dammatan 0x05ec /* U+064C ARABIC DAMMATAN */
+#define XK_Arabic_kasratan 0x05ed /* U+064D ARABIC KASRATAN */
+#define XK_Arabic_fatha 0x05ee /* U+064E ARABIC FATHA */
+#define XK_Arabic_damma 0x05ef /* U+064F ARABIC DAMMA */
+#define XK_Arabic_kasra 0x05f0 /* U+0650 ARABIC KASRA */
+#define XK_Arabic_shadda 0x05f1 /* U+0651 ARABIC SHADDA */
+#define XK_Arabic_sukun 0x05f2 /* U+0652 ARABIC SUKUN */
+#define XK_Arabic_madda_above 0x1000653 /* U+0653 ARABIC MADDAH ABOVE */
+#define XK_Arabic_hamza_above 0x1000654 /* U+0654 ARABIC HAMZA ABOVE */
+#define XK_Arabic_hamza_below 0x1000655 /* U+0655 ARABIC HAMZA BELOW */
+#define XK_Arabic_jeh 0x1000698 /* U+0698 ARABIC LETTER JEH */
+#define XK_Arabic_veh 0x10006a4 /* U+06A4 ARABIC LETTER VEH */
+#define XK_Arabic_keheh 0x10006a9 /* U+06A9 ARABIC LETTER KEHEH */
+#define XK_Arabic_gaf 0x10006af /* U+06AF ARABIC LETTER GAF */
+#define XK_Arabic_noon_ghunna 0x10006ba /* U+06BA ARABIC LETTER NOON GHUNNA */
+#define XK_Arabic_heh_doachashmee 0x10006be /* U+06BE ARABIC LETTER HEH DOACHASHMEE */
+#define XK_Farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */
+#define XK_Arabic_farsi_yeh 0x10006cc /* U+06CC ARABIC LETTER FARSI YEH */
+#define XK_Arabic_yeh_baree 0x10006d2 /* U+06D2 ARABIC LETTER YEH BARREE */
+#define XK_Arabic_heh_goal 0x10006c1 /* U+06C1 ARABIC LETTER HEH GOAL */
+#define XK_Arabic_switch 0xff7e /* Alias for mode_switch */
+/* XK_ARABIC */
+
+/*
+ * Cyrillic
+ * Byte 3 = 6
+ */
+
+#define XK_Cyrillic_GHE_bar 0x1000492 /* U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE */
+#define XK_Cyrillic_ghe_bar 0x1000493 /* U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE */
+#define XK_Cyrillic_ZHE_descender 0x1000496 /* U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER */
+#define XK_Cyrillic_zhe_descender 0x1000497 /* U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER */
+#define XK_Cyrillic_KA_descender 0x100049a /* U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER */
+#define XK_Cyrillic_ka_descender 0x100049b /* U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER */
+#define XK_Cyrillic_KA_vertstroke 0x100049c /* U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE */
+#define XK_Cyrillic_ka_vertstroke 0x100049d /* U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE */
+#define XK_Cyrillic_EN_descender 0x10004a2 /* U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER */
+#define XK_Cyrillic_en_descender 0x10004a3 /* U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER */
+#define XK_Cyrillic_U_straight 0x10004ae /* U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U */
+#define XK_Cyrillic_u_straight 0x10004af /* U+04AF CYRILLIC SMALL LETTER STRAIGHT U */
+#define XK_Cyrillic_U_straight_bar 0x10004b0 /* U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE */
+#define XK_Cyrillic_u_straight_bar 0x10004b1 /* U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE */
+#define XK_Cyrillic_HA_descender 0x10004b2 /* U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER */
+#define XK_Cyrillic_ha_descender 0x10004b3 /* U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER */
+#define XK_Cyrillic_CHE_descender 0x10004b6 /* U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER */
+#define XK_Cyrillic_che_descender 0x10004b7 /* U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER */
+#define XK_Cyrillic_CHE_vertstroke 0x10004b8 /* U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE */
+#define XK_Cyrillic_che_vertstroke 0x10004b9 /* U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE */
+#define XK_Cyrillic_SHHA 0x10004ba /* U+04BA CYRILLIC CAPITAL LETTER SHHA */
+#define XK_Cyrillic_shha 0x10004bb /* U+04BB CYRILLIC SMALL LETTER SHHA */
+
+#define XK_Cyrillic_SCHWA 0x10004d8 /* U+04D8 CYRILLIC CAPITAL LETTER SCHWA */
+#define XK_Cyrillic_schwa 0x10004d9 /* U+04D9 CYRILLIC SMALL LETTER SCHWA */
+#define XK_Cyrillic_I_macron 0x10004e2 /* U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON */
+#define XK_Cyrillic_i_macron 0x10004e3 /* U+04E3 CYRILLIC SMALL LETTER I WITH MACRON */
+#define XK_Cyrillic_O_bar 0x10004e8 /* U+04E8 CYRILLIC CAPITAL LETTER BARRED O */
+#define XK_Cyrillic_o_bar 0x10004e9 /* U+04E9 CYRILLIC SMALL LETTER BARRED O */
+#define XK_Cyrillic_U_macron 0x10004ee /* U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON */
+#define XK_Cyrillic_u_macron 0x10004ef /* U+04EF CYRILLIC SMALL LETTER U WITH MACRON */
+
+#define XK_Serbian_dje 0x06a1 /* U+0452 CYRILLIC SMALL LETTER DJE */
+#define XK_Macedonia_gje 0x06a2 /* U+0453 CYRILLIC SMALL LETTER GJE */
+#define XK_Cyrillic_io 0x06a3 /* U+0451 CYRILLIC SMALL LETTER IO */
+#define XK_Ukrainian_ie 0x06a4 /* U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE */
+#define XK_Ukranian_je 0x06a4 /* deprecated */
+#define XK_Macedonia_dse 0x06a5 /* U+0455 CYRILLIC SMALL LETTER DZE */
+#define XK_Ukrainian_i 0x06a6 /* U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I */
+#define XK_Ukranian_i 0x06a6 /* deprecated */
+#define XK_Ukrainian_yi 0x06a7 /* U+0457 CYRILLIC SMALL LETTER YI */
+#define XK_Ukranian_yi 0x06a7 /* deprecated */
+#define XK_Cyrillic_je 0x06a8 /* U+0458 CYRILLIC SMALL LETTER JE */
+#define XK_Serbian_je 0x06a8 /* deprecated */
+#define XK_Cyrillic_lje 0x06a9 /* U+0459 CYRILLIC SMALL LETTER LJE */
+#define XK_Serbian_lje 0x06a9 /* deprecated */
+#define XK_Cyrillic_nje 0x06aa /* U+045A CYRILLIC SMALL LETTER NJE */
+#define XK_Serbian_nje 0x06aa /* deprecated */
+#define XK_Serbian_tshe 0x06ab /* U+045B CYRILLIC SMALL LETTER TSHE */
+#define XK_Macedonia_kje 0x06ac /* U+045C CYRILLIC SMALL LETTER KJE */
+#define XK_Ukrainian_ghe_with_upturn 0x06ad /* U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN */
+#define XK_Byelorussian_shortu 0x06ae /* U+045E CYRILLIC SMALL LETTER SHORT U */
+#define XK_Cyrillic_dzhe 0x06af /* U+045F CYRILLIC SMALL LETTER DZHE */
+#define XK_Serbian_dze 0x06af /* deprecated */
+#define XK_numerosign 0x06b0 /* U+2116 NUMERO SIGN */
+#define XK_Serbian_DJE 0x06b1 /* U+0402 CYRILLIC CAPITAL LETTER DJE */
+#define XK_Macedonia_GJE 0x06b2 /* U+0403 CYRILLIC CAPITAL LETTER GJE */
+#define XK_Cyrillic_IO 0x06b3 /* U+0401 CYRILLIC CAPITAL LETTER IO */
+#define XK_Ukrainian_IE 0x06b4 /* U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE */
+#define XK_Ukranian_JE 0x06b4 /* deprecated */
+#define XK_Macedonia_DSE 0x06b5 /* U+0405 CYRILLIC CAPITAL LETTER DZE */
+#define XK_Ukrainian_I 0x06b6 /* U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I */
+#define XK_Ukranian_I 0x06b6 /* deprecated */
+#define XK_Ukrainian_YI 0x06b7 /* U+0407 CYRILLIC CAPITAL LETTER YI */
+#define XK_Ukranian_YI 0x06b7 /* deprecated */
+#define XK_Cyrillic_JE 0x06b8 /* U+0408 CYRILLIC CAPITAL LETTER JE */
+#define XK_Serbian_JE 0x06b8 /* deprecated */
+#define XK_Cyrillic_LJE 0x06b9 /* U+0409 CYRILLIC CAPITAL LETTER LJE */
+#define XK_Serbian_LJE 0x06b9 /* deprecated */
+#define XK_Cyrillic_NJE 0x06ba /* U+040A CYRILLIC CAPITAL LETTER NJE */
+#define XK_Serbian_NJE 0x06ba /* deprecated */
+#define XK_Serbian_TSHE 0x06bb /* U+040B CYRILLIC CAPITAL LETTER TSHE */
+#define XK_Macedonia_KJE 0x06bc /* U+040C CYRILLIC CAPITAL LETTER KJE */
+#define XK_Ukrainian_GHE_WITH_UPTURN 0x06bd /* U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN */
+#define XK_Byelorussian_SHORTU 0x06be /* U+040E CYRILLIC CAPITAL LETTER SHORT U */
+#define XK_Cyrillic_DZHE 0x06bf /* U+040F CYRILLIC CAPITAL LETTER DZHE */
+#define XK_Serbian_DZE 0x06bf /* deprecated */
+#define XK_Cyrillic_yu 0x06c0 /* U+044E CYRILLIC SMALL LETTER YU */
+#define XK_Cyrillic_a 0x06c1 /* U+0430 CYRILLIC SMALL LETTER A */
+#define XK_Cyrillic_be 0x06c2 /* U+0431 CYRILLIC SMALL LETTER BE */
+#define XK_Cyrillic_tse 0x06c3 /* U+0446 CYRILLIC SMALL LETTER TSE */
+#define XK_Cyrillic_de 0x06c4 /* U+0434 CYRILLIC SMALL LETTER DE */
+#define XK_Cyrillic_ie 0x06c5 /* U+0435 CYRILLIC SMALL LETTER IE */
+#define XK_Cyrillic_ef 0x06c6 /* U+0444 CYRILLIC SMALL LETTER EF */
+#define XK_Cyrillic_ghe 0x06c7 /* U+0433 CYRILLIC SMALL LETTER GHE */
+#define XK_Cyrillic_ha 0x06c8 /* U+0445 CYRILLIC SMALL LETTER HA */
+#define XK_Cyrillic_i 0x06c9 /* U+0438 CYRILLIC SMALL LETTER I */
+#define XK_Cyrillic_shorti 0x06ca /* U+0439 CYRILLIC SMALL LETTER SHORT I */
+#define XK_Cyrillic_ka 0x06cb /* U+043A CYRILLIC SMALL LETTER KA */
+#define XK_Cyrillic_el 0x06cc /* U+043B CYRILLIC SMALL LETTER EL */
+#define XK_Cyrillic_em 0x06cd /* U+043C CYRILLIC SMALL LETTER EM */
+#define XK_Cyrillic_en 0x06ce /* U+043D CYRILLIC SMALL LETTER EN */
+#define XK_Cyrillic_o 0x06cf /* U+043E CYRILLIC SMALL LETTER O */
+#define XK_Cyrillic_pe 0x06d0 /* U+043F CYRILLIC SMALL LETTER PE */
+#define XK_Cyrillic_ya 0x06d1 /* U+044F CYRILLIC SMALL LETTER YA */
+#define XK_Cyrillic_er 0x06d2 /* U+0440 CYRILLIC SMALL LETTER ER */
+#define XK_Cyrillic_es 0x06d3 /* U+0441 CYRILLIC SMALL LETTER ES */
+#define XK_Cyrillic_te 0x06d4 /* U+0442 CYRILLIC SMALL LETTER TE */
+#define XK_Cyrillic_u 0x06d5 /* U+0443 CYRILLIC SMALL LETTER U */
+#define XK_Cyrillic_zhe 0x06d6 /* U+0436 CYRILLIC SMALL LETTER ZHE */
+#define XK_Cyrillic_ve 0x06d7 /* U+0432 CYRILLIC SMALL LETTER VE */
+#define XK_Cyrillic_softsign 0x06d8 /* U+044C CYRILLIC SMALL LETTER SOFT SIGN */
+#define XK_Cyrillic_yeru 0x06d9 /* U+044B CYRILLIC SMALL LETTER YERU */
+#define XK_Cyrillic_ze 0x06da /* U+0437 CYRILLIC SMALL LETTER ZE */
+#define XK_Cyrillic_sha 0x06db /* U+0448 CYRILLIC SMALL LETTER SHA */
+#define XK_Cyrillic_e 0x06dc /* U+044D CYRILLIC SMALL LETTER E */
+#define XK_Cyrillic_shcha 0x06dd /* U+0449 CYRILLIC SMALL LETTER SHCHA */
+#define XK_Cyrillic_che 0x06de /* U+0447 CYRILLIC SMALL LETTER CHE */
+#define XK_Cyrillic_hardsign 0x06df /* U+044A CYRILLIC SMALL LETTER HARD SIGN */
+#define XK_Cyrillic_YU 0x06e0 /* U+042E CYRILLIC CAPITAL LETTER YU */
+#define XK_Cyrillic_A 0x06e1 /* U+0410 CYRILLIC CAPITAL LETTER A */
+#define XK_Cyrillic_BE 0x06e2 /* U+0411 CYRILLIC CAPITAL LETTER BE */
+#define XK_Cyrillic_TSE 0x06e3 /* U+0426 CYRILLIC CAPITAL LETTER TSE */
+#define XK_Cyrillic_DE 0x06e4 /* U+0414 CYRILLIC CAPITAL LETTER DE */
+#define XK_Cyrillic_IE 0x06e5 /* U+0415 CYRILLIC CAPITAL LETTER IE */
+#define XK_Cyrillic_EF 0x06e6 /* U+0424 CYRILLIC CAPITAL LETTER EF */
+#define XK_Cyrillic_GHE 0x06e7 /* U+0413 CYRILLIC CAPITAL LETTER GHE */
+#define XK_Cyrillic_HA 0x06e8 /* U+0425 CYRILLIC CAPITAL LETTER HA */
+#define XK_Cyrillic_I 0x06e9 /* U+0418 CYRILLIC CAPITAL LETTER I */
+#define XK_Cyrillic_SHORTI 0x06ea /* U+0419 CYRILLIC CAPITAL LETTER SHORT I */
+#define XK_Cyrillic_KA 0x06eb /* U+041A CYRILLIC CAPITAL LETTER KA */
+#define XK_Cyrillic_EL 0x06ec /* U+041B CYRILLIC CAPITAL LETTER EL */
+#define XK_Cyrillic_EM 0x06ed /* U+041C CYRILLIC CAPITAL LETTER EM */
+#define XK_Cyrillic_EN 0x06ee /* U+041D CYRILLIC CAPITAL LETTER EN */
+#define XK_Cyrillic_O 0x06ef /* U+041E CYRILLIC CAPITAL LETTER O */
+#define XK_Cyrillic_PE 0x06f0 /* U+041F CYRILLIC CAPITAL LETTER PE */
+#define XK_Cyrillic_YA 0x06f1 /* U+042F CYRILLIC CAPITAL LETTER YA */
+#define XK_Cyrillic_ER 0x06f2 /* U+0420 CYRILLIC CAPITAL LETTER ER */
+#define XK_Cyrillic_ES 0x06f3 /* U+0421 CYRILLIC CAPITAL LETTER ES */
+#define XK_Cyrillic_TE 0x06f4 /* U+0422 CYRILLIC CAPITAL LETTER TE */
+#define XK_Cyrillic_U 0x06f5 /* U+0423 CYRILLIC CAPITAL LETTER U */
+#define XK_Cyrillic_ZHE 0x06f6 /* U+0416 CYRILLIC CAPITAL LETTER ZHE */
+#define XK_Cyrillic_VE 0x06f7 /* U+0412 CYRILLIC CAPITAL LETTER VE */
+#define XK_Cyrillic_SOFTSIGN 0x06f8 /* U+042C CYRILLIC CAPITAL LETTER SOFT SIGN */
+#define XK_Cyrillic_YERU 0x06f9 /* U+042B CYRILLIC CAPITAL LETTER YERU */
+#define XK_Cyrillic_ZE 0x06fa /* U+0417 CYRILLIC CAPITAL LETTER ZE */
+#define XK_Cyrillic_SHA 0x06fb /* U+0428 CYRILLIC CAPITAL LETTER SHA */
+#define XK_Cyrillic_E 0x06fc /* U+042D CYRILLIC CAPITAL LETTER E */
+#define XK_Cyrillic_SHCHA 0x06fd /* U+0429 CYRILLIC CAPITAL LETTER SHCHA */
+#define XK_Cyrillic_CHE 0x06fe /* U+0427 CYRILLIC CAPITAL LETTER CHE */
+#define XK_Cyrillic_HARDSIGN 0x06ff /* U+042A CYRILLIC CAPITAL LETTER HARD SIGN */
+/* XK_CYRILLIC */
+
+/*
+ * Greek
+ * (based on an early draft of, and not quite identical to, ISO/IEC 8859-7)
+ * Byte 3 = 7
+ */
+
+
+#define XK_Greek_ALPHAaccent 0x07a1 /* U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS */
+#define XK_Greek_EPSILONaccent 0x07a2 /* U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS */
+#define XK_Greek_ETAaccent 0x07a3 /* U+0389 GREEK CAPITAL LETTER ETA WITH TONOS */
+#define XK_Greek_IOTAaccent 0x07a4 /* U+038A GREEK CAPITAL LETTER IOTA WITH TONOS */
+#define XK_Greek_IOTAdieresis 0x07a5 /* U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA */
+#define XK_Greek_IOTAdiaeresis 0x07a5 /* old typo */
+#define XK_Greek_OMICRONaccent 0x07a7 /* U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS */
+#define XK_Greek_UPSILONaccent 0x07a8 /* U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS */
+#define XK_Greek_UPSILONdieresis 0x07a9 /* U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA */
+#define XK_Greek_OMEGAaccent 0x07ab /* U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS */
+#define XK_Greek_accentdieresis 0x07ae /* U+0385 GREEK DIALYTIKA TONOS */
+#define XK_Greek_horizbar 0x07af /* U+2015 HORIZONTAL BAR */
+#define XK_Greek_alphaaccent 0x07b1 /* U+03AC GREEK SMALL LETTER ALPHA WITH TONOS */
+#define XK_Greek_epsilonaccent 0x07b2 /* U+03AD GREEK SMALL LETTER EPSILON WITH TONOS */
+#define XK_Greek_etaaccent 0x07b3 /* U+03AE GREEK SMALL LETTER ETA WITH TONOS */
+#define XK_Greek_iotaaccent 0x07b4 /* U+03AF GREEK SMALL LETTER IOTA WITH TONOS */
+#define XK_Greek_iotadieresis 0x07b5 /* U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA */
+#define XK_Greek_iotaaccentdieresis 0x07b6 /* U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */
+#define XK_Greek_omicronaccent 0x07b7 /* U+03CC GREEK SMALL LETTER OMICRON WITH TONOS */
+#define XK_Greek_upsilonaccent 0x07b8 /* U+03CD GREEK SMALL LETTER UPSILON WITH TONOS */
+#define XK_Greek_upsilondieresis 0x07b9 /* U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA */
+#define XK_Greek_upsilonaccentdieresis 0x07ba /* U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */
+#define XK_Greek_omegaaccent 0x07bb /* U+03CE GREEK SMALL LETTER OMEGA WITH TONOS */
+#define XK_Greek_ALPHA 0x07c1 /* U+0391 GREEK CAPITAL LETTER ALPHA */
+#define XK_Greek_BETA 0x07c2 /* U+0392 GREEK CAPITAL LETTER BETA */
+#define XK_Greek_GAMMA 0x07c3 /* U+0393 GREEK CAPITAL LETTER GAMMA */
+#define XK_Greek_DELTA 0x07c4 /* U+0394 GREEK CAPITAL LETTER DELTA */
+#define XK_Greek_EPSILON 0x07c5 /* U+0395 GREEK CAPITAL LETTER EPSILON */
+#define XK_Greek_ZETA 0x07c6 /* U+0396 GREEK CAPITAL LETTER ZETA */
+#define XK_Greek_ETA 0x07c7 /* U+0397 GREEK CAPITAL LETTER ETA */
+#define XK_Greek_THETA 0x07c8 /* U+0398 GREEK CAPITAL LETTER THETA */
+#define XK_Greek_IOTA 0x07c9 /* U+0399 GREEK CAPITAL LETTER IOTA */
+#define XK_Greek_KAPPA 0x07ca /* U+039A GREEK CAPITAL LETTER KAPPA */
+#define XK_Greek_LAMDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
+#define XK_Greek_LAMBDA 0x07cb /* U+039B GREEK CAPITAL LETTER LAMDA */
+#define XK_Greek_MU 0x07cc /* U+039C GREEK CAPITAL LETTER MU */
+#define XK_Greek_NU 0x07cd /* U+039D GREEK CAPITAL LETTER NU */
+#define XK_Greek_XI 0x07ce /* U+039E GREEK CAPITAL LETTER XI */
+#define XK_Greek_OMICRON 0x07cf /* U+039F GREEK CAPITAL LETTER OMICRON */
+#define XK_Greek_PI 0x07d0 /* U+03A0 GREEK CAPITAL LETTER PI */
+#define XK_Greek_RHO 0x07d1 /* U+03A1 GREEK CAPITAL LETTER RHO */
+#define XK_Greek_SIGMA 0x07d2 /* U+03A3 GREEK CAPITAL LETTER SIGMA */
+#define XK_Greek_TAU 0x07d4 /* U+03A4 GREEK CAPITAL LETTER TAU */
+#define XK_Greek_UPSILON 0x07d5 /* U+03A5 GREEK CAPITAL LETTER UPSILON */
+#define XK_Greek_PHI 0x07d6 /* U+03A6 GREEK CAPITAL LETTER PHI */
+#define XK_Greek_CHI 0x07d7 /* U+03A7 GREEK CAPITAL LETTER CHI */
+#define XK_Greek_PSI 0x07d8 /* U+03A8 GREEK CAPITAL LETTER PSI */
+#define XK_Greek_OMEGA 0x07d9 /* U+03A9 GREEK CAPITAL LETTER OMEGA */
+#define XK_Greek_alpha 0x07e1 /* U+03B1 GREEK SMALL LETTER ALPHA */
+#define XK_Greek_beta 0x07e2 /* U+03B2 GREEK SMALL LETTER BETA */
+#define XK_Greek_gamma 0x07e3 /* U+03B3 GREEK SMALL LETTER GAMMA */
+#define XK_Greek_delta 0x07e4 /* U+03B4 GREEK SMALL LETTER DELTA */
+#define XK_Greek_epsilon 0x07e5 /* U+03B5 GREEK SMALL LETTER EPSILON */
+#define XK_Greek_zeta 0x07e6 /* U+03B6 GREEK SMALL LETTER ZETA */
+#define XK_Greek_eta 0x07e7 /* U+03B7 GREEK SMALL LETTER ETA */
+#define XK_Greek_theta 0x07e8 /* U+03B8 GREEK SMALL LETTER THETA */
+#define XK_Greek_iota 0x07e9 /* U+03B9 GREEK SMALL LETTER IOTA */
+#define XK_Greek_kappa 0x07ea /* U+03BA GREEK SMALL LETTER KAPPA */
+#define XK_Greek_lamda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
+#define XK_Greek_lambda 0x07eb /* U+03BB GREEK SMALL LETTER LAMDA */
+#define XK_Greek_mu 0x07ec /* U+03BC GREEK SMALL LETTER MU */
+#define XK_Greek_nu 0x07ed /* U+03BD GREEK SMALL LETTER NU */
+#define XK_Greek_xi 0x07ee /* U+03BE GREEK SMALL LETTER XI */
+#define XK_Greek_omicron 0x07ef /* U+03BF GREEK SMALL LETTER OMICRON */
+#define XK_Greek_pi 0x07f0 /* U+03C0 GREEK SMALL LETTER PI */
+#define XK_Greek_rho 0x07f1 /* U+03C1 GREEK SMALL LETTER RHO */
+#define XK_Greek_sigma 0x07f2 /* U+03C3 GREEK SMALL LETTER SIGMA */
+#define XK_Greek_finalsmallsigma 0x07f3 /* U+03C2 GREEK SMALL LETTER FINAL SIGMA */
+#define XK_Greek_tau 0x07f4 /* U+03C4 GREEK SMALL LETTER TAU */
+#define XK_Greek_upsilon 0x07f5 /* U+03C5 GREEK SMALL LETTER UPSILON */
+#define XK_Greek_phi 0x07f6 /* U+03C6 GREEK SMALL LETTER PHI */
+#define XK_Greek_chi 0x07f7 /* U+03C7 GREEK SMALL LETTER CHI */
+#define XK_Greek_psi 0x07f8 /* U+03C8 GREEK SMALL LETTER PSI */
+#define XK_Greek_omega 0x07f9 /* U+03C9 GREEK SMALL LETTER OMEGA */
+#define XK_Greek_switch 0xff7e /* Alias for mode_switch */
+/* XK_GREEK */
+
+/*
+ * Technical
+ * (from the DEC VT330/VT420 Technical Character Set, http://vt100.net/charsets/technical.html)
+ * Byte 3 = 8
+ */
+
+/* XK_TECHNICAL */
+# 1375 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Special
+ * (from the DEC VT100 Special Graphics Character Set)
+ * Byte 3 = 9
+ */
+
+/* XK_SPECIAL */
+# 1408 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Publishing
+ * (these are probably from a long forgotten DEC Publishing
+ * font that once shipped with DECwrite)
+ * Byte 3 = 0x0a
+ */
+
+/* XK_PUBLISHING */
+# 1501 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * APL
+ * Byte 3 = 0x0b
+ */
+
+/* XK_APL */
+# 1528 "/usr/include/X11/keysymdef.h" 3
+
+
+/*
+ * Hebrew
+ * Byte 3 = 0x0c
+ */
+
+
+#define XK_hebrew_doublelowline 0x0cdf /* U+2017 DOUBLE LOW LINE */
+#define XK_hebrew_aleph 0x0ce0 /* U+05D0 HEBREW LETTER ALEF */
+#define XK_hebrew_bet 0x0ce1 /* U+05D1 HEBREW LETTER BET */
+#define XK_hebrew_beth 0x0ce1 /* deprecated */
+#define XK_hebrew_gimel 0x0ce2 /* U+05D2 HEBREW LETTER GIMEL */
+#define XK_hebrew_gimmel 0x0ce2 /* deprecated */
+#define XK_hebrew_dalet 0x0ce3 /* U+05D3 HEBREW LETTER DALET */
+#define XK_hebrew_daleth 0x0ce3 /* deprecated */
+#define XK_hebrew_he 0x0ce4 /* U+05D4 HEBREW LETTER HE */
+#define XK_hebrew_waw 0x0ce5 /* U+05D5 HEBREW LETTER VAV */
+#define XK_hebrew_zain 0x0ce6 /* U+05D6 HEBREW LETTER ZAYIN */
+#define XK_hebrew_zayin 0x0ce6 /* deprecated */
+#define XK_hebrew_chet 0x0ce7 /* U+05D7 HEBREW LETTER HET */
+#define XK_hebrew_het 0x0ce7 /* deprecated */
+#define XK_hebrew_tet 0x0ce8 /* U+05D8 HEBREW LETTER TET */
+#define XK_hebrew_teth 0x0ce8 /* deprecated */
+#define XK_hebrew_yod 0x0ce9 /* U+05D9 HEBREW LETTER YOD */
+#define XK_hebrew_finalkaph 0x0cea /* U+05DA HEBREW LETTER FINAL KAF */
+#define XK_hebrew_kaph 0x0ceb /* U+05DB HEBREW LETTER KAF */
+#define XK_hebrew_lamed 0x0cec /* U+05DC HEBREW LETTER LAMED */
+#define XK_hebrew_finalmem 0x0ced /* U+05DD HEBREW LETTER FINAL MEM */
+#define XK_hebrew_mem 0x0cee /* U+05DE HEBREW LETTER MEM */
+#define XK_hebrew_finalnun 0x0cef /* U+05DF HEBREW LETTER FINAL NUN */
+#define XK_hebrew_nun 0x0cf0 /* U+05E0 HEBREW LETTER NUN */
+#define XK_hebrew_samech 0x0cf1 /* U+05E1 HEBREW LETTER SAMEKH */
+#define XK_hebrew_samekh 0x0cf1 /* deprecated */
+#define XK_hebrew_ayin 0x0cf2 /* U+05E2 HEBREW LETTER AYIN */
+#define XK_hebrew_finalpe 0x0cf3 /* U+05E3 HEBREW LETTER FINAL PE */
+#define XK_hebrew_pe 0x0cf4 /* U+05E4 HEBREW LETTER PE */
+#define XK_hebrew_finalzade 0x0cf5 /* U+05E5 HEBREW LETTER FINAL TSADI */
+#define XK_hebrew_finalzadi 0x0cf5 /* deprecated */
+#define XK_hebrew_zade 0x0cf6 /* U+05E6 HEBREW LETTER TSADI */
+#define XK_hebrew_zadi 0x0cf6 /* deprecated */
+#define XK_hebrew_qoph 0x0cf7 /* U+05E7 HEBREW LETTER QOF */
+#define XK_hebrew_kuf 0x0cf7 /* deprecated */
+#define XK_hebrew_resh 0x0cf8 /* U+05E8 HEBREW LETTER RESH */
+#define XK_hebrew_shin 0x0cf9 /* U+05E9 HEBREW LETTER SHIN */
+#define XK_hebrew_taw 0x0cfa /* U+05EA HEBREW LETTER TAV */
+#define XK_hebrew_taf 0x0cfa /* deprecated */
+#define XK_Hebrew_switch 0xff7e /* Alias for mode_switch */
+/* XK_HEBREW */
+
+/*
+ * Thai
+ * Byte 3 = 0x0d
+ */
+
+
+#define XK_Thai_kokai 0x0da1 /* U+0E01 THAI CHARACTER KO KAI */
+#define XK_Thai_khokhai 0x0da2 /* U+0E02 THAI CHARACTER KHO KHAI */
+#define XK_Thai_khokhuat 0x0da3 /* U+0E03 THAI CHARACTER KHO KHUAT */
+#define XK_Thai_khokhwai 0x0da4 /* U+0E04 THAI CHARACTER KHO KHWAI */
+#define XK_Thai_khokhon 0x0da5 /* U+0E05 THAI CHARACTER KHO KHON */
+#define XK_Thai_khorakhang 0x0da6 /* U+0E06 THAI CHARACTER KHO RAKHANG */
+#define XK_Thai_ngongu 0x0da7 /* U+0E07 THAI CHARACTER NGO NGU */
+#define XK_Thai_chochan 0x0da8 /* U+0E08 THAI CHARACTER CHO CHAN */
+#define XK_Thai_choching 0x0da9 /* U+0E09 THAI CHARACTER CHO CHING */
+#define XK_Thai_chochang 0x0daa /* U+0E0A THAI CHARACTER CHO CHANG */
+#define XK_Thai_soso 0x0dab /* U+0E0B THAI CHARACTER SO SO */
+#define XK_Thai_chochoe 0x0dac /* U+0E0C THAI CHARACTER CHO CHOE */
+#define XK_Thai_yoying 0x0dad /* U+0E0D THAI CHARACTER YO YING */
+#define XK_Thai_dochada 0x0dae /* U+0E0E THAI CHARACTER DO CHADA */
+#define XK_Thai_topatak 0x0daf /* U+0E0F THAI CHARACTER TO PATAK */
+#define XK_Thai_thothan 0x0db0 /* U+0E10 THAI CHARACTER THO THAN */
+#define XK_Thai_thonangmontho 0x0db1 /* U+0E11 THAI CHARACTER THO NANGMONTHO */
+#define XK_Thai_thophuthao 0x0db2 /* U+0E12 THAI CHARACTER THO PHUTHAO */
+#define XK_Thai_nonen 0x0db3 /* U+0E13 THAI CHARACTER NO NEN */
+#define XK_Thai_dodek 0x0db4 /* U+0E14 THAI CHARACTER DO DEK */
+#define XK_Thai_totao 0x0db5 /* U+0E15 THAI CHARACTER TO TAO */
+#define XK_Thai_thothung 0x0db6 /* U+0E16 THAI CHARACTER THO THUNG */
+#define XK_Thai_thothahan 0x0db7 /* U+0E17 THAI CHARACTER THO THAHAN */
+#define XK_Thai_thothong 0x0db8 /* U+0E18 THAI CHARACTER THO THONG */
+#define XK_Thai_nonu 0x0db9 /* U+0E19 THAI CHARACTER NO NU */
+#define XK_Thai_bobaimai 0x0dba /* U+0E1A THAI CHARACTER BO BAIMAI */
+#define XK_Thai_popla 0x0dbb /* U+0E1B THAI CHARACTER PO PLA */
+#define XK_Thai_phophung 0x0dbc /* U+0E1C THAI CHARACTER PHO PHUNG */
+#define XK_Thai_fofa 0x0dbd /* U+0E1D THAI CHARACTER FO FA */
+#define XK_Thai_phophan 0x0dbe /* U+0E1E THAI CHARACTER PHO PHAN */
+#define XK_Thai_fofan 0x0dbf /* U+0E1F THAI CHARACTER FO FAN */
+#define XK_Thai_phosamphao 0x0dc0 /* U+0E20 THAI CHARACTER PHO SAMPHAO */
+#define XK_Thai_moma 0x0dc1 /* U+0E21 THAI CHARACTER MO MA */
+#define XK_Thai_yoyak 0x0dc2 /* U+0E22 THAI CHARACTER YO YAK */
+#define XK_Thai_rorua 0x0dc3 /* U+0E23 THAI CHARACTER RO RUA */
+#define XK_Thai_ru 0x0dc4 /* U+0E24 THAI CHARACTER RU */
+#define XK_Thai_loling 0x0dc5 /* U+0E25 THAI CHARACTER LO LING */
+#define XK_Thai_lu 0x0dc6 /* U+0E26 THAI CHARACTER LU */
+#define XK_Thai_wowaen 0x0dc7 /* U+0E27 THAI CHARACTER WO WAEN */
+#define XK_Thai_sosala 0x0dc8 /* U+0E28 THAI CHARACTER SO SALA */
+#define XK_Thai_sorusi 0x0dc9 /* U+0E29 THAI CHARACTER SO RUSI */
+#define XK_Thai_sosua 0x0dca /* U+0E2A THAI CHARACTER SO SUA */
+#define XK_Thai_hohip 0x0dcb /* U+0E2B THAI CHARACTER HO HIP */
+#define XK_Thai_lochula 0x0dcc /* U+0E2C THAI CHARACTER LO CHULA */
+#define XK_Thai_oang 0x0dcd /* U+0E2D THAI CHARACTER O ANG */
+#define XK_Thai_honokhuk 0x0dce /* U+0E2E THAI CHARACTER HO NOKHUK */
+#define XK_Thai_paiyannoi 0x0dcf /* U+0E2F THAI CHARACTER PAIYANNOI */
+#define XK_Thai_saraa 0x0dd0 /* U+0E30 THAI CHARACTER SARA A */
+#define XK_Thai_maihanakat 0x0dd1 /* U+0E31 THAI CHARACTER MAI HAN-AKAT */
+#define XK_Thai_saraaa 0x0dd2 /* U+0E32 THAI CHARACTER SARA AA */
+#define XK_Thai_saraam 0x0dd3 /* U+0E33 THAI CHARACTER SARA AM */
+#define XK_Thai_sarai 0x0dd4 /* U+0E34 THAI CHARACTER SARA I */
+#define XK_Thai_saraii 0x0dd5 /* U+0E35 THAI CHARACTER SARA II */
+#define XK_Thai_saraue 0x0dd6 /* U+0E36 THAI CHARACTER SARA UE */
+#define XK_Thai_sarauee 0x0dd7 /* U+0E37 THAI CHARACTER SARA UEE */
+#define XK_Thai_sarau 0x0dd8 /* U+0E38 THAI CHARACTER SARA U */
+#define XK_Thai_sarauu 0x0dd9 /* U+0E39 THAI CHARACTER SARA UU */
+#define XK_Thai_phinthu 0x0dda /* U+0E3A THAI CHARACTER PHINTHU */
+#define XK_Thai_maihanakat_maitho 0x0dde
+#define XK_Thai_baht 0x0ddf /* U+0E3F THAI CURRENCY SYMBOL BAHT */
+#define XK_Thai_sarae 0x0de0 /* U+0E40 THAI CHARACTER SARA E */
+#define XK_Thai_saraae 0x0de1 /* U+0E41 THAI CHARACTER SARA AE */
+#define XK_Thai_sarao 0x0de2 /* U+0E42 THAI CHARACTER SARA O */
+#define XK_Thai_saraaimaimuan 0x0de3 /* U+0E43 THAI CHARACTER SARA AI MAIMUAN */
+#define XK_Thai_saraaimaimalai 0x0de4 /* U+0E44 THAI CHARACTER SARA AI MAIMALAI */
+#define XK_Thai_lakkhangyao 0x0de5 /* U+0E45 THAI CHARACTER LAKKHANGYAO */
+#define XK_Thai_maiyamok 0x0de6 /* U+0E46 THAI CHARACTER MAIYAMOK */
+#define XK_Thai_maitaikhu 0x0de7 /* U+0E47 THAI CHARACTER MAITAIKHU */
+#define XK_Thai_maiek 0x0de8 /* U+0E48 THAI CHARACTER MAI EK */
+#define XK_Thai_maitho 0x0de9 /* U+0E49 THAI CHARACTER MAI THO */
+#define XK_Thai_maitri 0x0dea /* U+0E4A THAI CHARACTER MAI TRI */
+#define XK_Thai_maichattawa 0x0deb /* U+0E4B THAI CHARACTER MAI CHATTAWA */
+#define XK_Thai_thanthakhat 0x0dec /* U+0E4C THAI CHARACTER THANTHAKHAT */
+#define XK_Thai_nikhahit 0x0ded /* U+0E4D THAI CHARACTER NIKHAHIT */
+#define XK_Thai_leksun 0x0df0 /* U+0E50 THAI DIGIT ZERO */
+#define XK_Thai_leknung 0x0df1 /* U+0E51 THAI DIGIT ONE */
+#define XK_Thai_leksong 0x0df2 /* U+0E52 THAI DIGIT TWO */
+#define XK_Thai_leksam 0x0df3 /* U+0E53 THAI DIGIT THREE */
+#define XK_Thai_leksi 0x0df4 /* U+0E54 THAI DIGIT FOUR */
+#define XK_Thai_lekha 0x0df5 /* U+0E55 THAI DIGIT FIVE */
+#define XK_Thai_lekhok 0x0df6 /* U+0E56 THAI DIGIT SIX */
+#define XK_Thai_lekchet 0x0df7 /* U+0E57 THAI DIGIT SEVEN */
+#define XK_Thai_lekpaet 0x0df8 /* U+0E58 THAI DIGIT EIGHT */
+#define XK_Thai_lekkao 0x0df9 /* U+0E59 THAI DIGIT NINE */
+/* XK_THAI */
+
+/*
+ * Korean
+ * Byte 3 = 0x0e
+ */
+
+
+
+#define XK_Hangul 0xff31 /* Hangul start/stop(toggle) */
+#define XK_Hangul_Start 0xff32 /* Hangul start */
+#define XK_Hangul_End 0xff33 /* Hangul end, English start */
+#define XK_Hangul_Hanja 0xff34 /* Start Hangul->Hanja Conversion */
+#define XK_Hangul_Jamo 0xff35 /* Hangul Jamo mode */
+#define XK_Hangul_Romaja 0xff36 /* Hangul Romaja mode */
+#define XK_Hangul_Codeinput 0xff37 /* Hangul code input mode */
+#define XK_Hangul_Jeonja 0xff38 /* Jeonja mode */
+#define XK_Hangul_Banja 0xff39 /* Banja mode */
+#define XK_Hangul_PreHanja 0xff3a /* Pre Hanja conversion */
+#define XK_Hangul_PostHanja 0xff3b /* Post Hanja conversion */
+#define XK_Hangul_SingleCandidate 0xff3c /* Single candidate */
+#define XK_Hangul_MultipleCandidate 0xff3d /* Multiple candidate */
+#define XK_Hangul_PreviousCandidate 0xff3e /* Previous candidate */
+#define XK_Hangul_Special 0xff3f /* Special symbols */
+#define XK_Hangul_switch 0xff7e /* Alias for mode_switch */
+
+/* Hangul Consonant Characters */
+#define XK_Hangul_Kiyeog 0x0ea1
+#define XK_Hangul_SsangKiyeog 0x0ea2
+#define XK_Hangul_KiyeogSios 0x0ea3
+#define XK_Hangul_Nieun 0x0ea4
+#define XK_Hangul_NieunJieuj 0x0ea5
+#define XK_Hangul_NieunHieuh 0x0ea6
+#define XK_Hangul_Dikeud 0x0ea7
+#define XK_Hangul_SsangDikeud 0x0ea8
+#define XK_Hangul_Rieul 0x0ea9
+#define XK_Hangul_RieulKiyeog 0x0eaa
+#define XK_Hangul_RieulMieum 0x0eab
+#define XK_Hangul_RieulPieub 0x0eac
+#define XK_Hangul_RieulSios 0x0ead
+#define XK_Hangul_RieulTieut 0x0eae
+#define XK_Hangul_RieulPhieuf 0x0eaf
+#define XK_Hangul_RieulHieuh 0x0eb0
+#define XK_Hangul_Mieum 0x0eb1
+#define XK_Hangul_Pieub 0x0eb2
+#define XK_Hangul_SsangPieub 0x0eb3
+#define XK_Hangul_PieubSios 0x0eb4
+#define XK_Hangul_Sios 0x0eb5
+#define XK_Hangul_SsangSios 0x0eb6
+#define XK_Hangul_Ieung 0x0eb7
+#define XK_Hangul_Jieuj 0x0eb8
+#define XK_Hangul_SsangJieuj 0x0eb9
+#define XK_Hangul_Cieuc 0x0eba
+#define XK_Hangul_Khieuq 0x0ebb
+#define XK_Hangul_Tieut 0x0ebc
+#define XK_Hangul_Phieuf 0x0ebd
+#define XK_Hangul_Hieuh 0x0ebe
+
+/* Hangul Vowel Characters */
+#define XK_Hangul_A 0x0ebf
+#define XK_Hangul_AE 0x0ec0
+#define XK_Hangul_YA 0x0ec1
+#define XK_Hangul_YAE 0x0ec2
+#define XK_Hangul_EO 0x0ec3
+#define XK_Hangul_E 0x0ec4
+#define XK_Hangul_YEO 0x0ec5
+#define XK_Hangul_YE 0x0ec6
+#define XK_Hangul_O 0x0ec7
+#define XK_Hangul_WA 0x0ec8
+#define XK_Hangul_WAE 0x0ec9
+#define XK_Hangul_OE 0x0eca
+#define XK_Hangul_YO 0x0ecb
+#define XK_Hangul_U 0x0ecc
+#define XK_Hangul_WEO 0x0ecd
+#define XK_Hangul_WE 0x0ece
+#define XK_Hangul_WI 0x0ecf
+#define XK_Hangul_YU 0x0ed0
+#define XK_Hangul_EU 0x0ed1
+#define XK_Hangul_YI 0x0ed2
+#define XK_Hangul_I 0x0ed3
+
+/* Hangul syllable-final (JongSeong) Characters */
+#define XK_Hangul_J_Kiyeog 0x0ed4
+#define XK_Hangul_J_SsangKiyeog 0x0ed5
+#define XK_Hangul_J_KiyeogSios 0x0ed6
+#define XK_Hangul_J_Nieun 0x0ed7
+#define XK_Hangul_J_NieunJieuj 0x0ed8
+#define XK_Hangul_J_NieunHieuh 0x0ed9
+#define XK_Hangul_J_Dikeud 0x0eda
+#define XK_Hangul_J_Rieul 0x0edb
+#define XK_Hangul_J_RieulKiyeog 0x0edc
+#define XK_Hangul_J_RieulMieum 0x0edd
+#define XK_Hangul_J_RieulPieub 0x0ede
+#define XK_Hangul_J_RieulSios 0x0edf
+#define XK_Hangul_J_RieulTieut 0x0ee0
+#define XK_Hangul_J_RieulPhieuf 0x0ee1
+#define XK_Hangul_J_RieulHieuh 0x0ee2
+#define XK_Hangul_J_Mieum 0x0ee3
+#define XK_Hangul_J_Pieub 0x0ee4
+#define XK_Hangul_J_PieubSios 0x0ee5
+#define XK_Hangul_J_Sios 0x0ee6
+#define XK_Hangul_J_SsangSios 0x0ee7
+#define XK_Hangul_J_Ieung 0x0ee8
+#define XK_Hangul_J_Jieuj 0x0ee9
+#define XK_Hangul_J_Cieuc 0x0eea
+#define XK_Hangul_J_Khieuq 0x0eeb
+#define XK_Hangul_J_Tieut 0x0eec
+#define XK_Hangul_J_Phieuf 0x0eed
+#define XK_Hangul_J_Hieuh 0x0eee
+
+/* Ancient Hangul Consonant Characters */
+#define XK_Hangul_RieulYeorinHieuh 0x0eef
+#define XK_Hangul_SunkyeongeumMieum 0x0ef0
+#define XK_Hangul_SunkyeongeumPieub 0x0ef1
+#define XK_Hangul_PanSios 0x0ef2
+#define XK_Hangul_KkogjiDalrinIeung 0x0ef3
+#define XK_Hangul_SunkyeongeumPhieuf 0x0ef4
+#define XK_Hangul_YeorinHieuh 0x0ef5
+
+/* Ancient Hangul Vowel Characters */
+#define XK_Hangul_AraeA 0x0ef6
+#define XK_Hangul_AraeAE 0x0ef7
+
+/* Ancient Hangul syllable-final (JongSeong) Characters */
+#define XK_Hangul_J_PanSios 0x0ef8
+#define XK_Hangul_J_KkogjiDalrinIeung 0x0ef9
+#define XK_Hangul_J_YeorinHieuh 0x0efa
+
+/* Korean currency symbol */
+#define XK_Korean_Won 0x0eff /*(U+20A9 WON SIGN)*/
+
+/* XK_KOREAN */
+
+/*
+ * Armenian
+ */
+
+
+#define XK_Armenian_ligature_ew 0x1000587 /* U+0587 ARMENIAN SMALL LIGATURE ECH YIWN */
+#define XK_Armenian_full_stop 0x1000589 /* U+0589 ARMENIAN FULL STOP */
+#define XK_Armenian_verjaket 0x1000589 /* U+0589 ARMENIAN FULL STOP */
+#define XK_Armenian_separation_mark 0x100055d /* U+055D ARMENIAN COMMA */
+#define XK_Armenian_but 0x100055d /* U+055D ARMENIAN COMMA */
+#define XK_Armenian_hyphen 0x100058a /* U+058A ARMENIAN HYPHEN */
+#define XK_Armenian_yentamna 0x100058a /* U+058A ARMENIAN HYPHEN */
+#define XK_Armenian_exclam 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */
+#define XK_Armenian_amanak 0x100055c /* U+055C ARMENIAN EXCLAMATION MARK */
+#define XK_Armenian_accent 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */
+#define XK_Armenian_shesht 0x100055b /* U+055B ARMENIAN EMPHASIS MARK */
+#define XK_Armenian_question 0x100055e /* U+055E ARMENIAN QUESTION MARK */
+#define XK_Armenian_paruyk 0x100055e /* U+055E ARMENIAN QUESTION MARK */
+#define XK_Armenian_AYB 0x1000531 /* U+0531 ARMENIAN CAPITAL LETTER AYB */
+#define XK_Armenian_ayb 0x1000561 /* U+0561 ARMENIAN SMALL LETTER AYB */
+#define XK_Armenian_BEN 0x1000532 /* U+0532 ARMENIAN CAPITAL LETTER BEN */
+#define XK_Armenian_ben 0x1000562 /* U+0562 ARMENIAN SMALL LETTER BEN */
+#define XK_Armenian_GIM 0x1000533 /* U+0533 ARMENIAN CAPITAL LETTER GIM */
+#define XK_Armenian_gim 0x1000563 /* U+0563 ARMENIAN SMALL LETTER GIM */
+#define XK_Armenian_DA 0x1000534 /* U+0534 ARMENIAN CAPITAL LETTER DA */
+#define XK_Armenian_da 0x1000564 /* U+0564 ARMENIAN SMALL LETTER DA */
+#define XK_Armenian_YECH 0x1000535 /* U+0535 ARMENIAN CAPITAL LETTER ECH */
+#define XK_Armenian_yech 0x1000565 /* U+0565 ARMENIAN SMALL LETTER ECH */
+#define XK_Armenian_ZA 0x1000536 /* U+0536 ARMENIAN CAPITAL LETTER ZA */
+#define XK_Armenian_za 0x1000566 /* U+0566 ARMENIAN SMALL LETTER ZA */
+#define XK_Armenian_E 0x1000537 /* U+0537 ARMENIAN CAPITAL LETTER EH */
+#define XK_Armenian_e 0x1000567 /* U+0567 ARMENIAN SMALL LETTER EH */
+#define XK_Armenian_AT 0x1000538 /* U+0538 ARMENIAN CAPITAL LETTER ET */
+#define XK_Armenian_at 0x1000568 /* U+0568 ARMENIAN SMALL LETTER ET */
+#define XK_Armenian_TO 0x1000539 /* U+0539 ARMENIAN CAPITAL LETTER TO */
+#define XK_Armenian_to 0x1000569 /* U+0569 ARMENIAN SMALL LETTER TO */
+#define XK_Armenian_ZHE 0x100053a /* U+053A ARMENIAN CAPITAL LETTER ZHE */
+#define XK_Armenian_zhe 0x100056a /* U+056A ARMENIAN SMALL LETTER ZHE */
+#define XK_Armenian_INI 0x100053b /* U+053B ARMENIAN CAPITAL LETTER INI */
+#define XK_Armenian_ini 0x100056b /* U+056B ARMENIAN SMALL LETTER INI */
+#define XK_Armenian_LYUN 0x100053c /* U+053C ARMENIAN CAPITAL LETTER LIWN */
+#define XK_Armenian_lyun 0x100056c /* U+056C ARMENIAN SMALL LETTER LIWN */
+#define XK_Armenian_KHE 0x100053d /* U+053D ARMENIAN CAPITAL LETTER XEH */
+#define XK_Armenian_khe 0x100056d /* U+056D ARMENIAN SMALL LETTER XEH */
+#define XK_Armenian_TSA 0x100053e /* U+053E ARMENIAN CAPITAL LETTER CA */
+#define XK_Armenian_tsa 0x100056e /* U+056E ARMENIAN SMALL LETTER CA */
+#define XK_Armenian_KEN 0x100053f /* U+053F ARMENIAN CAPITAL LETTER KEN */
+#define XK_Armenian_ken 0x100056f /* U+056F ARMENIAN SMALL LETTER KEN */
+#define XK_Armenian_HO 0x1000540 /* U+0540 ARMENIAN CAPITAL LETTER HO */
+#define XK_Armenian_ho 0x1000570 /* U+0570 ARMENIAN SMALL LETTER HO */
+#define XK_Armenian_DZA 0x1000541 /* U+0541 ARMENIAN CAPITAL LETTER JA */
+#define XK_Armenian_dza 0x1000571 /* U+0571 ARMENIAN SMALL LETTER JA */
+#define XK_Armenian_GHAT 0x1000542 /* U+0542 ARMENIAN CAPITAL LETTER GHAD */
+#define XK_Armenian_ghat 0x1000572 /* U+0572 ARMENIAN SMALL LETTER GHAD */
+#define XK_Armenian_TCHE 0x1000543 /* U+0543 ARMENIAN CAPITAL LETTER CHEH */
+#define XK_Armenian_tche 0x1000573 /* U+0573 ARMENIAN SMALL LETTER CHEH */
+#define XK_Armenian_MEN 0x1000544 /* U+0544 ARMENIAN CAPITAL LETTER MEN */
+#define XK_Armenian_men 0x1000574 /* U+0574 ARMENIAN SMALL LETTER MEN */
+#define XK_Armenian_HI 0x1000545 /* U+0545 ARMENIAN CAPITAL LETTER YI */
+#define XK_Armenian_hi 0x1000575 /* U+0575 ARMENIAN SMALL LETTER YI */
+#define XK_Armenian_NU 0x1000546 /* U+0546 ARMENIAN CAPITAL LETTER NOW */
+#define XK_Armenian_nu 0x1000576 /* U+0576 ARMENIAN SMALL LETTER NOW */
+#define XK_Armenian_SHA 0x1000547 /* U+0547 ARMENIAN CAPITAL LETTER SHA */
+#define XK_Armenian_sha 0x1000577 /* U+0577 ARMENIAN SMALL LETTER SHA */
+#define XK_Armenian_VO 0x1000548 /* U+0548 ARMENIAN CAPITAL LETTER VO */
+#define XK_Armenian_vo 0x1000578 /* U+0578 ARMENIAN SMALL LETTER VO */
+#define XK_Armenian_CHA 0x1000549 /* U+0549 ARMENIAN CAPITAL LETTER CHA */
+#define XK_Armenian_cha 0x1000579 /* U+0579 ARMENIAN SMALL LETTER CHA */
+#define XK_Armenian_PE 0x100054a /* U+054A ARMENIAN CAPITAL LETTER PEH */
+#define XK_Armenian_pe 0x100057a /* U+057A ARMENIAN SMALL LETTER PEH */
+#define XK_Armenian_JE 0x100054b /* U+054B ARMENIAN CAPITAL LETTER JHEH */
+#define XK_Armenian_je 0x100057b /* U+057B ARMENIAN SMALL LETTER JHEH */
+#define XK_Armenian_RA 0x100054c /* U+054C ARMENIAN CAPITAL LETTER RA */
+#define XK_Armenian_ra 0x100057c /* U+057C ARMENIAN SMALL LETTER RA */
+#define XK_Armenian_SE 0x100054d /* U+054D ARMENIAN CAPITAL LETTER SEH */
+#define XK_Armenian_se 0x100057d /* U+057D ARMENIAN SMALL LETTER SEH */
+#define XK_Armenian_VEV 0x100054e /* U+054E ARMENIAN CAPITAL LETTER VEW */
+#define XK_Armenian_vev 0x100057e /* U+057E ARMENIAN SMALL LETTER VEW */
+#define XK_Armenian_TYUN 0x100054f /* U+054F ARMENIAN CAPITAL LETTER TIWN */
+#define XK_Armenian_tyun 0x100057f /* U+057F ARMENIAN SMALL LETTER TIWN */
+#define XK_Armenian_RE 0x1000550 /* U+0550 ARMENIAN CAPITAL LETTER REH */
+#define XK_Armenian_re 0x1000580 /* U+0580 ARMENIAN SMALL LETTER REH */
+#define XK_Armenian_TSO 0x1000551 /* U+0551 ARMENIAN CAPITAL LETTER CO */
+#define XK_Armenian_tso 0x1000581 /* U+0581 ARMENIAN SMALL LETTER CO */
+#define XK_Armenian_VYUN 0x1000552 /* U+0552 ARMENIAN CAPITAL LETTER YIWN */
+#define XK_Armenian_vyun 0x1000582 /* U+0582 ARMENIAN SMALL LETTER YIWN */
+#define XK_Armenian_PYUR 0x1000553 /* U+0553 ARMENIAN CAPITAL LETTER PIWR */
+#define XK_Armenian_pyur 0x1000583 /* U+0583 ARMENIAN SMALL LETTER PIWR */
+#define XK_Armenian_KE 0x1000554 /* U+0554 ARMENIAN CAPITAL LETTER KEH */
+#define XK_Armenian_ke 0x1000584 /* U+0584 ARMENIAN SMALL LETTER KEH */
+#define XK_Armenian_O 0x1000555 /* U+0555 ARMENIAN CAPITAL LETTER OH */
+#define XK_Armenian_o 0x1000585 /* U+0585 ARMENIAN SMALL LETTER OH */
+#define XK_Armenian_FE 0x1000556 /* U+0556 ARMENIAN CAPITAL LETTER FEH */
+#define XK_Armenian_fe 0x1000586 /* U+0586 ARMENIAN SMALL LETTER FEH */
+#define XK_Armenian_apostrophe 0x100055a /* U+055A ARMENIAN APOSTROPHE */
+/* XK_ARMENIAN */
+
+/*
+ * Georgian
+ */
+
+
+#define XK_Georgian_an 0x10010d0 /* U+10D0 GEORGIAN LETTER AN */
+#define XK_Georgian_ban 0x10010d1 /* U+10D1 GEORGIAN LETTER BAN */
+#define XK_Georgian_gan 0x10010d2 /* U+10D2 GEORGIAN LETTER GAN */
+#define XK_Georgian_don 0x10010d3 /* U+10D3 GEORGIAN LETTER DON */
+#define XK_Georgian_en 0x10010d4 /* U+10D4 GEORGIAN LETTER EN */
+#define XK_Georgian_vin 0x10010d5 /* U+10D5 GEORGIAN LETTER VIN */
+#define XK_Georgian_zen 0x10010d6 /* U+10D6 GEORGIAN LETTER ZEN */
+#define XK_Georgian_tan 0x10010d7 /* U+10D7 GEORGIAN LETTER TAN */
+#define XK_Georgian_in 0x10010d8 /* U+10D8 GEORGIAN LETTER IN */
+#define XK_Georgian_kan 0x10010d9 /* U+10D9 GEORGIAN LETTER KAN */
+#define XK_Georgian_las 0x10010da /* U+10DA GEORGIAN LETTER LAS */
+#define XK_Georgian_man 0x10010db /* U+10DB GEORGIAN LETTER MAN */
+#define XK_Georgian_nar 0x10010dc /* U+10DC GEORGIAN LETTER NAR */
+#define XK_Georgian_on 0x10010dd /* U+10DD GEORGIAN LETTER ON */
+#define XK_Georgian_par 0x10010de /* U+10DE GEORGIAN LETTER PAR */
+#define XK_Georgian_zhar 0x10010df /* U+10DF GEORGIAN LETTER ZHAR */
+#define XK_Georgian_rae 0x10010e0 /* U+10E0 GEORGIAN LETTER RAE */
+#define XK_Georgian_san 0x10010e1 /* U+10E1 GEORGIAN LETTER SAN */
+#define XK_Georgian_tar 0x10010e2 /* U+10E2 GEORGIAN LETTER TAR */
+#define XK_Georgian_un 0x10010e3 /* U+10E3 GEORGIAN LETTER UN */
+#define XK_Georgian_phar 0x10010e4 /* U+10E4 GEORGIAN LETTER PHAR */
+#define XK_Georgian_khar 0x10010e5 /* U+10E5 GEORGIAN LETTER KHAR */
+#define XK_Georgian_ghan 0x10010e6 /* U+10E6 GEORGIAN LETTER GHAN */
+#define XK_Georgian_qar 0x10010e7 /* U+10E7 GEORGIAN LETTER QAR */
+#define XK_Georgian_shin 0x10010e8 /* U+10E8 GEORGIAN LETTER SHIN */
+#define XK_Georgian_chin 0x10010e9 /* U+10E9 GEORGIAN LETTER CHIN */
+#define XK_Georgian_can 0x10010ea /* U+10EA GEORGIAN LETTER CAN */
+#define XK_Georgian_jil 0x10010eb /* U+10EB GEORGIAN LETTER JIL */
+#define XK_Georgian_cil 0x10010ec /* U+10EC GEORGIAN LETTER CIL */
+#define XK_Georgian_char 0x10010ed /* U+10ED GEORGIAN LETTER CHAR */
+#define XK_Georgian_xan 0x10010ee /* U+10EE GEORGIAN LETTER XAN */
+#define XK_Georgian_jhan 0x10010ef /* U+10EF GEORGIAN LETTER JHAN */
+#define XK_Georgian_hae 0x10010f0 /* U+10F0 GEORGIAN LETTER HAE */
+#define XK_Georgian_he 0x10010f1 /* U+10F1 GEORGIAN LETTER HE */
+#define XK_Georgian_hie 0x10010f2 /* U+10F2 GEORGIAN LETTER HIE */
+#define XK_Georgian_we 0x10010f3 /* U+10F3 GEORGIAN LETTER WE */
+#define XK_Georgian_har 0x10010f4 /* U+10F4 GEORGIAN LETTER HAR */
+#define XK_Georgian_hoe 0x10010f5 /* U+10F5 GEORGIAN LETTER HOE */
+#define XK_Georgian_fi 0x10010f6 /* U+10F6 GEORGIAN LETTER FI */
+/* XK_GEORGIAN */
+
+/*
+ * Azeri (and other Turkic or Caucasian languages)
+ */
+
+
+/* latin */
+#define XK_Xabovedot 0x1001e8a /* U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE */
+#define XK_Ibreve 0x100012c /* U+012C LATIN CAPITAL LETTER I WITH BREVE */
+#define XK_Zstroke 0x10001b5 /* U+01B5 LATIN CAPITAL LETTER Z WITH STROKE */
+#define XK_Gcaron 0x10001e6 /* U+01E6 LATIN CAPITAL LETTER G WITH CARON */
+#define XK_Ocaron 0x10001d1 /* U+01D2 LATIN CAPITAL LETTER O WITH CARON */
+#define XK_Obarred 0x100019f /* U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE */
+#define XK_xabovedot 0x1001e8b /* U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE */
+#define XK_ibreve 0x100012d /* U+012D LATIN SMALL LETTER I WITH BREVE */
+#define XK_zstroke 0x10001b6 /* U+01B6 LATIN SMALL LETTER Z WITH STROKE */
+#define XK_gcaron 0x10001e7 /* U+01E7 LATIN SMALL LETTER G WITH CARON */
+#define XK_ocaron 0x10001d2 /* U+01D2 LATIN SMALL LETTER O WITH CARON */
+#define XK_obarred 0x1000275 /* U+0275 LATIN SMALL LETTER BARRED O */
+#define XK_SCHWA 0x100018f /* U+018F LATIN CAPITAL LETTER SCHWA */
+#define XK_schwa 0x1000259 /* U+0259 LATIN SMALL LETTER SCHWA */
+/* those are not really Caucasus */
+/* For Inupiak */
+#define XK_Lbelowdot 0x1001e36 /* U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW */
+#define XK_lbelowdot 0x1001e37 /* U+1E37 LATIN SMALL LETTER L WITH DOT BELOW */
+/* XK_CAUCASUS */
+
+/*
+ * Vietnamese
+ */
+
+
+#define XK_Abelowdot 0x1001ea0 /* U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW */
+#define XK_abelowdot 0x1001ea1 /* U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW */
+#define XK_Ahook 0x1001ea2 /* U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE */
+#define XK_ahook 0x1001ea3 /* U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE */
+#define XK_Acircumflexacute 0x1001ea4 /* U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE */
+#define XK_acircumflexacute 0x1001ea5 /* U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE */
+#define XK_Acircumflexgrave 0x1001ea6 /* U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE */
+#define XK_acircumflexgrave 0x1001ea7 /* U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE */
+#define XK_Acircumflexhook 0x1001ea8 /* U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_acircumflexhook 0x1001ea9 /* U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_Acircumflextilde 0x1001eaa /* U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE */
+#define XK_acircumflextilde 0x1001eab /* U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE */
+#define XK_Acircumflexbelowdot 0x1001eac /* U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_acircumflexbelowdot 0x1001ead /* U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_Abreveacute 0x1001eae /* U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE */
+#define XK_abreveacute 0x1001eaf /* U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE */
+#define XK_Abrevegrave 0x1001eb0 /* U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE */
+#define XK_abrevegrave 0x1001eb1 /* U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE */
+#define XK_Abrevehook 0x1001eb2 /* U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE */
+#define XK_abrevehook 0x1001eb3 /* U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE */
+#define XK_Abrevetilde 0x1001eb4 /* U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE */
+#define XK_abrevetilde 0x1001eb5 /* U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE */
+#define XK_Abrevebelowdot 0x1001eb6 /* U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW */
+#define XK_abrevebelowdot 0x1001eb7 /* U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW */
+#define XK_Ebelowdot 0x1001eb8 /* U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW */
+#define XK_ebelowdot 0x1001eb9 /* U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW */
+#define XK_Ehook 0x1001eba /* U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE */
+#define XK_ehook 0x1001ebb /* U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE */
+#define XK_Etilde 0x1001ebc /* U+1EBC LATIN CAPITAL LETTER E WITH TILDE */
+#define XK_etilde 0x1001ebd /* U+1EBD LATIN SMALL LETTER E WITH TILDE */
+#define XK_Ecircumflexacute 0x1001ebe /* U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE */
+#define XK_ecircumflexacute 0x1001ebf /* U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE */
+#define XK_Ecircumflexgrave 0x1001ec0 /* U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE */
+#define XK_ecircumflexgrave 0x1001ec1 /* U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE */
+#define XK_Ecircumflexhook 0x1001ec2 /* U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_ecircumflexhook 0x1001ec3 /* U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_Ecircumflextilde 0x1001ec4 /* U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE */
+#define XK_ecircumflextilde 0x1001ec5 /* U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE */
+#define XK_Ecircumflexbelowdot 0x1001ec6 /* U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_ecircumflexbelowdot 0x1001ec7 /* U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_Ihook 0x1001ec8 /* U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE */
+#define XK_ihook 0x1001ec9 /* U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE */
+#define XK_Ibelowdot 0x1001eca /* U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW */
+#define XK_ibelowdot 0x1001ecb /* U+1ECB LATIN SMALL LETTER I WITH DOT BELOW */
+#define XK_Obelowdot 0x1001ecc /* U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW */
+#define XK_obelowdot 0x1001ecd /* U+1ECD LATIN SMALL LETTER O WITH DOT BELOW */
+#define XK_Ohook 0x1001ece /* U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE */
+#define XK_ohook 0x1001ecf /* U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE */
+#define XK_Ocircumflexacute 0x1001ed0 /* U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE */
+#define XK_ocircumflexacute 0x1001ed1 /* U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE */
+#define XK_Ocircumflexgrave 0x1001ed2 /* U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE */
+#define XK_ocircumflexgrave 0x1001ed3 /* U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE */
+#define XK_Ocircumflexhook 0x1001ed4 /* U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_ocircumflexhook 0x1001ed5 /* U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE */
+#define XK_Ocircumflextilde 0x1001ed6 /* U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE */
+#define XK_ocircumflextilde 0x1001ed7 /* U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE */
+#define XK_Ocircumflexbelowdot 0x1001ed8 /* U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_ocircumflexbelowdot 0x1001ed9 /* U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW */
+#define XK_Ohornacute 0x1001eda /* U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE */
+#define XK_ohornacute 0x1001edb /* U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE */
+#define XK_Ohorngrave 0x1001edc /* U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE */
+#define XK_ohorngrave 0x1001edd /* U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE */
+#define XK_Ohornhook 0x1001ede /* U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE */
+#define XK_ohornhook 0x1001edf /* U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE */
+#define XK_Ohorntilde 0x1001ee0 /* U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE */
+#define XK_ohorntilde 0x1001ee1 /* U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE */
+#define XK_Ohornbelowdot 0x1001ee2 /* U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW */
+#define XK_ohornbelowdot 0x1001ee3 /* U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW */
+#define XK_Ubelowdot 0x1001ee4 /* U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW */
+#define XK_ubelowdot 0x1001ee5 /* U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW */
+#define XK_Uhook 0x1001ee6 /* U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE */
+#define XK_uhook 0x1001ee7 /* U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE */
+#define XK_Uhornacute 0x1001ee8 /* U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE */
+#define XK_uhornacute 0x1001ee9 /* U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE */
+#define XK_Uhorngrave 0x1001eea /* U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE */
+#define XK_uhorngrave 0x1001eeb /* U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE */
+#define XK_Uhornhook 0x1001eec /* U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE */
+#define XK_uhornhook 0x1001eed /* U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE */
+#define XK_Uhorntilde 0x1001eee /* U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE */
+#define XK_uhorntilde 0x1001eef /* U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE */
+#define XK_Uhornbelowdot 0x1001ef0 /* U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW */
+#define XK_uhornbelowdot 0x1001ef1 /* U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW */
+#define XK_Ybelowdot 0x1001ef4 /* U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW */
+#define XK_ybelowdot 0x1001ef5 /* U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW */
+#define XK_Yhook 0x1001ef6 /* U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE */
+#define XK_yhook 0x1001ef7 /* U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE */
+#define XK_Ytilde 0x1001ef8 /* U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE */
+#define XK_ytilde 0x1001ef9 /* U+1EF9 LATIN SMALL LETTER Y WITH TILDE */
+#define XK_Ohorn 0x10001a0 /* U+01A0 LATIN CAPITAL LETTER O WITH HORN */
+#define XK_ohorn 0x10001a1 /* U+01A1 LATIN SMALL LETTER O WITH HORN */
+#define XK_Uhorn 0x10001af /* U+01AF LATIN CAPITAL LETTER U WITH HORN */
+#define XK_uhorn 0x10001b0 /* U+01B0 LATIN SMALL LETTER U WITH HORN */
+
+/* XK_VIETNAMESE */
+
+
+#define XK_EcuSign 0x10020a0 /* U+20A0 EURO-CURRENCY SIGN */
+#define XK_ColonSign 0x10020a1 /* U+20A1 COLON SIGN */
+#define XK_CruzeiroSign 0x10020a2 /* U+20A2 CRUZEIRO SIGN */
+#define XK_FFrancSign 0x10020a3 /* U+20A3 FRENCH FRANC SIGN */
+#define XK_LiraSign 0x10020a4 /* U+20A4 LIRA SIGN */
+#define XK_MillSign 0x10020a5 /* U+20A5 MILL SIGN */
+#define XK_NairaSign 0x10020a6 /* U+20A6 NAIRA SIGN */
+#define XK_PesetaSign 0x10020a7 /* U+20A7 PESETA SIGN */
+#define XK_RupeeSign 0x10020a8 /* U+20A8 RUPEE SIGN */
+#define XK_WonSign 0x10020a9 /* U+20A9 WON SIGN */
+#define XK_NewSheqelSign 0x10020aa /* U+20AA NEW SHEQEL SIGN */
+#define XK_DongSign 0x10020ab /* U+20AB DONG SIGN */
+#define XK_EuroSign 0x20ac /* U+20AC EURO SIGN */
+/* XK_CURRENCY */
+
+
+/* one, two and three are defined above. */
+#define XK_zerosuperior 0x1002070 /* U+2070 SUPERSCRIPT ZERO */
+#define XK_foursuperior 0x1002074 /* U+2074 SUPERSCRIPT FOUR */
+#define XK_fivesuperior 0x1002075 /* U+2075 SUPERSCRIPT FIVE */
+#define XK_sixsuperior 0x1002076 /* U+2076 SUPERSCRIPT SIX */
+#define XK_sevensuperior 0x1002077 /* U+2077 SUPERSCRIPT SEVEN */
+#define XK_eightsuperior 0x1002078 /* U+2078 SUPERSCRIPT EIGHT */
+#define XK_ninesuperior 0x1002079 /* U+2079 SUPERSCRIPT NINE */
+#define XK_zerosubscript 0x1002080 /* U+2080 SUBSCRIPT ZERO */
+#define XK_onesubscript 0x1002081 /* U+2081 SUBSCRIPT ONE */
+#define XK_twosubscript 0x1002082 /* U+2082 SUBSCRIPT TWO */
+#define XK_threesubscript 0x1002083 /* U+2083 SUBSCRIPT THREE */
+#define XK_foursubscript 0x1002084 /* U+2084 SUBSCRIPT FOUR */
+#define XK_fivesubscript 0x1002085 /* U+2085 SUBSCRIPT FIVE */
+#define XK_sixsubscript 0x1002086 /* U+2086 SUBSCRIPT SIX */
+#define XK_sevensubscript 0x1002087 /* U+2087 SUBSCRIPT SEVEN */
+#define XK_eightsubscript 0x1002088 /* U+2088 SUBSCRIPT EIGHT */
+#define XK_ninesubscript 0x1002089 /* U+2089 SUBSCRIPT NINE */
+#define XK_partdifferential 0x1002202 /* U+2202 PARTIAL DIFFERENTIAL */
+#define XK_emptyset 0x1002205 /* U+2205 NULL SET */
+#define XK_elementof 0x1002208 /* U+2208 ELEMENT OF */
+#define XK_notelementof 0x1002209 /* U+2209 NOT AN ELEMENT OF */
+#define XK_containsas 0x100220B /* U+220B CONTAINS AS MEMBER */
+#define XK_squareroot 0x100221A /* U+221A SQUARE ROOT */
+#define XK_cuberoot 0x100221B /* U+221B CUBE ROOT */
+#define XK_fourthroot 0x100221C /* U+221C FOURTH ROOT */
+#define XK_dintegral 0x100222C /* U+222C DOUBLE INTEGRAL */
+#define XK_tintegral 0x100222D /* U+222D TRIPLE INTEGRAL */
+#define XK_because 0x1002235 /* U+2235 BECAUSE */
+#define XK_approxeq 0x1002248 /* U+2245 ALMOST EQUAL TO */
+#define XK_notapproxeq 0x1002247 /* U+2247 NOT ALMOST EQUAL TO */
+#define XK_notidentical 0x1002262 /* U+2262 NOT IDENTICAL TO */
+#define XK_stricteq 0x1002263 /* U+2263 STRICTLY EQUIVALENT TO */
+/* XK_MATHEMATICAL */
+
+
+#define XK_braille_dot_1 0xfff1
+#define XK_braille_dot_2 0xfff2
+#define XK_braille_dot_3 0xfff3
+#define XK_braille_dot_4 0xfff4
+#define XK_braille_dot_5 0xfff5
+#define XK_braille_dot_6 0xfff6
+#define XK_braille_dot_7 0xfff7
+#define XK_braille_dot_8 0xfff8
+#define XK_braille_dot_9 0xfff9
+#define XK_braille_dot_10 0xfffa
+#define XK_braille_blank 0x1002800 /* U+2800 BRAILLE PATTERN BLANK */
+#define XK_braille_dots_1 0x1002801 /* U+2801 BRAILLE PATTERN DOTS-1 */
+#define XK_braille_dots_2 0x1002802 /* U+2802 BRAILLE PATTERN DOTS-2 */
+#define XK_braille_dots_12 0x1002803 /* U+2803 BRAILLE PATTERN DOTS-12 */
+#define XK_braille_dots_3 0x1002804 /* U+2804 BRAILLE PATTERN DOTS-3 */
+#define XK_braille_dots_13 0x1002805 /* U+2805 BRAILLE PATTERN DOTS-13 */
+#define XK_braille_dots_23 0x1002806 /* U+2806 BRAILLE PATTERN DOTS-23 */
+#define XK_braille_dots_123 0x1002807 /* U+2807 BRAILLE PATTERN DOTS-123 */
+#define XK_braille_dots_4 0x1002808 /* U+2808 BRAILLE PATTERN DOTS-4 */
+#define XK_braille_dots_14 0x1002809 /* U+2809 BRAILLE PATTERN DOTS-14 */
+#define XK_braille_dots_24 0x100280a /* U+280a BRAILLE PATTERN DOTS-24 */
+#define XK_braille_dots_124 0x100280b /* U+280b BRAILLE PATTERN DOTS-124 */
+#define XK_braille_dots_34 0x100280c /* U+280c BRAILLE PATTERN DOTS-34 */
+#define XK_braille_dots_134 0x100280d /* U+280d BRAILLE PATTERN DOTS-134 */
+#define XK_braille_dots_234 0x100280e /* U+280e BRAILLE PATTERN DOTS-234 */
+#define XK_braille_dots_1234 0x100280f /* U+280f BRAILLE PATTERN DOTS-1234 */
+#define XK_braille_dots_5 0x1002810 /* U+2810 BRAILLE PATTERN DOTS-5 */
+#define XK_braille_dots_15 0x1002811 /* U+2811 BRAILLE PATTERN DOTS-15 */
+#define XK_braille_dots_25 0x1002812 /* U+2812 BRAILLE PATTERN DOTS-25 */
+#define XK_braille_dots_125 0x1002813 /* U+2813 BRAILLE PATTERN DOTS-125 */
+#define XK_braille_dots_35 0x1002814 /* U+2814 BRAILLE PATTERN DOTS-35 */
+#define XK_braille_dots_135 0x1002815 /* U+2815 BRAILLE PATTERN DOTS-135 */
+#define XK_braille_dots_235 0x1002816 /* U+2816 BRAILLE PATTERN DOTS-235 */
+#define XK_braille_dots_1235 0x1002817 /* U+2817 BRAILLE PATTERN DOTS-1235 */
+#define XK_braille_dots_45 0x1002818 /* U+2818 BRAILLE PATTERN DOTS-45 */
+#define XK_braille_dots_145 0x1002819 /* U+2819 BRAILLE PATTERN DOTS-145 */
+#define XK_braille_dots_245 0x100281a /* U+281a BRAILLE PATTERN DOTS-245 */
+#define XK_braille_dots_1245 0x100281b /* U+281b BRAILLE PATTERN DOTS-1245 */
+#define XK_braille_dots_345 0x100281c /* U+281c BRAILLE PATTERN DOTS-345 */
+#define XK_braille_dots_1345 0x100281d /* U+281d BRAILLE PATTERN DOTS-1345 */
+#define XK_braille_dots_2345 0x100281e /* U+281e BRAILLE PATTERN DOTS-2345 */
+#define XK_braille_dots_12345 0x100281f /* U+281f BRAILLE PATTERN DOTS-12345 */
+#define XK_braille_dots_6 0x1002820 /* U+2820 BRAILLE PATTERN DOTS-6 */
+#define XK_braille_dots_16 0x1002821 /* U+2821 BRAILLE PATTERN DOTS-16 */
+#define XK_braille_dots_26 0x1002822 /* U+2822 BRAILLE PATTERN DOTS-26 */
+#define XK_braille_dots_126 0x1002823 /* U+2823 BRAILLE PATTERN DOTS-126 */
+#define XK_braille_dots_36 0x1002824 /* U+2824 BRAILLE PATTERN DOTS-36 */
+#define XK_braille_dots_136 0x1002825 /* U+2825 BRAILLE PATTERN DOTS-136 */
+#define XK_braille_dots_236 0x1002826 /* U+2826 BRAILLE PATTERN DOTS-236 */
+#define XK_braille_dots_1236 0x1002827 /* U+2827 BRAILLE PATTERN DOTS-1236 */
+#define XK_braille_dots_46 0x1002828 /* U+2828 BRAILLE PATTERN DOTS-46 */
+#define XK_braille_dots_146 0x1002829 /* U+2829 BRAILLE PATTERN DOTS-146 */
+#define XK_braille_dots_246 0x100282a /* U+282a BRAILLE PATTERN DOTS-246 */
+#define XK_braille_dots_1246 0x100282b /* U+282b BRAILLE PATTERN DOTS-1246 */
+#define XK_braille_dots_346 0x100282c /* U+282c BRAILLE PATTERN DOTS-346 */
+#define XK_braille_dots_1346 0x100282d /* U+282d BRAILLE PATTERN DOTS-1346 */
+#define XK_braille_dots_2346 0x100282e /* U+282e BRAILLE PATTERN DOTS-2346 */
+#define XK_braille_dots_12346 0x100282f /* U+282f BRAILLE PATTERN DOTS-12346 */
+#define XK_braille_dots_56 0x1002830 /* U+2830 BRAILLE PATTERN DOTS-56 */
+#define XK_braille_dots_156 0x1002831 /* U+2831 BRAILLE PATTERN DOTS-156 */
+#define XK_braille_dots_256 0x1002832 /* U+2832 BRAILLE PATTERN DOTS-256 */
+#define XK_braille_dots_1256 0x1002833 /* U+2833 BRAILLE PATTERN DOTS-1256 */
+#define XK_braille_dots_356 0x1002834 /* U+2834 BRAILLE PATTERN DOTS-356 */
+#define XK_braille_dots_1356 0x1002835 /* U+2835 BRAILLE PATTERN DOTS-1356 */
+#define XK_braille_dots_2356 0x1002836 /* U+2836 BRAILLE PATTERN DOTS-2356 */
+#define XK_braille_dots_12356 0x1002837 /* U+2837 BRAILLE PATTERN DOTS-12356 */
+#define XK_braille_dots_456 0x1002838 /* U+2838 BRAILLE PATTERN DOTS-456 */
+#define XK_braille_dots_1456 0x1002839 /* U+2839 BRAILLE PATTERN DOTS-1456 */
+#define XK_braille_dots_2456 0x100283a /* U+283a BRAILLE PATTERN DOTS-2456 */
+#define XK_braille_dots_12456 0x100283b /* U+283b BRAILLE PATTERN DOTS-12456 */
+#define XK_braille_dots_3456 0x100283c /* U+283c BRAILLE PATTERN DOTS-3456 */
+#define XK_braille_dots_13456 0x100283d /* U+283d BRAILLE PATTERN DOTS-13456 */
+#define XK_braille_dots_23456 0x100283e /* U+283e BRAILLE PATTERN DOTS-23456 */
+#define XK_braille_dots_123456 0x100283f /* U+283f BRAILLE PATTERN DOTS-123456 */
+#define XK_braille_dots_7 0x1002840 /* U+2840 BRAILLE PATTERN DOTS-7 */
+#define XK_braille_dots_17 0x1002841 /* U+2841 BRAILLE PATTERN DOTS-17 */
+#define XK_braille_dots_27 0x1002842 /* U+2842 BRAILLE PATTERN DOTS-27 */
+#define XK_braille_dots_127 0x1002843 /* U+2843 BRAILLE PATTERN DOTS-127 */
+#define XK_braille_dots_37 0x1002844 /* U+2844 BRAILLE PATTERN DOTS-37 */
+#define XK_braille_dots_137 0x1002845 /* U+2845 BRAILLE PATTERN DOTS-137 */
+#define XK_braille_dots_237 0x1002846 /* U+2846 BRAILLE PATTERN DOTS-237 */
+#define XK_braille_dots_1237 0x1002847 /* U+2847 BRAILLE PATTERN DOTS-1237 */
+#define XK_braille_dots_47 0x1002848 /* U+2848 BRAILLE PATTERN DOTS-47 */
+#define XK_braille_dots_147 0x1002849 /* U+2849 BRAILLE PATTERN DOTS-147 */
+#define XK_braille_dots_247 0x100284a /* U+284a BRAILLE PATTERN DOTS-247 */
+#define XK_braille_dots_1247 0x100284b /* U+284b BRAILLE PATTERN DOTS-1247 */
+#define XK_braille_dots_347 0x100284c /* U+284c BRAILLE PATTERN DOTS-347 */
+#define XK_braille_dots_1347 0x100284d /* U+284d BRAILLE PATTERN DOTS-1347 */
+#define XK_braille_dots_2347 0x100284e /* U+284e BRAILLE PATTERN DOTS-2347 */
+#define XK_braille_dots_12347 0x100284f /* U+284f BRAILLE PATTERN DOTS-12347 */
+#define XK_braille_dots_57 0x1002850 /* U+2850 BRAILLE PATTERN DOTS-57 */
+#define XK_braille_dots_157 0x1002851 /* U+2851 BRAILLE PATTERN DOTS-157 */
+#define XK_braille_dots_257 0x1002852 /* U+2852 BRAILLE PATTERN DOTS-257 */
+#define XK_braille_dots_1257 0x1002853 /* U+2853 BRAILLE PATTERN DOTS-1257 */
+#define XK_braille_dots_357 0x1002854 /* U+2854 BRAILLE PATTERN DOTS-357 */
+#define XK_braille_dots_1357 0x1002855 /* U+2855 BRAILLE PATTERN DOTS-1357 */
+#define XK_braille_dots_2357 0x1002856 /* U+2856 BRAILLE PATTERN DOTS-2357 */
+#define XK_braille_dots_12357 0x1002857 /* U+2857 BRAILLE PATTERN DOTS-12357 */
+#define XK_braille_dots_457 0x1002858 /* U+2858 BRAILLE PATTERN DOTS-457 */
+#define XK_braille_dots_1457 0x1002859 /* U+2859 BRAILLE PATTERN DOTS-1457 */
+#define XK_braille_dots_2457 0x100285a /* U+285a BRAILLE PATTERN DOTS-2457 */
+#define XK_braille_dots_12457 0x100285b /* U+285b BRAILLE PATTERN DOTS-12457 */
+#define XK_braille_dots_3457 0x100285c /* U+285c BRAILLE PATTERN DOTS-3457 */
+#define XK_braille_dots_13457 0x100285d /* U+285d BRAILLE PATTERN DOTS-13457 */
+#define XK_braille_dots_23457 0x100285e /* U+285e BRAILLE PATTERN DOTS-23457 */
+#define XK_braille_dots_123457 0x100285f /* U+285f BRAILLE PATTERN DOTS-123457 */
+#define XK_braille_dots_67 0x1002860 /* U+2860 BRAILLE PATTERN DOTS-67 */
+#define XK_braille_dots_167 0x1002861 /* U+2861 BRAILLE PATTERN DOTS-167 */
+#define XK_braille_dots_267 0x1002862 /* U+2862 BRAILLE PATTERN DOTS-267 */
+#define XK_braille_dots_1267 0x1002863 /* U+2863 BRAILLE PATTERN DOTS-1267 */
+#define XK_braille_dots_367 0x1002864 /* U+2864 BRAILLE PATTERN DOTS-367 */
+#define XK_braille_dots_1367 0x1002865 /* U+2865 BRAILLE PATTERN DOTS-1367 */
+#define XK_braille_dots_2367 0x1002866 /* U+2866 BRAILLE PATTERN DOTS-2367 */
+#define XK_braille_dots_12367 0x1002867 /* U+2867 BRAILLE PATTERN DOTS-12367 */
+#define XK_braille_dots_467 0x1002868 /* U+2868 BRAILLE PATTERN DOTS-467 */
+#define XK_braille_dots_1467 0x1002869 /* U+2869 BRAILLE PATTERN DOTS-1467 */
+#define XK_braille_dots_2467 0x100286a /* U+286a BRAILLE PATTERN DOTS-2467 */
+#define XK_braille_dots_12467 0x100286b /* U+286b BRAILLE PATTERN DOTS-12467 */
+#define XK_braille_dots_3467 0x100286c /* U+286c BRAILLE PATTERN DOTS-3467 */
+#define XK_braille_dots_13467 0x100286d /* U+286d BRAILLE PATTERN DOTS-13467 */
+#define XK_braille_dots_23467 0x100286e /* U+286e BRAILLE PATTERN DOTS-23467 */
+#define XK_braille_dots_123467 0x100286f /* U+286f BRAILLE PATTERN DOTS-123467 */
+#define XK_braille_dots_567 0x1002870 /* U+2870 BRAILLE PATTERN DOTS-567 */
+#define XK_braille_dots_1567 0x1002871 /* U+2871 BRAILLE PATTERN DOTS-1567 */
+#define XK_braille_dots_2567 0x1002872 /* U+2872 BRAILLE PATTERN DOTS-2567 */
+#define XK_braille_dots_12567 0x1002873 /* U+2873 BRAILLE PATTERN DOTS-12567 */
+#define XK_braille_dots_3567 0x1002874 /* U+2874 BRAILLE PATTERN DOTS-3567 */
+#define XK_braille_dots_13567 0x1002875 /* U+2875 BRAILLE PATTERN DOTS-13567 */
+#define XK_braille_dots_23567 0x1002876 /* U+2876 BRAILLE PATTERN DOTS-23567 */
+#define XK_braille_dots_123567 0x1002877 /* U+2877 BRAILLE PATTERN DOTS-123567 */
+#define XK_braille_dots_4567 0x1002878 /* U+2878 BRAILLE PATTERN DOTS-4567 */
+#define XK_braille_dots_14567 0x1002879 /* U+2879 BRAILLE PATTERN DOTS-14567 */
+#define XK_braille_dots_24567 0x100287a /* U+287a BRAILLE PATTERN DOTS-24567 */
+#define XK_braille_dots_124567 0x100287b /* U+287b BRAILLE PATTERN DOTS-124567 */
+#define XK_braille_dots_34567 0x100287c /* U+287c BRAILLE PATTERN DOTS-34567 */
+#define XK_braille_dots_134567 0x100287d /* U+287d BRAILLE PATTERN DOTS-134567 */
+#define XK_braille_dots_234567 0x100287e /* U+287e BRAILLE PATTERN DOTS-234567 */
+#define XK_braille_dots_1234567 0x100287f /* U+287f BRAILLE PATTERN DOTS-1234567 */
+#define XK_braille_dots_8 0x1002880 /* U+2880 BRAILLE PATTERN DOTS-8 */
+#define XK_braille_dots_18 0x1002881 /* U+2881 BRAILLE PATTERN DOTS-18 */
+#define XK_braille_dots_28 0x1002882 /* U+2882 BRAILLE PATTERN DOTS-28 */
+#define XK_braille_dots_128 0x1002883 /* U+2883 BRAILLE PATTERN DOTS-128 */
+#define XK_braille_dots_38 0x1002884 /* U+2884 BRAILLE PATTERN DOTS-38 */
+#define XK_braille_dots_138 0x1002885 /* U+2885 BRAILLE PATTERN DOTS-138 */
+#define XK_braille_dots_238 0x1002886 /* U+2886 BRAILLE PATTERN DOTS-238 */
+#define XK_braille_dots_1238 0x1002887 /* U+2887 BRAILLE PATTERN DOTS-1238 */
+#define XK_braille_dots_48 0x1002888 /* U+2888 BRAILLE PATTERN DOTS-48 */
+#define XK_braille_dots_148 0x1002889 /* U+2889 BRAILLE PATTERN DOTS-148 */
+#define XK_braille_dots_248 0x100288a /* U+288a BRAILLE PATTERN DOTS-248 */
+#define XK_braille_dots_1248 0x100288b /* U+288b BRAILLE PATTERN DOTS-1248 */
+#define XK_braille_dots_348 0x100288c /* U+288c BRAILLE PATTERN DOTS-348 */
+#define XK_braille_dots_1348 0x100288d /* U+288d BRAILLE PATTERN DOTS-1348 */
+#define XK_braille_dots_2348 0x100288e /* U+288e BRAILLE PATTERN DOTS-2348 */
+#define XK_braille_dots_12348 0x100288f /* U+288f BRAILLE PATTERN DOTS-12348 */
+#define XK_braille_dots_58 0x1002890 /* U+2890 BRAILLE PATTERN DOTS-58 */
+#define XK_braille_dots_158 0x1002891 /* U+2891 BRAILLE PATTERN DOTS-158 */
+#define XK_braille_dots_258 0x1002892 /* U+2892 BRAILLE PATTERN DOTS-258 */
+#define XK_braille_dots_1258 0x1002893 /* U+2893 BRAILLE PATTERN DOTS-1258 */
+#define XK_braille_dots_358 0x1002894 /* U+2894 BRAILLE PATTERN DOTS-358 */
+#define XK_braille_dots_1358 0x1002895 /* U+2895 BRAILLE PATTERN DOTS-1358 */
+#define XK_braille_dots_2358 0x1002896 /* U+2896 BRAILLE PATTERN DOTS-2358 */
+#define XK_braille_dots_12358 0x1002897 /* U+2897 BRAILLE PATTERN DOTS-12358 */
+#define XK_braille_dots_458 0x1002898 /* U+2898 BRAILLE PATTERN DOTS-458 */
+#define XK_braille_dots_1458 0x1002899 /* U+2899 BRAILLE PATTERN DOTS-1458 */
+#define XK_braille_dots_2458 0x100289a /* U+289a BRAILLE PATTERN DOTS-2458 */
+#define XK_braille_dots_12458 0x100289b /* U+289b BRAILLE PATTERN DOTS-12458 */
+#define XK_braille_dots_3458 0x100289c /* U+289c BRAILLE PATTERN DOTS-3458 */
+#define XK_braille_dots_13458 0x100289d /* U+289d BRAILLE PATTERN DOTS-13458 */
+#define XK_braille_dots_23458 0x100289e /* U+289e BRAILLE PATTERN DOTS-23458 */
+#define XK_braille_dots_123458 0x100289f /* U+289f BRAILLE PATTERN DOTS-123458 */
+#define XK_braille_dots_68 0x10028a0 /* U+28a0 BRAILLE PATTERN DOTS-68 */
+#define XK_braille_dots_168 0x10028a1 /* U+28a1 BRAILLE PATTERN DOTS-168 */
+#define XK_braille_dots_268 0x10028a2 /* U+28a2 BRAILLE PATTERN DOTS-268 */
+#define XK_braille_dots_1268 0x10028a3 /* U+28a3 BRAILLE PATTERN DOTS-1268 */
+#define XK_braille_dots_368 0x10028a4 /* U+28a4 BRAILLE PATTERN DOTS-368 */
+#define XK_braille_dots_1368 0x10028a5 /* U+28a5 BRAILLE PATTERN DOTS-1368 */
+#define XK_braille_dots_2368 0x10028a6 /* U+28a6 BRAILLE PATTERN DOTS-2368 */
+#define XK_braille_dots_12368 0x10028a7 /* U+28a7 BRAILLE PATTERN DOTS-12368 */
+#define XK_braille_dots_468 0x10028a8 /* U+28a8 BRAILLE PATTERN DOTS-468 */
+#define XK_braille_dots_1468 0x10028a9 /* U+28a9 BRAILLE PATTERN DOTS-1468 */
+#define XK_braille_dots_2468 0x10028aa /* U+28aa BRAILLE PATTERN DOTS-2468 */
+#define XK_braille_dots_12468 0x10028ab /* U+28ab BRAILLE PATTERN DOTS-12468 */
+#define XK_braille_dots_3468 0x10028ac /* U+28ac BRAILLE PATTERN DOTS-3468 */
+#define XK_braille_dots_13468 0x10028ad /* U+28ad BRAILLE PATTERN DOTS-13468 */
+#define XK_braille_dots_23468 0x10028ae /* U+28ae BRAILLE PATTERN DOTS-23468 */
+#define XK_braille_dots_123468 0x10028af /* U+28af BRAILLE PATTERN DOTS-123468 */
+#define XK_braille_dots_568 0x10028b0 /* U+28b0 BRAILLE PATTERN DOTS-568 */
+#define XK_braille_dots_1568 0x10028b1 /* U+28b1 BRAILLE PATTERN DOTS-1568 */
+#define XK_braille_dots_2568 0x10028b2 /* U+28b2 BRAILLE PATTERN DOTS-2568 */
+#define XK_braille_dots_12568 0x10028b3 /* U+28b3 BRAILLE PATTERN DOTS-12568 */
+#define XK_braille_dots_3568 0x10028b4 /* U+28b4 BRAILLE PATTERN DOTS-3568 */
+#define XK_braille_dots_13568 0x10028b5 /* U+28b5 BRAILLE PATTERN DOTS-13568 */
+#define XK_braille_dots_23568 0x10028b6 /* U+28b6 BRAILLE PATTERN DOTS-23568 */
+#define XK_braille_dots_123568 0x10028b7 /* U+28b7 BRAILLE PATTERN DOTS-123568 */
+#define XK_braille_dots_4568 0x10028b8 /* U+28b8 BRAILLE PATTERN DOTS-4568 */
+#define XK_braille_dots_14568 0x10028b9 /* U+28b9 BRAILLE PATTERN DOTS-14568 */
+#define XK_braille_dots_24568 0x10028ba /* U+28ba BRAILLE PATTERN DOTS-24568 */
+#define XK_braille_dots_124568 0x10028bb /* U+28bb BRAILLE PATTERN DOTS-124568 */
+#define XK_braille_dots_34568 0x10028bc /* U+28bc BRAILLE PATTERN DOTS-34568 */
+#define XK_braille_dots_134568 0x10028bd /* U+28bd BRAILLE PATTERN DOTS-134568 */
+#define XK_braille_dots_234568 0x10028be /* U+28be BRAILLE PATTERN DOTS-234568 */
+#define XK_braille_dots_1234568 0x10028bf /* U+28bf BRAILLE PATTERN DOTS-1234568 */
+#define XK_braille_dots_78 0x10028c0 /* U+28c0 BRAILLE PATTERN DOTS-78 */
+#define XK_braille_dots_178 0x10028c1 /* U+28c1 BRAILLE PATTERN DOTS-178 */
+#define XK_braille_dots_278 0x10028c2 /* U+28c2 BRAILLE PATTERN DOTS-278 */
+#define XK_braille_dots_1278 0x10028c3 /* U+28c3 BRAILLE PATTERN DOTS-1278 */
+#define XK_braille_dots_378 0x10028c4 /* U+28c4 BRAILLE PATTERN DOTS-378 */
+#define XK_braille_dots_1378 0x10028c5 /* U+28c5 BRAILLE PATTERN DOTS-1378 */
+#define XK_braille_dots_2378 0x10028c6 /* U+28c6 BRAILLE PATTERN DOTS-2378 */
+#define XK_braille_dots_12378 0x10028c7 /* U+28c7 BRAILLE PATTERN DOTS-12378 */
+#define XK_braille_dots_478 0x10028c8 /* U+28c8 BRAILLE PATTERN DOTS-478 */
+#define XK_braille_dots_1478 0x10028c9 /* U+28c9 BRAILLE PATTERN DOTS-1478 */
+#define XK_braille_dots_2478 0x10028ca /* U+28ca BRAILLE PATTERN DOTS-2478 */
+#define XK_braille_dots_12478 0x10028cb /* U+28cb BRAILLE PATTERN DOTS-12478 */
+#define XK_braille_dots_3478 0x10028cc /* U+28cc BRAILLE PATTERN DOTS-3478 */
+#define XK_braille_dots_13478 0x10028cd /* U+28cd BRAILLE PATTERN DOTS-13478 */
+#define XK_braille_dots_23478 0x10028ce /* U+28ce BRAILLE PATTERN DOTS-23478 */
+#define XK_braille_dots_123478 0x10028cf /* U+28cf BRAILLE PATTERN DOTS-123478 */
+#define XK_braille_dots_578 0x10028d0 /* U+28d0 BRAILLE PATTERN DOTS-578 */
+#define XK_braille_dots_1578 0x10028d1 /* U+28d1 BRAILLE PATTERN DOTS-1578 */
+#define XK_braille_dots_2578 0x10028d2 /* U+28d2 BRAILLE PATTERN DOTS-2578 */
+#define XK_braille_dots_12578 0x10028d3 /* U+28d3 BRAILLE PATTERN DOTS-12578 */
+#define XK_braille_dots_3578 0x10028d4 /* U+28d4 BRAILLE PATTERN DOTS-3578 */
+#define XK_braille_dots_13578 0x10028d5 /* U+28d5 BRAILLE PATTERN DOTS-13578 */
+#define XK_braille_dots_23578 0x10028d6 /* U+28d6 BRAILLE PATTERN DOTS-23578 */
+#define XK_braille_dots_123578 0x10028d7 /* U+28d7 BRAILLE PATTERN DOTS-123578 */
+#define XK_braille_dots_4578 0x10028d8 /* U+28d8 BRAILLE PATTERN DOTS-4578 */
+#define XK_braille_dots_14578 0x10028d9 /* U+28d9 BRAILLE PATTERN DOTS-14578 */
+#define XK_braille_dots_24578 0x10028da /* U+28da BRAILLE PATTERN DOTS-24578 */
+#define XK_braille_dots_124578 0x10028db /* U+28db BRAILLE PATTERN DOTS-124578 */
+#define XK_braille_dots_34578 0x10028dc /* U+28dc BRAILLE PATTERN DOTS-34578 */
+#define XK_braille_dots_134578 0x10028dd /* U+28dd BRAILLE PATTERN DOTS-134578 */
+#define XK_braille_dots_234578 0x10028de /* U+28de BRAILLE PATTERN DOTS-234578 */
+#define XK_braille_dots_1234578 0x10028df /* U+28df BRAILLE PATTERN DOTS-1234578 */
+#define XK_braille_dots_678 0x10028e0 /* U+28e0 BRAILLE PATTERN DOTS-678 */
+#define XK_braille_dots_1678 0x10028e1 /* U+28e1 BRAILLE PATTERN DOTS-1678 */
+#define XK_braille_dots_2678 0x10028e2 /* U+28e2 BRAILLE PATTERN DOTS-2678 */
+#define XK_braille_dots_12678 0x10028e3 /* U+28e3 BRAILLE PATTERN DOTS-12678 */
+#define XK_braille_dots_3678 0x10028e4 /* U+28e4 BRAILLE PATTERN DOTS-3678 */
+#define XK_braille_dots_13678 0x10028e5 /* U+28e5 BRAILLE PATTERN DOTS-13678 */
+#define XK_braille_dots_23678 0x10028e6 /* U+28e6 BRAILLE PATTERN DOTS-23678 */
+#define XK_braille_dots_123678 0x10028e7 /* U+28e7 BRAILLE PATTERN DOTS-123678 */
+#define XK_braille_dots_4678 0x10028e8 /* U+28e8 BRAILLE PATTERN DOTS-4678 */
+#define XK_braille_dots_14678 0x10028e9 /* U+28e9 BRAILLE PATTERN DOTS-14678 */
+#define XK_braille_dots_24678 0x10028ea /* U+28ea BRAILLE PATTERN DOTS-24678 */
+#define XK_braille_dots_124678 0x10028eb /* U+28eb BRAILLE PATTERN DOTS-124678 */
+#define XK_braille_dots_34678 0x10028ec /* U+28ec BRAILLE PATTERN DOTS-34678 */
+#define XK_braille_dots_134678 0x10028ed /* U+28ed BRAILLE PATTERN DOTS-134678 */
+#define XK_braille_dots_234678 0x10028ee /* U+28ee BRAILLE PATTERN DOTS-234678 */
+#define XK_braille_dots_1234678 0x10028ef /* U+28ef BRAILLE PATTERN DOTS-1234678 */
+#define XK_braille_dots_5678 0x10028f0 /* U+28f0 BRAILLE PATTERN DOTS-5678 */
+#define XK_braille_dots_15678 0x10028f1 /* U+28f1 BRAILLE PATTERN DOTS-15678 */
+#define XK_braille_dots_25678 0x10028f2 /* U+28f2 BRAILLE PATTERN DOTS-25678 */
+#define XK_braille_dots_125678 0x10028f3 /* U+28f3 BRAILLE PATTERN DOTS-125678 */
+#define XK_braille_dots_35678 0x10028f4 /* U+28f4 BRAILLE PATTERN DOTS-35678 */
+#define XK_braille_dots_135678 0x10028f5 /* U+28f5 BRAILLE PATTERN DOTS-135678 */
+#define XK_braille_dots_235678 0x10028f6 /* U+28f6 BRAILLE PATTERN DOTS-235678 */
+#define XK_braille_dots_1235678 0x10028f7 /* U+28f7 BRAILLE PATTERN DOTS-1235678 */
+#define XK_braille_dots_45678 0x10028f8 /* U+28f8 BRAILLE PATTERN DOTS-45678 */
+#define XK_braille_dots_145678 0x10028f9 /* U+28f9 BRAILLE PATTERN DOTS-145678 */
+#define XK_braille_dots_245678 0x10028fa /* U+28fa BRAILLE PATTERN DOTS-245678 */
+#define XK_braille_dots_1245678 0x10028fb /* U+28fb BRAILLE PATTERN DOTS-1245678 */
+#define XK_braille_dots_345678 0x10028fc /* U+28fc BRAILLE PATTERN DOTS-345678 */
+#define XK_braille_dots_1345678 0x10028fd /* U+28fd BRAILLE PATTERN DOTS-1345678 */
+#define XK_braille_dots_2345678 0x10028fe /* U+28fe BRAILLE PATTERN DOTS-2345678 */
+#define XK_braille_dots_12345678 0x10028ff /* U+28ff BRAILLE PATTERN DOTS-12345678 */
+/* XK_BRAILLE */
+
+/*
+ * Sinhala (http://unicode.org/charts/PDF/U0D80.pdf)
+ * http://www.nongnu.org/sinhala/doc/transliteration/sinhala-transliteration_6.html
+ */
+
+
+#define XK_Sinh_ng 0x1000d82 /* U+0D82 SINHALA ANUSVARAYA */
+#define XK_Sinh_h2 0x1000d83 /* U+0D83 SINHALA VISARGAYA */
+#define XK_Sinh_a 0x1000d85 /* U+0D85 SINHALA AYANNA */
+#define XK_Sinh_aa 0x1000d86 /* U+0D86 SINHALA AAYANNA */
+#define XK_Sinh_ae 0x1000d87 /* U+0D87 SINHALA AEYANNA */
+#define XK_Sinh_aee 0x1000d88 /* U+0D88 SINHALA AEEYANNA */
+#define XK_Sinh_i 0x1000d89 /* U+0D89 SINHALA IYANNA */
+#define XK_Sinh_ii 0x1000d8a /* U+0D8A SINHALA IIYANNA */
+#define XK_Sinh_u 0x1000d8b /* U+0D8B SINHALA UYANNA */
+#define XK_Sinh_uu 0x1000d8c /* U+0D8C SINHALA UUYANNA */
+#define XK_Sinh_ri 0x1000d8d /* U+0D8D SINHALA IRUYANNA */
+#define XK_Sinh_rii 0x1000d8e /* U+0D8E SINHALA IRUUYANNA */
+#define XK_Sinh_lu 0x1000d8f /* U+0D8F SINHALA ILUYANNA */
+#define XK_Sinh_luu 0x1000d90 /* U+0D90 SINHALA ILUUYANNA */
+#define XK_Sinh_e 0x1000d91 /* U+0D91 SINHALA EYANNA */
+#define XK_Sinh_ee 0x1000d92 /* U+0D92 SINHALA EEYANNA */
+#define XK_Sinh_ai 0x1000d93 /* U+0D93 SINHALA AIYANNA */
+#define XK_Sinh_o 0x1000d94 /* U+0D94 SINHALA OYANNA */
+#define XK_Sinh_oo 0x1000d95 /* U+0D95 SINHALA OOYANNA */
+#define XK_Sinh_au 0x1000d96 /* U+0D96 SINHALA AUYANNA */
+#define XK_Sinh_ka 0x1000d9a /* U+0D9A SINHALA KAYANNA */
+#define XK_Sinh_kha 0x1000d9b /* U+0D9B SINHALA MAHA. KAYANNA */
+#define XK_Sinh_ga 0x1000d9c /* U+0D9C SINHALA GAYANNA */
+#define XK_Sinh_gha 0x1000d9d /* U+0D9D SINHALA MAHA. GAYANNA */
+#define XK_Sinh_ng2 0x1000d9e /* U+0D9E SINHALA KANTAJA NAASIKYAYA */
+#define XK_Sinh_nga 0x1000d9f /* U+0D9F SINHALA SANYAKA GAYANNA */
+#define XK_Sinh_ca 0x1000da0 /* U+0DA0 SINHALA CAYANNA */
+#define XK_Sinh_cha 0x1000da1 /* U+0DA1 SINHALA MAHA. CAYANNA */
+#define XK_Sinh_ja 0x1000da2 /* U+0DA2 SINHALA JAYANNA */
+#define XK_Sinh_jha 0x1000da3 /* U+0DA3 SINHALA MAHA. JAYANNA */
+#define XK_Sinh_nya 0x1000da4 /* U+0DA4 SINHALA TAALUJA NAASIKYAYA */
+#define XK_Sinh_jnya 0x1000da5 /* U+0DA5 SINHALA TAALUJA SANYOOGA NAASIKYAYA */
+#define XK_Sinh_nja 0x1000da6 /* U+0DA6 SINHALA SANYAKA JAYANNA */
+#define XK_Sinh_tta 0x1000da7 /* U+0DA7 SINHALA TTAYANNA */
+#define XK_Sinh_ttha 0x1000da8 /* U+0DA8 SINHALA MAHA. TTAYANNA */
+#define XK_Sinh_dda 0x1000da9 /* U+0DA9 SINHALA DDAYANNA */
+#define XK_Sinh_ddha 0x1000daa /* U+0DAA SINHALA MAHA. DDAYANNA */
+#define XK_Sinh_nna 0x1000dab /* U+0DAB SINHALA MUURDHAJA NAYANNA */
+#define XK_Sinh_ndda 0x1000dac /* U+0DAC SINHALA SANYAKA DDAYANNA */
+#define XK_Sinh_tha 0x1000dad /* U+0DAD SINHALA TAYANNA */
+#define XK_Sinh_thha 0x1000dae /* U+0DAE SINHALA MAHA. TAYANNA */
+#define XK_Sinh_dha 0x1000daf /* U+0DAF SINHALA DAYANNA */
+#define XK_Sinh_dhha 0x1000db0 /* U+0DB0 SINHALA MAHA. DAYANNA */
+#define XK_Sinh_na 0x1000db1 /* U+0DB1 SINHALA DANTAJA NAYANNA */
+#define XK_Sinh_ndha 0x1000db3 /* U+0DB3 SINHALA SANYAKA DAYANNA */
+#define XK_Sinh_pa 0x1000db4 /* U+0DB4 SINHALA PAYANNA */
+#define XK_Sinh_pha 0x1000db5 /* U+0DB5 SINHALA MAHA. PAYANNA */
+#define XK_Sinh_ba 0x1000db6 /* U+0DB6 SINHALA BAYANNA */
+#define XK_Sinh_bha 0x1000db7 /* U+0DB7 SINHALA MAHA. BAYANNA */
+#define XK_Sinh_ma 0x1000db8 /* U+0DB8 SINHALA MAYANNA */
+#define XK_Sinh_mba 0x1000db9 /* U+0DB9 SINHALA AMBA BAYANNA */
+#define XK_Sinh_ya 0x1000dba /* U+0DBA SINHALA YAYANNA */
+#define XK_Sinh_ra 0x1000dbb /* U+0DBB SINHALA RAYANNA */
+#define XK_Sinh_la 0x1000dbd /* U+0DBD SINHALA DANTAJA LAYANNA */
+#define XK_Sinh_va 0x1000dc0 /* U+0DC0 SINHALA VAYANNA */
+#define XK_Sinh_sha 0x1000dc1 /* U+0DC1 SINHALA TAALUJA SAYANNA */
+#define XK_Sinh_ssha 0x1000dc2 /* U+0DC2 SINHALA MUURDHAJA SAYANNA */
+#define XK_Sinh_sa 0x1000dc3 /* U+0DC3 SINHALA DANTAJA SAYANNA */
+#define XK_Sinh_ha 0x1000dc4 /* U+0DC4 SINHALA HAYANNA */
+#define XK_Sinh_lla 0x1000dc5 /* U+0DC5 SINHALA MUURDHAJA LAYANNA */
+#define XK_Sinh_fa 0x1000dc6 /* U+0DC6 SINHALA FAYANNA */
+#define XK_Sinh_al 0x1000dca /* U+0DCA SINHALA AL-LAKUNA */
+#define XK_Sinh_aa2 0x1000dcf /* U+0DCF SINHALA AELA-PILLA */
+#define XK_Sinh_ae2 0x1000dd0 /* U+0DD0 SINHALA AEDA-PILLA */
+#define XK_Sinh_aee2 0x1000dd1 /* U+0DD1 SINHALA DIGA AEDA-PILLA */
+#define XK_Sinh_i2 0x1000dd2 /* U+0DD2 SINHALA IS-PILLA */
+#define XK_Sinh_ii2 0x1000dd3 /* U+0DD3 SINHALA DIGA IS-PILLA */
+#define XK_Sinh_u2 0x1000dd4 /* U+0DD4 SINHALA PAA-PILLA */
+#define XK_Sinh_uu2 0x1000dd6 /* U+0DD6 SINHALA DIGA PAA-PILLA */
+#define XK_Sinh_ru2 0x1000dd8 /* U+0DD8 SINHALA GAETTA-PILLA */
+#define XK_Sinh_e2 0x1000dd9 /* U+0DD9 SINHALA KOMBUVA */
+#define XK_Sinh_ee2 0x1000dda /* U+0DDA SINHALA DIGA KOMBUVA */
+#define XK_Sinh_ai2 0x1000ddb /* U+0DDB SINHALA KOMBU DEKA */
+#define XK_Sinh_o2 0x1000ddc /* U+0DDC SINHALA KOMBUVA HAA AELA-PILLA*/
+#define XK_Sinh_oo2 0x1000ddd /* U+0DDD SINHALA KOMBUVA HAA DIGA AELA-PILLA*/
+#define XK_Sinh_au2 0x1000dde /* U+0DDE SINHALA KOMBUVA HAA GAYANUKITTA */
+#define XK_Sinh_lu2 0x1000ddf /* U+0DDF SINHALA GAYANUKITTA */
+#define XK_Sinh_ruu2 0x1000df2 /* U+0DF2 SINHALA DIGA GAETTA-PILLA */
+#define XK_Sinh_luu2 0x1000df3 /* U+0DF3 SINHALA DIGA GAYANUKITTA */
+#define XK_Sinh_kunddaliya 0x1000df4 /* U+0DF4 SINHALA KUNDDALIYA */
+/* XK_SINHALA */
+# 73 "/usr/include/X11/keysym.h" 2 3
+
+
+# 102 "include/forms.h" 2
+
+#include <X11/Xresource.h>
+# 1 "/usr/include/X11/Xresource.h" 1 3
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+
+#define _X11_XRESOURCE_H_
+
+
+#include <X11/Xlib.h>
+
+
+/****************************************************************
+ ****************************************************************
+ *** ***
+ *** ***
+ *** X Resource Manager Intrinsics ***
+ *** ***
+ *** ***
+ ****************************************************************
+ ****************************************************************/
+
+
+
+/****************************************************************
+ *
+ * Memory Management
+ *
+ ****************************************************************/
+
+extern char *Xpermalloc(
+ unsigned int /* size */
+);
+
+/****************************************************************
+ *
+ * Quark Management
+ *
+ ****************************************************************/
+
+typedef int XrmQuark, *XrmQuarkList;
+#define NULLQUARK ((XrmQuark) 0)
+
+typedef char *XrmString;
+#define NULLSTRING ((XrmString) 0)
+
+/* find quark for string, create new quark if none already exists */
+extern XrmQuark XrmStringToQuark(
+ const char* /* string */
+);
+
+extern XrmQuark XrmPermStringToQuark(
+ const char* /* string */
+);
+
+/* find string for quark */
+extern XrmString XrmQuarkToString(
+ XrmQuark /* quark */
+);
+
+extern XrmQuark XrmUniqueQuark(
+ void
+);
+
+#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
+
+
+/****************************************************************
+ *
+ * Conversion of Strings to Lists
+ *
+ ****************************************************************/
+
+typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
+
+extern void XrmStringToQuarkList(
+ const char* /* string */,
+ XrmQuarkList /* quarks_return */
+);
+
+extern void XrmStringToBindingQuarkList(
+ const char* /* string */,
+ XrmBindingList /* bindings_return */,
+ XrmQuarkList /* quarks_return */
+);
+
+/****************************************************************
+ *
+ * Name and Class lists.
+ *
+ ****************************************************************/
+
+typedef XrmQuark XrmName;
+typedef XrmQuarkList XrmNameList;
+#define XrmNameToString(name) XrmQuarkToString(name)
+#define XrmStringToName(string) XrmStringToQuark(string)
+#define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
+
+typedef XrmQuark XrmClass;
+typedef XrmQuarkList XrmClassList;
+#define XrmClassToString(c_class) XrmQuarkToString(c_class)
+#define XrmStringToClass(c_class) XrmStringToQuark(c_class)
+#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
+
+
+
+/****************************************************************
+ *
+ * Resource Representation Types and Values
+ *
+ ****************************************************************/
+
+typedef XrmQuark XrmRepresentation;
+#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+#define XrmRepresentationToString(type) XrmQuarkToString(type)
+
+typedef struct {
+ unsigned int size;
+ XPointer addr;
+} XrmValue, *XrmValuePtr;
+
+
+/****************************************************************
+ *
+ * Resource Manager Functions
+ *
+ ****************************************************************/
+
+typedef struct _XrmHashBucketRec *XrmHashBucket;
+typedef XrmHashBucket *XrmHashTable;
+typedef XrmHashTable XrmSearchList[];
+typedef struct _XrmHashBucketRec *XrmDatabase;
+
+
+extern void XrmDestroyDatabase(
+ XrmDatabase /* database */
+);
+
+extern void XrmQPutResource(
+ XrmDatabase* /* database */,
+ XrmBindingList /* bindings */,
+ XrmQuarkList /* quarks */,
+ XrmRepresentation /* type */,
+ XrmValue* /* value */
+);
+
+extern void XrmPutResource(
+ XrmDatabase* /* database */,
+ const char* /* specifier */,
+ const char* /* type */,
+ XrmValue* /* value */
+);
+
+extern void XrmQPutStringResource(
+ XrmDatabase* /* database */,
+ XrmBindingList /* bindings */,
+ XrmQuarkList /* quarks */,
+ const char* /* value */
+);
+
+extern void XrmPutStringResource(
+ XrmDatabase* /* database */,
+ const char* /* specifier */,
+ const char* /* value */
+);
+
+extern void XrmPutLineResource(
+ XrmDatabase* /* database */,
+ const char* /* line */
+);
+
+extern int XrmQGetResource(
+ XrmDatabase /* database */,
+ XrmNameList /* quark_name */,
+ XrmClassList /* quark_class */,
+ XrmRepresentation* /* quark_type_return */,
+ XrmValue* /* value_return */
+);
+
+extern int XrmGetResource(
+ XrmDatabase /* database */,
+ const char* /* str_name */,
+ const char* /* str_class */,
+ char** /* str_type_return */,
+ XrmValue* /* value_return */
+);
+
+extern int XrmQGetSearchList(
+ XrmDatabase /* database */,
+ XrmNameList /* names */,
+ XrmClassList /* classes */,
+ XrmSearchList /* list_return */,
+ int /* list_length */
+);
+
+extern int XrmQGetSearchResource(
+ XrmSearchList /* list */,
+ XrmName /* name */,
+ XrmClass /* class */,
+ XrmRepresentation* /* type_return */,
+ XrmValue* /* value_return */
+);
+
+/****************************************************************
+ *
+ * Resource Database Management
+ *
+ ****************************************************************/
+
+
+
+extern void XrmSetDatabase(
+ Display* /* display */,
+ XrmDatabase /* database */
+);
+
+extern XrmDatabase XrmGetDatabase(
+ Display* /* display */
+);
+
+/* !_XP_PRINT_SERVER_ */
+
+extern XrmDatabase XrmGetFileDatabase(
+ const char* /* filename */
+);
+
+extern int XrmCombineFileDatabase(
+ const char* /* filename */,
+ XrmDatabase* /* target */,
+ int /* override */
+);
+
+extern XrmDatabase XrmGetStringDatabase(
+ const char* /* data */ /* null terminated string */
+);
+
+extern void XrmPutFileDatabase(
+ XrmDatabase /* database */,
+ const char* /* filename */
+);
+
+extern void XrmMergeDatabases(
+ XrmDatabase /* source_db */,
+ XrmDatabase* /* target_db */
+);
+
+extern void XrmCombineDatabase(
+ XrmDatabase /* source_db */,
+ XrmDatabase* /* target_db */,
+ int /* override */
+);
+
+#define XrmEnumAllLevels 0
+#define XrmEnumOneLevel 1
+
+extern int XrmEnumerateDatabase(
+ XrmDatabase /* db */,
+ XrmNameList /* name_prefix */,
+ XrmClassList /* class_prefix */,
+ int /* mode */,
+ int (*)(
+ XrmDatabase* /* db */,
+ XrmBindingList /* bindings */,
+ XrmQuarkList /* quarks */,
+ XrmRepresentation* /* type */,
+ XrmValue* /* value */,
+ XPointer /* closure */
+ ) /* proc */,
+ XPointer /* closure */
+);
+
+extern const char *XrmLocaleOfDatabase(
+ XrmDatabase /* database */
+);
+
+
+/****************************************************************
+ *
+ * Command line option mapping to resource entries
+ *
+ ****************************************************************/
+
+typedef enum {
+ XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
+ XrmoptionIsArg, /* Value is the option string itself */
+ XrmoptionStickyArg, /* Value is characters immediately following option */
+ XrmoptionSepArg, /* Value is next argument in argv */
+ XrmoptionResArg, /* Resource and value in next argument in argv */
+ XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
+ XrmoptionSkipLine, /* Ignore this option and the rest of argv */
+ XrmoptionSkipNArgs /* Ignore this option and the next
+ OptionDescRes.value arguments in argv */
+} XrmOptionKind;
+
+typedef struct {
+ char *option; /* Option abbreviation in argv */
+ char *specifier; /* Resource specifier */
+ XrmOptionKind argKind; /* Which style of option it is */
+ XPointer value; /* Value to provide if XrmoptionNoArg */
+} XrmOptionDescRec, *XrmOptionDescList;
+
+
+extern void XrmParseCommand(
+ XrmDatabase* /* database */,
+ XrmOptionDescList /* table */,
+ int /* table_count */,
+ const char* /* name */,
+ int* /* argc_in_out */,
+ char** /* argv_in_out */
+);
+
+
+
+/* _X11_XRESOURCE_H_ */
+/* DON'T ADD STUFF AFTER THIS #endif */
+# 103 "include/forms.h" 2
+
+
+
+#define FL_UNUSED_ARG __attribute__ ((unused))
+
+
+
+
+/* Some general constants */
+
+enum {
+ FL_ON = 1,
+ FL_OK = 1,
+ FL_VALID = 1,
+ FL_PREEMPT = 1,
+ FL_AUTO = 2,
+ FL_WHEN_NEEDED = FL_AUTO,
+ FL_OFF = 0,
+ FL_CANCEL = 0,
+ FL_INVALID = 0,
+
+ /* WM_DELETE_WINDOW callback return */
+
+ FL_IGNORE = -1
+};
+
+/* Max directory length */
+
+
+
+
+
+#define FL_PATH_MAX PATH_MAX
+
+/* ! def FL_PATH_MAX */
+
+/* The screen coordinate unit, FL_Coord, must be of signed type */
+
+typedef int FL_Coord;
+#define FL_COORD FL_Coord
+
+typedef unsigned long FL_COLOR;
+
+/* Coordinates can be in pixels, milli-meters or points (1/72inch) */
+
+typedef enum {
+ FL_COORD_PIXEL, /* default, Pixel */
+ FL_COORD_MM, /* milli-meter */
+ FL_COORD_POINT, /* point */
+ FL_COORD_centiMM, /* one hundredth of a mm */
+ FL_COORD_centiPOINT /* one hundredth of a point */
+} FL_COORD_UNIT;
+
+/* All object classes. */
+
+typedef enum {
+ FL_INVALID_CLASS, /* 0 */
+ FL_BUTTON, /* 1 */
+ FL_LIGHTBUTTON, /* 2 */
+ FL_ROUNDBUTTON, /* 3 */
+ FL_ROUND3DBUTTON, /* 4 */
+ FL_CHECKBUTTON, /* 5 */
+ FL_BITMAPBUTTON, /* 6 */
+ FL_PIXMAPBUTTON, /* 7 */
+ FL_BITMAP, /* 8 */
+ FL_PIXMAP, /* 9 */
+ FL_BOX, /* 10 */
+ FL_TEXT, /* 11 */
+ FL_MENU, /* 12 */
+ FL_CHART, /* 13 */
+ FL_CHOICE, /* 14 */
+ FL_COUNTER, /* 15 */
+ FL_SLIDER, /* 16 */
+ FL_VALSLIDER, /* 17 */
+ FL_INPUT, /* 18 */
+ FL_BROWSER, /* 19 */
+ FL_DIAL, /* 20 */
+ FL_TIMER, /* 21 */
+ FL_CLOCK, /* 22 */
+ FL_POSITIONER, /* 23 */
+ FL_FREE, /* 24 */
+ FL_XYPLOT, /* 25 */
+ FL_FRAME, /* 26 */
+ FL_LABELFRAME, /* 27 */
+ FL_CANVAS, /* 28 */
+ FL_GLCANVAS, /* 29 */
+ FL_TABFOLDER, /* 30 */
+ FL_SCROLLBAR, /* 31 */
+ FL_SCROLLBUTTON, /* 32 */
+ FL_MENUBAR, /* 33 */
+ FL_TEXTBOX, /* 34, for internal use only */
+ FL_LABELBUTTON, /* 35 */
+ FL_COMBOBOX, /* 36 */
+ FL_IMAGECANVAS, /* 37 */
+ FL_THUMBWHEEL, /* 38 */
+ FL_COLORWHEEL, /* 39 */
+ FL_FORMBROWSER, /* 40 */
+ FL_SELECT, /* 41 */
+ FL_NMENU, /* 42 */
+ FL_SPINNER, /* 43 */
+ FL_TBOX, /* 44 */
+ FL_CLASS_END /* sentinel */
+} FL_CLASS;
+
+#define FL_BEGIN_GROUP 10000
+#define FL_END_GROUP 20000
+
+#define FL_USER_CLASS_START 1001 /* min. user class value */
+#define FL_USER_CLASS_END 9999 /* max. user class value */
+
+/* Maximum border width (in pixel) */
+
+#define FL_MAX_BW 10
+
+/* How to display a form onto screen */
+
+typedef enum {
+ FL_PLACE_FREE = 0, /* size remain resizable */
+ FL_PLACE_MOUSE = 1, /* mouse centered on form */
+ FL_PLACE_CENTER = 2, /* center of the screen */
+ FL_PLACE_POSITION = 4, /* specific position */
+ FL_PLACE_SIZE = 8, /* specific size */
+ FL_PLACE_GEOMETRY = 16, /* specific size and position */
+ FL_PLACE_ASPECT = 32, /* keep aspect ratio */
+ FL_PLACE_FULLSCREEN = 64, /* scale to fit to screen */
+ FL_PLACE_HOTSPOT = 128, /* so mouse fall on (x,y) */
+ FL_PLACE_ICONIC = 256, /* start in iconified form */
+
+ /* Modifiers */
+
+ FL_FREE_SIZE = ( 1 << 14 ),
+ FL_FIX_SIZE = ( 1 << 15 ) /* seems to be useless, but some
+ programs seem to rely on it... */
+} FL_PLACE;
+
+#define FL_PLACE_FREE_CENTER ( FL_PLACE_CENTER | FL_FREE_SIZE )
+#define FL_PLACE_CENTERFREE ( FL_PLACE_CENTER | FL_FREE_SIZE )
+
+/* Window manager decoration request and forms attributes */
+
+enum {
+ FL_FULLBORDER = 1, /* normal */
+ FL_TRANSIENT, /* set TRANSIENT_FOR property */
+ FL_NOBORDER /* use override_redirect to supress decor. */
+ };
+
+/* All box types */
+
+typedef enum {
+ FL_NO_BOX, /* 0 */
+ FL_UP_BOX, /* 1 */
+ FL_DOWN_BOX, /* 2 */
+ FL_BORDER_BOX, /* 3 */
+ FL_SHADOW_BOX, /* 4 */
+ FL_FRAME_BOX, /* 5 */
+ FL_ROUNDED_BOX, /* 6 */
+ FL_EMBOSSED_BOX, /* 7 */
+ FL_FLAT_BOX, /* 8 */
+ FL_RFLAT_BOX, /* 9 */
+ FL_RSHADOW_BOX, /* 10 */
+ FL_OVAL_BOX, /* 11 */
+ FL_ROUNDED3D_UPBOX, /* 12 */
+ FL_ROUNDED3D_DOWNBOX, /* 13 */
+ FL_OVAL3D_UPBOX, /* 14 */
+ FL_OVAL3D_DOWNBOX, /* 15 */
+ FL_OVAL3D_FRAMEBOX, /* 16 */
+ FL_OVAL3D_EMBOSSEDBOX, /* 17 */
+
+ /* for internal use only */
+
+ FL_TOPTAB_UPBOX,
+ FL_SELECTED_TOPTAB_UPBOX,
+ FL_BOTTOMTAB_UPBOX,
+ FL_SELECTED_BOTTOMTAB_UPBOX,
+
+ FL_MAX_BOX_STYLES /* sentinel */
+} FL_BOX_TYPE;
+
+#define FL_IS_UPBOX( t ) ( ( t ) == FL_UP_BOX \
+ || ( t ) == FL_OVAL3D_UPBOX \
+ || ( t ) == FL_ROUNDED3D_UPBOX)
+
+#define FL_IS_DOWNBOX( t ) ( ( t ) == FL_DOWN_BOX \
+ || ( t ) == FL_OVAL3D_DOWNBOX \
+ || ( t ) == FL_ROUNDED3D_DOWNBOX)
+
+#define FL_TO_DOWNBOX( t ) ( ( t ) == FL_UP_BOX ? FL_DOWN_BOX: \
+ ( ( t ) == FL_ROUNDED3D_UPBOX ? \
+ FL_ROUNDED3D_DOWNBOX: \
+ ( ( t ) == FL_OVAL3D_UPBOX ? \
+ FL_OVAL3D_DOWNBOX : ( t ) ) ) )
+
+/* How to place text relative to a box */
+
+typedef enum {
+ FL_ALIGN_CENTER,
+ FL_ALIGN_TOP = 1,
+ FL_ALIGN_BOTTOM = 2,
+ FL_ALIGN_LEFT = 4,
+ FL_ALIGN_RIGHT = 8,
+ FL_ALIGN_LEFT_TOP = ( FL_ALIGN_TOP | FL_ALIGN_LEFT ),
+ FL_ALIGN_RIGHT_TOP = ( FL_ALIGN_TOP | FL_ALIGN_RIGHT ),
+ FL_ALIGN_LEFT_BOTTOM = ( FL_ALIGN_BOTTOM | FL_ALIGN_LEFT ),
+ FL_ALIGN_RIGHT_BOTTOM = ( FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT ),
+ FL_ALIGN_INSIDE = ( 1 << 13 ),
+ FL_ALIGN_VERT = ( 1 << 14 ), /* not functional yet */
+
+ /* the rest is for backward compatibility only, don't use! */
+
+ FL_ALIGN_TOP_LEFT = FL_ALIGN_LEFT_TOP,
+ FL_ALIGN_TOP_RIGHT = FL_ALIGN_RIGHT_TOP,
+ FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_LEFT_BOTTOM,
+ FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_RIGHT_BOTTOM
+} FL_ALIGN;
+
+
+extern int fl_is_inside_lalign( int align );
+
+extern int fl_is_outside_lalign( int align );
+
+extern int fl_is_center_lalign( int align );
+
+extern int fl_to_inside_lalign( int align );
+
+extern int fl_to_outside_lalign( int align );
+
+/* Mouse buttons. Don't have to be consecutive */
+
+enum {
+ FL_MBUTTON1 = 1,
+ FL_MBUTTON2,
+ FL_MBUTTON3,
+ FL_MBUTTON4,
+ FL_MBUTTON5
+};
+
+#define FL_LEFT_MOUSE FL_MBUTTON1
+#define FL_MIDDLE_MOUSE FL_MBUTTON2
+#define FL_RIGHT_MOUSE FL_MBUTTON3
+#define FL_SCROLLUP_MOUSE FL_MBUTTON4
+#define FL_SCROLLDOWN_MOUSE FL_MBUTTON5
+
+#define FL_LEFTMOUSE FL_LEFT_MOUSE
+#define FL_MIDDLEMOUSE FL_MIDDLE_MOUSE
+#define FL_RIGHTMOUSE FL_RIGHT_MOUSE
+#define FL_SCROLLUPMOUSE FL_SCROLLUP_MOUSE
+#define FL_SCROLLDOWNMOUSE FL_SCROLLDOWN_MOUSE
+
+/* control when to return input, slider and dial etc. object. */
+
+#define FL_RETURN_NONE 0U
+#define FL_RETURN_CHANGED 1U
+#define FL_RETURN_END 2U
+#define FL_RETURN_END_CHANGED 4U
+#define FL_RETURN_SELECTION 8U
+#define FL_RETURN_DESELECTION 16U
+#define FL_RETURN_TRIGGERED 1024U
+#define FL_RETURN_ALWAYS ( ~ FL_RETURN_END_CHANGED )
+
+
+/* Some special color indices for FL private colormap. It does not matter
+ * what the value of each enum is, but it must start from 0 and be
+ * consecutive. */
+
+typedef enum {
+ FL_BLACK,
+ FL_RED,
+ FL_GREEN,
+ FL_YELLOW,
+ FL_BLUE,
+ FL_MAGENTA,
+ FL_CYAN,
+ FL_WHITE,
+ FL_TOMATO,
+ FL_INDIANRED,
+ FL_SLATEBLUE,
+ FL_COL1,
+ FL_RIGHT_BCOL,
+ FL_BOTTOM_BCOL,
+ FL_TOP_BCOL,
+ FL_LEFT_BCOL,
+ FL_MCOL,
+ FL_INACTIVE,
+ FL_PALEGREEN,
+ FL_DARKGOLD,
+ FL_ORCHID,
+ FL_DARKCYAN,
+ FL_DARKTOMATO,
+ FL_WHEAT,
+ FL_DARKORANGE,
+ FL_DEEPPINK,
+ FL_CHARTREUSE,
+ FL_DARKVIOLET,
+ FL_SPRINGGREEN,
+ FL_DODGERBLUE,
+ FL_LIGHTER_COL1,
+ FL_DARKER_COL1,
+ FL_ALICEBLUE,
+ FL_ANTIQUEWHITE,
+ FL_AQUA,
+ FL_AQUAMARINE,
+ FL_AZURE,
+ FL_BEIGE,
+ FL_BISQUE,
+ FL_BLANCHEDALMOND,
+ FL_BLUEVIOLET,
+ FL_BROWN,
+ FL_BURLYWOOD,
+ FL_CADETBLUE,
+ FL_CHOCOLATE,
+ FL_CORAL,
+ FL_CORNFLOWERBLUE,
+ FL_CORNSILK,
+ FL_CRIMSON,
+ FL_DARKBLUE,
+ FL_DARKGOLDENROD,
+ FL_DARKGRAY,
+ FL_DARKGREEN,
+ FL_DARKGREY,
+ FL_DARKKHAKI,
+ FL_DARKMAGENTA,
+ FL_DARKOLIVEGREEN,
+ FL_DARKORCHID,
+ FL_DARKRED,
+ FL_DARKSALMON,
+ FL_DARKSEAGREEN,
+ FL_DARKSLATEBLUE,
+ FL_DARKSLATEGRAY,
+ FL_DARKSLATEGREY,
+ FL_DARKTURQUOISE,
+ FL_DEEPSKYBLUE,
+ FL_DIMGRAY,
+ FL_DIMGREY,
+ FL_FIREBRICK,
+ FL_FLORALWHITE,
+ FL_FORESTGREEN,
+ FL_FUCHSIA,
+ FL_GAINSBORO,
+ FL_GHOSTWHITE,
+ FL_GOLD,
+ FL_GOLDENROD,
+ FL_GRAY,
+ FL_GREENYELLOW,
+ FL_GREY,
+ FL_HONEYDEW,
+ FL_HOTPINK,
+ FL_INDIGO,
+ FL_IVORY,
+ FL_KHAKI,
+ FL_LAVENDER,
+ FL_LAVENDERBLUSH,
+ FL_LAWNGREEN,
+ FL_LEMONCHIFFON,
+ FL_LIGHTBLUE,
+ FL_LIGHTCORAL,
+ FL_LIGHTCYAN,
+ FL_LIGHTGOLDENRODYELLOW,
+ FL_LIGHTGRAY,
+ FL_LIGHTGREEN,
+ FL_LIGHTGREY,
+ FL_LIGHTPINK,
+ FL_LIGHTSALMON,
+ FL_LIGHTSEAGREEN,
+ FL_LIGHTSKYBLUE,
+ FL_LIGHTSLATEGRAY,
+ FL_LIGHTSLATEGREY,
+ FL_LIGHTSTEELBLUE,
+ FL_LIGHTYELLOW,
+ FL_LIME,
+ FL_LIMEGREEN,
+ FL_LINEN,
+ FL_MAROON,
+ FL_MEDIUMAQUAMARINE,
+ FL_MEDIUMBLUE,
+ FL_MEDIUMORCHID,
+ FL_MEDIUMPURPLE,
+ FL_MEDIUMSEAGREEN,
+ FL_MEDIUMSLATEBLUE,
+ FL_MEDIUMSPRINGGREEN,
+ FL_MEDIUMTURQUOISE,
+ FL_MEDIUMVIOLETRED,
+ FL_MIDNIGHTBLUE,
+ FL_MINTCREAM,
+ FL_MISTYROSE,
+ FL_MOCCASIN,
+ FL_NAVAJOWHITE,
+ FL_NAVY,
+ FL_OLDLACE,
+ FL_OLIVE,
+ FL_OLIVEDRAB,
+ FL_ORANGE,
+ FL_ORANGERED,
+ FL_PALEGOLDENROD,
+ FL_PALETURQUOISE,
+ FL_PALEVIOLETRED,
+ FL_PAPAYAWHIP,
+ FL_PEACHPUFF,
+ FL_PERU,
+ FL_PINK,
+ FL_PLUM,
+ FL_POWDERBLUE,
+ FL_PURPLE,
+ FL_ROSYBROWN,
+ FL_ROYALBLUE,
+ FL_SADDLEBROWN,
+ FL_SALMON,
+ FL_SANDYBROWN,
+ FL_SEAGREEN,
+ FL_SEASHELL,
+ FL_SIENNA,
+ FL_SILVER,
+ FL_SKYBLUE,
+ FL_SLATEGRAY,
+ FL_SLATEGREY,
+ FL_SNOW,
+ FL_STEELBLUE,
+ FL_TAN,
+ FL_TEAL,
+ FL_THISTLE,
+ FL_TURQUOISE,
+ FL_VIOLET,
+ FL_WHITESMOKE,
+ FL_YELLOWGREEN,
+ FL_FREE_COL1 = 256,
+ FL_FREE_COL2,
+ FL_FREE_COL3,
+ FL_FREE_COL4,
+ FL_FREE_COL5,
+ FL_FREE_COL6,
+ FL_FREE_COL7,
+ FL_FREE_COL8,
+ FL_FREE_COL9,
+ FL_FREE_COL10,
+ FL_FREE_COL11,
+ FL_FREE_COL12,
+ FL_FREE_COL13,
+ FL_FREE_COL14,
+ FL_FREE_COL15,
+ FL_FREE_COL16,
+ FL_NOCOLOR = 2147483647
+} FL_PD_COL;
+
+
+#define FL_BUILT_IN_COLS ( FL_YELLOWGREEN + 1 )
+#define FL_INACTIVE_COL FL_INACTIVE
+
+/* Some aliases for a number of colors */
+
+#define FL_GRAY16 FL_RIGHT_BCOL
+#define FL_GRAY35 FL_BOTTOM_BCOL
+#define FL_GRAY80 FL_TOP_BCOL
+#define FL_GRAY90 FL_LEFT_BCOL
+#define FL_GRAY63 FL_COL1
+#define FL_GRAY75 FL_MCOL
+#define FL_LCOL FL_BLACK
+#define FL_NoColor FL_NOCOLOR
+
+/* An alias probably for an earlier typo */
+
+#define FL_DOGERBLUE FL_DODGERBLUE
+
+/* Events that a form reacts to */
+
+typedef enum {
+ FL_NOEVENT, /* 0 No event */
+ FL_DRAW, /* 1 object is asked to redraw itself */
+ FL_PUSH, /* 2 mouse button was pressed on the object */
+ FL_RELEASE, /* 3 mouse button was release gain */
+ FL_ENTER, /* 4 mouse entered the object */
+ FL_LEAVE, /* 5 mouse left the object */
+ FL_MOTION, /* 6 mouse motion over the object happend */
+ FL_FOCUS, /* 7 object obtained focus */
+ FL_UNFOCUS, /* 8 object lost focus */
+ FL_KEYPRESS, /* 9 key was pressed while object has focus */
+ FL_UPDATE, /* 10 for objects that need to update something
+ from time to time */
+ FL_STEP, /* 11 */
+ FL_SHORTCUT, /* 12 */
+ FL_FREEMEM, /* 13 object is asked to free all its memory */
+ FL_OTHER, /* 14 property, selection etc */
+ FL_DRAWLABEL, /* 15 */
+ FL_DBLCLICK, /* 16 double click on object */
+ FL_TRPLCLICK, /* 17 triple click on object */
+ FL_ATTRIB, /* 18 an object attribute changed */
+ FL_KEYRELEASE, /* 19 key was released while object has focus */
+ FL_PS, /* 20 dump a form into EPS */
+ FL_MOVEORIGIN, /* 21 dragging the form across the screen
+ changes its absolute x,y coords. Objects
+ that themselves contain forms should
+ ensure that they are up to date. */
+ FL_RESIZED, /* 22 the object has been resized by scale_form
+ Tell it that this has happened so that
+ it can resize any FL_FORMs that it
+ contains. */
+ FL_PASTE, /* 23 text was pasted into input object */
+ FL_TRIGGER, /* 24 result of fl_trigger_object() */
+
+ /* The following are only for backward compatibility, not used anymore */
+
+ FL_MOVE = FL_MOTION,
+ FL_KEYBOARD = FL_KEYPRESS,
+ FL_MOUSE = FL_UPDATE
+} FL_EVENTS;
+
+
+/* Resize policies */
+
+typedef enum {
+ FL_RESIZE_NONE,
+ FL_RESIZE_X,
+ FL_RESIZE_Y,
+ FL_RESIZE_ALL = ( FL_RESIZE_X | FL_RESIZE_Y )
+} FL_RESIZE_T;
+
+
+/* Keyboard focus control */
+
+typedef enum {
+ FL_KEY_NORMAL = 1, /* normal keys(0-255) - tab +left/right */
+ FL_KEY_TAB = 2, /* normal keys + 4 direction cursor */
+ FL_KEY_SPECIAL = 4, /* only needs special keys (>255) */
+ FL_KEY_ALL = 7 /* all keys */
+} FL_KEY;
+
+#define FL_ALT_MASK ( 1L << 25 ) /* alt + Key --> FL_ALT_MASK + key */
+#define FL_CONTROL_MASK ( 1L << 26 )
+#define FL_SHIFT_MASK ( 1L << 27 )
+#define FL_ALT_VAL FL_ALT_MASK /* Don' use! */
+
+#define MAX_SHORTCUTS 8
+
+/* Pop-up menu item attributes. NOTE if more than 8, need to change
+ * choice and menu class where mode is kept by a single byte */
+
+enum {
+ FL_PUP_NONE,
+ FL_PUP_GREY = 1,
+ FL_PUP_BOX = 2,
+ FL_PUP_CHECK = 4,
+ FL_PUP_RADIO = 8
+};
+
+#define FL_PUP_GRAY FL_PUP_GREY
+#define FL_PUP_TOGGLE FL_PUP_BOX /* not used anymore */
+#define FL_PUP_INACTIVE FL_PUP_GREY
+
+/* Popup and menu entries */
+
+typedef int ( * FL_PUP_CB )( int ); /* callback prototype */
+
+typedef struct {
+ const char * text; /* label of a popup/menu item */
+ FL_PUP_CB callback; /* the callback function */
+ const char * shortcut; /* hotkeys */
+ int mode; /* FL_PUP_GRAY, FL_PUP_CHECK etc */
+} FL_PUP_ENTRY;
+
+#define FL_MENU_ENTRY FL_PUP_ENTRY
+
+/*******************************************************************
+ * FONTS
+ ******************************************************************/
+
+#define FL_MAXFONTS 48 /* max number of fonts */
+
+typedef enum {
+ FL_INVALID_STYLE = -1,
+ FL_NORMAL_STYLE,
+ FL_BOLD_STYLE,
+ FL_ITALIC_STYLE,
+ FL_BOLDITALIC_STYLE,
+
+ FL_FIXED_STYLE,
+ FL_FIXEDBOLD_STYLE,
+ FL_FIXEDITALIC_STYLE,
+ FL_FIXEDBOLDITALIC_STYLE,
+
+ FL_TIMES_STYLE,
+ FL_TIMESBOLD_STYLE,
+ FL_TIMESITALIC_STYLE,
+ FL_TIMESBOLDITALIC_STYLE,
+
+ FL_MISC_STYLE,
+ FL_MISCBOLD_STYLE,
+ FL_MISCITALIC_STYLE,
+ FL_SYMBOL_STYLE,
+
+ /* modfier masks. Need to fit a short */
+
+ FL_SHADOW_STYLE = ( 1 << 9 ),
+ FL_ENGRAVED_STYLE = ( 1 << 10 ),
+ FL_EMBOSSED_STYLE = ( 1 << 11 )
+} FL_TEXT_STYLE;
+
+#define FL_FONT_STYLE FL_TEXT_STYLE
+
+#define special_style( a ) ( ( a ) >= FL_SHADOW_STYLE \
+ && ( a ) <= ( FL_EMBOSSED_STYLE + FL_MAXFONTS ) )
+
+/* Standard sizes in XForms */
+
+#define FL_TINY_SIZE 8
+#define FL_SMALL_SIZE 10
+#define FL_NORMAL_SIZE 12
+#define FL_MEDIUM_SIZE 14
+#define FL_LARGE_SIZE 18
+#define FL_HUGE_SIZE 24
+
+#define FL_DEFAULT_SIZE FL_SMALL_SIZE
+
+/* Defines for compatibility */
+
+#define FL_TINY_FONT FL_TINY_SIZE
+#define FL_SMALL_FONT FL_SMALL_SIZE
+#define FL_NORMAL_FONT FL_NORMAL_SIZE
+#define FL_MEDIUM_FONT FL_MEDIUM_SIZE
+#define FL_LARGE_FONT FL_LARGE_SIZE
+#define FL_HUGE_FONT FL_HUGE_SIZE
+
+#define FL_NORMAL_FONT1 FL_SMALL_FONT
+#define FL_NORMAL_FONT2 FL_NORMAL_FONT
+#define FL_DEFAULT_FONT FL_SMALL_FONT
+
+#define FL_BOUND_WIDTH ( FL_Coord ) 1 /* Border width of boxes */
+
+/* Definition of basic struct that holds an object */
+
+#define FL_CLICK_TIMEOUT 400 /* double click interval */
+
+typedef struct FL_FORM_ FL_FORM;
+typedef struct FL_OBJECT_ FL_OBJECT;
+typedef struct FL_pixmap_ FL_pixmap;
+
+struct FL_OBJECT_ {
+ FL_FORM * form; /* the form this object belongs to */
+ void * u_vdata; /* anything the user likes */
+ char * u_cdata; /* anything the user likes */
+ long u_ldata; /* anything the user likes */
+
+ int objclass; /* class of object, button, slider etc */
+ int type; /* type within the class */
+ int boxtype; /* what kind of box type */
+ FL_Coord x, /* current obj. location and size */
+ y,
+ w,
+ h;
+ double fl1, /* distances of upper left hand (1) and */
+ fr1, /* lower right hand corner (2) to left, */
+ ft1, /* right, top and bottom of enclosing */
+ fb1, /* form */
+ fl2,
+ fr2,
+ ft2,
+ fb2;
+ FL_Coord bw;
+ FL_COLOR col1, /* colors of obj */
+ col2;
+ char * label; /* object label */
+ FL_COLOR lcol; /* label color */
+ int align;
+ int lsize, /* label size and style */
+ lstyle;
+ long * shortcut;
+ int ( * handle )( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord,
+ int,
+ void * );
+ void ( * object_callback )( FL_OBJECT *,
+ long );
+ long argument;
+ void * spec; /* instantiation */
+
+ int ( * prehandle )( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord,
+ int,
+ void * );
+ int ( * posthandle )( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord,
+ int,
+ void * );
+ void ( * set_return )( FL_OBJECT *,
+ unsigned int );
+
+ /* Re-configure preference */
+
+ unsigned int resize; /* what to do if WM resizes the FORM */
+ unsigned int nwgravity; /* how to re-position top-left corner */
+ unsigned int segravity; /* how to re-position lower-right corner */
+
+ FL_OBJECT * prev; /* prev. obj in form */
+ FL_OBJECT * next; /* next. obj in form */
+
+ FL_OBJECT * parent;
+ FL_OBJECT * child;
+ FL_OBJECT * nc; /* next child */
+
+ FL_pixmap * flpixmap; /* pixmap double buffering stateinfo */
+ int use_pixmap; /* true to use pixmap double buffering*/
+
+ /* Some interaction flags */
+
+ int returned; /* what last interaction returned */
+ unsigned int how_return; /* under which conditions to return */
+ int double_buffer; /* only used by mesa/gl canvas */
+ int pushed;
+ int focus;
+ int belowmouse;
+ int active; /* if object accepts events */
+ int input;
+ int wantkey;
+ int radio;
+ int automatic;
+ int redraw;
+ int visible;
+ int is_under; /* if (partially) hidden by other object */
+ int clip;
+ unsigned long click_timeout;
+ void * c_vdata; /* for class use */
+ char * c_cdata; /* for class use */
+ long c_ldata; /* for class use */
+ FL_COLOR dbl_background; /* double buffer background */
+ char * tooltip;
+ int tipID;
+ int group_id;
+ int want_motion;
+ int want_update;
+};
+
+
+/* Callback function for an entire form */
+
+typedef void ( * FL_FORMCALLBACKPTR )( FL_OBJECT *,
+ void * );
+/* Object callback function */
+
+typedef void ( * FL_CALLBACKPTR )( FL_OBJECT *,
+ long );
+
+/* Preemptive callback function */
+
+typedef int ( * FL_RAW_CALLBACK )( FL_FORM *,
+ void * );
+
+/* At close (WM menu delete/close etc.) function */
+
+typedef int ( * FL_FORM_ATCLOSE )( FL_FORM *,
+ void * );
+/* Deactivate/activate callback */
+
+typedef void ( * FL_FORM_ATDEACTIVATE )( FL_FORM *,
+ void * );
+typedef void ( * FL_FORM_ATACTIVATE )( FL_FORM *,
+ void * );
+
+typedef int ( * FL_HANDLEPTR )( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord,
+ int,
+ void * );
+
+/* Error callback */
+
+typedef void ( * FL_ERROR_FUNC )( const char *,
+ const char *,
+ ... );
+
+extern FL_OBJECT *FL_EVENT;
+
+/*** FORM ****/
+
+/* Form visibility state: form->visible */
+
+enum {
+ FL_BEING_HIDDEN = -1,
+ FL_HIDDEN = 0,
+ FL_INVISIBLE = FL_HIDDEN,
+ FL_VISIBLE = 1
+};
+
+struct FL_FORM_ {
+ void * fdui; /* for fdesign */
+ void * u_vdata; /* for application */
+ char * u_cdata; /* for application */
+ long u_ldata; /* for application */
+
+ char * label; /* window title */
+ Window window; /* X resource ID for window */
+ FL_Coord x, /* current geometry info */
+ y,
+ w,
+ h;
+ int handle_dec_x,
+ handle_dec_y;
+ FL_Coord hotx, /* hot-spot of the form */
+ hoty;
+ double w_hr, /* high resolution width and height */
+ h_hr; /* (needed for precise scaling) */
+
+ FL_OBJECT * first;
+ FL_OBJECT * last;
+ FL_OBJECT * focusobj;
+
+ FL_FORMCALLBACKPTR form_callback;
+ FL_FORM_ATACTIVATE activate_callback;
+ FL_FORM_ATDEACTIVATE deactivate_callback;
+ void * form_cb_data;
+ void * activate_data;
+ void * deactivate_data;
+
+ FL_RAW_CALLBACK key_callback;
+ FL_RAW_CALLBACK push_callback;
+ FL_RAW_CALLBACK crossing_callback;
+ FL_RAW_CALLBACK motion_callback;
+ FL_RAW_CALLBACK all_callback;
+
+ unsigned long compress_mask;
+ unsigned long evmask;
+
+ /* WM_DELETE_WINDOW message handler */
+
+ FL_FORM_ATCLOSE close_callback;
+ void * close_data;
+
+ FL_pixmap * flpixmap; /* back buffer */
+
+ Pixmap icon_pixmap;
+ Pixmap icon_mask;
+
+ /* Interaction and other flags */
+
+ int deactivated; /* non-zero if deactivated */
+ int use_pixmap; /* true if dbl buffering */
+ int frozen; /* true if sync change */
+ int visible; /* true if mapped */
+ int wm_border; /* window manager info */
+ unsigned int prop; /* other attributes */
+ int num_auto_objects;
+ int needs_full_redraw;
+ int sort_of_modal; /* internal use */
+ FL_FORM * parent;
+ FL_FORM * child;
+ FL_OBJECT * parent_obj;
+ int attached; /* not independent anymore */
+ void ( * pre_attach )( FL_FORM * );
+ void * attach_data;
+ int in_redraw;
+};
+
+
+/* All FD_xxx structure emitted by fdesign contains at least the
+ * following */
+
+typedef struct {
+ FL_FORM * form;
+ void * vdata;
+ char * cdata;
+ long ldata;
+} FD_Any;
+
+/* Async IO stuff */
+
+enum {
+ FL_READ = 1,
+ FL_WRITE = 2,
+ FL_EXCEPT = 4
+};
+
+/* IO other than XEvent Q */
+
+typedef void ( * FL_IO_CALLBACK )( int,
+ void * );
+
+extern void fl_add_io_callback( int fd,
+ unsigned int mask,
+ FL_IO_CALLBACK callback,
+ void * data );
+
+extern void fl_remove_io_callback( int fd,
+ unsigned int mask,
+ FL_IO_CALLBACK cb );
+
+/* signals */
+
+typedef void ( * FL_SIGNAL_HANDLER )( int,
+ void * );
+
+extern void fl_add_signal_callback( int s,
+ FL_SIGNAL_HANDLER cb,
+ void * data );
+
+extern void fl_remove_signal_callback( int s );
+
+extern void fl_signal_caught( int s );
+
+extern void fl_app_signal_direct( int y );
+
+
+enum {
+ FL_INPUT_END_EVENT_CLASSIC = 0,
+ FL_INPUT_END_EVENT_ALWAYS = 1
+};
+
+extern int fl_input_end_return_handling( int type );
+
+
+/* Timeouts */
+
+typedef void (* FL_TIMEOUT_CALLBACK )( int, void * );
+
+extern int fl_add_timeout( long msec,
+ FL_TIMEOUT_CALLBACK callback,
+ void * data );
+
+extern void fl_remove_timeout( int id );
+
+/* Basic public routine prototypes */
+
+extern int fl_library_version( int * ver,
+ int * rev );
+
+extern long fl_library_full_version( int * version,
+ int * revision,
+ int * fix_level,
+ const char ** extra );
+
+/** Generic routines that deal with FORMS **/
+
+extern FL_FORM * fl_bgn_form( int type,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_end_form( void );
+
+extern FL_OBJECT * fl_do_forms( void );
+
+extern FL_OBJECT * fl_check_forms( void );
+
+extern FL_OBJECT * fl_do_only_forms( void );
+
+extern FL_OBJECT * fl_check_only_forms( void );
+
+extern void fl_freeze_form( FL_FORM * form );
+
+extern void fl_set_focus_object( FL_FORM * form,
+ FL_OBJECT * obj );
+
+extern FL_OBJECT *fl_get_focus_object( FL_FORM * form );
+
+extern void fl_reset_focus_object( FL_OBJECT * ob );
+
+#define fl_set_object_focus fl_set_focus_object
+
+extern FL_FORM_ATCLOSE fl_set_form_atclose( FL_FORM * form,
+ FL_FORM_ATCLOSE fmclose,
+ void * data );
+
+extern FL_FORM_ATCLOSE fl_set_atclose( FL_FORM_ATCLOSE fmclose,
+ void * data );
+
+extern FL_FORM_ATACTIVATE fl_set_form_atactivate( FL_FORM * form,
+ FL_FORM_ATACTIVATE cb,
+ void * data );
+
+extern FL_FORM_ATDEACTIVATE fl_set_form_atdeactivate( FL_FORM * form,
+ FL_FORM_ATDEACTIVATE cb,
+ void * data );
+
+extern void fl_unfreeze_form( FL_FORM * form );
+
+extern int fl_form_is_activated( FL_FORM * form );
+
+extern void fl_deactivate_form( FL_FORM * form );
+
+extern void fl_activate_form( FL_FORM * form );
+
+extern void fl_deactivate_all_forms( void );
+
+extern void fl_activate_all_forms( void );
+
+extern void fl_freeze_all_forms( void );
+
+extern void fl_unfreeze_all_forms( void );
+
+extern void fl_scale_form( FL_FORM * form,
+ double xsc,
+ double ysc );
+
+extern void fl_set_form_position( FL_FORM * form,
+ FL_Coord x,
+ FL_Coord y );
+
+extern void fl_set_form_title( FL_FORM * form,
+ const char * name );
+
+extern void fl_set_form_title_f( FL_FORM * form,
+ const char * fmt,
+ ... );
+
+extern void fl_set_app_mainform( FL_FORM * form );
+
+extern FL_FORM * fl_get_app_mainform( void );
+
+extern void fl_set_app_nomainform( int flag );
+
+extern void fl_set_form_callback( FL_FORM * form,
+ FL_FORMCALLBACKPTR callback,
+ void * d );
+
+#define fl_set_form_call_back fl_set_form_callback
+
+extern void fl_set_form_size( FL_FORM * form,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_set_form_background_color( FL_FORM * form,
+ FL_COLOR color );
+
+extern FL_COLOR fl_get_form_background_color( FL_FORM * form );
+
+extern void fl_set_form_hotspot( FL_FORM * form,
+ FL_Coord x,
+ FL_Coord y );
+
+extern void fl_set_form_hotobject( FL_FORM * form,
+ FL_OBJECT * ob );
+
+extern void fl_set_form_minsize( FL_FORM * form,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_set_form_maxsize( FL_FORM * form,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_set_form_event_cmask( FL_FORM * form,
+ unsigned long cmask );
+
+extern unsigned long fl_get_form_event_cmask( FL_FORM * form );
+
+extern void fl_set_form_geometry( FL_FORM * form,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+#define fl_set_initial_placement fl_set_form_geometry
+
+extern Window fl_show_form( FL_FORM * form,
+ int place,
+ int border,
+ const char * name );
+
+extern Window fl_show_form_f( FL_FORM * form,
+ int place,
+ int border,
+ const char * fmt,
+ ... );
+
+extern void fl_hide_form( FL_FORM * form );
+
+extern void fl_free_form( FL_FORM * form );
+
+extern void fl_redraw_form( FL_FORM * form );
+
+extern void fl_set_form_dblbuffer( FL_FORM * form,
+ int y );
+
+extern Window fl_prepare_form_window( FL_FORM * form,
+ int place,
+ int border,
+ const char * name );
+
+extern Window fl_prepare_form_window_f( FL_FORM * form,
+ int place,
+ int border,
+ const char * fmt,
+ ... );
+
+extern Window fl_show_form_window( FL_FORM * form );
+
+extern double fl_adjust_form_size( FL_FORM * form );
+
+extern int fl_form_is_visible( FL_FORM * form );
+
+extern int fl_form_is_iconified( FL_FORM * form );
+
+extern FL_RAW_CALLBACK fl_register_raw_callback( FL_FORM * form,
+ unsigned long mask,
+ FL_RAW_CALLBACK rcb );
+
+#define fl_register_call_back fl_register_raw_callback
+
+extern FL_OBJECT * fl_bgn_group( void );
+
+extern void fl_end_group( void );
+
+extern FL_OBJECT *fl_addto_group( FL_OBJECT * group );
+
+
+/****** Routines that deal with FL_OBJECTS ********/
+
+extern int fl_get_object_objclass( FL_OBJECT * obj );
+
+extern int fl_get_object_type( FL_OBJECT * obj );
+
+extern void fl_set_object_boxtype( FL_OBJECT * ob,
+ int boxtype );
+
+extern int fl_get_object_boxtype( FL_OBJECT * obj );
+
+extern void fl_set_object_bw( FL_OBJECT * ob,
+ int bw );
+
+extern int fl_get_object_bw( FL_OBJECT * ob );
+
+extern void fl_set_object_resize( FL_OBJECT * ob,
+ unsigned int what );
+
+extern void fl_get_object_resize( FL_OBJECT * ob,
+ unsigned int * what );
+
+extern void fl_set_object_gravity( FL_OBJECT * ob,
+ unsigned int nw,
+ unsigned int se );
+
+extern void fl_get_object_gravity( FL_OBJECT * ob,
+ unsigned int * nw,
+ unsigned int * se );
+
+extern void fl_set_object_lsize( FL_OBJECT * obj,
+ int lsize );
+
+extern int fl_get_object_lsize( FL_OBJECT * obj );
+
+
+extern void fl_set_object_lstyle( FL_OBJECT * obj,
+ int lstyle );
+
+extern int fl_get_object_lstyle( FL_OBJECT * obj );
+
+extern void fl_set_object_lcol( FL_OBJECT * ob,
+ FL_COLOR lcol );
+
+extern FL_COLOR fl_get_object_lcol( FL_OBJECT * obj );
+
+extern int fl_set_object_return( FL_OBJECT * ob,
+ unsigned int when );
+
+extern void fl_set_object_lalign( FL_OBJECT * obj,
+ int align );
+
+extern int fl_get_object_lalign( FL_OBJECT * obj );
+
+extern void fl_set_object_shortcut( FL_OBJECT * obj,
+ const char * sstr,
+ int showit );
+
+extern void fl_set_object_shortcutkey( FL_OBJECT * obj,
+ unsigned int keysym );
+
+extern void fl_set_object_dblbuffer( FL_OBJECT * ob,
+ int y );
+
+extern void fl_set_object_color( FL_OBJECT * ob,
+ FL_COLOR col1,
+ FL_COLOR col2 );
+
+extern void fl_get_object_color( FL_OBJECT * obj,
+ FL_COLOR * col1,
+ FL_COLOR * col2 );
+
+extern void fl_set_object_label( FL_OBJECT * ob,
+ const char * label );
+
+extern void fl_set_object_label_f( FL_OBJECT * obj,
+ const char * fmt,
+ ... );
+
+extern const char * fl_get_object_label( FL_OBJECT * obj );
+
+extern void fl_set_object_helper( FL_OBJECT * ob,
+ const char * tip );
+
+extern void fl_set_object_helper_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+extern void fl_set_object_position( FL_OBJECT * obj,
+ FL_Coord x,
+ FL_Coord y );
+
+extern void fl_get_object_size( FL_OBJECT * obj,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern void fl_set_object_size( FL_OBJECT * obj,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_set_object_automatic( FL_OBJECT * obj,
+ int flag );
+
+extern int fl_object_is_automatic( FL_OBJECT * obj );
+
+extern void fl_draw_object_label( FL_OBJECT * ob );
+
+extern void fl_draw_object_label_outside( FL_OBJECT * ob );
+
+extern FL_OBJECT * fl_get_object_component( FL_OBJECT * composite,
+ int objclass,
+ int type,
+ int numb );
+
+extern void fl_for_all_objects( FL_FORM * form,
+ int ( * cb )( FL_OBJECT *, void * ),
+ void * v );
+
+#define fl_draw_object_outside_label fl_draw_object_label_outside
+
+extern void fl_set_object_dblclick( FL_OBJECT * obj,
+ unsigned long timeout );
+
+extern unsigned long fl_get_object_dblclick( FL_OBJECT * obj );
+
+extern void fl_set_object_geometry( FL_OBJECT * obj,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_move_object( FL_OBJECT * obj,
+ FL_Coord dx,
+ FL_Coord dy );
+
+#define fl_set_object_lcolor fl_set_object_lcol
+#define fl_get_object_lcolor fl_get_object_lcol
+
+extern void fl_fit_object_label( FL_OBJECT * obj,
+ FL_Coord xmargin,
+ FL_Coord ymargin );
+
+extern void fl_get_object_geometry( FL_OBJECT * ob,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern void fl_get_object_position( FL_OBJECT * ob,
+ FL_Coord * x,
+ FL_Coord * y );
+
+/* This one takes into account the label */
+
+extern void fl_get_object_bbox( FL_OBJECT * obj,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+#define fl_compute_object_geometry fl_get_object_bbox
+
+extern void fl_call_object_callback( FL_OBJECT * ob );
+
+extern FL_HANDLEPTR fl_set_object_prehandler( FL_OBJECT * ob,
+ FL_HANDLEPTR phandler );
+
+extern FL_HANDLEPTR fl_set_object_posthandler( FL_OBJECT * ob,
+ FL_HANDLEPTR post );
+
+extern FL_CALLBACKPTR fl_set_object_callback( FL_OBJECT * obj,
+ FL_CALLBACKPTR callback,
+ long argument );
+
+#define fl_set_object_align fl_set_object_lalign
+#define fl_set_call_back fl_set_object_callback
+
+extern void fl_redraw_object( FL_OBJECT * obj );
+
+extern void fl_show_object( FL_OBJECT * ob );
+
+extern void fl_hide_object( FL_OBJECT * ob );
+
+extern int fl_object_is_visible( FL_OBJECT * obj );
+
+extern void fl_free_object( FL_OBJECT * obj );
+
+extern void fl_delete_object( FL_OBJECT * obj );
+
+extern int fl_get_object_return_state( FL_OBJECT *obj );
+
+extern void fl_trigger_object( FL_OBJECT * obj );
+
+extern void fl_activate_object( FL_OBJECT * ob );
+
+extern void fl_deactivate_object( FL_OBJECT * ob );
+
+extern int fl_object_is_active( FL_OBJECT * obj );
+
+extern int fl_enumerate_fonts( void ( * output )( const char * s ),
+ int shortform );
+
+extern int fl_set_font_name( int n,
+ const char * name );
+
+extern int fl_set_font_name_f( int n,
+ const char * fmt,
+ ... );
+
+extern void fl_set_font( int numb,
+ int size );
+
+/* Routines that facilitate free object */
+
+extern int fl_get_char_height( int style,
+ int size,
+ int * asc,
+ int * desc );
+
+extern int fl_get_char_width( int style,
+ int size );
+
+extern int fl_get_string_height( int style,
+ int size,
+ const char * s,
+ int len,
+ int * asc,
+ int * desc );
+
+extern int fl_get_string_width( int style,
+ int size,
+ const char * s,
+ int len );
+
+extern int fl_get_string_widthTAB( int style,
+ int size,
+ const char * s,
+ int len );
+
+extern void fl_get_string_dimension( int fntstyle,
+ int fntsize,
+ const char * s,
+ int len,
+ int * width,
+ int * height );
+
+#define fl_get_string_size fl_get_string_dimension
+
+extern void fl_get_align_xy( int align,
+ int x,
+ int y,
+ int w,
+ int h,
+ int xsize,
+ int ysize,
+ int xoff,
+ int yoff,
+ int * xx,
+ int * yy );
+
+extern int fl_get_label_char_at_mouse( FL_OBJECT * obj );
+
+extern void fl_drw_text( int align,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR c,
+ int style,
+ int size,
+ const char * istr );
+
+extern void fl_drw_text_beside( int align,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR c,
+ int style,
+ int size,
+ const char * str );
+
+extern void fl_drw_text_cursor( int align,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR c,
+ int style,
+ int size,
+ const char * str,
+ int cc,
+ int pos );
+
+extern void fl_drw_box( int style,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR c,
+ int bw_in );
+
+typedef void ( * FL_DRAWPTR )( FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ int,
+ FL_COLOR);
+
+extern int fl_add_symbol( const char * name,
+ FL_DRAWPTR drawit,
+ int scalable );
+
+extern int fl_delete_symbol( const char * name );
+
+extern int fl_draw_symbol( const char * label,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col );
+
+extern unsigned long fl_mapcolor( FL_COLOR col,
+ int r,
+ int g,
+ int b );
+
+extern long fl_mapcolorname( FL_COLOR col,
+ const char * name );
+
+#define fl_mapcolor_name fl_mapcolorname
+
+extern void fl_free_colors( FL_COLOR * c,
+ int n );
+
+extern void fl_free_pixels( unsigned long * pix,
+ int n );
+
+extern void fl_set_color_leak( int y );
+
+extern unsigned long fl_getmcolor( FL_COLOR i,
+ int * r,
+ int * g,
+ int * b );
+
+extern unsigned long fl_get_pixel( FL_COLOR col );
+
+#define fl_get_flcolor fl_get_pixel
+
+extern void fl_get_icm_color( FL_COLOR col,
+ int * r,
+ int * g,
+ int * b );
+
+extern void fl_set_icm_color( FL_COLOR col,
+ int r,
+ int g,
+ int b );
+
+extern void fl_color( FL_COLOR col );
+
+extern void fl_bk_color( FL_COLOR col );
+
+extern void fl_set_gamma( double r,
+ double g,
+ double b );
+
+extern void fl_show_errors( int y );
+
+/* Some macros */
+
+#define FL_max( a, b ) ( ( a ) > ( b ) ? ( a ) : ( b ) )
+#define FL_min( a, b ) ( ( a ) < ( b ) ? ( a ) : ( b ) )
+#define FL_abs( a ) ( ( a ) > 0 ? ( a ) : ( - ( a ) ) )
+#define FL_nint( a ) ( ( int ) ( ( a ) > 0 ? \
+ ( ( a ) + 0.5 ) : \
+ ( ( a ) - 0.5 ) ) )
+#define FL_clamp( a, amin, amax ) ( ( a ) < ( amin ) ? \
+ ( amin ) : ( ( a ) > ( amax ) ? \
+ ( amax ) : ( a ) ) )
+#define FL_crnd( a ) ( ( FL_Coord ) ( ( a ) > 0 ? \
+ ( ( a ) + 0.5 ) : \
+ ( ( a ) - 0.5 ) ) )
+
+typedef int ( * FL_FSCB )( const char *,
+ void * );
+
+/* Utilities for new objects */
+
+extern FL_FORM *fl_current_form;
+
+extern void fl_add_object( FL_FORM * form,
+ FL_OBJECT * obj );
+
+extern FL_FORM *fl_addto_form( FL_FORM * form );
+
+extern FL_OBJECT * fl_make_object( int objclass,
+ int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label,
+ FL_HANDLEPTR handle );
+
+extern void fl_add_child( FL_OBJECT *,
+ FL_OBJECT * );
+
+extern void fl_set_coordunit( int u );
+
+extern void fl_set_border_width( int bw );
+
+extern void fl_set_scrollbar_type( int t );
+
+#define fl_set_thinscrollbar( t ) \
+ fl_set_scrollbar_type( t ? FL_THIN_SCROLLBAR : FL_NORMAL_SCROLLBAR )
+
+extern void fl_flip_yorigin( void );
+
+extern int fl_get_coordunit( void );
+
+extern int fl_get_border_width( void );
+
+/* Misc. routines */
+
+extern void fl_ringbell( int percent );
+
+extern void fl_gettime( long * sec,
+ long * usec );
+
+extern const char * fl_now( void );
+
+extern const char * fl_whoami( void );
+
+extern long fl_mouse_button( void );
+
+extern int fl_current_event( void );
+
+extern char * fl_strdup( const char * s );
+
+extern void fl_set_err_logfp( FILE * fp );
+
+extern void fl_set_error_handler( FL_ERROR_FUNC user_func );
+
+extern char ** fl_get_cmdline_args( int * );
+
+/* This function was called 'fl_set_error_logfp/' in XForms 0.89. */
+
+#define fl_set_error_logfp fl_set_err_logfp
+
+#define fl_mousebutton fl_mouse_button
+
+/* These give more flexibility for future changes. Also application
+ * can re-assign these pointers to whatever function it wants, e.g.,
+ * to a shared memory pool allocator. */
+
+extern void ( * fl_free )( void * );
+
+extern void * ( * fl_malloc )( size_t );
+
+extern void * ( * fl_calloc )( size_t,
+ size_t );
+
+extern void * ( * fl_realloc )( void *,
+ size_t );
+
+extern int fl_msleep( unsigned long msec );
+
+#define FL_MAX_MENU_CHOICE_ITEMS 128
+
+typedef const char * ( * FL_VAL_FILTER )( FL_OBJECT *,
+ double,
+ int );
+
+extern int fl_is_same_object( FL_OBJECT * obj1,
+ FL_OBJECT * obj2 );
+
+/* ! defined FL_BASIC_H */
+
+
+/**
+ * \file XBasic.h
+ *
+ * X Window dependent stuff
+ *
+ */
+
+
+#define FL_XBASIC_H
+
+/* Draw mode */
+
+enum {
+ FL_XOR = 0x6 ,
+ FL_COPY = 0x3 ,
+ FL_AND = 0x1
+};
+
+#define FL_MINDEPTH 1
+
+
+/* FL_xxx does not do anything anymore, but kept for compatibility */
+
+enum {
+ FL_IllegalVisual = -1,
+ FL_StaticGray = 0 ,
+ FL_GrayScale = 1 ,
+ FL_StaticColor = 2 ,
+ FL_PseudoColor = 3 ,
+ FL_TrueColor = 4 ,
+ FL_DirectColor = 5 ,
+ FL_DefaultVisual = 10 /* special request */
+};
+
+
+enum {
+ FL_North = 2 ,
+ FL_NorthEast = 3 ,
+ FL_NorthWest = 1 ,
+ FL_South = 8 ,
+ FL_SouthEast = 9 ,
+ FL_SouthWest = 7 ,
+ FL_East = 6 ,
+ FL_West = 4 ,
+ FL_NoGravity = 0 ,
+ FL_ForgetGravity = 0
+};
+
+
+#define GreyScale GrayScale
+#define StaticGrey StaticGray
+
+
+#define FL_is_gray( v ) ( ( v ) == GrayScale || ( v ) == StaticGray )
+#define FL_is_rgb( v ) ( ( v ) == TrueColor || ( v ) == DirectColor )
+
+
+/* Internal colormap size. Not really very meaningful as fl_mapcolor
+ * and company allow color "leakage", that is, although only FL_MAX_COLS
+ * are kept in the internal colormap, the server might have substantially
+ * more colors allocated */
+
+#define FL_MAX_COLORS 1024
+#define FL_MAX_COLS FL_MAX_COLORS
+
+
+/* FL graphics state information. Some are redundant. */
+
+typedef struct {
+ XVisualInfo * xvinfo;
+ XFontStruct * cur_fnt; /* current font in default GC */
+ Colormap colormap; /* colormap valid for xvinfo */
+ Window trailblazer; /* a valid window for xvinfo */
+ int vclass, /* visual class and color depth */
+ depth;
+ int rgb_bits; /* primary color resolution */
+ int dithered; /* true if dithered color */
+ int pcm; /* true if colormap is not shared */
+ GC gc[ 16 ]; /* working GC */
+ GC textgc[ 16 ]; /* GC used exclusively for text */
+ GC dimmedGC; /* A GC having a checkboard stipple */
+ unsigned long lut[ 1024 ]; /* secondary lookup table */
+ unsigned int rshift,
+ rmask,
+ rbits;
+ unsigned int gshift,
+ gmask,
+ gbits;
+ unsigned int bshift,
+ bmask,
+ bbits;
+} FL_State;
+
+#define FL_STATE FL_State /* for compatibility */
+
+
+/***** Global variables ******/
+
+extern Display *fl_display;
+
+extern int fl_screen;
+
+extern Window fl_root; /* root window */
+extern Window fl_vroot; /* virtual root window */
+extern int fl_scrh, /* screen dimension in pixels */
+ fl_scrw;
+extern int fl_vmode;
+
+
+/* Current version only runs in single visual mode */
+
+#define fl_get_vclass( ) fl_vmode
+#define fl_get_form_vclass( a ) fl_vmode
+#define fl_get_gc( ) fl_state[ fl_vmode ].gc[ 0 ]
+
+extern FL_State fl_state[ ];
+
+extern char *fl_ul_magic_char;
+
+extern int fl_mode_capable( int mode,
+ int warn );
+
+
+#define fl_default_win( ) ( fl_state[ fl_vmode ].trailblazer )
+#define fl_default_window( ) ( fl_state[ fl_vmode ].trailblazer )
+
+
+/* All pixmaps used by FL_OBJECT to simulate double buffering have the
+ * following entries in the structure. FL_Coord x,y are used to shift
+ * the origin of the drawing routines */
+
+struct FL_pixmap_ {
+ Pixmap pixmap;
+ Window win;
+ Visual * visual;
+ FL_Coord x,
+ y,
+ w,
+ h;
+ int depth;
+ FL_COLOR dbl_background;
+ FL_COLOR pixel;
+};
+
+
+/* Fonts related */
+
+#define FL_MAX_FONTSIZES 10
+#define FL_MAX_FONTNAME_LENGTH 80
+
+typedef struct {
+ XFontStruct * fs[ 10 ]; /* cached fontstruct */
+ short size[ 10 ]; /* cached sizes */
+ short nsize; /* cached so far */
+ char fname[ 80 + 1 ]; /* without size info */
+} FL_FONT;
+
+/* Some basic drawing routines */
+
+typedef XPoint FL_POINT;
+typedef XRectangle FL_RECT;
+
+/* Rectangles */
+
+extern void fl_rectangle( int fill,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col );
+
+extern void fl_rectbound( FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col );
+
+#define fl_rectf( x, y, w, h, c) fl_rectangle( 1, x, y, w, h, c )
+#define fl_rect( x, y, w, h, c ) fl_rectangle( 0, x, y, w, h, c )
+
+/* Rectangle with rounded-corners */
+
+extern void fl_roundrectangle( int fill,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col );
+
+#define fl_roundrectf( x, y, w, h, c ) fl_roundrectangle( 1, x, y, w, h, c )
+#define fl_roundrect( x, y, w, h, c ) fl_roundrectangle( 0, x, y, w, h, c )
+
+/* General polygon and polylines */
+
+extern void fl_polygon( int fill,
+ FL_POINT * xp,
+ int n,
+ FL_COLOR col );
+
+#define fl_polyf( p, n, c ) fl_polygon( 1, p, n, c )
+#define fl_polyl( p, n, c ) fl_polygon( 0, p, n, c )
+
+#define fl_polybound( p, n, c ) \
+ do { fl_polygon( 1, p, n, c ); \
+ fl_polygon( 0, p, n, FL_BLACK ); \
+ } while( 0 )
+
+extern void fl_lines( FL_POINT * xp,
+ int n,
+ FL_COLOR col );
+
+extern void fl_line( FL_Coord xi,
+ FL_Coord yi,
+ FL_Coord xf,
+ FL_Coord yf,
+ FL_COLOR c );
+
+extern void fl_point( FL_Coord x,
+ FL_Coord y,
+ FL_COLOR c );
+
+extern void fl_points( FL_POINT * p,
+ int np,
+ FL_COLOR c );
+
+#define fl_simple_line fl_line
+
+extern void fl_dashedlinestyle( const char * dash,
+ int ndash );
+
+extern void fl_update_display( int block );
+
+
+#define fl_diagline( x, y, w, h, c ) \
+ fl_line( x, y, ( x ) + ( w ) - 1, ( y ) + ( h ) - 1, c )
+
+/* Line attributes */
+
+enum {
+ FL_SOLID = 0 ,
+ FL_USERDASH = 1 ,
+ FL_USERDOUBLEDASH = 2 ,
+ FL_DOT,
+ FL_DOTDASH,
+ FL_DASH,
+ FL_LONGDASH
+};
+
+extern void fl_linewidth( int n );
+
+extern void fl_linestyle( int n );
+
+extern void fl_drawmode( int request );
+
+extern int fl_get_linewidth( void );
+
+extern int fl_get_linestyle( void );
+
+extern int fl_get_drawmode( void );
+
+#define fl_set_linewidth fl_linewidth
+#define fl_set_linestyle fl_linestyle
+#define fl_set_drawmode fl_drawmode
+
+/** Ellipses **/
+
+extern void fl_circ( FL_Coord x,
+ FL_Coord y,
+ FL_Coord r,
+ FL_COLOR col );
+
+extern void fl_circf( FL_Coord x,
+ FL_Coord y,
+ FL_Coord r,
+ FL_COLOR col );
+
+extern void fl_circbound( FL_Coord x,
+ FL_Coord y,
+ FL_Coord r,
+ FL_COLOR col );
+
+extern void fl_oval( int fill,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col );
+
+extern void fl_ovalbound( FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col );
+
+extern void fl_ovalarc( int fill,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ int t0,
+ int dt,
+ FL_COLOR col );
+
+#define fl_ovalf( x, y, w, h, c ) fl_oval( 1, x, y, w, h, c )
+#define fl_ovall( x, y, w, h, c ) fl_oval( 0, x, y, w, h, c )
+#define fl_oval_bound fl_ovalbound
+
+/* Arcs */
+
+extern void fl_arcf( FL_Coord x,
+ FL_Coord y,
+ FL_Coord r,
+ int a1,
+ int a2,
+ FL_COLOR col );
+
+extern void fl_arc( FL_Coord x,
+ FL_Coord y,
+ FL_Coord r,
+ int a1,
+ int a2,
+ FL_COLOR col );
+
+extern void fl_pieslice( int fill,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ int a1,
+ int a2,
+ FL_COLOR col );
+
+/* High level drawing routines */
+
+extern void fl_drw_frame( int style,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR c,
+ int bw );
+
+/*
+ * Interfaces
+ */
+
+extern XFontStruct *fl_get_fontstruct( int style,
+ int size );
+
+#define fl_get_font_struct fl_get_fontstruct
+#define fl_get_fntstruct fl_get_font_struct
+
+extern Window fl_get_mouse( FL_Coord * x,
+ FL_Coord * y,
+ unsigned int * keymask );
+
+extern void fl_set_mouse( FL_Coord mx,
+ FL_Coord my );
+
+extern Window fl_get_win_mouse( Window win,
+ FL_Coord * x,
+ FL_Coord * y,
+ unsigned int * keymask );
+
+extern Window fl_get_form_mouse( FL_FORM * fm,
+ FL_Coord * x,
+ FL_Coord * y,
+ unsigned int * keymask );
+
+extern FL_FORM * fl_win_to_form( Window win );
+
+extern void fl_set_form_icon( FL_FORM * form,
+ Pixmap p,
+ Pixmap m );
+
+extern int fl_get_decoration_sizes( FL_FORM * form,
+ int * top,
+ int * right,
+ int * bottom,
+ int * left );
+
+extern void fl_raise_form( FL_FORM * form );
+
+extern void fl_lower_form( FL_FORM * form );
+
+extern void fl_set_foreground( GC gc,
+ FL_COLOR color );
+extern void fl_set_background( GC gc,
+ FL_COLOR color );
+
+/* General windowing support */
+
+extern Window fl_wincreate( const char * label );
+
+extern Window fl_winshow( Window win );
+
+extern Window fl_winopen( const char * label );
+
+extern void fl_winhide( Window win );
+
+extern void fl_winclose( Window win );
+
+extern void fl_winset( Window win );
+
+extern int fl_winreparent( Window win,
+ Window new_parent );
+
+extern void fl_winfocus( Window win );
+
+extern Window fl_winget( void );
+
+extern int fl_iconify( Window win );
+
+extern void fl_winresize( Window win,
+ FL_Coord neww,
+ FL_Coord newh );
+
+extern void fl_winmove( Window win,
+ FL_Coord dx,
+ FL_Coord dy );
+
+extern void fl_winreshape( Window win,
+ FL_Coord dx,
+ FL_Coord dy,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_winicon( Window win,
+ Pixmap p,
+ Pixmap m );
+
+extern void fl_winbackground( Window win,
+ unsigned long bk );
+
+extern void fl_winstepsize( Window win,
+ FL_Coord dx,
+ FL_Coord dy );
+
+extern int fl_winisvalid( Window win );
+
+extern void fl_wintitle( Window win,
+ const char * title );
+
+extern void fl_wintitle_f( Window win,
+ const char * fmt,
+ ... );
+
+extern void fl_winicontitle( Window win,
+ const char * title );
+
+extern void fl_winicontitle_f( Window win,
+ const char * fmt,
+ ... );
+
+extern void fl_winposition( FL_Coord x,
+ FL_Coord y );
+
+#define fl_pref_winposition fl_winposition
+#define fl_win_background fl_winbackground
+#define fl_winstepunit fl_winstepsize
+#define fl_set_winstepunit fl_winstepsize
+
+extern void fl_winminsize( Window win,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_winmaxsize( Window win,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_winaspect( Window win,
+ FL_Coord x,
+ FL_Coord y );
+
+extern void fl_reset_winconstraints( Window win );
+
+
+extern void fl_winsize( FL_Coord w,
+ FL_Coord h );
+
+extern void fl_initial_winsize( FL_Coord w,
+ FL_Coord h );
+
+#define fl_pref_winsize fl_winsize
+
+extern void fl_initial_winstate( int state );
+
+extern Colormap fl_create_colormap( XVisualInfo * xv,
+ int nfill );
+
+
+
+extern void fl_wingeometry( FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+#define fl_pref_wingeometry fl_wingeometry
+
+extern void fl_initial_wingeometry( FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_noborder( void );
+
+extern void fl_transient( void );
+
+extern void fl_get_winsize( Window win,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern void fl_get_winorigin( Window win,
+ FL_Coord * x,
+ FL_Coord * y );
+
+extern void fl_get_wingeometry( Window win,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+/* For compatibility */
+
+#define fl_get_win_size fl_get_winsize
+#define fl_get_win_origin fl_get_winorigin
+#define fl_get_win_geometry fl_get_wingeometry
+#define fl_initial_winposition fl_pref_winposition
+
+#define fl_get_display( ) fl_display
+#define FL_FormDisplay( form ) fl_display
+#define FL_ObjectDisplay( object ) fl_display
+#define FL_IS_CANVAS( o ) \
+ ( ( o )->objclass == FL_CANVAS || ( o )->objclass == FL_GLCANVAS )
+
+/* The window an object belongs to - for drawing */
+
+#define FL_ObjWin( o ) \
+ ( FL_IS_CANVAS( o ) ? fl_get_canvas_id( o ) : ( o )->form->window )
+
+
+extern Window fl_get_real_object_window( FL_OBJECT * ob );
+
+#define FL_OBJECT_WID FL_ObjWin
+
+/* All registerable events, including Client Message */
+
+#define FL_ALL_EVENT ( KeyPressMask \
+ | KeyReleaseMask \
+ | ButtonPressMask \
+ | ButtonReleaseMask \
+ | EnterWindowMask \
+ | LeaveWindowMask \
+ | ButtonMotionMask \
+ | PointerMotionMask )
+
+
+/* Replacements for X functions that access the event queue */
+
+extern int fl_XNextEvent( XEvent * xev );
+
+extern int fl_XPeekEvent( XEvent * xev );
+
+extern int fl_XEventsQueued( int mode );
+
+extern void fl_XPutBackEvent( XEvent * xev );
+
+extern const XEvent *fl_last_event( void );
+
+typedef int ( * FL_APPEVENT_CB )( XEvent *, void * );
+
+extern FL_APPEVENT_CB fl_set_event_callback( FL_APPEVENT_CB callback,
+ void * user_data );
+
+extern FL_APPEVENT_CB fl_set_idle_callback( FL_APPEVENT_CB callback,
+ void * user_data );
+
+extern long fl_addto_selected_xevent( Window win,
+ long mask );
+
+extern long fl_remove_selected_xevent( Window win,
+ long mask );
+
+#define fl_add_selected_xevent fl_addto_selected_xevent
+
+extern void fl_set_idle_delta( long delta );
+
+extern FL_APPEVENT_CB fl_add_event_callback( Window win,
+ int ev,
+ FL_APPEVENT_CB wincb,
+ void * user_data );
+
+extern void fl_remove_event_callback( Window win,
+ int ev );
+
+extern void fl_activate_event_callbacks( Window win );
+
+extern XEvent *fl_print_xevent_name( const char * where,
+ const XEvent * xev );
+
+extern void fl_XFlush( void );
+
+#define metakey_down( mask ) ( ( mask ) & Mod1Mask )
+#define shiftkey_down( mask ) ( ( mask ) & ShiftMask )
+#define controlkey_down( mask ) ( ( mask ) & ControlMask )
+#define button_down( mask ) ( ( ( mask ) & Button1Mask ) \
+ || ( ( mask ) & Button2Mask ) \
+ || ( ( mask ) & Button3Mask ) \
+ || ( ( mask ) & Button4Mask ) \
+ || ( ( mask ) & Button5Mask ) )
+
+#define fl_keypressed fl_keysym_pressed
+
+/****************** Resources ***************/
+
+typedef enum {
+ FL_NONE,
+ FL_SHORT = 10,
+ FL_BOOL,
+ FL_INT,
+ FL_LONG,
+ FL_FLOAT,
+ FL_STRING
+} FL_RTYPE;
+
+typedef struct {
+ const char * res_name; /* resource name */
+ const char * res_class; /* resource class */
+ FL_RTYPE type; /* FL_INT, FL_FLOAT, FL_BOOL, FL_STRING */
+ void * var; /* address for the variable */
+ const char * defval; /* default setting in string form */
+ int nbytes; /* used only for strings */
+} FL_RESOURCE;
+
+#define FL_resource FL_RESOURCE
+
+#define FL_CMD_OPT XrmOptionDescRec
+
+extern Display * fl_initialize( int * na,
+ char * arg[ ],
+ const char * appclass,
+ XrmOptionDescRec * appopt,
+ int nappopt );
+
+extern void fl_finish( void );
+
+extern const char * fl_get_resource( const char * rname,
+ const char * cname,
+ FL_RTYPE dtype,
+ const char * defval,
+ void * val,
+ int size );
+
+extern void fl_set_resource( const char * str,
+ const char * val );
+
+extern void fl_get_app_resources( FL_RESOURCE * appresource,
+ int n );
+
+extern void fl_set_visualID( long id );
+
+extern int fl_keysym_pressed( KeySym k );
+
+#define buttonLabelSize buttonFontSize
+#define sliderLabelSize sliderFontSize
+#define inputLabelSize inputFontSize
+
+/* All Form control variables. Named closely as its resource name */
+
+typedef struct {
+ float rgamma,
+ ggamma,
+ bgamma;
+ int debug,
+ sync;
+ int depth,
+ vclass,
+ doubleBuffer;
+ int ulPropWidth, /* underline stuff */
+ ulThickness;
+ int buttonFontSize;
+ int sliderFontSize;
+ int inputFontSize;
+ int browserFontSize;
+ int menuFontSize;
+ int choiceFontSize;
+ int labelFontSize; /* all other labels fonts */
+ int pupFontSize, /* font for pop-up menus */
+ pupFontStyle;
+ int privateColormap;
+ int sharedColormap;
+ int standardColormap;
+ int scrollbarType;
+ int backingStore;
+ int coordUnit;
+ int borderWidth;
+ int safe;
+ char * rgbfile; /* where RGB file is, not used */
+ char vname[ 24 ];
+} FL_IOPT;
+
+#define FL_PDButtonLabelSize FL_PDButtonFontSize
+#define FL_PDSliderLabelSize FL_PDSliderFontSize
+#define FL_PDInputLabelSize FL_PDInputFontSize
+
+/* Program default masks */
+
+enum {
+ FL_PDDepth = ( 1 << 1 ),
+ FL_PDClass = ( 1 << 2 ),
+ FL_PDDouble = ( 1 << 3 ),
+ FL_PDSync = ( 1 << 4 ),
+ FL_PDPrivateMap = ( 1 << 5 ),
+ FL_PDScrollbarType = ( 1 << 6 ),
+ FL_PDPupFontSize = ( 1 << 7 ),
+ FL_PDButtonFontSize = ( 1 << 8 ),
+ FL_PDInputFontSize = ( 1 << 9 ),
+ FL_PDSliderFontSize = ( 1 << 10 ),
+ FL_PDVisual = ( 1 << 11 ),
+ FL_PDULThickness = ( 1 << 12 ),
+ FL_PDULPropWidth = ( 1 << 13 ),
+ FL_PDBS = ( 1 << 14 ),
+ FL_PDCoordUnit = ( 1 << 15 ),
+ FL_PDDebug = ( 1 << 16 ),
+ FL_PDSharedMap = ( 1 << 17 ),
+ FL_PDStandardMap = ( 1 << 18 ),
+ FL_PDBorderWidth = ( 1 << 19 ),
+ FL_PDSafe = ( 1 << 20 ),
+ FL_PDMenuFontSize = ( 1 << 21 ),
+ FL_PDBrowserFontSize = ( 1 << 22 ),
+ FL_PDChoiceFontSize = ( 1 << 23 ),
+ FL_PDLabelFontSize = ( 1 << 24 )
+};
+
+#define FL_PDButtonLabel FL_PDButtonLabelSize
+
+extern void fl_set_defaults( unsigned long mask,
+ FL_IOPT * cntl );
+
+extern void fl_set_tabstop( const char * s );
+
+extern int fl_get_visual_depth( void );
+
+extern int fl_is_global_clipped( void );
+
+extern int fl_is_clipped( int include_global );
+
+extern int fl_is_text_clipped( int include_global );
+
+extern void fl_set_clipping( FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_unset_clipping( void );
+
+extern void fl_set_text_clipping( FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_unset_text_clipping( void );
+
+extern int fl_get_global_clipping( FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern int fl_get_clipping( int include_global,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern int fl_get_text_clipping( int include_global,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern void fl_set_gc_clipping( GC gc,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h );
+
+extern void fl_unset_gc_clipping( GC gc );
+
+
+/* How we pack and unpack colors */
+
+
+typedef unsigned char FL_PCTYPE; /* primary color type */
+#define FL_PCBITS 8 /* primary color bits */
+#define FL_PCMAX ( ( 1 << FL_PCBITS ) - 1 )
+#define FL_PCCLAMP( a ) \
+ ( ( a ) > ( FL_PCMAX ) ? ( FL_PCMAX ) : ( ( a ) < 0 ? 0 : ( a ) ) )
+typedef unsigned int FL_PACKED4;
+#define FL_PACKED FL_PACKED4
+
+#define FL_RMASK 0x000000ff
+#define FL_RSHIFT 0
+#define FL_GMASK 0x0000ff00
+#define FL_GSHIFT 8
+#define FL_BMASK 0x00ff0000
+#define FL_BSHIFT 16
+#define FL_AMASK 0xff000000
+#define FL_ASHIFT 24
+
+/* If PCBITS is not 8, we need to apply the RGBmask */
+
+#define FL_GETR( packed ) ( ( ( packed ) >> FL_RSHIFT ) & FL_RMASK )
+#define FL_GETG( packed ) ( ( ( packed ) >> FL_GSHIFT ) & FL_PCMAX )
+#define FL_GETB( packed ) ( ( ( packed ) >> FL_BSHIFT ) & FL_PCMAX )
+#define FL_GETA( packed ) ( ( ( packed ) >> FL_ASHIFT ) & FL_PCMAX )
+
+#define FL_PACK3( r, g, b ) \
+ ( ( ( r ) << FL_RSHIFT ) | ( ( g ) << FL_GSHIFT ) | ( ( b ) << FL_BSHIFT ) )
+
+#define FL_PACK FL_PACK3
+
+#define FL_PACK4( r, g, b, a ) ( FL_PACK3( r, g, b ) | ( ( a ) << FL_ASHIFT ) )
+
+#define FL_UNPACK( p, r, g, b ) \
+ do { r = FL_GETR( p ); \
+ g = FL_GETG( p ); \
+ b = FL_GETB( p ); \
+ } while( 0 )
+
+#define FL_UNPACK3 FL_UNPACK
+
+#define FL_UNPACK4( p, r, g, b, a ) \
+ do { FL_UNPACK3( p, r, g, b ); \
+ a = FL_GETA( p ); \
+ } while( 0 )
+
+
+
+typedef struct {
+ unsigned int rshift,
+ rmask,
+ rbits;
+ unsigned int gshift,
+ gmask,
+ gbits;
+ unsigned int bshift,
+ bmask,
+ bbits;
+ int bits_per_rgb;
+ int colormap_size;
+} FL_RGB2PIXEL_;
+
+#define FL_RGB2PIXEL FL_RGB2PIXEL_
+
+/* ! defined FL_XBASIC_H */
+
+
+
+#define FL_POPUP_H
+
+typedef struct FL_POPUP_ FL_POPUP;
+typedef struct FL_POPUP_ENTRY_ FL_POPUP_ENTRY;
+typedef struct FL_POPUP_RETURN_ FL_POPUP_RETURN;
+
+typedef int ( * FL_POPUP_CB )( FL_POPUP_RETURN * );
+
+struct FL_POPUP_RETURN_ {
+ long int val; /* value assigned to popup entry */
+ void * user_data; /* pointer to user data */
+ const char * text; /* text of the selected popup entry */
+ const char * label; /* left-flushed label part */
+ const char * accel; /* right-flushed label part */
+ const FL_POPUP_ENTRY * entry; /* pointer to selected popup entry */
+ const FL_POPUP * popup; /* popup we're called for */
+};
+
+struct FL_POPUP_ {
+ FL_POPUP * next; /* next in linked list */
+ FL_POPUP * prev; /* previous in linked list */
+ FL_POPUP * parent; /* for sub-popups: direct parent */
+ FL_POPUP * top_parent; /* and top-most parent */
+ FL_POPUP_ENTRY * entries; /* pointer to list of entries */
+ char * title;
+ Window win; /* popup window */
+ Window parent_win; /* parent window of popup window */
+ Cursor cursor; /* cursor for the popup */
+ FL_POPUP_CB callback;
+ int use_req_pos; /* if set use req_x, req_y */
+ int req_x,
+ req_y;
+ int x, /* position of popup window */
+ y;
+ unsigned int w, /* dimensions of popup window */
+ h;
+ int min_width; /* minimum width of popup */
+ int title_box_x, /* position of title box */
+ title_box_y;
+ unsigned int title_box_w, /* dimensions of title box */
+ title_box_h;
+ int has_subs,
+ has_boxes;
+ int counter;
+ int title_font_style;
+ int title_font_size;
+ int entry_font_style;
+ int entry_font_size;
+ unsigned long event_mask;
+ int bw; /* border width */
+ FL_COLOR bg_color; /* background color of popup*/
+ FL_COLOR on_color; /* color of entry under mouse */
+ FL_COLOR title_color; /* color of title text */
+ FL_COLOR text_color; /* normal text color of entry */
+ FL_COLOR text_on_color; /* text color when mouse on entry */
+ FL_COLOR text_off_color; /* text color of disabled entry */
+ FL_COLOR radio_color; /* color of radio buttons */
+ int policy;
+ int need_recalc; /* do we need to recalc position? */
+ FL_POPUP_RETURN ret; /* structure passed to calbacks
+ and returned on selection */
+};
+
+struct FL_POPUP_ENTRY_ {
+ FL_POPUP_ENTRY * prev; /* next in linked list */
+ FL_POPUP_ENTRY * next; /* previous in linked list */
+ FL_POPUP * popup; /* popup it belongs to */
+ int is_act; /* set while mouse is over it */
+ char * text; /* complete text of entry */
+ char * label; /* cleaned-up label text */
+ char * accel; /* cleaned-up accelerator key text */
+ long int val; /* value associated with entry */
+ void * user_data; /* pointer to user data */
+ int type; /* normal, toggle, radio, sub-popup */
+ unsigned int state; /* disabled, hidden, checked */
+ int group; /* group (for radio entries only) */
+ FL_POPUP * sub; /* sub-popup bound to entry */
+ long int * shortcut; /* keyboard shortcuts */
+ int ulpos; /* underline position in text */
+ FL_POPUP_CB callback; /* callback for entry */
+ FL_POPUP_CB enter_callback; /* callback for entering entry */
+ FL_POPUP_CB leave_callback; /* callback for leaving entry */
+ int x, /* position of entry text */
+ y;
+ unsigned int w,
+ h; /* height of entry text */
+ int box_x,
+ box_y;
+ unsigned int box_w,
+ box_h;
+ unsigned int sl_h;
+ int ul_x,
+ ul_y;
+ unsigned int ul_w,
+ ul_h;
+};
+
+typedef struct {
+ const char * text; /* text of entry */
+ FL_POPUP_CB callback; /* (selection) callback */
+ const char * shortcut; /* keyboard shortcut description */
+ int type; /* type of entry */
+ int state; /* disabled, hidden, checked */
+} FL_POPUP_ITEM;
+
+/* Popup policies */
+
+enum {
+ FL_POPUP_NORMAL_SELECT,
+ FL_POPUP_DRAG_SELECT
+};
+
+/* Popup states */
+
+enum {
+ FL_POPUP_NONE = 0,
+ FL_POPUP_DISABLED = 1, /* entry is disabled */
+ FL_POPUP_HIDDEN = 2, /* entry is temporarily hidden */
+ FL_POPUP_CHECKED = 4 /* tooogle/radio item is in on state */
+};
+
+/* Popup entry types */
+
+enum {
+ FL_POPUP_NORMAL, /* normal popup entry */
+ FL_POPUP_TOGGLE, /* toggle ("binary") popup entry */
+ FL_POPUP_RADIO, /* radio popup entry */
+ FL_POPUP_SUB, /* sub-popup popup entry */
+ FL_POPUP_LINE /* line popup entry */
+};
+
+/* Popup color types */
+
+enum {
+ FL_POPUP_BACKGROUND_COLOR,
+ FL_POPUP_HIGHLIGHT_COLOR,
+ FL_POPUP_TITLE_COLOR,
+ FL_POPUP_TEXT_COLOR,
+ FL_POPUP_HIGHLIGHT_TEXT_COLOR,
+ FL_POPUP_DISABLED_TEXT_COLOR,
+ FL_POPUP_RADIO_COLOR
+};
+
+extern FL_POPUP *fl_popup_add( Window,
+ const char * );
+
+extern FL_POPUP_ENTRY *fl_popup_add_entries( FL_POPUP *,
+ const char *,
+ ... );
+
+extern FL_POPUP_ENTRY *fl_popup_insert_entries( FL_POPUP *,
+ FL_POPUP_ENTRY *,
+ const char *,
+ ... );
+
+extern FL_POPUP *fl_popup_create( Window,
+ const char *,
+ FL_POPUP_ITEM * );
+
+extern FL_POPUP_ENTRY *fl_popup_add_items( FL_POPUP *,
+ FL_POPUP_ITEM * );
+
+extern FL_POPUP_ENTRY *fl_popup_insert_items( FL_POPUP *,
+ FL_POPUP_ENTRY *,
+ FL_POPUP_ITEM * );
+
+extern int fl_popup_delete( FL_POPUP * );
+
+extern int fl_popup_entry_delete( FL_POPUP_ENTRY * );
+
+extern FL_POPUP_RETURN *fl_popup_do( FL_POPUP * );
+
+extern void fl_popup_set_position( FL_POPUP *,
+ int,
+ int );
+
+extern int fl_popup_get_policy( FL_POPUP * );
+
+extern int fl_popup_set_policy( FL_POPUP *,
+ int );
+
+extern FL_POPUP_CB fl_popup_set_callback( FL_POPUP *,
+ FL_POPUP_CB );
+
+extern void fl_popup_get_title_font( FL_POPUP *,
+ int *,
+ int * );
+
+extern void fl_popup_set_title_font( FL_POPUP *,
+ int,
+ int );
+
+extern void fl_popup_entry_get_font( FL_POPUP *,
+ int *,
+ int * );
+
+extern void fl_popup_entry_set_font( FL_POPUP *,
+ int,
+ int );
+
+extern int fl_popup_get_bw( FL_POPUP * );
+
+extern int fl_popup_set_bw( FL_POPUP *,
+ int );
+
+extern FL_COLOR fl_popup_get_color( FL_POPUP *,
+ int );
+
+extern FL_COLOR fl_popup_set_color( FL_POPUP *,
+ int,
+ FL_COLOR );
+
+extern void fl_popup_set_cursor( FL_POPUP *,
+ int );
+
+extern const char *fl_popup_get_title( FL_POPUP * );
+
+extern FL_POPUP *fl_popup_set_title( FL_POPUP *,
+ const char * );
+
+extern FL_POPUP * fl_popup_set_title_f( FL_POPUP * popup,
+ const char * fmt,
+ ... );
+
+extern FL_POPUP_CB fl_popup_entry_set_callback( FL_POPUP_ENTRY *,
+ FL_POPUP_CB );
+
+extern FL_POPUP_CB fl_popup_entry_set_enter_callback( FL_POPUP_ENTRY *,
+ FL_POPUP_CB );
+
+extern FL_POPUP_CB fl_popup_entry_set_leave_callback( FL_POPUP_ENTRY *,
+ FL_POPUP_CB );
+
+extern unsigned int fl_popup_entry_get_state( FL_POPUP_ENTRY * );
+
+extern unsigned int fl_popup_entry_set_state( FL_POPUP_ENTRY *,
+ unsigned int );
+
+extern unsigned int fl_popup_entry_clear_state( FL_POPUP_ENTRY *,
+ unsigned int );
+
+extern unsigned int fl_popup_entry_raise_state( FL_POPUP_ENTRY *,
+ unsigned int );
+
+extern unsigned int fl_popup_entry_toggle_state( FL_POPUP_ENTRY *,
+ unsigned int );
+
+extern int fl_popup_entry_set_text( FL_POPUP_ENTRY *,
+ const char * );
+
+extern void fl_popup_entry_set_shortcut( FL_POPUP_ENTRY *,
+ const char * );
+
+extern long int fl_popup_entry_set_value( FL_POPUP_ENTRY *,
+ long int );
+
+extern void *fl_popup_entry_set_user_data( FL_POPUP_ENTRY *,
+ void * );
+
+extern FL_POPUP_ENTRY *fl_popup_entry_get_by_position( FL_POPUP *,
+ int );
+
+extern FL_POPUP_ENTRY *fl_popup_entry_get_by_value( FL_POPUP *,
+ long );
+
+extern FL_POPUP_ENTRY *fl_popup_entry_get_by_user_data( FL_POPUP *,
+ void * );
+
+extern FL_POPUP_ENTRY *fl_popup_entry_get_by_text( FL_POPUP *,
+ const char * );
+
+extern FL_POPUP_ENTRY * fl_popup_entry_get_by_text_f( FL_POPUP *,
+ const char *,
+ ... );
+
+extern FL_POPUP_ENTRY *fl_popup_entry_get_by_label( FL_POPUP *,
+ const char * );
+
+extern FL_POPUP_ENTRY * fl_popup_entry_get_by_label_f( FL_POPUP *,
+ const char *,
+ ... );
+
+extern int fl_popup_entry_get_group( FL_POPUP_ENTRY * );
+
+extern int fl_popup_entry_set_group( FL_POPUP_ENTRY *,
+ int );
+
+extern FL_POPUP *fl_popup_entry_get_subpopup( FL_POPUP_ENTRY * );
+
+extern FL_POPUP *fl_popup_entry_set_subpopup( FL_POPUP_ENTRY *,
+ FL_POPUP * );
+
+extern int fl_popup_get_size( FL_POPUP *,
+ unsigned int *,
+ unsigned int * );
+
+extern int fl_popup_get_min_width( FL_POPUP * );
+
+extern int fl_popup_set_min_width( FL_POPUP *,
+ int );
+
+/* ! defined FL_POPUP_H */
+
+/**
+ * \file bitmap.h
+ *
+ * Object Class: Bitmap
+ */
+
+
+#define FL_BITMAP_H
+
+#define FL_NORMAL_BITMAP 0
+
+/***** Defaults *****/
+
+#define FL_BITMAP_BOXTYPE FL_NO_BOX
+#define FL_BITMAP_COL1 FL_COL1 /* background of bitmap */
+#define FL_BITMAP_COL2 FL_COL1 /* not used currently */
+#define FL_BITMAP_LCOL FL_LCOL /* foreground of bitmap */
+#define FL_BITMAP_ALIGN FL_ALIGN_BOTTOM
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_bitmap( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_bitmap( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_bitmap_data( FL_OBJECT * ob,
+ int w,
+ int h,
+ unsigned char * data );
+
+extern void fl_set_bitmap_file( FL_OBJECT * ob,
+ const char * fname );
+
+extern Pixmap fl_read_bitmapfile( Window win,
+ const char * file,
+ unsigned int * w,
+ unsigned int * h,
+ int * hotx,
+ int * hoty );
+
+extern Pixmap fl_create_from_bitmapdata( Window win,
+ const char * data,
+ int width,
+ int height );
+
+/* for compatibility */
+
+#define fl_set_bitmap_datafile fl_set_bitmap_file
+
+/* PIXMAP stuff */
+
+#define FL_NORMAL_PIXMAP 0
+
+extern FL_OBJECT * fl_create_pixmap( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_pixmap( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_pixmap_data( FL_OBJECT * ob,
+ char ** bits );
+
+extern void fl_set_pixmap_file( FL_OBJECT * ob,
+ const char * fname );
+
+extern void fl_set_pixmap_align( FL_OBJECT * ob,
+ int align,
+ int xmargin,
+ int ymargin );
+
+extern void fl_set_pixmap_pixmap( FL_OBJECT * ob,
+ Pixmap id,
+ Pixmap mask );
+
+extern void fl_set_pixmap_colorcloseness( int red,
+ int green,
+ int blue );
+
+extern void fl_free_pixmap_pixmap( FL_OBJECT * ob );
+
+extern void fl_free_pixmap_focus_pixmap( FL_OBJECT * obj );
+
+extern Pixmap fl_get_pixmap_pixmap( FL_OBJECT * ob,
+ Pixmap * p,
+ Pixmap * m );
+
+extern Pixmap fl_read_pixmapfile( Window win,
+ const char * file,
+ unsigned int * w,
+ unsigned int * h,
+ Pixmap * shape_mask,
+ int * hotx,
+ int * hoty,
+ FL_COLOR tran );
+
+extern Pixmap fl_create_from_pixmapdata( Window win,
+ char ** data,
+ unsigned int * w,
+ unsigned int * h,
+ Pixmap * sm,
+ int * hotx,
+ int * hoty,
+ FL_COLOR tran );
+
+extern void fl_free_pixmap( Pixmap id );
+
+
+/* ! defined FL_BITMAP_H */
+
+/**
+ * \file box.h
+ *
+ */
+
+
+#define FL_BOX_H
+
+/* Type is already defined in Basic.h */
+
+extern FL_OBJECT * fl_create_box( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_box( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+/* ! defined FL_BOX_H */
+
+/*
+ * \file browser.h
+ *
+ * Object class Browser
+ */
+
+
+#define FL_BROWSER_H
+
+
+/***** Types *****/
+
+typedef enum {
+ FL_NORMAL_BROWSER,
+ FL_SELECT_BROWSER,
+ FL_HOLD_BROWSER,
+ FL_MULTI_BROWSER,
+ FL_DESELECTABLE_HOLD_BROWSER
+} FL_BROWSER_TYPE;
+
+/***** Defaults *****/
+
+#define FL_BROWSER_BOXTYPE FL_DOWN_BOX
+#define FL_BROWSER_COL1 FL_COL1
+#define FL_BROWSER_COL2 FL_YELLOW
+#define FL_BROWSER_LCOL FL_LCOL
+#define FL_BROWSER_ALIGN FL_ALIGN_BOTTOM
+
+
+/***** Others *****/
+
+#define FL_BROWSER_SLCOL FL_COL1
+#define FL_BROWSER_FONTSIZE FL_SMALL_SIZE
+
+
+/* This exists only for backward compatibility and isn't used anymore! */
+
+#define FL_BROWSER_LINELENGTH 2048
+
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_browser( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_browser( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_clear_browser( FL_OBJECT * ob );
+
+extern void fl_add_browser_line( FL_OBJECT * ob,
+ const char * newtext );
+
+extern void fl_add_browser_line_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+
+extern void fl_addto_browser( FL_OBJECT * obj,
+ const char * text );
+
+extern void fl_addto_browser_f( FL_OBJECT * obj,
+ const char * fmt,
+ ...);
+
+#define fl_append_browser fl_addto_browser_chars
+extern void fl_addto_browser_chars( FL_OBJECT * ob,
+ const char * str );
+
+extern void fl_addto_browser_chars_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+#define fl_append_browser_f fl_addto_browser_chars_f
+extern void fl_insert_browser_line( FL_OBJECT * ob,
+ int linenumb,
+ const char * newtext );
+
+extern void fl_insert_browser_line_f( FL_OBJECT * ob,
+ int linenumb,
+ const char * fmt,
+ ... );
+
+extern void fl_delete_browser_line( FL_OBJECT * ob,
+ int linenumb );
+
+extern void fl_replace_browser_line( FL_OBJECT * ob,
+ int linenumb,
+ const char * newtext );
+
+extern void fl_replace_browser_line_f( FL_OBJECT * ob,
+ int linenumb,
+ const char * fmt,
+ ... );
+
+extern const char *fl_get_browser_line( FL_OBJECT * ob,
+ int linenumb );
+
+extern int fl_load_browser( FL_OBJECT * ob,
+ const char * filename );
+
+extern void fl_select_browser_line( FL_OBJECT * ob,
+ int line );
+
+extern void fl_deselect_browser_line( FL_OBJECT * ob,
+ int line );
+
+extern void fl_deselect_browser( FL_OBJECT * ob );
+
+extern int fl_isselected_browser_line( FL_OBJECT * ob,
+ int line );
+
+extern int fl_get_browser_topline( FL_OBJECT * ob );
+
+extern int fl_get_browser( FL_OBJECT * ob );
+
+extern int fl_get_browser_maxline( FL_OBJECT * ob );
+
+extern int fl_get_browser_screenlines( FL_OBJECT * ob );
+
+extern void fl_set_browser_topline( FL_OBJECT * ob,
+ int line );
+
+extern void fl_set_browser_bottomline( FL_OBJECT * ob,
+ int line );
+
+extern void fl_set_browser_fontsize( FL_OBJECT * ob,
+ int size );
+
+extern void fl_set_browser_fontstyle( FL_OBJECT * ob,
+ int style );
+
+extern void fl_set_browser_specialkey( FL_OBJECT * ob,
+ int specialkey );
+
+extern void fl_set_browser_vscrollbar( FL_OBJECT * ob,
+ int on );
+
+extern void fl_set_browser_hscrollbar( FL_OBJECT * ob,
+ int on );
+
+extern void fl_set_browser_line_selectable( FL_OBJECT * ob,
+ int line,
+ int flag );
+
+extern void fl_get_browser_dimension( FL_OBJECT * ob,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern void fl_set_browser_dblclick_callback( FL_OBJECT * ob,
+ FL_CALLBACKPTR cb,
+ long a );
+
+extern FL_Coord fl_get_browser_xoffset( FL_OBJECT * ob );
+
+extern double fl_get_browser_rel_xoffset( FL_OBJECT * ob );
+
+extern void fl_set_browser_xoffset( FL_OBJECT * ob,
+ FL_Coord npixels );
+
+extern void fl_set_browser_rel_xoffset( FL_OBJECT * ob,
+ double val );
+
+extern FL_Coord fl_get_browser_yoffset( FL_OBJECT * ob );
+
+extern double fl_get_browser_rel_yoffset( FL_OBJECT * ob );
+
+extern void fl_set_browser_yoffset( FL_OBJECT * ob,
+ FL_Coord npixels );
+
+extern void fl_set_browser_rel_yoffset( FL_OBJECT * ob,
+ double val );
+
+extern void fl_set_browser_scrollbarsize( FL_OBJECT * ob,
+ int hh,
+ int vw );
+
+extern void fl_show_browser_line( FL_OBJECT * ob,
+ int j );
+
+extern int fl_set_default_browser_maxlinelength( int n );
+
+
+#define FL_BROWSER_SCROLL_CALLBACKt
+typedef void ( * FL_BROWSER_SCROLL_CALLBACK )( FL_OBJECT *,
+ int,
+ void * );
+
+
+extern void
+ fl_set_browser_hscroll_callback( FL_OBJECT *,
+ FL_BROWSER_SCROLL_CALLBACK,
+ void * );
+
+extern void
+ fl_set_browser_vscroll_callback( FL_OBJECT *,
+ FL_BROWSER_SCROLL_CALLBACK,
+ void * );
+
+extern int fl_get_browser_line_yoffset( FL_OBJECT *,
+ int );
+
+extern FL_BROWSER_SCROLL_CALLBACK
+ fl_get_browser_hscroll_callback( FL_OBJECT * );
+
+extern FL_BROWSER_SCROLL_CALLBACK
+ fl_get_browser_vscroll_callback( FL_OBJECT * );
+
+extern int fl_get_browser_scrollbar_repeat( FL_OBJECT * );
+
+extern void fl_set_browser_scrollbar_repeat( FL_OBJECT *,
+ int );
+
+/* ! defined FL_BROWSER_H */
+
+/**
+ * \file button.h
+ *
+ * All Buttons: regular button, light button and round button
+ *
+ */
+
+
+#define FL_BUTTON_H
+
+
+typedef enum {
+ FL_NORMAL_BUTTON,
+ FL_PUSH_BUTTON,
+ FL_RADIO_BUTTON,
+ FL_HIDDEN_BUTTON,
+ FL_TOUCH_BUTTON,
+ FL_INOUT_BUTTON,
+ FL_RETURN_BUTTON,
+ FL_HIDDEN_RET_BUTTON,
+ FL_MENU_BUTTON
+} FL_BUTTON_TYPE;
+
+#define FL_TOGGLE_BUTTON FL_PUSH_BUTTON
+
+typedef struct {
+ Pixmap pixmap,
+ mask;
+ unsigned int bits_w,
+ bits_h;
+ int val; /* state of button (on/off) */
+ int mousebut; /* mouse button that caused the push */
+ int timdel; /* time since last touch (TOUCH buttons) */
+ int event; /* what event triggers redraw */
+ int is_pushed; /* set while drawn as pushed down */
+ int react_to[ 5 ]; /* mouse buttons button reacts to */
+ long cspecl; /* reserved for class specfic stuff */
+ void * cspecv; /* misc. things */
+ char * filename;
+ Pixmap focus_pixmap,
+ focus_mask;
+ char * focus_filename;
+} FL_BUTTON_SPEC;
+
+#define FL_BUTTON_STRUCT FL_BUTTON_SPEC
+
+typedef void ( * FL_DrawButton )( FL_OBJECT * );
+typedef void ( * FL_CleanupButton )( FL_BUTTON_SPEC * );
+
+#define FL_DRAWBUTTON FL_DrawButton
+#define FL_CLEANUPBUTTON FL_CleanupButton
+
+/* normal button default */
+
+#define FL_BUTTON_BOXTYPE FL_UP_BOX
+#define FL_BUTTON_COL1 FL_COL1
+#define FL_BUTTON_COL2 FL_COL1
+#define FL_BUTTON_LCOL FL_LCOL
+#define FL_BUTTON_ALIGN FL_ALIGN_CENTER
+#define FL_BUTTON_MCOL1 FL_MCOL
+#define FL_BUTTON_MCOL2 FL_MCOL
+#define FL_BUTTON_BW FL_BOUND_WIDTH
+
+/* light button defaults */
+
+#define FL_LIGHTBUTTON_BOXTYPE FL_UP_BOX
+#define FL_LIGHTBUTTON_COL1 FL_COL1
+#define FL_LIGHTBUTTON_COL2 FL_YELLOW
+#define FL_LIGHTBUTTON_LCOL FL_LCOL
+#define FL_LIGHTBUTTON_ALIGN ( FL_ALIGN_CENTER | FL_ALIGN_INSIDE )
+#define FL_LIGHTBUTTON_TOPCOL FL_COL1
+#define FL_LIGHTBUTTON_MCOL FL_MCOL
+#define FL_LIGHTBUTTON_MINSIZE ( ( FL_Coord ) 12 )
+
+/* round button defaults */
+
+#define FL_ROUNDBUTTON_BOXTYPE FL_NO_BOX
+#define FL_ROUNDBUTTON_COL1 FL_MCOL
+#define FL_ROUNDBUTTON_COL2 FL_YELLOW
+#define FL_ROUNDBUTTON_LCOL FL_LCOL
+#define FL_ROUNDBUTTON_ALIGN FL_ALIGN_CENTER
+#define FL_ROUNDBUTTON_TOPCOL FL_COL1
+#define FL_ROUNDBUTTON_MCOL FL_MCOL
+
+/* round3d button defaults */
+
+#define FL_ROUND3DBUTTON_BOXTYPE FL_NO_BOX
+#define FL_ROUND3DBUTTON_COL1 FL_COL1
+#define FL_ROUND3DBUTTON_COL2 FL_BLACK
+#define FL_ROUND3DBUTTON_LCOL FL_LCOL
+#define FL_ROUND3DBUTTON_ALIGN FL_ALIGN_CENTER
+#define FL_ROUND3DBUTTON_TOPCOL FL_COL1
+#define FL_ROUND3DBUTTON_MCOL FL_MCOL
+
+/* check button defaults */
+
+#define FL_CHECKBUTTON_BOXTYPE FL_NO_BOX
+#define FL_CHECKBUTTON_COL1 FL_COL1
+#define FL_CHECKBUTTON_COL2 FL_YELLOW
+#define FL_CHECKBUTTON_LCOL FL_LCOL
+#define FL_CHECKBUTTON_ALIGN FL_ALIGN_CENTER
+
+#define FL_CHECKBUTTON_TOPCOL FL_COL1
+#define FL_CHECKBUTTON_MCOL FL_MCOL
+
+/* bitmap button defaults */
+
+#define FL_BITMAPBUTTON_BOXTYPE FL_UP_BOX
+#define FL_BITMAPBUTTON_COL1 FL_COL1 /* bitmap background */
+#define FL_BITMAPBUTTON_COL2 FL_BLUE /* "focus" color */
+#define FL_BITMAPBUTTON_LCOL FL_LCOL /* bitmap foreground */
+#define FL_BITMAPBUTTON_ALIGN FL_ALIGN_BOTTOM
+
+/* bitmap button defaults */
+
+#define FL_PIXMAPBUTTON_BOXTYPE FL_UP_BOX
+#define FL_PIXMAPBUTTON_COL1 FL_BUTTON_COL1
+#define FL_PIXMAPBUTTON_COL2 FL_BUTTON_COL2
+#define FL_PIXMAPBUTTON_LCOL FL_BUTTON_LCOL
+#define FL_PIXMAPBUTTON_MCOL1 FL_BUTTON_MCOL1
+#define FL_PIXMAPBUTTON_MCOL2 FL_BUTTON_MCOL2
+#define FL_PIXMAPBUTTON_ALIGN FL_ALIGN_BOTTOM
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_button( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_roundbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_round3dbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_lightbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_checkbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_bitmapbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_pixmapbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_scrollbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_labelbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT *fl_add_roundbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_round3dbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_lightbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_checkbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_button( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_bitmapbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_scrollbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_labelbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+#define fl_set_bitmapbutton_file fl_set_bitmap_file
+
+extern void fl_set_bitmapbutton_data( FL_OBJECT * ob,
+ int w,
+ int h,
+ unsigned char * bits );
+
+#define fl_set_bitmapbutton_datafile fl_set_bitmapbutton_file
+
+extern FL_OBJECT * fl_add_pixmapbutton( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+#define fl_set_pixmapbutton_data fl_set_pixmap_data
+#define fl_set_pixmapbutton_file fl_set_pixmap_file
+#define fl_set_pixmapbutton_pixmap fl_set_pixmap_pixmap
+#define fl_get_pixmapbutton_pixmap fl_get_pixmap_pixmap
+#define fl_set_pixmapbutton_align fl_set_pixmap_align
+#define fl_free_pixmapbutton_pixmap fl_free_pixmap_pixmap
+#define fl_set_pixmapbutton_datafile fl_set_pixmapbutton_file
+#define fl_set_pixmapbutton_show_focus fl_set_pixmapbutton_focus_outline
+
+
+extern void fl_set_pixmapbutton_focus_outline( FL_OBJECT * ob,
+ int yes );
+
+extern void fl_set_pixmapbutton_focus_data( FL_OBJECT * ob,
+ char ** bits );
+
+extern void fl_set_pixmapbutton_focus_file( FL_OBJECT * ob,
+ const char * fname );
+
+extern void fl_set_pixmapbutton_focus_pixmap( FL_OBJECT * ob,
+ Pixmap id,
+ Pixmap mask );
+
+extern int fl_get_button( FL_OBJECT * ob );
+
+extern void fl_set_button( FL_OBJECT * ob,
+ int pushed );
+
+extern int fl_get_button_numb( FL_OBJECT * ob );
+
+#define fl_set_button_shortcut fl_set_object_shortcut
+
+extern FL_OBJECT * fl_create_generic_button( int objclass,
+ int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_add_button_class( int bclass,
+ FL_DrawButton drawit,
+ FL_CleanupButton cleanup );
+
+extern void fl_set_button_mouse_buttons( FL_OBJECT * ob,
+ unsigned int buttons );
+
+extern void fl_get_button_mouse_buttons( FL_OBJECT * ob,
+ unsigned int * buttons );
+
+/* ! defined FL_BUTTON_H */
+
+/**
+ * \file canvas.h
+ *
+ * Header for FL_CANVAS
+ *
+ */
+
+
+#define FL_CANVAS_H_
+
+typedef enum {
+ FL_NORMAL_CANVAS,
+ FL_SCROLLED_CANVAS
+} FL_CANVAS_TYPE;
+
+typedef int ( * FL_HANDLE_CANVAS )( FL_OBJECT *,
+ Window,
+ int,
+ int,
+ XEvent *,
+ void * );
+
+typedef int ( * FL_MODIFY_CANVAS_PROP )( FL_OBJECT * );
+
+/******************** Default *********************/
+
+#define FL_CANVAS_BOXTYPE FL_DOWN_BOX /* really the decoration frame */
+#define FL_CANVAS_ALIGN FL_ALIGN_TOP
+
+/************ Interfaces ************************/
+
+extern FL_OBJECT * fl_create_generic_canvas( int canvas_class,
+ int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_canvas( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_canvas( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+/* backward compatibility */
+
+#define fl_set_canvas_decoration fl_set_object_boxtype
+
+extern void fl_set_canvas_colormap( FL_OBJECT * ob,
+ Colormap colormap );
+
+extern void fl_set_canvas_visual( FL_OBJECT * obj,
+ Visual * vi );
+
+extern void fl_set_canvas_depth( FL_OBJECT * obj,
+ int depth );
+
+extern void fl_set_canvas_attributes( FL_OBJECT * ob,
+ unsigned int mask,
+ XSetWindowAttributes * xswa );
+
+extern FL_HANDLE_CANVAS fl_add_canvas_handler( FL_OBJECT * ob,
+ int ev,
+ FL_HANDLE_CANVAS h,
+ void * udata );
+
+extern Window fl_get_canvas_id( FL_OBJECT * ob );
+
+extern Colormap fl_get_canvas_colormap( FL_OBJECT * ob );
+
+extern int fl_get_canvas_depth( FL_OBJECT * obj );
+
+extern void fl_remove_canvas_handler( FL_OBJECT * ob,
+ int ev,
+ FL_HANDLE_CANVAS h );
+
+extern void fl_share_canvas_colormap( FL_OBJECT * ob,
+ Colormap colormap );
+
+extern void fl_clear_canvas( FL_OBJECT * ob );
+
+extern void fl_modify_canvas_prop( FL_OBJECT * obj,
+ FL_MODIFY_CANVAS_PROP init,
+ FL_MODIFY_CANVAS_PROP activate,
+ FL_MODIFY_CANVAS_PROP cleanup );
+
+extern void fl_canvas_yield_to_shortcut( FL_OBJECT * ob,
+ int yes );
+
+/* This is an attempt to maintain some sort of backwards compatibility
+ * with old code whilst also getting rid of the old, system-specific
+ * hack. */
+
+
+
+
+
+/* ! defined FL_CANVAS_H */
+
+/**
+ * \file chart.h
+ *
+ * Object Class: Chart
+ *
+ */
+
+
+#define FL_CHART_H
+
+typedef enum {
+ FL_BAR_CHART,
+ FL_HORBAR_CHART,
+ FL_LINE_CHART,
+ FL_FILL_CHART,
+ FL_SPIKE_CHART,
+ FL_PIE_CHART,
+ FL_SPECIALPIE_CHART
+} FL_CHART_TYPE;
+
+#define FL_FILLED_CHART FL_FILL_CHART /* for backward compatibility */
+
+/***** Defaults *****/
+
+#define FL_CHART_BOXTYPE FL_BORDER_BOX
+#define FL_CHART_COL1 FL_COL1
+#define FL_CHART_LCOL FL_LCOL
+#define FL_CHART_ALIGN FL_ALIGN_BOTTOM
+
+/***** Others *****/
+
+#define FL_CHART_MAX 2048
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_chart( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_chart( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_clear_chart( FL_OBJECT * ob );
+
+extern void fl_add_chart_value( FL_OBJECT * ob,
+ double val,
+ const char * str,
+ FL_COLOR col );
+
+extern void fl_insert_chart_value( FL_OBJECT * ob,
+ int indx,
+ double val,
+ const char * str,
+ FL_COLOR col );
+
+extern void fl_replace_chart_value( FL_OBJECT * ob,
+ int indx,
+ double val,
+ const char * str,
+ FL_COLOR col );
+
+extern void fl_set_chart_bounds( FL_OBJECT * ob,
+ double min,
+ double max );
+
+extern void fl_get_chart_bounds( FL_OBJECT * ob,
+ double * min,
+ double * max );
+
+extern void fl_set_chart_maxnumb( FL_OBJECT * ob,
+ int maxnumb );
+
+extern void fl_set_chart_autosize( FL_OBJECT * ob,
+ int autosize );
+
+extern void fl_set_chart_lstyle( FL_OBJECT * ob,
+ int lstyle );
+
+extern void fl_set_chart_lsize( FL_OBJECT * ob,
+ int lsize );
+
+extern void fl_set_chart_lcolor( FL_OBJECT * ob,
+ FL_COLOR lcol );
+
+extern void fl_set_chart_baseline( FL_OBJECT * ob,
+ int iYesNo );
+
+#define fl_set_chart_lcol fl_set_chart_lcolor
+
+/* ! defined FL_CHART_H */
+
+/**
+ * \file choice.h
+ *
+ */
+
+
+#define FL_CHOICE_H
+
+
+typedef enum {
+ FL_NORMAL_CHOICE,
+ FL_NORMAL_CHOICE2,
+ FL_DROPLIST_CHOICE,
+ FL_BROWSER_CHOICE
+} FL_CHOICE_TYPE;
+
+#define FL_SIMPLE_CHOICE FL_NORMAL_CHOICE
+
+/***** Defaults *****/
+
+#define FL_CHOICE_BOXTYPE FL_ROUNDED_BOX
+#define FL_CHOICE_COL1 FL_COL1
+#define FL_CHOICE_COL2 FL_LCOL
+#define FL_CHOICE_LCOL FL_LCOL
+#define FL_CHOICE_ALIGN FL_ALIGN_LEFT
+
+/***** Others *****/
+
+#define FL_CHOICE_MCOL FL_MCOL
+#define FL_CHOICE_MAXITEMS 128
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_choice( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_choice( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_clear_choice( FL_OBJECT * ob );
+
+extern int fl_addto_choice( FL_OBJECT * ob,
+ const char * str );
+
+extern int fl_addto_choice_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+extern void fl_replace_choice( FL_OBJECT * ob,
+ int numb,
+ const char * str );
+
+extern void fl_replace_choice_f( FL_OBJECT * ob,
+ int numb,
+ const char * fmt,
+ ... );
+
+extern void fl_delete_choice( FL_OBJECT * ob,
+ int numb );
+
+extern void fl_set_choice( FL_OBJECT * ob,
+ int choice );
+
+extern void fl_set_choice_text( FL_OBJECT * ob,
+ const char * txt );
+
+extern void fl_set_choice_text_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+extern int fl_get_choice( FL_OBJECT * ob );
+
+extern const char * fl_get_choice_item_text( FL_OBJECT * ob,
+ int n );
+
+extern int fl_get_choice_maxitems( FL_OBJECT * ob );
+
+extern const char * fl_get_choice_text( FL_OBJECT * ob );
+
+extern void fl_set_choice_fontsize( FL_OBJECT * ob,
+ int size );
+
+extern void fl_set_choice_fontstyle( FL_OBJECT * ob,
+ int style );
+
+extern void fl_set_choice_align( FL_OBJECT * ob,
+ int align );
+
+extern int fl_get_choice_item_mode( FL_OBJECT * ob,
+ int item );
+
+extern void fl_set_choice_item_mode( FL_OBJECT * ob,
+ int item,
+ unsigned int mode );
+
+extern void fl_set_choice_item_shortcut( FL_OBJECT * ob,
+ int item,
+ const char * sc );
+
+extern int fl_set_choice_entries( FL_OBJECT * ob,
+ FL_PUP_ENTRY * ent );
+
+extern int fl_set_choice_notitle( FL_OBJECT * ob,
+ int n );
+
+extern int fl_set_choice_align_bottom( FL_OBJECT * ob,
+ int n );
+
+/* ! defined FL_CHOICE_H */
+
+/**
+ * \file clipbd.h
+ *
+ * prototypes for clipboard stuff
+ */
+
+
+#define FL_CLIPBD_H
+
+typedef Atom FL_CPTYPE;
+
+typedef int ( * FL_LOSE_SELECTION_CB )( FL_OBJECT *, long );
+typedef int ( * FL_SELECTION_CB )( FL_OBJECT *, long, const void *, long );
+
+#define FL_SELECTION_CALLBACK FL_SELECTION_CB
+#define FL_LOSE_SELECTION_CALLBACK FL_LOSE_SELECTION_CB
+
+extern int fl_stuff_clipboard( FL_OBJECT * ob,
+ long type,
+ const void * data,
+ long size,
+ FL_LOSE_SELECTION_CB lose_callback );
+
+extern int fl_request_clipboard( FL_OBJECT * ob,
+ long type,
+ FL_SELECTION_CB got_it_callback );
+
+/* ! defined FL_CLIPBD_H */
+
+/**
+ * \file clock.h
+ */
+
+
+#define FL_CLOCK_H
+
+enum {
+ FL_ANALOG_CLOCK,
+ FL_DIGITAL_CLOCK
+};
+
+#define FL_CLOCK_BOXTYPE FL_UP_BOX
+#define FL_CLOCK_COL1 FL_INACTIVE_COL
+#define FL_CLOCK_COL2 FL_BOTTOM_BCOL
+#define FL_CLOCK_LCOL FL_BLACK
+#define FL_CLOCK_ALIGN FL_ALIGN_BOTTOM
+
+#define FL_CLOCK_TOPCOL FL_COL1
+
+extern FL_OBJECT * fl_create_clock( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * s );
+
+extern FL_OBJECT * fl_add_clock( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * s );
+
+extern void fl_get_clock( FL_OBJECT * ob,
+ int * h,
+ int * m,
+ int * s );
+
+extern long fl_set_clock_adjustment( FL_OBJECT * ob,
+ long offset );
+
+extern void fl_set_clock_ampm( FL_OBJECT * ob,
+ int y );
+
+/* ! defined FL_CLOCK_H */
+
+/**
+ * \file counter.h
+ */
+
+
+#define FL_COUNTER_H
+
+typedef enum {
+ FL_NORMAL_COUNTER,
+ FL_SIMPLE_COUNTER
+} FL_COUNTER_TYPE;
+
+/***** Defaults *****/
+
+#define FL_COUNTER_BOXTYPE FL_UP_BOX
+#define FL_COUNTER_COL1 FL_COL1
+#define FL_COUNTER_COL2 FL_BLUE /* ct label */
+#define FL_COUNTER_LCOL FL_LCOL /* ct reporting */
+#define FL_COUNTER_ALIGN FL_ALIGN_BOTTOM
+
+/***** Others *****/
+
+#define FL_COUNTER_BW FL_BOUND_WIDTH
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_counter( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_counter( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_counter_value( FL_OBJECT * ob,
+ double val );
+
+extern void fl_set_counter_bounds( FL_OBJECT * ob,
+ double min,
+ double max );
+
+extern void fl_set_counter_step( FL_OBJECT * ob,
+ double s,
+ double l );
+
+extern void fl_set_counter_precision( FL_OBJECT * ob,
+ int prec );
+
+extern int fl_get_counter_precision( FL_OBJECT * ob );
+
+extern void fl_set_counter_return( FL_OBJECT * ob,
+ unsigned int how );
+
+extern double fl_get_counter_value( FL_OBJECT * ob );
+
+extern void fl_get_counter_bounds( FL_OBJECT * ob,
+ double * min,
+ double * max );
+
+extern void fl_get_counter_step( FL_OBJECT * ob,
+ double * s,
+ double * l );
+
+extern void fl_set_counter_filter( FL_OBJECT * ob,
+ FL_VAL_FILTER filter );
+
+/* Functions to set and get the timeout value used by the
+ * counter code to control modification of the counter value. */
+
+extern int fl_get_counter_repeat( FL_OBJECT * ob );
+
+extern void fl_set_counter_repeat( FL_OBJECT * ob,
+ int millisec );
+
+extern int fl_get_counter_min_repeat( FL_OBJECT * ob );
+
+extern void fl_set_counter_min_repeat( FL_OBJECT * ob,
+ int millisec );
+
+extern int fl_get_counter_speedjump( FL_OBJECT * ob );
+
+extern void fl_set_counter_speedjump( FL_OBJECT * ob,
+ int yes_no );
+
+/* ! defined FL_COUNTER_H */
+
+/**
+ * \file cursor.h
+ *
+ * Cursor defs and prototypes
+ */
+
+
+#define FL_CURSOR_H
+
+#include <X11/cursorfont.h>
+# 1 "/usr/include/X11/cursorfont.h" 1 3
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+
+#define _X11_CURSORFONT_H_
+
+#define XC_num_glyphs 154
+#define XC_X_cursor 0
+#define XC_arrow 2
+#define XC_based_arrow_down 4
+#define XC_based_arrow_up 6
+#define XC_boat 8
+#define XC_bogosity 10
+#define XC_bottom_left_corner 12
+#define XC_bottom_right_corner 14
+#define XC_bottom_side 16
+#define XC_bottom_tee 18
+#define XC_box_spiral 20
+#define XC_center_ptr 22
+#define XC_circle 24
+#define XC_clock 26
+#define XC_coffee_mug 28
+#define XC_cross 30
+#define XC_cross_reverse 32
+#define XC_crosshair 34
+#define XC_diamond_cross 36
+#define XC_dot 38
+#define XC_dotbox 40
+#define XC_double_arrow 42
+#define XC_draft_large 44
+#define XC_draft_small 46
+#define XC_draped_box 48
+#define XC_exchange 50
+#define XC_fleur 52
+#define XC_gobbler 54
+#define XC_gumby 56
+#define XC_hand1 58
+#define XC_hand2 60
+#define XC_heart 62
+#define XC_icon 64
+#define XC_iron_cross 66
+#define XC_left_ptr 68
+#define XC_left_side 70
+#define XC_left_tee 72
+#define XC_leftbutton 74
+#define XC_ll_angle 76
+#define XC_lr_angle 78
+#define XC_man 80
+#define XC_middlebutton 82
+#define XC_mouse 84
+#define XC_pencil 86
+#define XC_pirate 88
+#define XC_plus 90
+#define XC_question_arrow 92
+#define XC_right_ptr 94
+#define XC_right_side 96
+#define XC_right_tee 98
+#define XC_rightbutton 100
+#define XC_rtl_logo 102
+#define XC_sailboat 104
+#define XC_sb_down_arrow 106
+#define XC_sb_h_double_arrow 108
+#define XC_sb_left_arrow 110
+#define XC_sb_right_arrow 112
+#define XC_sb_up_arrow 114
+#define XC_sb_v_double_arrow 116
+#define XC_shuttle 118
+#define XC_sizing 120
+#define XC_spider 122
+#define XC_spraycan 124
+#define XC_star 126
+#define XC_target 128
+#define XC_tcross 130
+#define XC_top_left_arrow 132
+#define XC_top_left_corner 134
+#define XC_top_right_corner 136
+#define XC_top_side 138
+#define XC_top_tee 140
+#define XC_trek 142
+#define XC_ul_angle 144
+#define XC_umbrella 146
+#define XC_ur_angle 148
+#define XC_watch 150
+#define XC_xterm 152
+
+/* _X11_CURSORFONT_H_ */
+# 4041 "include/forms.h" 2
+
+
+enum {
+ FL_INVISIBLE_CURSOR = -2,
+ FL_DEFAULT_CURSOR = -1,
+ FL_BUSY_CURSOR = 150 ,
+ FL_CROSSHAIR_CURSOR = 130 ,
+ FL_KILL_CURSOR = 88 ,
+ FL_NWARROW_CURSOR = 132 ,
+ FL_NEARROW_CURSOR = 2
+};
+
+
+#define XC_invisible FL_INVISIBLE_CURSOR
+
+
+extern void fl_set_cursor( Window win,
+ int name );
+
+extern void fl_set_cursor_color( int name,
+ FL_COLOR fg,
+ FL_COLOR bg );
+
+extern int fl_create_bitmap_cursor( const char * source,
+ const char * mask,
+ int w,
+ int h,
+ int hotx,
+ int hoty );
+
+extern int fl_create_animated_cursor( int * cur_names,
+ int timeout );
+
+#define fl_reset_cursor( win ) fl_set_cursor( win, FL_DEFAULT_CURSOR );
+
+/* ! defined FL_CURSOR_H */
+
+/**
+ * \file dial.h
+ */
+
+
+#define FL_DIAL_H
+
+typedef enum {
+ FL_NORMAL_DIAL,
+ FL_LINE_DIAL,
+ FL_FILL_DIAL
+} FL_DIAL_TYPE;
+
+enum {
+ FL_DIAL_CW,
+ FL_DIAL_CCW
+};
+
+/***** Defaults *****/
+
+#define FL_DIAL_BOXTYPE FL_FLAT_BOX
+#define FL_DIAL_COL1 FL_COL1
+#define FL_DIAL_COL2 FL_RIGHT_BCOL
+#define FL_DIAL_LCOL FL_LCOL
+#define FL_DIAL_ALIGN FL_ALIGN_BOTTOM
+
+/***** Others *****/
+
+#define FL_DIAL_TOPCOL FL_COL1
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_dial( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_dial( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_dial_value( FL_OBJECT * obj,
+ double val );
+
+extern double fl_get_dial_value( FL_OBJECT * obj );
+
+extern void fl_set_dial_bounds( FL_OBJECT * obj,
+ double min,
+ double max );
+
+extern void fl_get_dial_bounds( FL_OBJECT * obj,
+ double * min,
+ double * max );
+
+extern void fl_set_dial_step( FL_OBJECT * obj,
+ double value );
+
+extern double fl_get_dial_step( FL_OBJECT * obj );
+
+extern void fl_set_dial_return( FL_OBJECT * obj,
+ unsigned int value );
+
+extern void fl_set_dial_angles( FL_OBJECT * obj,
+ double amin,
+ double amax );
+
+extern void fl_get_dial_angles( FL_OBJECT * obj,
+ double * amin,
+ double * amax );
+
+extern void fl_set_dial_cross( FL_OBJECT * obj,
+ int flag );
+
+#define fl_set_dial_crossover fl_set_dial_cross
+
+extern void fl_set_dial_direction( FL_OBJECT * obj,
+ int dir );
+
+extern int fl_get_dial_direction( FL_OBJECT * obj );
+
+
+/* ! defined FL_DIAL_H */
+
+/**
+ * \file filesys.h
+ *
+ * Convenience functions to read a directory
+ */
+
+
+#define FL_FILESYS_H
+
+/* File types */
+
+enum {
+ FT_FILE,
+ FT_DIR,
+ FT_LINK,
+ FT_SOCK,
+ FT_FIFO,
+ FT_BLK,
+ FT_CHR,
+ FT_OTHER
+};
+
+typedef struct {
+ char * name; /* entry name */
+ int type; /* FILE_TYPE */
+ long dl_mtime; /* file modification time */
+ unsigned long dl_size; /* file size in bytes */
+} FL_Dirlist;
+
+enum {
+ FL_ALPHASORT = 1, /* sort in alphabetic order */
+ FL_RALPHASORT, /* sort in reverse alphabetic order */
+ FL_MTIMESORT, /* sort according to modifcation time */
+ FL_RMTIMESORT, /* sort in reverse modificaiton time */
+ FL_SIZESORT, /* sort in increasing size order */
+ FL_RSIZESORT, /* sort in decreasing size order */
+ FL_CASEALPHASORT, /* sort case insensitive */
+ FL_RCASEALPHASORT /* sort case insensitive */
+};
+
+typedef int ( * FL_DIRLIST_FILTER )( const char *, int );
+
+/* read dir with pattern filtering. All dirs read might be cached.
+ * Must not change dirlist in anyway. */
+
+extern const FL_Dirlist * fl_get_dirlist( const char * dir,
+ const char * pattern,
+ int * n,
+ int rescan );
+
+extern FL_DIRLIST_FILTER fl_set_dirlist_filter( FL_DIRLIST_FILTER filter );
+
+extern int fl_set_dirlist_sort( int method );
+
+extern int fl_set_dirlist_filterdir( int yes );
+
+extern void fl_free_dirlist( FL_Dirlist * dl );
+
+/* ! defined FL_FILESYS_H */
+
+/**
+ * \file flps.h
+ */
+
+
+#define FLPS_H
+
+/* postscript stuff */
+
+enum {
+ FLPS_AUTO, /* switch to landscale if does not fit */
+ FLPS_LANDSCAPE, /* landscape always */
+ FLPS_PORTRAIT, /* portrait always */
+ FLPS_BESTFIT /* even margins/best fit */
+};
+
+enum {
+ FLPS_BW = -1,
+ FLPS_GRAYSCALE,
+ FLPS_COLOR
+};
+
+typedef struct {
+ int ps_color;
+ int orientation;
+ int auto_fit;
+ int drawbox;
+ int eps;
+ float xdpi,
+ ydpi;
+ float paper_w,
+ paper_h;
+ float gamma;
+ const char * tmpdir;
+ int printer_dpi;
+ float hm,
+ vm;
+ float xscale,
+ yscale;
+ int scale_text;
+ int first_page_only;
+ int clip;
+} FLPS_CONTROL;
+
+extern FLPS_CONTROL * flps_init( void );
+
+extern int fl_object_ps_dump( FL_OBJECT * ob,
+ const char * fname );
+
+/* ! defined FLPS_H */
+
+/**
+ * \file formbrowser.h
+ *
+ */
+
+
+#define FL_FORMBROWSER_H
+
+enum {
+ FL_NORMAL_FORMBROWSER
+};
+
+enum {
+ FL_SMOOTH_SCROLL,
+ FL_JUMP_SCROLL
+};
+
+#define FL_FORMBROWSER_BOXTYPE FL_DOWN_BOX
+#define FL_FORMBROWSER_COL1 FL_COL1
+#define FL_FORMBROWSER_ALIGN FL_ALIGN_TOP
+
+extern int fl_addto_formbrowser( FL_OBJECT * ob,
+ FL_FORM * form );
+
+extern FL_FORM * fl_delete_formbrowser_bynumber( FL_OBJECT * ob,
+ int num );
+
+extern int fl_delete_formbrowser( FL_OBJECT * ob,
+ FL_FORM * form );
+
+extern FL_FORM * fl_replace_formbrowser( FL_OBJECT * ob,
+ int num,
+ FL_FORM * form );
+
+extern int fl_insert_formbrowser( FL_OBJECT * ob,
+ int line,
+ FL_FORM * new_form );
+
+extern int fl_get_formbrowser_area( FL_OBJECT * ob,
+ int * x,
+ int * y,
+ int * w,
+ int * h );
+
+extern void fl_set_formbrowser_scroll( FL_OBJECT * ob,
+ int how );
+
+extern void fl_set_formbrowser_hscrollbar( FL_OBJECT * ob,
+ int how );
+
+extern void fl_set_formbrowser_vscrollbar( FL_OBJECT * ob,
+ int how );
+
+extern FL_FORM *fl_get_formbrowser_topform( FL_OBJECT * ob );
+
+extern int fl_set_formbrowser_topform( FL_OBJECT * ob,
+ FL_FORM * form );
+
+extern FL_FORM * fl_set_formbrowser_topform_bynumber( FL_OBJECT * ob,
+ int n );
+
+extern int fl_set_formbrowser_xoffset( FL_OBJECT * ob,
+ int offset );
+
+extern int fl_set_formbrowser_yoffset( FL_OBJECT * ob,
+ int offset );
+
+extern int fl_get_formbrowser_xoffset( FL_OBJECT * ob );
+
+extern int fl_get_formbrowser_yoffset( FL_OBJECT * ob );
+
+extern int fl_find_formbrowser_form_number( FL_OBJECT * ob,
+ FL_FORM * form );
+
+extern FL_OBJECT * fl_add_formbrowser( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_formbrowser( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern int fl_get_formbrowser_numforms( FL_OBJECT * ob );
+
+#define fl_get_formbrowser_forms fl_get_formbrowser_numforms
+
+extern FL_FORM * fl_get_formbrowser_form( FL_OBJECT * ob,
+ int n );
+
+/* ! defined FL_FORMBROWSER_H */
+
+/**
+ * \file frame.h
+ */
+
+
+#define FL_FRAME_H
+
+/* types of frames */
+
+enum {
+ FL_NO_FRAME,
+ FL_UP_FRAME,
+ FL_DOWN_FRAME,
+ FL_BORDER_FRAME,
+ FL_SHADOW_FRAME,
+ FL_ENGRAVED_FRAME,
+ FL_ROUNDED_FRAME,
+ FL_EMBOSSED_FRAME,
+ FL_OVAL_FRAME
+};
+
+#define FL_FRAME_COL1 FL_BLACK /* border color */
+#define FL_FRAME_COL2 FL_COL1 /* label background */
+#define FL_FRAME_LCOL FL_BLACK /* label color */
+
+extern FL_OBJECT * fl_create_frame( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_frame( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+/* labeld frame */
+
+extern FL_OBJECT * fl_create_labelframe( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_labelframe( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+/* ! defined FL_FRAME_H */
+
+/**
+ * \file free.h
+ *
+ * Object Class: Free
+ */
+
+
+#define FL_FREE_H
+
+
+typedef enum {
+ FL_NORMAL_FREE,
+ FL_INACTIVE_FREE,
+ FL_INPUT_FREE,
+ FL_CONTINUOUS_FREE,
+ FL_ALL_FREE
+} FL_FREE_TYPE;
+
+#define FL_SLEEPING_FREE FL_INACTIVE_FREE
+
+extern FL_OBJECT * fl_create_free( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label,
+ FL_HANDLEPTR handle );
+
+extern FL_OBJECT * fl_add_free( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label,
+ FL_HANDLEPTR handle );
+
+/* ! defined FL_FREE_H */
+
+/**
+ * \file goodies.h
+ */
+
+
+#define FL_GOODIES_H
+
+/***** Resources and misc. goodie routines ******/
+
+#define FLAlertDismissLabel "flAlert.dismiss.label"
+#define FLAlertTitle "flAlert.title"
+
+#define FLQuestionYesLabel "flQuestion.yes.label"
+#define FLQuestionNoLabel "flQuestion.no.label"
+#define FLQuestionTitle "flQuestion.title"
+
+#define FLOKLabel "flInput.ok.label"
+#define FLInputClearLabel "flInput.clear.label"
+#define FLInputCancelLabel "flInput.cancel.label"
+#define FLInputTitle "flInput.title"
+
+#define FLChoiceTitle "flChoice.title"
+
+extern void fl_set_goodies_font(
+ int style,
+ int size
+ );
+
+/*********** messages and questions **************/
+
+extern void fl_show_message( const char *,
+ const char *,
+ const char * );
+
+extern void fl_show_messages( const char * );
+
+#define fl_show_msg fl_show_messages_f
+extern void fl_show_messages_f( const char *,
+ ... );
+
+extern void fl_hide_message( void );
+
+#define fl_hide_msg fl_hide_message
+#define fl_hide_messages fl_hide_message
+
+extern int fl_show_question( const char *,
+ int );
+
+extern void fl_hide_question( void );
+
+extern void fl_show_alert( const char *,
+ const char *,
+ const char *,
+ int );
+
+
+#define fl_show_alert2 fl_show_alert_f
+extern void fl_show_alert_f( int c,
+ const char * fmt,
+ ... );
+
+extern void fl_hide_alert( void );
+
+extern const char * fl_show_input( const char *,
+ const char * );
+
+extern void fl_hide_input( void );
+
+extern const char * fl_show_simple_input( const char *,
+ const char * );
+
+extern int fl_show_colormap( int );
+
+/********* choices *****************/
+
+extern int fl_show_choices( const char *,
+ int,
+ const char *,
+ const char *,
+ const char *,
+ int );
+
+extern int fl_show_choice( const char *,
+ const char *,
+ const char *,
+ int,
+ const char *,
+ const char *,
+ const char *,
+ int );
+
+extern void fl_hide_choice( void );
+
+extern void fl_set_choices_shortcut( const char *,
+ const char *,
+ const char * );
+
+#define fl_set_choice_shortcut fl_set_choices_shortcut
+
+/************ one liner ***************/
+
+extern void fl_show_oneliner( const char *,
+ FL_Coord,
+ FL_Coord );
+
+extern void fl_hide_oneliner( void );
+
+extern void fl_set_oneliner_font( int,
+ int );
+
+extern void fl_set_oneliner_color( FL_COLOR,
+ FL_COLOR );
+
+extern void fl_set_tooltip_font( int,
+ int );
+
+extern void fl_set_tooltip_color( FL_COLOR,
+ FL_COLOR );
+
+extern void fl_set_tooltip_boxtype( int );
+
+extern void fl_set_tooltip_lalign( int );
+
+/************* command log **************/
+
+typedef struct {
+ FL_FORM * form;
+ void * vdata; /* UNUSED, remove in later version */
+ char * cdata; /* UNUSED, remove in later version */
+ long ldata; /* UNUSED, remove in later version */
+ FL_OBJECT * browser;
+ FL_OBJECT * close_browser;
+ FL_OBJECT * clear_browser;
+} FD_CMDLOG;
+
+
+
+
+#define FL_PID_T long
+
+
+extern long fl_exe_command( const char *,
+ int );
+
+extern int fl_end_command( long );
+
+extern int fl_check_command( long );
+
+extern FILE * fl_popen( const char *,
+ const char * );
+
+extern int fl_pclose( FILE * );
+
+extern int fl_end_all_command( void );
+
+extern void fl_show_command_log( int );
+
+extern void fl_hide_command_log( void );
+
+extern void fl_clear_command_log( void );
+
+extern void fl_addto_command_log( const char * );
+
+extern void fl_addto_command_log_f( const char *,
+ ...);
+
+extern void fl_set_command_log_position( int,
+ int );
+
+extern FD_CMDLOG * fl_get_command_log_fdstruct( void );
+
+/* Aliases */
+
+#define fl_open_command fl_exe_command
+#define fl_close_command fl_end_command
+
+/******* File selector *****************/
+
+#define FL_MAX_FSELECTOR 6
+
+typedef struct {
+ FL_FORM * fselect;
+ void * vdata;
+ void * cdata;
+ long ldata;
+ FL_OBJECT * browser,
+ * input,
+ * prompt,
+ * resbutt;
+ FL_OBJECT * patbutt,
+ * dirbutt,
+ * cancel,
+ * ready;
+ FL_OBJECT * dirlabel,
+ * patlabel;
+ FL_OBJECT * appbutt[ 3 ];
+} FD_FSELECTOR;
+
+extern int fl_use_fselector( int );
+
+extern const char * fl_show_fselector( const char *,
+ const char *,
+ const char *,
+ const char * );
+
+extern void fl_hide_fselector( void );
+
+extern void fl_set_fselector_fontsize( int );
+
+extern void fl_set_fselector_fontstyle( int );
+
+extern void fl_set_fselector_placement( int );
+
+extern void fl_set_fselector_border( int );
+
+#define fl_set_fselector_transient( b ) \
+ fl_set_fselector_border( ( b ) ? FL_TRANSIENT : FL_FULLBORDER )
+
+extern void fl_set_fselector_callback( FL_FSCB,
+ void * );
+
+extern const char * fl_get_filename( void );
+
+extern const char * fl_get_directory( void );
+
+extern const char * fl_get_pattern( void );
+
+extern int fl_set_directory( const char * );
+
+extern void fl_set_pattern( const char * );
+
+extern void fl_refresh_fselector( void );
+
+extern void fl_add_fselector_appbutton( const char *,
+ void ( * )( void * ),
+ void * );
+
+extern void fl_remove_fselector_appbutton( const char * );
+
+extern void fl_disable_fselector_cache( int );
+
+extern void fl_invalidate_fselector_cache( void );
+
+extern FL_FORM * fl_get_fselector_form( void );
+
+extern FD_FSELECTOR * fl_get_fselector_fdstruct( void );
+
+extern void fl_hide_fselector( void );
+
+extern void fl_set_fselector_filetype_marker( int,
+ int,
+ int,
+ int,
+ int );
+
+#define fl_show_file_selector fl_show_fselector
+#define fl_set_fselector_cb fl_set_fselector_callback
+
+#define fl_set_fselector_title( s ) \
+ fl_set_form_title( fl_get_fselector_form( ), s )
+
+extern int fl_goodies_atclose( FL_FORM *,
+ void * );
+
+/* ! defined FL_GOODIES_H */
+
+/**
+ * \file input.h
+ */
+
+
+#define FL_INPUT_H
+
+
+/***** Types *****/
+
+typedef enum {
+ FL_NORMAL_INPUT,
+ FL_FLOAT_INPUT,
+ FL_INT_INPUT,
+ FL_DATE_INPUT,
+ FL_MULTILINE_INPUT,
+ FL_HIDDEN_INPUT,
+ FL_SECRET_INPUT
+} FL_INPUT_TYPE;
+
+/* for date input */
+
+enum {
+ FL_INPUT_MMDD,
+ FL_INPUT_DDMM
+};
+
+enum {
+ FL_NORMAL_INPUT_MODE,
+ FL_DOS_INPUT_MODE
+};
+
+/***** Defaults *****/
+
+#define FL_INPUT_BOXTYPE FL_DOWN_BOX
+#define FL_INPUT_COL1 FL_COL1
+#define FL_INPUT_COL2 FL_MCOL
+#define FL_INPUT_LCOL FL_LCOL
+#define FL_INPUT_ALIGN FL_ALIGN_LEFT
+
+/***** Others *****/
+
+#define FL_INPUT_TCOL FL_LCOL
+#define FL_INPUT_CCOL FL_BLUE
+
+#define FL_RINGBELL ( 1 << 4 )
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_input( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_input( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_input( FL_OBJECT * ob,
+ const char * str );
+
+extern void fl_set_input_f( FL_OBJECT * obj,
+ const char * fmt,
+ ... );
+
+extern void fl_set_input_return( FL_OBJECT * ob,
+ unsigned int when );
+
+extern void fl_set_input_color( FL_OBJECT * ob,
+ FL_COLOR textcol,
+ FL_COLOR curscol );
+
+extern void fl_get_input_color( FL_OBJECT * ob,
+ FL_COLOR * textcol,
+ FL_COLOR * curscol );
+
+extern void fl_set_input_scroll( FL_OBJECT * ob,
+ int yes );
+
+extern void fl_set_input_cursorpos( FL_OBJECT * ob,
+ int xpos,
+ int ypos );
+
+extern void fl_set_input_selected( FL_OBJECT * ob,
+ int yes );
+
+extern void fl_set_input_selected_range( FL_OBJECT * ob,
+ int begin,
+ int end );
+
+extern const char *fl_get_input_selected_range( FL_OBJECT * ob,
+ int * begin,
+ int * end );
+
+extern void fl_set_input_maxchars( FL_OBJECT * ob,
+ int maxchars );
+
+extern void fl_set_input_format( FL_OBJECT * ob,
+ int fmt,
+ int sep );
+
+extern void fl_set_input_hscrollbar( FL_OBJECT * ob,
+ int pref );
+
+extern void fl_set_input_vscrollbar( FL_OBJECT * ob,
+ int pref );
+
+extern void fl_set_input_topline( FL_OBJECT * ob,
+ int top );
+
+extern void fl_set_input_scrollbarsize( FL_OBJECT * ob,
+ int hh,
+ int vw );
+
+extern void fl_get_input_scrollbarsize( FL_OBJECT * ob,
+ int * hh,
+ int * vw );
+
+extern void fl_set_input_xoffset( FL_OBJECT * ob,
+ int xoff );
+
+extern int fl_get_input_xoffset( FL_OBJECT * ob );
+
+extern int fl_set_input_fieldchar( FL_OBJECT * ob,
+ int fchar );
+
+extern int fl_get_input_topline( FL_OBJECT * ob );
+
+extern int fl_get_input_screenlines( FL_OBJECT * ob );
+
+extern int fl_get_input_cursorpos( FL_OBJECT * ob,
+ int * x,
+ int * y );
+
+extern void fl_set_input_cursor_visible( FL_OBJECT * ob,
+ int visible );
+
+extern int fl_get_input_numberoflines( FL_OBJECT * ob );
+
+extern void fl_get_input_format( FL_OBJECT * ob,
+ int * fmt,
+ int * sep );
+
+extern const char * fl_get_input( FL_OBJECT * ob );
+
+typedef int ( * FL_INPUTVALIDATOR )(FL_OBJECT *,
+ const char *,
+ const char *,
+ int );
+
+extern FL_INPUTVALIDATOR fl_set_input_filter( FL_OBJECT * ob,
+ FL_INPUTVALIDATOR validate );
+
+extern int fl_validate_input( FL_OBJECT *obj );
+
+#define fl_set_input_shortcut fl_set_object_shortcut
+
+/* edit keys. */
+
+typedef struct {
+ /* basic editing */
+
+ long del_prev_char; /* delete previous char */
+ long del_next_char; /* delete next char */
+ long del_prev_word; /* delete previous word */
+ long del_next_word; /* delete next word */
+
+ /* movement */
+
+ long moveto_prev_line; /* one line up */
+ long moveto_next_line; /* one line down */
+ long moveto_prev_char; /* one char left */
+ long moveto_next_char; /* one char right */
+ long moveto_prev_word; /* one word left */
+ long moveto_next_word; /* one word right */
+ long moveto_prev_page; /* one page up */
+ long moveto_next_page; /* one page down */
+ long moveto_bol; /* move to begining of line */
+ long moveto_eol; /* move to end of line */
+ long moveto_bof; /* move to begin of file */
+ long moveto_eof; /* move to end of file */
+
+ /* misc. stuff */
+
+ long transpose; /* switch two char positions */
+ long paste; /* paste the edit buffer */
+ long backspace; /* another del_prev_char */
+ long del_to_bol; /* cut to begining of line */
+ long del_to_eol; /* cut to end of line */
+ long clear_field; /* delete everything */
+ long del_to_eos; /* not implemented */
+} FL_EditKeymap;
+
+extern void fl_set_input_editkeymap( const FL_EditKeymap * keymap );
+
+extern void fl_get_input_editkeymap( FL_EditKeymap * keymap );
+
+extern void fl_set_default_editkeymap( void );
+
+extern int fl_set_input_mode( int mode );
+
+/* ! defined FL_INPUT_H */
+
+/**
+ * \file menu.h
+ */
+
+
+#define FL_MENU_H
+
+
+/************ Object Class: Menu ************/
+
+typedef enum {
+ FL_TOUCH_MENU,
+ FL_PUSH_MENU,
+ FL_PULLDOWN_MENU
+} FL_MENU_TYPE;
+
+/***** Defaults *****/
+
+#define FL_MENU_BOXTYPE FL_BORDER_BOX
+#define FL_MENU_COL1 FL_COL1
+#define FL_MENU_COL2 FL_MCOL
+#define FL_MENU_LCOL FL_LCOL
+#define FL_MENU_ALIGN FL_ALIGN_CENTER
+
+/***** Others *****/
+
+#define FL_MENU_MAXITEMS 128
+#define FL_MENU_MAXSTR 64 /* not used anymore! JTT */
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_menu( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_menu( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_clear_menu( FL_OBJECT * ob );
+
+extern void fl_set_menu( FL_OBJECT * ob,
+ const char * menustr ,
+ ... );
+
+extern int fl_addto_menu( FL_OBJECT * ob,
+ const char * menustr,
+ ... );
+
+extern void fl_replace_menu_item( FL_OBJECT * ob,
+ int numb,
+ const char * str,
+ ... );
+
+extern void fl_delete_menu_item( FL_OBJECT * ob,
+ int numb );
+
+extern FL_PUP_CB fl_set_menu_item_callback( FL_OBJECT * ob,
+ int numb,
+ FL_PUP_CB cb );
+
+extern void fl_set_menu_item_shortcut( FL_OBJECT * ob,
+ int numb,
+ const char * str );
+
+extern void fl_set_menu_item_mode( FL_OBJECT * ob,
+ int numb,
+ unsigned int mode );
+
+extern void fl_show_menu_symbol( FL_OBJECT * ob,
+ int show );
+
+extern void fl_set_menu_popup( FL_OBJECT * ob,
+ int pup );
+
+extern int fl_get_menu_popup( FL_OBJECT * ob );
+
+extern int fl_get_menu( FL_OBJECT * ob );
+
+extern const char * fl_get_menu_item_text( FL_OBJECT * ob,
+ int numb );
+
+extern int fl_get_menu_maxitems( FL_OBJECT * ob );
+
+extern unsigned int fl_get_menu_item_mode( FL_OBJECT * ob,
+ int numb );
+
+extern const char *fl_get_menu_text( FL_OBJECT * ob );
+
+extern int fl_set_menu_entries( FL_OBJECT * ob,
+ FL_PUP_ENTRY * ent );
+
+extern int fl_set_menu_notitle( FL_OBJECT * ob,
+ int off );
+
+extern int fl_set_menu_item_id( FL_OBJECT * ob,
+ int item,
+ int id );
+
+/* ! defined FL_MENU_H */
+
+
+
+#define FL_NMENU_H
+
+
+/* Nmenu object types */
+
+enum {
+ FL_NORMAL_NMENU,
+ FL_NORMAL_TOUCH_NMENU,
+ FL_BUTTON_NMENU,
+ FL_BUTTON_TOUCH_NMENU
+};
+
+extern FL_OBJECT *fl_create_nmenu(
+ int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ const char *
+ );
+
+extern FL_OBJECT *fl_add_nmenu(
+ int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ const char *
+ );
+
+extern int fl_clear_nmenu(
+ FL_OBJECT *
+ );
+
+extern FL_POPUP_ENTRY *fl_add_nmenu_items(
+ FL_OBJECT *,
+ const char *,
+ ...
+ );
+
+extern FL_POPUP_ENTRY *fl_insert_nmenu_items(
+ FL_OBJECT *,
+ FL_POPUP_ENTRY *,
+ const char *,
+ ...
+ );
+
+extern FL_POPUP_ENTRY *fl_replace_nmenu_item(
+ FL_OBJECT *,
+ FL_POPUP_ENTRY *,
+ const char *,
+ ...
+ );
+
+extern int fl_delete_nmenu_item(
+ FL_OBJECT *,
+ FL_POPUP_ENTRY *
+ );
+
+extern FL_POPUP_ENTRY *fl_set_nmenu_items(
+ FL_OBJECT *,
+ FL_POPUP_ITEM *
+ );
+
+extern FL_POPUP_ENTRY *fl_add_nmenu_items2(
+ FL_OBJECT *,
+ FL_POPUP_ITEM * );
+
+extern FL_POPUP_ENTRY *fl_insert_nmenu_items2(
+ FL_OBJECT *,
+ FL_POPUP_ENTRY *,
+ FL_POPUP_ITEM * );
+
+extern FL_POPUP_ENTRY *fl_replace_nmenu_items2(
+ FL_OBJECT *,
+ FL_POPUP_ENTRY *,
+ FL_POPUP_ITEM * );
+
+extern FL_POPUP *fl_get_nmenu_popup(
+ FL_OBJECT *
+ );
+
+extern int fl_set_nmenu_popup(
+ FL_OBJECT *,
+ FL_POPUP *
+ );
+
+extern FL_POPUP_RETURN *fl_get_nmenu_item(
+ FL_OBJECT *
+ );
+
+extern FL_POPUP_ENTRY *fl_get_nmenu_item_by_value(
+ FL_OBJECT *,
+ long int
+ );
+
+extern FL_POPUP_ENTRY *fl_get_nmenu_item_by_label(
+ FL_OBJECT *,
+ const char *
+ );
+
+extern FL_POPUP_ENTRY *fl_get_nmenu_item_by_text(
+ FL_OBJECT *,
+ const char *
+ );
+
+extern int fl_set_nmenu_policy(
+ FL_OBJECT *,
+ int
+ );
+
+extern FL_COLOR fl_set_nmenu_hl_text_color(
+ FL_OBJECT *,
+ FL_COLOR
+ );
+
+/* ! defined FL_NMENU_H */
+
+/**
+ * \file positioner.h
+ */
+
+
+#define FL_POSITIONER_H
+
+
+#define FL_NORMAL_POSITIONER 0
+#define FL_OVERLAY_POSITIONER 1
+#define FL_INVISIBLE_POSITIONER 2
+
+/***** Defaults *****/
+
+#define FL_POSITIONER_BOXTYPE FL_DOWN_BOX
+#define FL_POSITIONER_COL1 FL_COL1
+#define FL_POSITIONER_COL2 FL_RED
+#define FL_POSITIONER_LCOL FL_LCOL
+#define FL_POSITIONER_ALIGN FL_ALIGN_BOTTOM
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_positioner( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_positioner( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_positioner_xvalue( FL_OBJECT * ob,
+ double val );
+
+extern double fl_get_positioner_xvalue( FL_OBJECT * ob );
+
+extern void fl_set_positioner_xbounds( FL_OBJECT * ob,
+ double min,
+ double max );
+
+extern void fl_get_positioner_xbounds( FL_OBJECT * ob,
+ double * min,
+ double * max );
+
+extern void fl_set_positioner_yvalue( FL_OBJECT * ob,
+ double val );
+
+extern double fl_get_positioner_yvalue( FL_OBJECT * ob );
+
+extern void fl_set_positioner_ybounds( FL_OBJECT * ob,
+ double min,
+ double max );
+
+extern void fl_get_positioner_ybounds( FL_OBJECT * ob,
+ double * min,
+ double * max );
+
+extern void fl_set_positioner_xstep( FL_OBJECT * ob,
+ double value );
+
+extern void fl_set_positioner_ystep( FL_OBJECT * ob,
+ double value );
+
+extern void fl_set_positioner_return( FL_OBJECT * ob,
+ unsigned int when );
+
+extern void fl_set_positioner_mouse_buttons( FL_OBJECT * obj,
+ unsigned int mouse_buttons );
+
+extern void fl_get_positioner_mouse_buttons( FL_OBJECT * obj,
+ unsigned int * mouse_buttons );
+
+extern int fl_get_positioner_numb( FL_OBJECT * obj );
+
+
+/* ! defined FL_POSITIONER_H */
+
+
+
+#define FL_SCROLLBAR_H
+
+enum {
+ FL_VERT_SCROLLBAR,
+ FL_HOR_SCROLLBAR,
+
+ FL_VERT_THIN_SCROLLBAR,
+ FL_HOR_THIN_SCROLLBAR,
+
+ FL_VERT_NICE_SCROLLBAR,
+ FL_HOR_NICE_SCROLLBAR,
+
+ FL_VERT_PLAIN_SCROLLBAR,
+ FL_HOR_PLAIN_SCROLLBAR,
+
+ FL_HOR_BASIC_SCROLLBAR = FL_HOR_PLAIN_SCROLLBAR,
+ FL_VERT_BASIC_SCROLLBAR = FL_VERT_PLAIN_SCROLLBAR
+};
+
+enum {
+ FL_NORMAL_SCROLLBAR,
+ FL_THIN_SCROLLBAR,
+ FL_NICE_SCROLLBAR,
+ FL_PLAIN_SCROLLBAR
+};
+
+#define FL_SCROLLBAR_ALIGN FL_ALIGN_BOTTOM
+
+
+extern FL_OBJECT * fl_create_scrollbar( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_scrollbar( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern double fl_get_scrollbar_value( FL_OBJECT * ob );
+
+extern void fl_set_scrollbar_value( FL_OBJECT * ob,
+ double val );
+
+extern void fl_set_scrollbar_size( FL_OBJECT * ob,
+ double val );
+
+extern double fl_get_scrollbar_size( FL_OBJECT * obj );
+
+extern void fl_set_scrollbar_increment( FL_OBJECT * ob,
+ double l,
+ double r );
+
+extern void fl_get_scrollbar_increment( FL_OBJECT * ob,
+ double * a,
+ double * b );
+
+extern void fl_set_scrollbar_bounds( FL_OBJECT * ob,
+ double b1,
+ double b2 );
+
+extern void fl_get_scrollbar_bounds( FL_OBJECT * ob,
+ double * b1,
+ double * b2 );
+
+extern void fl_set_scrollbar_return( FL_OBJECT * ob,
+ unsigned int when );
+
+extern void fl_set_scrollbar_step( FL_OBJECT * ob,
+ double step );
+
+/* ! defined FL_SCROLLBAR_H */
+
+/**
+ * \file select.h
+ */
+
+
+#define FL_SELECT_H
+
+
+/* Select object types */
+
+enum {
+ FL_NORMAL_SELECT,
+ FL_MENU_SELECT,
+ FL_DROPLIST_SELECT
+};
+
+/* Defaults */
+
+#define FL_SELECT_COL1 FL_COL1
+#define FL_SELECT_COL2 FL_MCOL
+#define FL_SELECT_LCOL FL_LCOL
+#define FL_SELECT_ALIGN FL_ALIGN_LEFT
+
+extern FL_OBJECT *fl_create_select( int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ const char * );
+
+extern FL_OBJECT *fl_add_select( int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ const char * );
+
+extern int fl_clear_select( FL_OBJECT * );
+
+extern FL_POPUP_ENTRY *fl_add_select_items( FL_OBJECT *,
+ const char *,
+ ... );
+
+extern FL_POPUP_ENTRY *fl_insert_select_items( FL_OBJECT *,
+ FL_POPUP_ENTRY *,
+ const char *,
+ ... );
+
+extern FL_POPUP_ENTRY *fl_replace_select_item( FL_OBJECT *,
+ FL_POPUP_ENTRY *,
+ const char *,
+ ... );
+
+extern int fl_delete_select_item( FL_OBJECT *,
+ FL_POPUP_ENTRY * );
+
+extern long fl_set_select_items( FL_OBJECT *,
+ FL_POPUP_ITEM * );
+
+extern FL_POPUP *fl_get_select_popup( FL_OBJECT * );
+
+extern int fl_set_select_popup( FL_OBJECT *,
+ FL_POPUP * );
+
+extern FL_POPUP_RETURN *fl_get_select_item( FL_OBJECT * );
+
+extern FL_POPUP_RETURN *fl_set_select_item( FL_OBJECT *,
+ FL_POPUP_ENTRY * );
+
+extern FL_POPUP_ENTRY *fl_get_select_item_by_value( FL_OBJECT *,
+ long );
+
+extern FL_POPUP_ENTRY *fl_get_select_item_by_label( FL_OBJECT *,
+ const char * );
+
+extern FL_POPUP_ENTRY * fl_get_select_item_by_label_f( FL_OBJECT *,
+ const char *,
+ ... );
+
+extern FL_POPUP_ENTRY * fl_get_select_item_by_text_f( FL_OBJECT * obj,
+ const char * fmt,
+ ... );
+
+extern FL_POPUP_ENTRY *fl_get_select_item_by_text( FL_OBJECT *,
+ const char * );
+
+extern FL_COLOR fl_get_select_text_color( FL_OBJECT * );
+
+extern FL_COLOR fl_set_select_text_color( FL_OBJECT *,
+ FL_COLOR );
+
+extern int fl_get_select_text_font( FL_OBJECT *,
+ int *,
+ int * );
+
+extern int fl_set_select_text_font( FL_OBJECT *,
+ int,
+ int );
+
+extern int fl_get_select_text_align( FL_OBJECT * );
+
+extern int fl_set_select_text_align( FL_OBJECT *,
+ int );
+
+extern int fl_set_select_policy( FL_OBJECT *,
+ int );
+
+/* ! defined FL_SELECT_H */
+
+/**
+ * \file slider.h
+ *
+ * Object Class: Slider
+ */
+
+
+#define FL_SLIDER_H
+
+
+#define FL_HOR_FLAG 1
+#define FL_SCROLL_FLAG 16
+
+typedef enum {
+ FL_VERT_SLIDER = 0,
+ FL_HOR_SLIDER = FL_VERT_SLIDER | 1 ,
+
+ FL_VERT_FILL_SLIDER = 2,
+ FL_HOR_FILL_SLIDER = FL_VERT_FILL_SLIDER | 1 ,
+
+ FL_VERT_NICE_SLIDER = 4,
+ FL_HOR_NICE_SLIDER = FL_VERT_NICE_SLIDER | 1 ,
+
+ FL_VERT_BROWSER_SLIDER = 6,
+ FL_HOR_BROWSER_SLIDER = FL_VERT_BROWSER_SLIDER | 1 ,
+
+ FL_VERT_PROGRESS_BAR = 8,
+ FL_HOR_PROGRESS_BAR = FL_VERT_PROGRESS_BAR | 1 ,
+
+ /* The following are for use with scrollbars only! */
+
+ /* For FL_VERT_SCROLLBAR and FL_HOR_SCROLLBAR */
+
+ FL_VERT_BROWSER_SLIDER2 = FL_VERT_SLIDER | 16 ,
+ FL_HOR_BROWSER_SLIDER2 = FL_HOR_SLIDER | 16 ,
+
+ /* for FL_VERT_THIN_SCROLLBAR and FL_VERT_THIN_SCROLLBAR */
+
+ FL_VERT_THIN_SLIDER = FL_VERT_FILL_SLIDER | 16 ,
+ FL_HOR_THIN_SLIDER = FL_HOR_FILL_SLIDER | 16 ,
+
+ /* For FL_VERT_NICE_SCROLLBAR and FL_HOR_NICE_SCROLLBAR */
+
+ FL_VERT_NICE_SLIDER2 = FL_VERT_NICE_SLIDER | 16 ,
+ FL_HOR_NICE_SLIDER2 = FL_HOR_NICE_SLIDER | 16 ,
+
+ /* for use as FL_VERT_PLAIN_SCROLLBAR and FL_VERT_PLAIN_SCROLLBAR */
+
+ FL_VERT_BASIC_SLIDER = FL_VERT_BROWSER_SLIDER | 16 ,
+ FL_HOR_BASIC_SLIDER = FL_HOR_BROWSER_SLIDER | 16
+} FL_SLIDER_TYPE;
+
+/***** Defaults *****/
+
+#define FL_SLIDER_BW1 FL_BOUND_WIDTH
+#define FL_SLIDER_BW2 FL_abs( FL_BOUND_WIDTH )
+#define FL_SLIDER_BOXTYPE FL_DOWN_BOX
+#define FL_SLIDER_COL1 FL_COL1
+#define FL_SLIDER_COL2 FL_COL1
+#define FL_SLIDER_LCOL FL_LCOL
+#define FL_SLIDER_ALIGN FL_ALIGN_BOTTOM
+
+/***** Others *****/
+
+#define FL_SLIDER_FINE 0.25
+#define FL_SLIDER_WIDTH 0.10
+
+#define FL_SLIDER_MAX_PREC 10
+
+/***** Routines *****/
+
+extern FL_OBJECT * fl_create_slider( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_slider( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_create_valslider( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_valslider( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_slider_value( FL_OBJECT * ob,
+ double val );
+
+extern double fl_get_slider_value( FL_OBJECT * ob );
+
+extern void fl_set_slider_bounds( FL_OBJECT * ob,
+ double min,
+ double max );
+
+extern void fl_get_slider_bounds( FL_OBJECT * ob,
+ double * min,
+ double * max );
+
+extern void fl_set_slider_return( FL_OBJECT * ob,
+ unsigned int value );
+
+extern void fl_set_slider_step( FL_OBJECT * ob,
+ double value );
+
+extern void fl_set_slider_increment( FL_OBJECT * ob,
+ double l,
+ double r );
+
+extern void fl_get_slider_increment( FL_OBJECT * ob,
+ double * l,
+ double * r );
+
+extern void fl_set_slider_size( FL_OBJECT * ob,
+ double size );
+
+extern double fl_get_slider_size( FL_OBJECT * obj );
+
+extern void fl_set_slider_precision( FL_OBJECT * ob,
+ int prec );
+
+extern void fl_set_slider_filter( FL_OBJECT * ob,
+ FL_VAL_FILTER filter );
+
+extern int fl_get_slider_repeat( FL_OBJECT * );
+
+extern void fl_set_slider_repeat( FL_OBJECT *,
+ int );
+
+/* ! defined FL_SLIDER_H */
+
+
+#define FL_SPINNER_H
+
+typedef enum {
+ FL_INT_SPINNER,
+ FL_FLOAT_SPINNER
+} FL_SPINNER_TYPE;
+
+extern FL_OBJECT * fl_create_spinner( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_spinner( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern double fl_get_spinner_value( FL_OBJECT * obj );
+
+extern double fl_set_spinner_value( FL_OBJECT * obj,
+ double val );
+
+extern void fl_set_spinner_bounds( FL_OBJECT * obj,
+ double min,
+ double max );
+
+extern void fl_get_spinner_bounds( FL_OBJECT * obj,
+ double * min,
+ double * max );
+
+extern void fl_set_spinner_step( FL_OBJECT * obj,
+ double step );
+
+extern double fl_get_spinner_step( FL_OBJECT * obj );
+
+extern void fl_set_spinner_precision( FL_OBJECT * obj,
+ int prec );
+
+extern int fl_get_spinner_precision( FL_OBJECT * obj );
+
+extern FL_OBJECT * fl_get_spinner_input( FL_OBJECT * obj );
+
+extern FL_OBJECT * fl_get_spinner_up_button( FL_OBJECT * obj );
+
+extern FL_OBJECT * fl_get_spinner_down_button( FL_OBJECT * obj );
+
+
+/* ! defined FL_SPINNER_H */
+
+/**
+ * \file tabfolder.h
+ */
+
+
+#define FL_FOLDER_H
+
+enum {
+ FL_TOP_TABFOLDER, /* tab on top */
+ FL_BOTTOM_TABFOLDER,
+ FL_LEFT_TABFOLDER,
+ FL_RIGHT_TABFOLDER,
+ FL_NORMAL_TABFOLDER = FL_TOP_TABFOLDER
+};
+
+enum {
+ FL_NO,
+ FL_FIT,
+ FL_ENLARGE_ONLY
+};
+
+extern FL_OBJECT * fl_create_tabfolder( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_tabfolder( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_addto_tabfolder( FL_OBJECT * ob,
+ const char * title,
+ FL_FORM * form );
+
+extern FL_FORM * fl_get_tabfolder_folder_bynumber( FL_OBJECT * ob,
+ int num );
+
+extern FL_FORM * fl_get_tabfolder_folder_byname( FL_OBJECT * ob,
+ const char * name );
+
+extern FL_FORM * fl_get_tabfolder_folder_byname_f( FL_OBJECT * ob,
+ const char * fmt,
+ ...);
+
+extern void fl_delete_folder( FL_OBJECT * ob,
+ FL_FORM * form );
+
+extern void fl_delete_folder_bynumber( FL_OBJECT * ob,
+ int num );
+
+extern void fl_delete_folder_byname( FL_OBJECT * ob,
+ const char * name );
+
+extern void fl_delete_folder_byname_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+extern void fl_set_folder( FL_OBJECT * ob,
+ FL_FORM * form );
+
+extern void fl_set_folder_byname( FL_OBJECT * ob,
+ const char * name );
+
+extern void fl_set_folder_byname_f( FL_OBJECT * ob,
+ const char * fmt,
+ ... );
+
+extern void fl_set_folder_bynumber( FL_OBJECT * ob,
+ int num );
+
+extern FL_FORM * fl_get_folder( FL_OBJECT * ob );
+
+extern int fl_get_folder_number( FL_OBJECT * ob );
+
+extern const char * fl_get_folder_name( FL_OBJECT * ob );
+
+extern int fl_get_tabfolder_numfolders( FL_OBJECT * ob );
+
+extern FL_FORM * fl_get_active_folder( FL_OBJECT * ob );
+
+extern int fl_get_active_folder_number( FL_OBJECT * ob );
+
+extern const char * fl_get_active_folder_name( FL_OBJECT * ob );
+
+
+extern void fl_get_folder_area( FL_OBJECT * ob,
+ FL_Coord * x,
+ FL_Coord * y,
+ FL_Coord * w,
+ FL_Coord * h );
+
+extern void fl_replace_folder_bynumber( FL_OBJECT * ob,
+ int num,
+ FL_FORM * form );
+
+extern int fl_set_tabfolder_autofit( FL_OBJECT * ob,
+ int y );
+
+extern int fl_set_default_tabfolder_corner( int n );
+
+extern int fl_set_tabfolder_offset( FL_OBJECT * obj,
+ int offset );
+
+extern int fl_get_tabfolder_offset( FL_OBJECT * obj );
+
+/* ! defined FL_FOLDER_H */
+
+/**
+ * \file text.h
+ */
+
+
+#define FL_TEXT_H
+
+enum {
+ FL_NORMAL_TEXT
+};
+
+#define FL_TEXT_BOXTYPE FL_FLAT_BOX
+#define FL_TEXT_COL1 FL_COL1
+#define FL_TEXT_COL2 FL_MCOL
+#define FL_TEXT_LCOL FL_LCOL
+#define FL_TEXT_ALIGN ( FL_ALIGN_LEFT | FL_ALIGN_INSIDE )
+
+extern FL_OBJECT * fl_create_text( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_text( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+/* ! defined FL_TEXT_H */
+
+/**
+ * \file thumbwheel.h
+ */
+
+
+#define FL_THUMBWHEEL_H
+
+
+enum {
+ FL_VERT_THUMBWHEEL,
+ FL_HOR_THUMBWHEEL
+};
+
+/* defaults */
+
+#define FL_THUMBWHEEL_COL1 FL_COL1
+#define FL_THUMBWHEEL_COL2 FL_COL1
+#define FL_THUMBWHEEL_LCOL FL_BLACK
+#define FL_THUMBWHEEL_BOXTYPE FL_BORDER_BOX
+#define FL_THUMBWHEEL_ALIGN FL_ALIGN_BOTTOM
+
+extern double fl_get_thumbwheel_value( FL_OBJECT * ob );
+
+extern double fl_set_thumbwheel_value( FL_OBJECT * ob,
+ double value );
+
+extern double fl_get_thumbwheel_step( FL_OBJECT * ob );
+
+extern double fl_set_thumbwheel_step( FL_OBJECT * ob,
+ double step );
+
+extern int fl_set_thumbwheel_return( FL_OBJECT * ob,
+ unsigned int when );
+
+extern int fl_set_thumbwheel_crossover( FL_OBJECT * ob,
+ int flag );
+
+extern void fl_set_thumbwheel_bounds( FL_OBJECT * ob,
+ double min,
+ double max );
+
+extern void fl_get_thumbwheel_bounds( FL_OBJECT * ob,
+ double * min,
+ double * max );
+
+extern FL_OBJECT * fl_create_thumbwheel( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_thumbwheel( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+/* ! defined FL_THUMBWHEEL_H */
+
+/**
+ * \file timer.h
+ *
+ * Object Class: Timer
+ */
+
+
+#define FL_TIMER_H
+
+
+typedef enum {
+ FL_NORMAL_TIMER,
+ FL_VALUE_TIMER,
+ FL_HIDDEN_TIMER
+} FL_TIMER_TYPE;
+
+/***** Defaults *****/
+
+#define FL_TIMER_BOXTYPE FL_DOWN_BOX
+#define FL_TIMER_COL1 FL_COL1
+#define FL_TIMER_COL2 FL_RED
+#define FL_TIMER_LCOL FL_LCOL
+#define FL_TIMER_ALIGN FL_ALIGN_CENTER
+
+/***** Others *****/
+
+#define FL_TIMER_BLINKRATE 0.2
+
+/***** Routines *****/
+
+typedef char * ( * FL_TIMER_FILTER )( FL_OBJECT *, double );
+
+extern FL_OBJECT * fl_create_timer( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_timer( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_timer( FL_OBJECT * ob,
+ double total );
+
+extern double fl_get_timer( FL_OBJECT * ob );
+
+extern void fl_set_timer_countup( FL_OBJECT * ob,
+ int yes );
+
+extern FL_TIMER_FILTER fl_set_timer_filter( FL_OBJECT * ob,
+ FL_TIMER_FILTER filter );
+
+extern void fl_suspend_timer( FL_OBJECT * ob );
+
+extern void fl_resume_timer( FL_OBJECT * ob );
+
+/* ! defined FL_TIMER_H */
+
+/**
+ * \file xpopup.h
+ *
+ * Prototypes for xpop-up menus
+ */
+
+
+#define FL_XPOPUP_H
+
+
+#define FL_MAXPUPI 128 /* max item each pup */
+#define FL_PUP_PADH 4 /* space between each items */
+
+typedef void ( * FL_PUP_ENTERCB )( int, void * ); /* call back prototype */
+typedef void ( * FL_PUP_LEAVECB )( int, void * ); /* call back prototype */
+
+extern int fl_setpup_entries( int nm,
+ FL_PUP_ENTRY * entries );
+
+extern int fl_newpup( Window win );
+
+extern int fl_defpup( Window win,
+ const char * str,
+ ... );
+
+extern int fl_addtopup( int n,
+ const char * str,
+ ... );
+
+extern int fl_setpup_mode( int nm,
+ int ni,
+ unsigned int mode );
+
+extern void fl_freepup( int n );
+
+extern int fl_dopup( int n );
+
+
+extern Cursor fl_setpup_default_cursor( int cursor );
+
+extern void fl_setpup_default_color( FL_COLOR fg,
+ FL_COLOR bg );
+
+extern void fl_setpup_default_pup_checked_color( FL_COLOR col );
+
+extern int fl_setpup_default_fontsize( int size );
+
+extern int fl_setpup_default_fontstyle( int style );
+
+#define fl_setpup_fontsize fl_setpup_default_fontsize
+#define fl_setpup_fontstyle fl_setpup_default_fontstyle
+#define fl_setpup_color fl_setpup_default_color
+#define fl_setpup_default_checkcolor fl_setpup_default_pup_checked_color
+#define fl_setpup_checkcolor fl_setpup_default_pup_checked_color
+
+extern int fl_setpup_default_bw( int bw );
+
+extern void fl_setpup_shortcut( int nm,
+ int ni,
+ const char * sc );
+
+extern void fl_setpup_position( int x,
+ int y );
+
+extern void fl_setpup_align_bottom( void );
+
+extern void fl_setpup_selection( int nm,
+ int ni );
+
+extern void fl_setpup_shadow( int n,
+ int y );
+
+extern void fl_setpup_softedge( int n,
+ int y );
+
+extern void fl_setpup_bw( int n,
+ int bw );
+
+extern void fl_setpup_title( int nm,
+ const char * title );
+
+extern void fl_setpup_title_f( int nm,
+ const char * fmt,
+ ... );
+
+extern FL_PUP_ENTERCB fl_setpup_entercb( int nm,
+ FL_PUP_ENTERCB cb,
+ void * data );
+
+extern FL_PUP_LEAVECB fl_setpup_leavecb( int nm,
+ FL_PUP_LEAVECB cb,
+ void * data );
+
+extern void fl_setpup_pad( int n,
+ int padw,
+ int padh );
+
+extern Cursor fl_setpup_cursor( int nm,
+ int cursor );
+
+extern int fl_setpup_maxpup( int n );
+
+extern unsigned int fl_getpup_mode( int nm,
+ int ni );
+
+extern const char * fl_getpup_text( int nm,
+ int ni );
+
+extern void fl_showpup( int n );
+
+extern void fl_hidepup( int n );
+
+extern int fl_getpup_items( int n );
+
+extern int fl_current_pup( void );
+
+#define fl_setpup_hotkey fl_setpup_shortcut
+
+extern FL_PUP_CB fl_setpup_itemcb( int nm,
+ int ni,
+ FL_PUP_CB cb );
+
+extern FL_PUP_CB fl_setpup_menucb( int nm,
+ FL_PUP_CB cb );
+
+extern void fl_setpup_submenu( int m,
+ int i,
+ int subm );
+
+#define fl_setpup fl_setpup_mode
+
+/* ! defined FL_XPOPUP_H */
+
+/**
+ * \file xyplot.h
+ */
+
+
+#define FL_XYPLOT_H
+
+/* Class FL_XYPLOT */
+
+typedef enum {
+ FL_NORMAL_XYPLOT, /* solid line */
+ FL_SQUARE_XYPLOT, /* with added square */
+ FL_CIRCLE_XYPLOT, /* with added circle */
+ FL_FILL_XYPLOT, /* fill completely */
+ FL_POINTS_XYPLOT, /* only data points */
+ FL_DASHED_XYPLOT, /* dashed line */
+ FL_IMPULSE_XYPLOT,
+ FL_ACTIVE_XYPLOT, /* accepts interactive manipulations */
+ FL_EMPTY_XYPLOT,
+ FL_DOTTED_XYPLOT,
+ FL_DOTDASHED_XYPLOT,
+ FL_LONGDASHED_XYPLOT,
+ FL_LINEPOINTS_XYPLOT /* line & points */
+} FL_XYPLOT_TYPE;
+
+enum {
+ FL_LINEAR,
+ FL_LOG
+};
+
+enum {
+ FL_GRID_NONE = 0,
+ FL_GRID_MAJOR = 1,
+ FL_GRID_MINOR = 2
+};
+
+/***** Defaults *****/
+
+#define FL_XYPLOT_BOXTYPE FL_FLAT_BOX
+#define FL_XYPLOT_COL1 FL_COL1
+#define FL_XYPLOT_LCOL FL_LCOL
+#define FL_XYPLOT_ALIGN FL_ALIGN_BOTTOM
+#define FL_MAX_XYPLOTOVERLAY 32
+
+/***** Others *****/
+
+extern FL_OBJECT * fl_create_xyplot( int t,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern FL_OBJECT * fl_add_xyplot( int t,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ const char * label );
+
+extern void fl_set_xyplot_data( FL_OBJECT * ob,
+ float * x,
+ float * y,
+ int n,
+ const char * title,
+ const char * xlabel,
+ const char * ylabel );
+
+extern void fl_set_xyplot_data_double( FL_OBJECT * ob,
+ double * x,
+ double * y,
+ int n,
+ const char * title,
+ const char * xlabel,
+ const char * ylabel );
+
+extern int fl_set_xyplot_file( FL_OBJECT * ob,
+ const char * f,
+ const char * title,
+ const char * xl,
+ const char * yl );
+
+extern void fl_insert_xyplot_data( FL_OBJECT * ob,
+ int id,
+ int n,
+ double x,
+ double y );
+
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+
+extern void fl_add_xyplot_text( FL_OBJECT * ob,
+ double x,
+ double y,
+ const char * text,
+ int al,
+ FL_COLOR col );
+
+extern void fl_delete_xyplot_text( FL_OBJECT * ob,
+ const char * text );
+
+extern int fl_set_xyplot_maxoverlays( FL_OBJECT * ob,
+ int maxover );
+
+extern void fl_add_xyplot_overlay( FL_OBJECT * ob,
+ int id,
+ float * x,
+ float * y,
+ int n,
+ FL_COLOR col );
+
+extern int fl_add_xyplot_overlay_file( FL_OBJECT * ob,
+ int id,
+ const char * f,
+ FL_COLOR c );
+
+extern void fl_set_xyplot_return( FL_OBJECT * ob,
+ unsigned int when );
+
+extern void fl_set_xyplot_xtics( FL_OBJECT * ob,
+ int major,
+ int minor );
+
+extern void fl_set_xyplot_ytics( FL_OBJECT * ob,
+ int major,
+ int minor );
+
+extern void fl_set_xyplot_xbounds( FL_OBJECT * ob,
+ double xmin,
+ double xmax );
+
+extern void fl_set_xyplot_ybounds( FL_OBJECT * ob,
+ double ymin,
+ double ymax );
+
+extern void fl_get_xyplot_xbounds( FL_OBJECT * ob,
+ float * xmin,
+ float * xmax );
+
+extern void fl_get_xyplot_ybounds( FL_OBJECT * ob,
+ float * ymin,
+ float * ymax );
+
+extern void fl_get_xyplot( FL_OBJECT * ob,
+ float * x,
+ float * y,
+ int * i );
+
+extern int fl_get_xyplot_data_size( FL_OBJECT * obj );
+
+extern void fl_get_xyplot_data( FL_OBJECT * ob,
+ float * x,
+ float * y,
+ int * n );
+
+extern void fl_get_xyplot_data_pointer( FL_OBJECT * ob,
+ int id,
+ float ** x,
+ float ** y,
+ int *n );
+
+extern void fl_get_xyplot_overlay_data( FL_OBJECT * ob,
+ int id,
+ float * x,
+ float * y,
+ int * n );
+
+extern void fl_set_xyplot_overlay_type( FL_OBJECT * ob,
+ int id,
+ int type );
+
+extern void fl_delete_xyplot_overlay( FL_OBJECT * ob,
+ int id );
+
+extern void fl_set_xyplot_interpolate( FL_OBJECT * ob,
+ int id,
+ int deg,
+ double grid );
+
+extern void fl_set_xyplot_inspect( FL_OBJECT * ob,
+ int yes );
+
+extern void fl_set_xyplot_symbolsize( FL_OBJECT * ob,
+ int n );
+
+extern void fl_replace_xyplot_point( FL_OBJECT * ob,
+ int i,
+ double x,
+ double y );
+
+/* Replace the value of a particular point in dataset setID,
+ * where setID=0 is the first data set.
+ * This routine is an extension of fl_replace_xyplot_point
+ * which acts on the first dataset only. */
+
+extern void fl_replace_xyplot_point_in_overlay( FL_OBJECT * ob,
+ int i,
+ int setID,
+ double x,
+ double y );
+
+extern void fl_get_xyplot_xmapping( FL_OBJECT * ob,
+ float * a,
+ float * b );
+
+extern void fl_get_xyplot_ymapping( FL_OBJECT * ob,
+ float * a,
+ float * b );
+
+extern void fl_set_xyplot_keys( FL_OBJECT * ob,
+ char ** keys,
+ float x,
+ float y,
+ int align );
+
+extern void fl_set_xyplot_key( FL_OBJECT * ob,
+ int id,
+ const char * key );
+
+extern void fl_set_xyplot_key_position( FL_OBJECT * ob,
+ float x,
+ float y,
+ int align );
+
+extern void fl_set_xyplot_key_font( FL_OBJECT * ob,
+ int style,
+ int size );
+
+extern int fl_get_xyplot_numdata( FL_OBJECT * ob,
+ int id );
+
+/* The following two functions will be removed.
+ * Use fl_set_object_l[size|style] for the functionalities */
+
+extern void fl_set_xyplot_fontsize( FL_OBJECT * ob,
+ int size );
+
+extern void fl_set_xyplot_fontstyle( FL_OBJECT * ob,
+ int style );
+
+extern void fl_xyplot_s2w( FL_OBJECT * ob,
+ double sx,
+ double sy,
+ float * wx,
+ float * wy );
+
+extern void fl_xyplot_w2s( FL_OBJECT * ob,
+ double wx,
+ double wy,
+ float * sx,
+ float * sy );
+
+extern void fl_set_xyplot_xscale( FL_OBJECT * ob,
+ int scale,
+ double base );
+
+extern void fl_set_xyplot_yscale( FL_OBJECT * ob,
+ int scale,
+ double base );
+
+extern void fl_clear_xyplot( FL_OBJECT * ob );
+
+extern void fl_set_xyplot_linewidth( FL_OBJECT * ob,
+ int id,
+ int lw );
+
+extern void fl_set_xyplot_xgrid( FL_OBJECT * ob,
+ int xgrid );
+
+extern void fl_set_xyplot_ygrid( FL_OBJECT * ob,
+ int ygrid );
+
+extern int fl_set_xyplot_grid_linestyle( FL_OBJECT * ob,
+ int style );
+
+extern void fl_set_xyplot_alphaxtics( FL_OBJECT * ob,
+ const char * m,
+ const char * s );
+
+extern void fl_set_xyplot_alphaytics( FL_OBJECT * ob,
+ const char * m,
+ const char * s );
+
+extern void fl_set_xyplot_fixed_xaxis( FL_OBJECT * ob,
+ const char * lm,
+ const char * rm );
+
+extern void fl_set_xyplot_fixed_yaxis( FL_OBJECT * ob,
+ const char * bm,
+ const char * tm );
+
+extern int fl_interpolate( const float * wx,
+ const float * wy,
+ int nin,
+ float * x,
+ float * y,
+ double grid,
+ int ndeg );
+
+typedef void ( * FL_XYPLOT_SYMBOL )( FL_OBJECT *,
+ int,
+ FL_POINT *,
+ int,
+ int,
+ int );
+
+extern FL_XYPLOT_SYMBOL fl_set_xyplot_symbol( FL_OBJECT * ob,
+ int id,
+ FL_XYPLOT_SYMBOL symbol );
+
+extern int fl_set_xyplot_mark_active( FL_OBJECT * ob,
+ int y );
+
+extern void fl_get_xyplot_screen_area( FL_OBJECT * obj,
+ FL_Coord * llx,
+ FL_Coord * lly,
+ FL_Coord * urx,
+ FL_Coord * ury );
+
+extern void fl_get_xyplot_world_area( FL_OBJECT * obj,
+ float * llx,
+ float * lly,
+ float * urx,
+ float * ury );
+
+extern int fl_set_xyplot_log_minor_xtics( FL_OBJECT * obj,
+ int yesno );
+
+extern int fl_set_xyplot_log_minor_ytics( FL_OBJECT * obj,
+ int yesno );
+
+
+/* ! defined FL_XYPLOT_H */
+
+/* the following (fl_fheight) etc. were never documented and were
+ removed from V0.89, but apparently this broke some applications that
+ were using them. Put them back in 10/22/00 */
+
+#define fl_textgc fl_textgc_( )
+#define fl_gc fl_gc_( )
+#define fl_cur_win fl_cur_win_( )
+#define fl_fheight fl_fheight_( )
+#define fl_fdesc fl_fdesc_( )
+#define fl_cur_fs fl_cur_fs_( )
+
+extern GC fl_gc_( void );
+extern GC fl_textgc_( void );
+extern int fl_fheight_( void );
+extern int fl_fdesc_( void );
+extern Window fl_cur_win_( void );
+extern XFontStruct * fl_cur_fs_( void );
+extern Display * fl_display_( void );
+
+
+#define FL_FALSE 0
+#define FL_TRUE ( ! FL_FALSE )
+
+
+
+
+
+
+/* FL_FORMS_H */
+# 34 "forms.c" 2
+
+#include "flinternal.h"
+# 1 "flinternal.h" 1
+/*
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * \file flinternal.h
+ *
+ * This file is part of the XForms library package.
+ * Copyright (c) 1996-1998 T.C. Zhao and Mark Overmars
+ * All rights reserved.
+ *
+ * Internal routines used by the Forms Library. An application should
+ * not use any of this since there is no guarantee that exactly some
+ * thing will exist in future versions of XForms.
+ */
+
+
+#define FLINTERNAL_H
+
+#include <stdlib.h>
+# 1 "/usr/include/stdlib.h" 1 3
+/* Copyright (C) 1991-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.20 General utilities <stdlib.h>
+ */
+
+
+
+#include <features.h>
+
+/* Get size_t, wchar_t and NULL from <stddef.h>. */
+#define __need_size_t
+
+#define __need_wchar_t
+#define __need_NULL
+
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* in case <sys/types.h> has defined it. *//* _PTRDIFF_T */
+# 158 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* If this symbol has done its job, get rid of it. */
+#undef __need_ptrdiff_t
+
+/* _STDDEF_H or __need_ptrdiff_t. */
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __wchar_t__ */
+# 342 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_wchar_t
+/* _STDDEF_H or __need_wchar_t. */
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+
+
+/* Offset of member MEMBER in a struct of type TYPE. */
+#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+
+/* _STDDEF_H was defined this time */
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 33 "/usr/include/stdlib.h" 2 3
+
+
+
+
+
+#define _STDLIB_H 1
+
+
+/* XPG requires a few symbols from <sys/wait.h> being defined. */
+#include <bits/waitflags.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 1 3
+/* Definitions of flag bits for `waitpid' et al.
+ Copyright (C) 1992,1996,1997,2000,2004,2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+/* Bits in the third argument to `waitpid'. */
+#define WNOHANG 1 /* Don't block waiting. */
+#define WUNTRACED 2 /* Report status of stopped children. */
+
+/* Bits in the fourth argument to `waitid'. */
+#define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */
+#define WEXITED 4 /* Report dead child. */
+#define WCONTINUED 8 /* Report continued child. */
+#define WNOWAIT 0x01000000 /* Don't reap, just poll status. */
+
+#define __WNOTHREAD 0x20000000 /* Don't wait on children of other threads
+ in this group */
+#define __WALL 0x40000000 /* Wait for any child. */
+#define __WCLONE 0x80000000 /* Wait for cloned process. */
+# 42 "/usr/include/stdlib.h" 2 3
+
+#include <bits/waitstatus.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 1 3
+/* Definitions of status bits for `wait' et al.
+ Copyright (C) 1992,1994,1996,1997,2000,2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+/* Everything extant so far uses these same bits. */
+
+
+/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
+#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
+
+/* If WIFSIGNALED(STATUS), the terminating signal. */
+#define __WTERMSIG(status) ((status) & 0x7f)
+
+/* If WIFSTOPPED(STATUS), the signal that stopped the child. */
+#define __WSTOPSIG(status) __WEXITSTATUS(status)
+
+/* Nonzero if STATUS indicates normal termination. */
+#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
+
+/* Nonzero if STATUS indicates termination by a signal. */
+#define __WIFSIGNALED(status) \
+ (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
+
+/* Nonzero if STATUS indicates the child is stopped. */
+#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
+
+/* Nonzero if STATUS indicates the child continued after a stop. We only
+ define this if <bits/waitflags.h> provides the WCONTINUED flag bit. */
+
+#define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
+
+
+/* Nonzero if STATUS indicates the child dumped core. */
+#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
+
+/* Macros for constructing status values. */
+#define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
+#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
+#define __W_CONTINUED 0xffff
+#define __WCOREFLAG 0x80
+
+
+
+
+#include <endian.h>
+
+union wait
+ {
+ int w_status;
+ struct
+ {
+
+ unsigned int __w_termsig:7; /* Terminating signal. */
+ unsigned int __w_coredump:1; /* Set if dumped core. */
+ unsigned int __w_retcode:8; /* Return code if exited normally. */
+ unsigned int:16;
+/* Little endian. */
+/* Big endian. */
+
+
+
+
+
+ } __wait_terminated;
+ struct
+ {
+
+ unsigned int __w_stopval:8; /* W_STOPPED if stopped. */
+ unsigned int __w_stopsig:8; /* Stopping signal. */
+ unsigned int:16;
+/* Little endian. */
+/* Big endian. */
+
+
+
+
+ } __wait_stopped;
+ };
+
+#define w_termsig __wait_terminated.__w_termsig
+#define w_coredump __wait_terminated.__w_coredump
+#define w_retcode __wait_terminated.__w_retcode
+#define w_stopsig __wait_stopped.__w_stopsig
+#define w_stopval __wait_stopped.__w_stopval
+
+/* Use BSD. */
+# 43 "/usr/include/stdlib.h" 2 3
+
+
+
+
+/* Lots of hair to allow traditional BSD use of `union wait'
+ as well as POSIX.1 use of `int' for the status word. */
+
+
+#define __WAIT_INT(status) \
+ (__extension__ (((union { __typeof(status) __in; int __i; }) \
+ { .__in = (status) }).__i))
+
+
+
+
+/* This is the type of the argument to `wait'. The funky union
+ causes redeclarations with either `int *' or `union wait *' to be
+ allowed without complaint. __WAIT_STATUS_DEFN is the type used in
+ the actual function definitions. */
+
+
+
+
+
+/* This works in GCC 2.6.1 and later. */
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+#define __WAIT_STATUS_DEFN int *
+
+
+/* Don't use BSD. *//* Use BSD. */
+
+
+
+
+
+
+
+/* Define the macros <sys/wait.h> also would define this way. */
+#define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status))
+#define WTERMSIG(status) __WTERMSIG (__WAIT_INT (status))
+#define WSTOPSIG(status) __WSTOPSIG (__WAIT_INT (status))
+#define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status))
+#define WIFSIGNALED(status) __WIFSIGNALED (__WAIT_INT (status))
+#define WIFSTOPPED(status) __WIFSTOPPED (__WAIT_INT (status))
+
+#define WIFCONTINUED(status) __WIFCONTINUED (__WAIT_INT (status))
+
+/* X/Open or XPG7 and <sys/wait.h> not included. */
+
+
+/* Returned by `div'. */
+typedef struct
+ {
+ int quot; /* Quotient. */
+ int rem; /* Remainder. */
+ } div_t;
+
+/* Returned by `ldiv'. */
+
+typedef struct
+ {
+ long int quot; /* Quotient. */
+ long int rem; /* Remainder. */
+ } ldiv_t;
+#define __ldiv_t_defined 1
+
+
+
+
+
+/* Returned by `lldiv'. */
+__extension__ typedef struct
+ {
+ long long int quot; /* Quotient. */
+ long long int rem; /* Remainder. */
+ } lldiv_t;
+#define __lldiv_t_defined 1
+
+
+
+
+/* The largest number rand will return (same as INT_MAX). */
+#define RAND_MAX 2147483647
+
+
+/* We define these the same for all machines.
+ Changes from this to the outside world should be done in `_exit'. */
+#define EXIT_FAILURE 1 /* Failing exit status. */
+#define EXIT_SUCCESS 0 /* Successful exit status. */
+
+
+/* Maximum length of a multibyte character in the current locale. */
+#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Convert a string to a floating-point number. */
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+/* Convert a string to an integer. */
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+/* Convert a string to a long integer. */
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Convert a string to a long long integer. */
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Convert a string to a floating-point number. */
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Likewise for `float' and `long double' sizes of floating-point numbers. */
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Convert a string to a long integer. */
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+/* Convert a string to an unsigned long integer. */
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Convert a string to a quadword integer. */
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+/* Convert a string to an unsigned quadword integer. */
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+/* GCC and use BSD. */
+
+
+
+/* Convert a string to a quadword integer. */
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+/* Convert a string to an unsigned quadword integer. */
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* ISO C99 or GCC and use MISC. */
+
+
+/* GNU */
+# 273 "/usr/include/stdlib.h" 3
+
+
+
+/* Optimizing and Inlining. */
+# 304 "/usr/include/stdlib.h" 3
+
+
+
+
+/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
+ digit first. Returns a pointer to static storage overwritten by the
+ next call. */
+extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Read a number from a string S in base 64 as above. */
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Use SVID || extended X/Open. */
+
+
+#include <sys/types.h> /* we need int32_t... */
+
+/* These are the functions that actually do things. The `random', `srandom',
+ `initstate' and `setstate' functions are those from BSD Unices.
+ The `rand' and `srand' functions are required by the ANSI standard.
+ We provide both interfaces to the same random number generator. */
+/* Return a random long integer between 0 and RAND_MAX inclusive. */
+extern long int random (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Seed the random number generator with the given number. */
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Initialize the random number generator to use state buffer STATEBUF,
+ of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16,
+ 32, 64, 128 and 256, the bigger the better; values less than 8 will
+ cause an error and values greater than 256 will be rounded down. */
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+/* Switch the random number generator to state buffer STATEBUF,
+ which should have been previously initialized by `initstate'. */
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Reentrant versions of the `random' family of functions.
+ These functions all use the following data structure to contain
+ state, rather than global state variables. */
+
+struct random_data
+ {
+ int32_t *fptr; /* Front pointer. */
+ int32_t *rptr; /* Rear pointer. */
+ int32_t *state; /* Array of state values. */
+ int rand_type; /* Type of random number generator. */
+ int rand_deg; /* Degree of random number generator. */
+ int rand_sep; /* Distance between front and rear. */
+ int32_t *end_ptr; /* Pointer behind state table. */
+ };
+
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2, 4) )) ;
+
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Use misc. */
+/* Use SVID || extended X/Open || BSD. */
+
+
+
+/* Return a random integer between 0 and RAND_MAX inclusive. */
+extern int rand (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Seed the random number generator with the given number. */
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Reentrant interface according to POSIX.1. */
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* System V style 48-bit random number generator functions. */
+
+/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
+extern double drand48 (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Return non-negative, long integer in [0,2^31). */
+extern long int lrand48 (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Return signed, long integers in [-2^31,2^31). */
+extern long int mrand48 (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Seed random number generator. */
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Data structure for communication with thread safe versions. This
+ type is to be regarded as opaque. It's only exported because users
+ have to allocate objects of this type. */
+struct drand48_data
+ {
+ unsigned short int __x[3]; /* Current state. */
+ unsigned short int __old_x[3]; /* Old state. */
+ unsigned short int __c; /* Additive const. in congruential formula. */
+ unsigned short int __init; /* Flag for initializing. */
+ unsigned long long int __a; /* Factor in congruential formula. */
+ };
+
+/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Return non-negative, long integer in [0,2^31). */
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Return signed, long integers in [-2^31,2^31). */
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Seed random number generator. */
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Use misc. */
+/* Use SVID or X/Open. */
+
+/* don't just need malloc and calloc */
+
+
+#define __malloc_and_calloc_defined
+
+/* Allocate SIZE bytes of memory. */
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__malloc__)) ;
+/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__malloc__)) ;
+
+
+
+
+
+/* Re-allocate the previously allocated block
+ in PTR, making the new block SIZE bytes long. */
+/* __attribute_malloc__ is not used, because if realloc returns
+ the same pointer that was passed to it, aliasing needs to be allowed
+ between objects pointed by the old and new pointers. */
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__warn_unused_result__)) ;
+/* Free a block allocated by `malloc', `realloc' or `calloc'. */
+extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Free a block. An alias for `free'. (Sun Unices). */
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use misc. */
+
+
+#include <alloca.h>
+# 1 "/usr/include/alloca.h" 1 3
+/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _ALLOCA_H 1
+
+#include <features.h>
+
+#define __need_size_t
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* in case <sys/types.h> has defined it. *//* _PTRDIFF_T */
+# 158 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* If this symbol has done its job, get rid of it. */
+#undef __need_ptrdiff_t
+
+/* _STDDEF_H or __need_ptrdiff_t. */
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __wchar_t__ */
+# 342 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_wchar_t
+/* _STDDEF_H or __need_wchar_t. */
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+
+
+/* Offset of member MEMBER in a struct of type TYPE. */
+#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+
+/* _STDDEF_H was defined this time */
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 25 "/usr/include/alloca.h" 2 3
+
+
+
+
+/* Remove any previous definitions. */
+#undef alloca
+
+/* Allocate a block that will be freed when the calling function exits. */
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+#define alloca(size) __builtin_alloca (size)
+/* GCC. */
+
+
+
+/* alloca.h */
+# 497 "/usr/include/stdlib.h" 2 3
+
+/* Use GNU, BSD, or misc. */
+
+
+
+/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__malloc__)) ;
+
+
+
+/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Abort execution and generate a core-dump. */
+extern void abort (void) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__noreturn__));
+
+
+/* Register a function to be called when `exit' is called. */
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+# 530 "/usr/include/stdlib.h" 3
+
+
+
+
+/* Register a function to be called with the status
+ given to `exit' and the given argument. */
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Call all functions registered with `atexit' and `on_exit',
+ in the reverse of the order in which they were registered,
+ perform stdio cleanup, and terminate program execution with STATUS. */
+extern void exit (int __status) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Terminate the program with STATUS without calling any of the
+ functions registered with `atexit' or `on_exit'. */
+extern void _Exit (int __status) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__noreturn__));
+
+
+
+
+
+/* Return the value of envariable NAME, or NULL if it doesn't exist. */
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* This function is similar to the above but returns NULL if the
+ programs is running with SUID or SGID enabled. */
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* The SVID says this is in <stdio.h>, but this seems a better place. */
+/* Put STRING, which is of the form "NAME=VALUE", in the environment.
+ If there is no `=', remove NAME from the environment. */
+extern int putenv (char *__string) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Set NAME to VALUE in the environment.
+ If REPLACE is nonzero, overwrite an existing value. */
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+/* Remove the variable NAME from the environment. */
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* The `clearenv' was planned to be added to POSIX.1 but probably
+ never made it. Nevertheless the POSIX.9 standard (POSIX bindings
+ for Fortran 77) requires this function. */
+extern int clearenv (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Generate a unique temporary file name from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ Returns TEMPLATE, or a null pointer if it cannot get a unique file name. */
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Generate a unique temporary file name from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the filename unique.
+ Returns a file descriptor open on the file for reading and writing,
+ or -1 if it cannot create a uniquely-named file.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Similar to mkstemp, but the template can have a suffix after the
+ XXXXXX. The length of the suffix is specified in the second
+ parameter.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+
+extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Create a unique temporary directory from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the directory name unique.
+ Returns TEMPLATE, or a null pointer if it cannot get a unique name.
+ The directory is created mode 700. */
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+# 709 "/usr/include/stdlib.h" 3
+
+
+
+
+/* Execute the given line as a shell command.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int system (__const char *__command) ;
+
+
+
+
+
+
+
+
+
+
+
+/* Return the canonical absolute name of file NAME. If RESOLVED is
+ null, the result is malloc'd; otherwise, if the canonical name is
+ PATH_MAX chars or more, returns null with `errno' set to
+ ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
+ returns the name in RESOLVED. */
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Shorthand for type of comparison functions. */
+
+#define __COMPAR_FN_T
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+
+
+
+
+
+
+
+
+/* Do a binary search for KEY in BASE, which consists of NMEMB elements
+ of SIZE bytes each, using COMPAR to perform the comparisons. */
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5) )) ;
+
+/* Sort NMEMB elements of BASE, of SIZE bytes each,
+ using COMPAR to perform the comparisons. */
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4) )) ;
+
+
+
+
+
+
+
+/* Return the absolute value of X. */
+extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+
+
+
+
+/* Return the `div_t', `ldiv_t' or `lldiv_t' representation
+ of the value of NUMER over DENOM. */
+/* GCC may have built-ins for these someday. */
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__)) ;
+
+
+
+
+
+
+/* Convert floating point numbers to strings. The returned values are
+ valid only until another call to the same function. */
+
+/* Convert VALUE to a string with NDIGIT digits and return a pointer to
+ this. Set *DECPT with the position of the decimal character and *SIGN
+ with the sign of the number. */
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4) )) ;
+
+/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT
+ with the position of the decimal character and *SIGN with the sign of
+ the number. */
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4) )) ;
+
+/* If possible convert VALUE to a string with NDIGIT significant digits.
+ Otherwise use exponential representation. The resulting string will
+ be written to BUF. */
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3) )) ;
+
+
+
+/* Long double versions of above functions. */
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4) )) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4) )) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3) )) ;
+
+
+/* Reentrant version of the functions above which provide their own
+ buffers. */
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4, 5) )) ;
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4, 5) )) ;
+
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4, 5) )) ;
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (3, 4, 5) )) ;
+/* misc */
+/* use MISC || use X/Open Unix */
+
+
+
+/* Return the length of the multibyte character
+ in S, which is no longer than N. */
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Return the length of the given multibyte character,
+ putting its `wchar_t' representation in *PWC. */
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Put the multibyte character represented
+ by WCHAR in S, returning its length. */
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Convert a multibyte string to a wide char string. */
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Convert a wide char string to multibyte string. */
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Determine whether the string value of RESPONSE matches the affirmation
+ or negative response expression as specified by the LC_MESSAGES category
+ in the program's current locale. Returns 1 if affirmative, 0 if
+ negative, and -1 if not matching. */
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Parse comma separated suboption from *OPTIONP and match against
+ strings in TOKENS. If found return index and set *VALUEP to
+ optional value introduced by an equal sign. If the suboption is
+ not part of TOKENS return in *VALUEP beginning of unknown
+ suboption. On exit *OPTIONP is set to the beginning of the next
+ token or at the terminating NUL character. */
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2, 3) )) ;
+
+
+
+
+
+
+
+
+
+/* X/Open pseudo terminal handling. */
+
+
+
+
+
+
+# 931 "/usr/include/stdlib.h" 3
+
+
+# 942 "/usr/include/stdlib.h" 3
+
+
+
+/* Put the 1 minute, 5 minute and 15 minute load averages into the first
+ NELEM elements of LOADAVG. Return the number written (never more than
+ three, but may be less than NELEM), or -1 if an error occurred. */
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Define some macros helping to catch buffer overflows. */
+
+
+
+
+
+
+
+/* don't just need malloc and calloc */
+#undef __need_malloc_and_calloc
+
+
+
+/* stdlib.h */
+# 33 "flinternal.h" 2
+
+#include <signal.h>
+# 1 "/usr/include/signal.h" 1 3
+/* Copyright (C) 1991-2004, 2007, 2009, 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.14 Signal handling <signal.h>
+ */
+
+
+
+
+#define _SIGNAL_H
+
+
+#include <features.h>
+
+
+
+#include <bits/sigset.h> /* __sigset_t, __sig_atomic_t. */
+# 1 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 1 3
+/* __sig_atomic_t, __sigset_t, and related definitions. Linux version.
+ Copyright (C) 1991, 1992, 1994, 1996, 1997, 2007
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+# 34 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3
+
+
+
+/* We only want to define these functions if <signal.h> was actually
+ included; otherwise we were included just to define the types. Since we
+ are namespace-clean, it wouldn't hurt to define extra macros. But
+ trouble can be caused by functions being defined (e.g., any global
+ register vars declared later will cause compilation errors). */
+
+
+#define _SIGSET_H_fns 1
+
+
+#define _EXTERN_INLINE __extern_inline
+
+
+/* Return a mask that includes the bit for SIG only. */
+#define __sigmask(sig) \
+ (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
+
+/* Return the word index for SIG. */
+#define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
+
+
+#define __sigemptyset(set) \
+ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \
+ sigset_t *__set = (set); \
+ while (--__cnt >= 0) __set->__val[__cnt] = 0; \
+ 0; }))
+#define __sigfillset(set) \
+ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \
+ sigset_t *__set = (set); \
+ while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; \
+ 0; }))
+
+# 98 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3
+
+
+
+/* These functions needn't check for a bogus signal number -- error
+ checking is done in the non __ versions. */
+
+extern int __sigismember (__const __sigset_t *, int);
+extern int __sigaddset (__sigset_t *, int);
+extern int __sigdelset (__sigset_t *, int);
+
+# 123 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3
+
+
+
+/* ! _SIGSET_H_fns. */
+# 33 "/usr/include/signal.h" 2 3
+
+
+/* An integral type that can be modified atomically, without the
+ possibility of a signal arriving in the middle of the operation. */
+
+
+#define __sig_atomic_t_defined
+
+typedef __sig_atomic_t sig_atomic_t;
+
+
+#undef __need_sig_atomic_t
+
+
+
+
+
+
+
+#undef __need_sigset_t
+
+
+
+
+#include <bits/types.h>
+#include <bits/signum.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/signum.h" 1 3
+/* Signal number definitions. Linux version.
+ Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+/* Fake signal functions. */
+#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
+#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
+#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
+
+
+
+
+
+
+/* Signals. */
+#define SIGHUP 1 /* Hangup (POSIX). */
+#define SIGINT 2 /* Interrupt (ANSI). */
+#define SIGQUIT 3 /* Quit (POSIX). */
+#define SIGILL 4 /* Illegal instruction (ANSI). */
+#define SIGTRAP 5 /* Trace trap (POSIX). */
+#define SIGABRT 6 /* Abort (ANSI). */
+#define SIGIOT 6 /* IOT trap (4.2 BSD). */
+#define SIGBUS 7 /* BUS error (4.2 BSD). */
+#define SIGFPE 8 /* Floating-point exception (ANSI). */
+#define SIGKILL 9 /* Kill, unblockable (POSIX). */
+#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */
+#define SIGSEGV 11 /* Segmentation violation (ANSI). */
+#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */
+#define SIGPIPE 13 /* Broken pipe (POSIX). */
+#define SIGALRM 14 /* Alarm clock (POSIX). */
+#define SIGTERM 15 /* Termination (ANSI). */
+#define SIGSTKFLT 16 /* Stack fault. */
+#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */
+#define SIGCHLD 17 /* Child status has changed (POSIX). */
+#define SIGCONT 18 /* Continue (POSIX). */
+#define SIGSTOP 19 /* Stop, unblockable (POSIX). */
+#define SIGTSTP 20 /* Keyboard stop (POSIX). */
+#define SIGTTIN 21 /* Background read from tty (POSIX). */
+#define SIGTTOU 22 /* Background write to tty (POSIX). */
+#define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */
+#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */
+#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */
+#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */
+#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */
+#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
+#define SIGPOLL SIGIO /* Pollable event occurred (System V). */
+#define SIGIO 29 /* I/O now possible (4.2 BSD). */
+#define SIGPWR 30 /* Power failure restart (System V). */
+#define SIGSYS 31 /* Bad system call. */
+#define SIGUNUSED 31
+
+#define _NSIG 65 /* Biggest signal number + 1
+ (including real-time signals). */
+
+#define SIGRTMIN (__libc_current_sigrtmin ())
+#define SIGRTMAX (__libc_current_sigrtmax ())
+
+/* These are the hard limits of the kernel. These values should not be
+ used directly at user level. */
+#define __SIGRTMIN 32
+#define __SIGRTMAX (_NSIG - 1)
+
+/* <signal.h> included. */
+# 58 "/usr/include/signal.h" 2 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Unix98 */
+
+
+/* We need `struct timespec' later on. */
+#define __need_timespec
+#include <time.h>
+# 1 "/usr/include/time.h" 1 3
+/* Copyright (C) 1991-2003,2006,2009,2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.23 Date and time <time.h>
+ */
+
+
+
+
+
+
+
+
+
+
+
+
+/* <time.h> included. */
+# 51 "/usr/include/time.h" 3
+
+
+/* clock_t not defined and <time.h> or need clock_t. */
+# 66 "/usr/include/time.h" 3
+
+#undef __need_clock_t
+
+/* time_t not defined and <time.h> or need time_t. */
+# 82 "/usr/include/time.h" 3
+
+#undef __need_time_t
+
+/* clockid_t not defined and <time.h> or need clockid_t. */
+# 94 "/usr/include/time.h" 3
+
+#undef __clockid_time_t
+
+/* timer_t not defined and <time.h> or need timer_t. */
+# 106 "/usr/include/time.h" 3
+
+#undef __need_timer_t
+
+
+/* timespec not defined and <time.h> or need timespec. */
+# 126 "/usr/include/time.h" 3
+
+#undef __need_timespec
+
+
+/* <time.h> included. */
+# 419 "/usr/include/time.h" 3
+
+
+/* <time.h> not already included. */
+# 76 "/usr/include/signal.h" 2 3
+
+
+/* Get the `siginfo_t' type plus the needed symbols. */
+#include <bits/siginfo.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/siginfo.h" 1 3
+/* siginfo_t, sigevent and constants. Linux version.
+ Copyright (C) 1997-2002, 2003, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 25 "/usr/include/x86_64-linux-gnu/bits/siginfo.h" 2 3
+
+
+
+
+
+#define __have_sigval_t 1
+
+/* Type for data associated with a signal. */
+typedef union sigval
+ {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
+
+
+
+
+#define __have_siginfo_t 1
+
+#define __SI_MAX_SIZE 128
+
+#define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
+
+
+
+
+typedef struct siginfo
+ {
+ int si_signo; /* Signal number. */
+ int si_errno; /* If non-zero, an errno value associated with
+ this signal, as defined in <errno.h>. */
+ int si_code; /* Signal code. */
+
+ union
+ {
+ int _pad[((128 / sizeof (int)) - 4) ];
+
+ /* kill(). */
+ struct
+ {
+ __pid_t si_pid; /* Sending process ID. */
+ __uid_t si_uid; /* Real user ID of sending process. */
+ } _kill;
+
+ /* POSIX.1b timers. */
+ struct
+ {
+ int si_tid; /* Timer ID. */
+ int si_overrun; /* Overrun count. */
+ sigval_t si_sigval; /* Signal value. */
+ } _timer;
+
+ /* POSIX.1b signals. */
+ struct
+ {
+ __pid_t si_pid; /* Sending process ID. */
+ __uid_t si_uid; /* Real user ID of sending process. */
+ sigval_t si_sigval; /* Signal value. */
+ } _rt;
+
+ /* SIGCHLD. */
+ struct
+ {
+ __pid_t si_pid; /* Which child. */
+ __uid_t si_uid; /* Real user ID of sending process. */
+ int si_status; /* Exit value or signal. */
+ __clock_t si_utime;
+ __clock_t si_stime;
+ } _sigchld;
+
+ /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */
+ struct
+ {
+ void *si_addr; /* Faulting insn/memory ref. */
+ } _sigfault;
+
+ /* SIGPOLL. */
+ struct
+ {
+ long int si_band; /* Band event for SIGPOLL. */
+ int si_fd;
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+
+
+/* X/Open requires some more fields with fixed names. */
+#define si_pid _sifields._kill.si_pid
+#define si_uid _sifields._kill.si_uid
+#define si_timerid _sifields._timer.si_tid
+#define si_overrun _sifields._timer.si_overrun
+#define si_status _sifields._sigchld.si_status
+#define si_utime _sifields._sigchld.si_utime
+#define si_stime _sifields._sigchld.si_stime
+#define si_value _sifields._rt.si_sigval
+#define si_int _sifields._rt.si_sigval.sival_int
+#define si_ptr _sifields._rt.si_sigval.sival_ptr
+#define si_addr _sifields._sigfault.si_addr
+#define si_band _sifields._sigpoll.si_band
+#define si_fd _sifields._sigpoll.si_fd
+
+
+/* Values for `si_code'. Positive values are reserved for kernel-generated
+ signals. */
+enum
+{
+ SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */
+#define SI_ASYNCNL SI_ASYNCNL
+ SI_TKILL = -6, /* Sent by tkill. */
+#define SI_TKILL SI_TKILL
+ SI_SIGIO, /* Sent by queued SIGIO. */
+#define SI_SIGIO SI_SIGIO
+ SI_ASYNCIO, /* Sent by AIO completion. */
+#define SI_ASYNCIO SI_ASYNCIO
+ SI_MESGQ, /* Sent by real time mesq state change. */
+#define SI_MESGQ SI_MESGQ
+ SI_TIMER, /* Sent by timer expiration. */
+#define SI_TIMER SI_TIMER
+ SI_QUEUE, /* Sent by sigqueue. */
+#define SI_QUEUE SI_QUEUE
+ SI_USER, /* Sent by kill, sigsend. */
+#define SI_USER SI_USER
+ SI_KERNEL = 0x80 /* Send by kernel. */
+#define SI_KERNEL SI_KERNEL
+};
+
+
+/* `si_code' values for SIGILL signal. */
+enum
+{
+ ILL_ILLOPC = 1, /* Illegal opcode. */
+#define ILL_ILLOPC ILL_ILLOPC
+ ILL_ILLOPN, /* Illegal operand. */
+#define ILL_ILLOPN ILL_ILLOPN
+ ILL_ILLADR, /* Illegal addressing mode. */
+#define ILL_ILLADR ILL_ILLADR
+ ILL_ILLTRP, /* Illegal trap. */
+#define ILL_ILLTRP ILL_ILLTRP
+ ILL_PRVOPC, /* Privileged opcode. */
+#define ILL_PRVOPC ILL_PRVOPC
+ ILL_PRVREG, /* Privileged register. */
+#define ILL_PRVREG ILL_PRVREG
+ ILL_COPROC, /* Coprocessor error. */
+#define ILL_COPROC ILL_COPROC
+ ILL_BADSTK /* Internal stack error. */
+#define ILL_BADSTK ILL_BADSTK
+};
+
+/* `si_code' values for SIGFPE signal. */
+enum
+{
+ FPE_INTDIV = 1, /* Integer divide by zero. */
+#define FPE_INTDIV FPE_INTDIV
+ FPE_INTOVF, /* Integer overflow. */
+#define FPE_INTOVF FPE_INTOVF
+ FPE_FLTDIV, /* Floating point divide by zero. */
+#define FPE_FLTDIV FPE_FLTDIV
+ FPE_FLTOVF, /* Floating point overflow. */
+#define FPE_FLTOVF FPE_FLTOVF
+ FPE_FLTUND, /* Floating point underflow. */
+#define FPE_FLTUND FPE_FLTUND
+ FPE_FLTRES, /* Floating point inexact result. */
+#define FPE_FLTRES FPE_FLTRES
+ FPE_FLTINV, /* Floating point invalid operation. */
+#define FPE_FLTINV FPE_FLTINV
+ FPE_FLTSUB /* Subscript out of range. */
+#define FPE_FLTSUB FPE_FLTSUB
+};
+
+/* `si_code' values for SIGSEGV signal. */
+enum
+{
+ SEGV_MAPERR = 1, /* Address not mapped to object. */
+#define SEGV_MAPERR SEGV_MAPERR
+ SEGV_ACCERR /* Invalid permissions for mapped object. */
+#define SEGV_ACCERR SEGV_ACCERR
+};
+
+/* `si_code' values for SIGBUS signal. */
+enum
+{
+ BUS_ADRALN = 1, /* Invalid address alignment. */
+#define BUS_ADRALN BUS_ADRALN
+ BUS_ADRERR, /* Non-existant physical address. */
+#define BUS_ADRERR BUS_ADRERR
+ BUS_OBJERR /* Object specific hardware error. */
+#define BUS_OBJERR BUS_OBJERR
+};
+
+/* `si_code' values for SIGTRAP signal. */
+enum
+{
+ TRAP_BRKPT = 1, /* Process breakpoint. */
+#define TRAP_BRKPT TRAP_BRKPT
+ TRAP_TRACE /* Process trace trap. */
+#define TRAP_TRACE TRAP_TRACE
+};
+
+/* `si_code' values for SIGCHLD signal. */
+enum
+{
+ CLD_EXITED = 1, /* Child has exited. */
+#define CLD_EXITED CLD_EXITED
+ CLD_KILLED, /* Child was killed. */
+#define CLD_KILLED CLD_KILLED
+ CLD_DUMPED, /* Child terminated abnormally. */
+#define CLD_DUMPED CLD_DUMPED
+ CLD_TRAPPED, /* Traced child has trapped. */
+#define CLD_TRAPPED CLD_TRAPPED
+ CLD_STOPPED, /* Child has stopped. */
+#define CLD_STOPPED CLD_STOPPED
+ CLD_CONTINUED /* Stopped child has continued. */
+#define CLD_CONTINUED CLD_CONTINUED
+};
+
+/* `si_code' values for SIGPOLL signal. */
+enum
+{
+ POLL_IN = 1, /* Data input available. */
+#define POLL_IN POLL_IN
+ POLL_OUT, /* Output buffers available. */
+#define POLL_OUT POLL_OUT
+ POLL_MSG, /* Input message available. */
+#define POLL_MSG POLL_MSG
+ POLL_ERR, /* I/O error. */
+#define POLL_ERR POLL_ERR
+ POLL_PRI, /* High priority input available. */
+#define POLL_PRI POLL_PRI
+ POLL_HUP /* Device disconnected. */
+#define POLL_HUP POLL_HUP
+};
+
+#undef __need_siginfo_t
+/* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */
+
+
+
+
+#define __have_sigevent_t 1
+
+/* Structure to transport application-defined values with signals. */
+#define __SIGEV_MAX_SIZE 64
+
+#define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+
+
+
+
+typedef struct sigevent
+ {
+ sigval_t sigev_value;
+ int sigev_signo;
+ int sigev_notify;
+
+ union
+ {
+ int _pad[((64 / sizeof (int)) - 4) ];
+
+ /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+ thread to receive the signal. */
+ __pid_t _tid;
+
+ struct
+ {
+ void (*_function) (sigval_t); /* Function to start. */
+ void *_attribute; /* Really pthread_attr_t. */
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+
+/* POSIX names to access some of the members. */
+#define sigev_notify_function _sigev_un._sigev_thread._function
+#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+
+/* `sigev_notify' values. */
+enum
+{
+ SIGEV_SIGNAL = 0, /* Notify via signal. */
+#define SIGEV_SIGNAL SIGEV_SIGNAL
+ SIGEV_NONE, /* Other notification: meaningless. */
+#define SIGEV_NONE SIGEV_NONE
+ SIGEV_THREAD, /* Deliver via thread creation. */
+#define SIGEV_THREAD SIGEV_THREAD
+
+ SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */
+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+};
+
+/* have _SIGNAL_H. */
+# 79 "/usr/include/signal.h" 2 3
+
+
+
+
+/* Type of a signal handler. */
+typedef void (*__sighandler_t) (int);
+
+/* The X/Open definition of `signal' specifies the SVID semantic. Use
+ the additional function `sysv_signal' when X/Open compatibility is
+ requested. */
+extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+/* Set the handler for the signal SIG to HANDLER, returning the old
+ handler, or SIG_ERR on error.
+ By default `signal' has the BSD semantic. */
+
+
+extern __sighandler_t signal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+# 112 "/usr/include/signal.h" 3
+
+
+
+
+
+
+
+
+
+
+/* Send signal SIG to process number PID. If PID is zero,
+ send SIG to all processes in the current process's process group.
+ If PID is < -1, send SIG to all processes in process group - PID. */
+
+extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use POSIX. */
+
+
+/* Send SIG to all processes in process group PGRP.
+ If PGRP is zero, send SIG to all processes in
+ the current process's process group. */
+extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use BSD || X/Open Unix. */
+
+
+/* Raise signal SIG, i.e., send SIG to yourself. */
+extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* SVID names for the same things. */
+extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern int gsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use SVID. */
+
+
+/* Print a message describing the meaning of the given signal number. */
+extern void psignal (int __sig, __const char *__s);
+/* Use misc or POSIX 2008. */
+
+
+/* Print a message describing the meaning of the given signal information. */
+extern void psiginfo (__const siginfo_t *__pinfo, __const char *__s);
+/* POSIX 2008. */
+
+
+
+/* The `sigpause' function has two different interfaces. The original
+ BSD definition defines the argument as a mask of the signal, while
+ the more modern interface in X/Open defines it as the signal
+ number. We go with the BSD version unless the user explicitly
+ selects the X/Open version.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int __sigpause (int __sig_or_mask, int __is_sig);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* None of the following functions should be used anymore. They are here
+ only for compatibility. A single word (`int') is not guaranteed to be
+ enough to hold a complete signal mask and therefore these functions
+ simply do not work in many situations. Use `sigprocmask' instead. */
+
+/* Compute mask for signal SIG. */
+#define sigmask(sig) __sigmask(sig)
+
+/* Block signals in MASK, returning the old mask. */
+extern int sigblock (int __mask) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__deprecated__)) ;
+
+/* Set the mask of blocked signals to MASK, returning the old mask. */
+extern int sigsetmask (int __mask) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__deprecated__)) ;
+
+/* Return currently selected signal mask. */
+extern int siggetmask (void) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__deprecated__)) ;
+/* Use BSD. */
+
+
+
+#define NSIG _NSIG
+
+
+
+
+
+
+/* 4.4 BSD uses the name `sig_t' for this. */
+
+typedef __sighandler_t sig_t;
+
+
+
+
+/* Clear all signals from SET. */
+extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Set all signals in SET. */
+extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Add SIGNO to SET. */
+extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Remove SIGNO from SET. */
+extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Return 1 if SIGNO is in SET, 0 if not. */
+extern int sigismember (__const sigset_t *__set, int __signo)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* GNU */
+# 248 "/usr/include/signal.h" 3
+
+
+/* Get the system-specific definitions of `struct sigaction'
+ and the `SA_*' and `SIG_*'. constants. */
+#include <bits/sigaction.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/sigaction.h" 1 3
+/* The proper definitions for Linux's sigaction.
+ Copyright (C) 1993-1999, 2000, 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+/* Structure describing the action to be taken when a signal arrives. */
+struct sigaction
+ {
+ /* Signal handler. */
+
+ union
+ {
+ /* Used if SA_SIGINFO is not set. */
+ __sighandler_t sa_handler;
+ /* Used if SA_SIGINFO is set. */
+ void (*sa_sigaction) (int, siginfo_t *, void *);
+ }
+ __sigaction_handler;
+#define sa_handler __sigaction_handler.sa_handler
+#define sa_sigaction __sigaction_handler.sa_sigaction
+
+
+
+
+ /* Additional set of signals to be blocked. */
+ __sigset_t sa_mask;
+
+ /* Special flags. */
+ int sa_flags;
+
+ /* Restore handler. */
+ void (*sa_restorer) (void);
+ };
+
+/* Bits in `sa_flags'. */
+#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */
+#define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */
+#define SA_SIGINFO 4 /* Invoke signal-catching function with
+ three arguments instead of one. */
+
+#define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
+
+
+#define SA_RESTART 0x10000000 /* Restart syscall on signal return. */
+#define SA_NODEFER 0x40000000 /* Don't automatically block the signal when
+ its handler is being executed. */
+#define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */
+
+
+#define SA_INTERRUPT 0x20000000 /* Historical no-op. */
+
+/* Some aliases for the SA_ constants. */
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#define SA_STACK SA_ONSTACK
+
+
+/* Values for the HOW argument to `sigprocmask'. */
+#define SIG_BLOCK 0 /* Block signals. */
+#define SIG_UNBLOCK 1 /* Unblock signals. */
+#define SIG_SETMASK 2 /* Set the set of blocked signals. */
+# 252 "/usr/include/signal.h" 2 3
+
+
+/* Get and/or change the set of blocked signals. */
+extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
+ sigset_t *__restrict __oset) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Change the set of blocked signals to SET,
+ wait until a signal arrives, and restore the set of blocked signals.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Get and/or set the action for signal SIG. */
+extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
+ struct sigaction *__restrict __oact) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Put in SET all signals that are blocked and waiting to be delivered. */
+extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Select any of pending signals from SET or wait for any to arrive.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+ __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+/* Select any of pending signals from SET and place information in INFO.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int sigwaitinfo (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Select any of pending signals from SET and place information in INFO.
+ Wait the time specified by TIMEOUT if no signal is pending.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int sigtimedwait (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info,
+ __const struct timespec *__restrict __timeout)
+ __attribute__ ((__nonnull__ (1) )) ;
+
+/* Send signal SIG to the process PID. Associate data in VAL with the
+ signal. */
+extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use POSIX 199306. */
+
+/* Use POSIX. */
+
+
+
+/* Names of the signals. This variable exists only for compatibility.
+ Use `strsignal' instead (see <string.h>). */
+extern __const char *__const _sys_siglist[65 ];
+extern __const char *__const sys_siglist[65 ];
+
+/* Structure passed to `sigvec'. */
+struct sigvec
+ {
+ __sighandler_t sv_handler; /* Signal handler. */
+ int sv_mask; /* Mask of signals to be blocked. */
+
+ int sv_flags; /* Flags (see below). */
+#define sv_onstack sv_flags /* 4.2 BSD compatibility. */
+ };
+
+/* Bits in `sv_flags'. */
+#define SV_ONSTACK (1 << 0)/* Take the signal on the signal stack. */
+#define SV_INTERRUPT (1 << 1)/* Do not restart system calls. */
+#define SV_RESETHAND (1 << 2)/* Reset handler to SIG_DFL on receipt. */
+
+
+/* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member
+ of VEC. The signals in `sv_mask' will be blocked while the handler runs.
+ If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be
+ reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL,
+ it is filled in with the old information for SIG. */
+extern int sigvec (int __sig, __const struct sigvec *__vec,
+ struct sigvec *__ovec) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Get machine-dependent `struct sigcontext' and signal subcodes. */
+#include <bits/sigcontext.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/sigcontext.h" 1 3
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _BITS_SIGCONTEXT_H 1
+
+
+
+
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 26 "/usr/include/x86_64-linux-gnu/bits/sigcontext.h" 2 3
+
+
+struct _fpreg
+{
+ unsigned short significand[4];
+ unsigned short exponent;
+};
+
+struct _fpxreg
+{
+ unsigned short significand[4];
+ unsigned short exponent;
+ unsigned short padding[3];
+};
+
+struct _xmmreg
+{
+ __uint32_t element[4];
+};
+
+
+
+/* __WORDSIZE == 64 */
+# 107 "/usr/include/x86_64-linux-gnu/bits/sigcontext.h" 3
+
+
+struct _fpstate
+{
+ /* FPU environment matching the 64-bit FXSAVE layout. */
+ __uint16_t cwd;
+ __uint16_t swd;
+ __uint16_t ftw;
+ __uint16_t fop;
+ __uint64_t rip;
+ __uint64_t rdp;
+ __uint32_t mxcsr;
+ __uint32_t mxcr_mask;
+ struct _fpxreg _st[8];
+ struct _xmmreg _xmm[16];
+ __uint32_t padding[24];
+};
+
+struct sigcontext
+{
+ unsigned long r8;
+ unsigned long r9;
+ unsigned long r10;
+ unsigned long r11;
+ unsigned long r12;
+ unsigned long r13;
+ unsigned long r14;
+ unsigned long r15;
+ unsigned long rdi;
+ unsigned long rsi;
+ unsigned long rbp;
+ unsigned long rbx;
+ unsigned long rdx;
+ unsigned long rax;
+ unsigned long rcx;
+ unsigned long rsp;
+ unsigned long rip;
+ unsigned long eflags;
+ unsigned short cs;
+ unsigned short gs;
+ unsigned short fs;
+ unsigned short __pad0;
+ unsigned long err;
+ unsigned long trapno;
+ unsigned long oldmask;
+ unsigned long cr2;
+ struct _fpstate * fpstate;
+ unsigned long __reserved1 [8];
+};
+
+/* __WORDSIZE == 64 */
+
+/* _BITS_SIGCONTEXT_H */
+# 339 "/usr/include/signal.h" 2 3
+
+
+/* Restore the state saved in SCP. */
+extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* use BSD. */
+
+
+
+#define __need_size_t
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* in case <sys/types.h> has defined it. *//* _PTRDIFF_T */
+# 158 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* If this symbol has done its job, get rid of it. */
+#undef __need_ptrdiff_t
+
+/* _STDDEF_H or __need_ptrdiff_t. */
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __wchar_t__ */
+# 342 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_wchar_t
+/* _STDDEF_H or __need_wchar_t. */
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+
+
+/* Offset of member MEMBER in a struct of type TYPE. */
+#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+
+/* _STDDEF_H was defined this time */
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 349 "/usr/include/signal.h" 2 3
+
+
+/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
+ (causing them to fail with EINTR); if INTERRUPT is zero, make system
+ calls be restarted after signal SIG. */
+extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+#include <bits/sigstack.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/sigstack.h" 1 3
+/* sigstack, sigaltstack definitions.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+/* Structure describing a signal stack (obsolete). */
+struct sigstack
+ {
+ void *ss_sp; /* Signal stack pointer. */
+ int ss_onstack; /* Nonzero if executing on this stack. */
+ };
+
+
+/* Possible values for `ss_flags.'. */
+enum
+{
+ SS_ONSTACK = 1,
+#define SS_ONSTACK SS_ONSTACK
+ SS_DISABLE
+#define SS_DISABLE SS_DISABLE
+};
+
+/* Minimum stack size for a signal handler. */
+#define MINSIGSTKSZ 2048
+
+/* System default stack size. */
+#define SIGSTKSZ 8192
+
+
+/* Alternate, preferred interface. */
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
+# 356 "/usr/include/signal.h" 2 3
+
+
+/* This will define `ucontext_t' and `mcontext_t'. */
+#include <sys/ucontext.h>
+# 1 "/usr/include/x86_64-linux-gnu/sys/ucontext.h" 1 3
+/* Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#define _SYS_UCONTEXT_H 1
+
+#include <features.h>
+#include <signal.h>
+# 1 "/usr/include/signal.h" 1 3
+/* Copyright (C) 1991-2004, 2007, 2009, 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.14 Signal handling <signal.h>
+ */
+
+/* not signal.h */
+# 410 "/usr/include/signal.h" 3
+
+# 23 "/usr/include/x86_64-linux-gnu/sys/ucontext.h" 2 3
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 24 "/usr/include/x86_64-linux-gnu/sys/ucontext.h" 2 3
+
+
+/* We need the signal context definitions even if they are not used
+ included in <signal.h>. */
+#include <bits/sigcontext.h>
+
+
+
+/* Type for general register. */
+typedef long int greg_t;
+
+/* Number of general registers. */
+#define NGREG 23
+
+/* Container for all general registers. */
+typedef greg_t gregset_t[23 ];
+
+# 92 "/usr/include/x86_64-linux-gnu/sys/ucontext.h" 3
+
+
+struct _libc_fpxreg
+{
+ unsigned short int significand[4];
+ unsigned short int exponent;
+ unsigned short int padding[3];
+};
+
+struct _libc_xmmreg
+{
+ __uint32_t element[4];
+};
+
+struct _libc_fpstate
+{
+ /* 64-bit FXSAVE format. */
+ __uint16_t cwd;
+ __uint16_t swd;
+ __uint16_t ftw;
+ __uint16_t fop;
+ __uint64_t rip;
+ __uint64_t rdp;
+ __uint32_t mxcsr;
+ __uint32_t mxcr_mask;
+ struct _libc_fpxreg _st[8];
+ struct _libc_xmmreg _xmm[16];
+ __uint32_t padding[24];
+};
+
+/* Structure to describe FPU registers. */
+typedef struct _libc_fpstate *fpregset_t;
+
+/* Context to describe whole processor state. */
+typedef struct
+ {
+ gregset_t gregs;
+ /* Note that fpregs is a pointer. */
+ fpregset_t fpregs;
+ unsigned long __reserved1 [8];
+} mcontext_t;
+
+/* Userlevel context. */
+typedef struct ucontext
+ {
+ unsigned long int uc_flags;
+ struct ucontext *uc_link;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+ __sigset_t uc_sigmask;
+ struct _libc_fpstate __fpregs_mem;
+ } ucontext_t;
+
+/* __WORDSIZE == 32 *//* __WORDSIZE == 32 */
+# 246 "/usr/include/x86_64-linux-gnu/sys/ucontext.h" 3
+
+
+/* sys/ucontext.h */
+# 359 "/usr/include/signal.h" 2 3
+
+
+
+/* Run signals handlers on the stack specified by SS (if not NULL).
+ If OSS is not NULL, it is filled in with the old signal stack status.
+ This interface is obsolete and on many platform not implemented. */
+extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__deprecated__)) ;
+
+/* Alternate signal handler stack interface.
+ This interface should always be preferred over `sigstack'. */
+extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
+ struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* use BSD or X/Open Unix. */
+
+# 389 "/usr/include/signal.h" 3
+
+
+
+/* Some of the functions for handling signals in threaded programs must
+ be defined here. */
+#include <bits/pthreadtypes.h>
+#include <bits/sigthread.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/sigthread.h" 1 3
+/* Signal handling function for threaded programs.
+ Copyright (C) 1998, 1999, 2000, 2002, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+
+#define _BITS_SIGTHREAD_H 1
+
+
+
+
+
+/* Functions for handling signals. */
+
+/* Modify the signal mask for the calling thread. The arguments have
+ the same meaning as for sigprocmask(2). */
+extern int pthread_sigmask (int __how,
+ __const __sigset_t *__restrict __newmask,
+ __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Send signal SIGNO to the given thread. */
+extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+/* bits/sigthread.h */
+# 395 "/usr/include/signal.h" 2 3
+
+/* use Unix98 */
+
+/* The following functions are used internally in the C library and in
+ other code which need deep insights. */
+
+/* Return number of available real-time signal with highest priority. */
+extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Return number of available real-time signal with lowest priority. */
+extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* signal.h */
+
+
+
+/* not signal.h */
+# 34 "flinternal.h" 2
+
+#include "local.h"
+# 1 "local.h" 1
+/*
+ *
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * \file local.h
+ *
+ * This file is part of the XForms library package.
+ * Copyright (c) 1996-1998 T.C. Zhao and Mark Overmars
+ * All rights reserved.
+ *
+ * Some machine specific stuff.
+ */
+
+
+#define FL_LOCAL_H
+
+
+#include <unistd.h>
+# 1 "/usr/include/unistd.h" 1 3
+/* Copyright (C) 1991-2009, 2010, 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * POSIX Standard: 2.10 Symbolic Constants <unistd.h>
+ */
+
+
+#define _UNISTD_H 1
+
+#include <features.h>
+
+
+
+/* These may be used to determine what facilities are present at compile time.
+ Their values can be obtained at run time from `sysconf'. */
+
+
+/* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. */
+#define _POSIX_VERSION 200809L
+# 48 "/usr/include/unistd.h" 3
+
+
+/* These are not #ifdef __USE_POSIX2 because they are
+ in the theoretically application-owned namespace. */
+
+
+#define __POSIX2_THIS_VERSION 200809L
+/* The utilities on GNU systems also correspond to this version. */
+# 65 "/usr/include/unistd.h" 3
+
+
+/* The utilities on GNU systems also correspond to this version. */
+#define _POSIX2_VERSION __POSIX2_THIS_VERSION
+
+/* If defined, the implementation supports the
+ C Language Bindings Option. */
+#define _POSIX2_C_BIND __POSIX2_THIS_VERSION
+
+/* If defined, the implementation supports the
+ C Language Development Utilities Option. */
+#define _POSIX2_C_DEV __POSIX2_THIS_VERSION
+
+/* If defined, the implementation supports the
+ Software Development Utilities Option. */
+#define _POSIX2_SW_DEV __POSIX2_THIS_VERSION
+
+/* If defined, the implementation supports the
+ creation of locales with the localedef utility. */
+#define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION
+
+/* X/Open version number to which the library conforms. It is selectable. */
+
+#define _XOPEN_VERSION 700
+
+
+
+
+
+
+
+
+/* Commands and utilities from XPG4 are available. */
+#define _XOPEN_XCU_VERSION 4
+
+/* We are compatible with the old published standards as well. */
+#define _XOPEN_XPG2 1
+#define _XOPEN_XPG3 1
+#define _XOPEN_XPG4 1
+
+/* The X/Open Unix extensions are available. */
+#define _XOPEN_UNIX 1
+
+/* Encryption is present. */
+#define _XOPEN_CRYPT 1
+
+/* The enhanced internationalization capabilities according to XPG4.2
+ are present. */
+#define _XOPEN_ENH_I18N 1
+
+/* The legacy interfaces are also available. */
+#define _XOPEN_LEGACY 1
+
+
+/* Get values of POSIX options:
+
+ If these symbols are defined, the corresponding features are
+ always available. If not, they may be available sometimes.
+ The current values can be obtained with `sysconf'.
+
+ _POSIX_JOB_CONTROL Job control is supported.
+ _POSIX_SAVED_IDS Processes have a saved set-user-ID
+ and a saved set-group-ID.
+ _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported.
+ _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported.
+ _POSIX_TIMERS POSIX.4 clocks and timers are supported.
+ _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported.
+ _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported.
+ _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported.
+ _POSIX_FSYNC The fsync function is present.
+ _POSIX_MAPPED_FILES Mapping of files to memory is supported.
+ _POSIX_MEMLOCK Locking of all memory is supported.
+ _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported.
+ _POSIX_MEMORY_PROTECTION Setting of memory protections is supported.
+ _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported.
+ _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported.
+ _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
+ _POSIX_THREADS POSIX.1c pthreads are supported.
+ _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported.
+ _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported.
+ _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported.
+ _POSIX_THREAD_PRIORITY_SCHEDULING
+ POSIX.1c thread execution scheduling supported.
+ _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported.
+ _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported.
+ _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported.
+ _POSIX_PII Protocol-independent interfaces are supported.
+ _POSIX_PII_XTI XTI protocol-indep. interfaces are supported.
+ _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported.
+ _POSIX_PII_INTERNET Internet family of protocols supported.
+ _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported.
+ _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported.
+ _POSIX_PII_OSI ISO/OSI family of protocols supported.
+ _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported.
+ _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported.
+ _POSIX_POLL Implementation supports `poll' function.
+ _POSIX_SELECT Implementation supports `select' and `pselect'.
+
+ _XOPEN_REALTIME X/Open realtime support is available.
+ _XOPEN_REALTIME_THREADS X/Open realtime thread support is available.
+ _XOPEN_SHM Shared memory interface according to XPG4.2.
+
+ _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit
+ int, long, pointer, and off_t types.
+ _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit
+ int, long, and pointer and off_t with at least
+ 64 bits.
+ _XBS5_LP64_OFF64 Implementation provides environment with 32-bit
+ int, and 64-bit long, pointer, and off_t types.
+ _XBS5_LPBIG_OFFBIG Implementation provides environment with at
+ least 32 bits int and long, pointer, and off_t
+ with at least 64 bits.
+
+ If any of these symbols is defined as -1, the corresponding option is not
+ true for any file. If any is defined as other than -1, the corresponding
+ option is true for all files. If a symbol is not defined at all, the value
+ for a specific file can be obtained from `pathconf' and `fpathconf'.
+
+ _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change
+ the owner of a file. `chown' can only be used
+ to change the group ID of a file to a group of
+ which the calling process is a member.
+ _POSIX_NO_TRUNC Pathname components longer than
+ NAME_MAX generate an error.
+ _POSIX_VDISABLE If defined, if the value of an element of the
+ `c_cc' member of `struct termios' is
+ _POSIX_VDISABLE, no character will have the
+ effect associated with that element.
+ _POSIX_SYNC_IO Synchronous I/O may be performed.
+ _POSIX_ASYNC_IO Asynchronous I/O may be performed.
+ _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed.
+
+ Support for the Large File Support interface is not generally available.
+ If it is available the following constants are defined to one.
+ _LFS64_LARGEFILE Low-level I/O supports large files.
+ _LFS64_STDIO Standard I/O supports large files.
+ */
+
+#include <bits/posix_opt.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/posix_opt.h" 1 3
+/* Define POSIX options for Linux.
+ Copyright (C) 1996-2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+
+#define _BITS_POSIX_OPT_H 1
+
+/* Job control is supported. */
+#define _POSIX_JOB_CONTROL 1
+
+/* Processes have a saved set-user-ID and a saved set-group-ID. */
+#define _POSIX_SAVED_IDS 1
+
+/* Priority scheduling is supported. */
+#define _POSIX_PRIORITY_SCHEDULING 200809L
+
+/* Synchronizing file data is supported. */
+#define _POSIX_SYNCHRONIZED_IO 200809L
+
+/* The fsync function is present. */
+#define _POSIX_FSYNC 200809L
+
+/* Mapping of files to memory is supported. */
+#define _POSIX_MAPPED_FILES 200809L
+
+/* Locking of all memory is supported. */
+#define _POSIX_MEMLOCK 200809L
+
+/* Locking of ranges of memory is supported. */
+#define _POSIX_MEMLOCK_RANGE 200809L
+
+/* Setting of memory protections is supported. */
+#define _POSIX_MEMORY_PROTECTION 200809L
+
+/* Some filesystems allow all users to change file ownership. */
+#define _POSIX_CHOWN_RESTRICTED 0
+
+/* `c_cc' member of 'struct termios' structure can be disabled by
+ using the value _POSIX_VDISABLE. */
+#define _POSIX_VDISABLE '0円'
+
+/* Filenames are not silently truncated. */
+#define _POSIX_NO_TRUNC 1
+
+/* X/Open realtime support is available. */
+#define _XOPEN_REALTIME 1
+
+/* X/Open thread realtime support is available. */
+#define _XOPEN_REALTIME_THREADS 1
+
+/* XPG4.2 shared memory is supported. */
+#define _XOPEN_SHM 1
+
+/* Tell we have POSIX threads. */
+#define _POSIX_THREADS 200809L
+
+/* We have the reentrant functions described in POSIX. */
+#define _POSIX_REENTRANT_FUNCTIONS 1
+#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
+
+/* We provide priority scheduling for threads. */
+#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
+
+/* We support user-defined stack sizes. */
+#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
+
+/* We support user-defined stacks. */
+#define _POSIX_THREAD_ATTR_STACKADDR 200809L
+
+/* We support priority inheritence. */
+#define _POSIX_THREAD_PRIO_INHERIT 200809L
+
+/* We support priority protection, though only for non-robust
+ mutexes. */
+#define _POSIX_THREAD_PRIO_PROTECT 200809L
+
+
+/* We support priority inheritence for robust mutexes. */
+#define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L
+
+/* We do not support priority protection for robust mutexes. */
+#define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
+
+
+/* We support POSIX.1b semaphores. */
+#define _POSIX_SEMAPHORES 200809L
+
+/* Real-time signals are supported. */
+#define _POSIX_REALTIME_SIGNALS 200809L
+
+/* We support asynchronous I/O. */
+#define _POSIX_ASYNCHRONOUS_IO 200809L
+#define _POSIX_ASYNC_IO 1
+/* Alternative name for Unix98. */
+#define _LFS_ASYNCHRONOUS_IO 1
+/* Support for prioritization is also available. */
+#define _POSIX_PRIORITIZED_IO 200809L
+
+/* The LFS support in asynchronous I/O is also available. */
+#define _LFS64_ASYNCHRONOUS_IO 1
+
+/* The rest of the LFS is also available. */
+#define _LFS_LARGEFILE 1
+#define _LFS64_LARGEFILE 1
+#define _LFS64_STDIO 1
+
+/* POSIX shared memory objects are implemented. */
+#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
+
+/* CPU-time clocks support needs to be checked at runtime. */
+#define _POSIX_CPUTIME 0
+
+/* Clock support in threads must be also checked at runtime. */
+#define _POSIX_THREAD_CPUTIME 0
+
+/* GNU libc provides regular expression handling. */
+#define _POSIX_REGEXP 1
+
+/* Reader/Writer locks are available. */
+#define _POSIX_READER_WRITER_LOCKS 200809L
+
+/* We have a POSIX shell. */
+#define _POSIX_SHELL 1
+
+/* We support the Timeouts option. */
+#define _POSIX_TIMEOUTS 200809L
+
+/* We support spinlocks. */
+#define _POSIX_SPIN_LOCKS 200809L
+
+/* The `spawn' function family is supported. */
+#define _POSIX_SPAWN 200809L
+
+/* We have POSIX timers. */
+#define _POSIX_TIMERS 200809L
+
+/* The barrier functions are available. */
+#define _POSIX_BARRIERS 200809L
+
+/* POSIX message queues are available. */
+#define _POSIX_MESSAGE_PASSING 200809L
+
+/* Thread process-shared synchronization is supported. */
+#define _POSIX_THREAD_PROCESS_SHARED 200809L
+
+/* The monotonic clock might be available. */
+#define _POSIX_MONOTONIC_CLOCK 0
+
+/* The clock selection interfaces are available. */
+#define _POSIX_CLOCK_SELECTION 200809L
+
+/* Advisory information interfaces are available. */
+#define _POSIX_ADVISORY_INFO 200809L
+
+/* IPv6 support is available. */
+#define _POSIX_IPV6 200809L
+
+/* Raw socket support is available. */
+#define _POSIX_RAW_SOCKETS 200809L
+
+/* We have at least one terminal. */
+#define _POSIX2_CHAR_TERM 200809L
+
+/* Neither process nor thread sporadic server interfaces is available. */
+#define _POSIX_SPORADIC_SERVER -1
+#define _POSIX_THREAD_SPORADIC_SERVER -1
+
+/* trace.h is not available. */
+#define _POSIX_TRACE -1
+#define _POSIX_TRACE_EVENT_FILTER -1
+#define _POSIX_TRACE_INHERIT -1
+#define _POSIX_TRACE_LOG -1
+
+/* Typed memory objects are not available. */
+#define _POSIX_TYPED_MEMORY_OBJECTS -1
+
+/* bits/posix_opt.h */
+# 203 "/usr/include/unistd.h" 2 3
+
+
+/* Get the environment definitions from Unix98. */
+
+#include <bits/environments.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/environments.h" 1 3
+/* Copyright (C) 1999, 2001, 2004, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+#include <bits/wordsize.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3
+/* Determine the wordsize from the preprocessor defines. */
+
+
+#define __WORDSIZE 64
+#define __WORDSIZE_COMPAT32 1
+
+
+
+# 23 "/usr/include/x86_64-linux-gnu/bits/environments.h" 2 3
+
+
+/* This header should define the following symbols under the described
+ situations. A value `1' means that the model is always supported,
+ `-1' means it is never supported. Undefined means it cannot be
+ statically decided.
+
+ _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type
+ _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type
+
+ _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type
+ _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type
+
+ The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+ _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+ _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+ used in previous versions of the Unix standard and are available
+ only for compatibility.
+*/
+
+
+
+/* Environments with 32-bit wide pointers are optionally provided.
+ Therefore following macros aren't defined:
+ # undef _POSIX_V7_ILP32_OFF32
+ # undef _POSIX_V7_ILP32_OFFBIG
+ # undef _POSIX_V6_ILP32_OFF32
+ # undef _POSIX_V6_ILP32_OFFBIG
+ # undef _XBS5_ILP32_OFF32
+ # undef _XBS5_ILP32_OFFBIG
+ and users need to check at runtime. */
+
+/* We also have no use (for now) for an environment with bigger pointers
+ and offsets. */
+#define _POSIX_V7_LPBIG_OFFBIG -1
+#define _POSIX_V6_LPBIG_OFFBIG -1
+#define _XBS5_LPBIG_OFFBIG -1
+
+/* By default we have 64-bit wide `long int', pointers and `off_t'. */
+#define _POSIX_V7_LP64_OFF64 1
+#define _POSIX_V6_LP64_OFF64 1
+#define _XBS5_LP64_OFF64 1
+
+/* __WORDSIZE == 32 *//* __WORDSIZE == 32 */
+# 90 "/usr/include/x86_64-linux-gnu/bits/environments.h" 3
+
+
+#define __ILP32_OFF32_CFLAGS "-m32"
+#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+#define __ILP32_OFF32_LDFLAGS "-m32"
+#define __ILP32_OFFBIG_LDFLAGS "-m32"
+#define __LP64_OFF64_CFLAGS "-m64"
+#define __LP64_OFF64_LDFLAGS "-m64"
+# 207 "/usr/include/unistd.h" 2 3
+
+
+
+/* Standard file descriptors. */
+#define STDIN_FILENO 0 /* Standard input. */
+#define STDOUT_FILENO 1 /* Standard output. */
+#define STDERR_FILENO 2 /* Standard error output. */
+
+
+/* All functions that are not declared anywhere else. */
+
+#include <bits/types.h>
+
+
+
+
+
+
+#define __need_size_t
+#define __need_NULL
+#include <stddef.h>
+# 1 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 1 3
+/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004, 2009
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C Standard: 7.17 Common definitions <stddef.h>
+ */
+
+
+
+
+
+
+/* Any one of these symbols __need_* means that GNU libc
+ wants us just to define one data type. So don't define
+ the symbols that indicate this file's entire job has been done. */
+# 46 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+
+/* This avoids lossage on SunOS but only if stdtypes.h comes first.
+ There's no way to win with the other order! Sun lossage. */
+
+/* On 4.3bsd-net2, make sure ansi.h is included, so we have
+ one less case to deal with in the following. */
+
+
+
+/* On FreeBSD 5, machine/ansi.h does not exist anymore... */
+
+
+
+
+/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
+ defined if the corresponding type is *not* defined.
+ FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
+ NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_ */
+/* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) || defined(_X86_64_ANSI_H_) || defined(_I386_ANSI_H_) */
+# 93 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
+ Just ignore it. */
+
+
+
+
+/* On VxWorks, <type/vxTypesBase.h> may have defined macros like
+ _TYPE_size_t which will typedef size_t. fixincludes patched the
+ vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
+ not defined, and so that defining this macro defines _GCC_SIZE_T.
+ If we find that the macros are still defined at this point, we must
+ invoke them so that the type is defined as expected. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* In case nobody has defined these types, but we aren't running under
+ GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
+ __WCHAR_TYPE__ have reasonable values. This can happen if the
+ parts of GCC is compiled by an older compiler, that actually
+ include gstddef.h, such as collect2. */
+
+/* Signed type of difference of two pointers. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* in case <sys/types.h> has defined it. *//* _PTRDIFF_T */
+# 158 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* If this symbol has done its job, get rid of it. */
+#undef __need_ptrdiff_t
+
+/* _STDDEF_H or __need_ptrdiff_t. */
+
+/* Unsigned type of `sizeof' something. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __size_t__ */
+# 233 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_size_t
+/* _STDDEF_H or __need_size_t. */
+
+
+/* Wide character type.
+ Locale-writers should change this as necessary to
+ be big enough to hold unique values not between 0 and 127,
+ and not (wchar_t) -1, for each defined multibyte character. */
+
+/* Define this type if we are doing the whole job,
+ or if we want this type in particular. */
+
+/* BeOS *//* __wchar_t__ */
+# 342 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+#undef __need_wchar_t
+/* _STDDEF_H or __need_wchar_t. */
+
+# 356 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
+ are already defined. */
+/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */
+/* NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here. */
+/* _ANSI_H_ || _MACHINE_ANSI_H_ || _X86_64_ANSI_H_ || _I386_ANSI_H_ */
+# 390 "/usr/lib/gcc/x86_64-linux-gnu/4.6/include/stddef.h" 3
+
+
+/* __sys_stdtypes_h */
+
+/* A null pointer constant. */
+
+
+#undef NULL /* in case <stdio.h> has defined it. */
+/* G++ */
+
+
+
+#define NULL ((void *)0)
+/* C++ *//* C++ */
+
+
+/* G++ */
+/* NULL not defined and <stddef.h> or need NULL. */
+#undef __need_NULL
+
+
+
+/* Offset of member MEMBER in a struct of type TYPE. */
+#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+
+/* _STDDEF_H was defined this time */
+
+/* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__
+ || __need_XXX was not defined before */
+# 227 "/usr/include/unistd.h" 2 3
+
+
+
+/* The Single Unix specification says that some more types are
+ available here. */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef __useconds_t useconds_t;
+#define __useconds_t_defined
+
+
+
+
+
+
+/* X/Open */
+
+
+
+typedef __intptr_t intptr_t;
+#define __intptr_t_defined
+
+
+
+
+
+typedef __socklen_t socklen_t;
+#define __socklen_t_defined
+
+
+
+/* Values for the second argument to access.
+ These may be OR'd together. */
+#define R_OK 4 /* Test for read permission. */
+#define W_OK 2 /* Test for write permission. */
+#define X_OK 1 /* Test for execute permission. */
+#define F_OK 0 /* Test for existence. */
+
+/* Test for access to NAME using the real UID and real GID. */
+extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+# 299 "/usr/include/unistd.h" 3
+
+
+
+/* Test for access to FILE relative to the directory FD is open on.
+ If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess',
+ otherwise use real IDs like `access'. */
+extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+/* Use GNU. */
+
+
+/* Values for the WHENCE argument to lseek. */
+/* <stdio.h> has the same definitions. */
+# 319 "/usr/include/unistd.h" 3
+
+
+
+/* Old BSD names for the same constants; just for compatibility. */
+#define L_SET SEEK_SET
+#define L_INCR SEEK_CUR
+#define L_XTND SEEK_END
+
+
+
+/* Move FD's file position to OFFSET bytes from the
+ beginning of the file (if WHENCE is SEEK_SET),
+ the current position (if WHENCE is SEEK_CUR),
+ or the end of the file (if WHENCE is SEEK_END).
+ Return the new file position. */
+
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__ , __leaf__ )) ;
+# 344 "/usr/include/unistd.h" 3
+
+
+
+
+
+
+/* Close the file descriptor FD.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int close (int __fd);
+
+/* Read NBYTES into BUF from FD. Return the
+ number read, -1 for errors or 0 for EOF.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
+
+/* Write N bytes of BUF to FD. Return the number written, or -1.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
+
+
+
+/* Read NBYTES into BUF from FD at the given position OFFSET without
+ changing the file pointer. Return the number read, -1 for errors
+ or 0 for EOF.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset) ;
+
+/* Write N bytes of BUF to FD at the given position OFFSET without
+ changing the file pointer. Return the number written, or -1.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+ __off_t __offset) ;
+# 399 "/usr/include/unistd.h" 3
+
+
+# 411 "/usr/include/unistd.h" 3
+
+
+
+/* Create a one-way communication channel (pipe).
+ If successful, two file descriptors are stored in PIPEDES;
+ bytes written on PIPEDES[1] can be read from PIPEDES[0].
+ Returns 0 if successful, -1 if not. */
+extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+/* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM.
+ If SECONDS is zero, any currently scheduled alarm will be cancelled.
+ The function returns the number of seconds remaining until the last
+ alarm scheduled would have signaled, or zero if there wasn't one.
+ There is no return value to indicate an error, but you can set `errno'
+ to 0 and check its value after calling `alarm', and this might tell you.
+ The signal may come late due to processor scheduling. */
+extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Make the process sleep for SECONDS seconds, or until a signal arrives
+ and is not ignored. The function returns the number of seconds less
+ than SECONDS which it actually slept (thus zero if it slept the full time).
+ If a signal handler does a `longjmp' or modifies the handling of the
+ SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
+ signal afterwards is undefined. There is no return value to indicate
+ error, but if `sleep' returns SECONDS, it probably didn't work.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern unsigned int sleep (unsigned int __seconds);
+
+
+
+/* Set an alarm to go off (generating a SIGALRM signal) in VALUE
+ microseconds. If INTERVAL is nonzero, when the alarm goes off, the
+ timer is reset to go off every INTERVAL microseconds thereafter.
+ Returns the number of microseconds remaining before the alarm. */
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
+ or ignored.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int usleep (__useconds_t __useconds);
+
+
+
+/* Suspend the process until a signal arrives.
+ This always returns -1 and sets `errno' to EINTR.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int pause (void);
+
+
+/* Change the owner and group of FILE. */
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Change the owner and group of the file that FD is open on. */
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Change owner and group of FILE, if it is a symbolic
+ link the ownership of the symbolic link is changed. */
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Use BSD || X/Open Unix. */
+
+
+/* Change the owner and group of FILE relative to the directory FD is open
+ on. */
+extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
+ __gid_t __group, int __flag)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+/* Use GNU. */
+
+/* Change the process's working directory to PATH. */
+extern int chdir (__const char *__path) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Change the process's working directory to the one FD is open on. */
+extern int fchdir (int __fd) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Get the pathname of the current working directory,
+ and put it in SIZE bytes of BUF. Returns NULL if the
+ directory couldn't be determined or SIZE was too small.
+ If successful, returns BUF. In GNU, if BUF is NULL,
+ an array is allocated with `malloc'; the array is SIZE
+ bytes long, unless SIZE == 0, in which case it is as
+ big as necessary. */
+extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+/* Put the absolute pathname of the current working directory in BUF.
+ If successful, return BUF. If not, put an error message in
+ BUF and return NULL. BUF should be at least PATH_MAX bytes long. */
+extern char *getwd (char *__buf)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) __attribute__ ((__deprecated__)) ;
+
+
+
+/* Duplicate FD, returning a new file descriptor on the same file. */
+extern int dup (int __fd) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Duplicate FD to FD2, closing FD2 and making it open on the same file. */
+extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+/* NULL-terminated array of "NAME=VALUE" environment variables. */
+extern char **__environ;
+
+
+
+
+
+/* Replace the current process, executing PATH with arguments ARGV and
+ environment ENVP. ARGV and ENVP are terminated by NULL pointers. */
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+/* Execute the file FD refers to, overlaying the running program image.
+ ARGV and ENVP are passed to the new program, as for `execve'. */
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+
+
+/* Execute PATH with arguments ARGV and environment from `environ'. */
+extern int execv (__const char *__path, char *__const __argv[])
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Execute PATH with all arguments after PATH until a NULL pointer,
+ and the argument after that for environment. */
+extern int execle (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Execute PATH with all arguments after PATH until
+ a NULL pointer and environment from `environ'. */
+extern int execl (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Execute FILE, searching in the `PATH' environment variable if it contains
+ no slashes, with arguments ARGV and environment from `environ'. */
+extern int execvp (__const char *__file, char *__const __argv[])
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Execute FILE, searching in the `PATH' environment variable if
+ it contains no slashes, with all arguments after FILE until a
+ NULL pointer and environment from `environ'. */
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+
+
+
+
+
+
+
+
+
+/* Add INC to priority of the current process. */
+extern int nice (int __inc) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Terminate program execution with the low-order 8 bits of STATUS. */
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+
+
+/* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
+ the `_SC_*' symbols for the NAME argument to `sysconf';
+ and the `_CS_*' symbols for the NAME argument to `confstr'. */
+#include <bits/confname.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/confname.h" 1 3
+/* `sysconf', `pathconf', and `confstr' NAME values. Generic version.
+ Copyright (C) 1993,1995-1998,2000,2001,2003,2004,2007,2009,2010
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+/* Values for the NAME argument to `pathconf' and `fpathconf'. */
+enum
+ {
+ _PC_LINK_MAX,
+#define _PC_LINK_MAX _PC_LINK_MAX
+ _PC_MAX_CANON,
+#define _PC_MAX_CANON _PC_MAX_CANON
+ _PC_MAX_INPUT,
+#define _PC_MAX_INPUT _PC_MAX_INPUT
+ _PC_NAME_MAX,
+#define _PC_NAME_MAX _PC_NAME_MAX
+ _PC_PATH_MAX,
+#define _PC_PATH_MAX _PC_PATH_MAX
+ _PC_PIPE_BUF,
+#define _PC_PIPE_BUF _PC_PIPE_BUF
+ _PC_CHOWN_RESTRICTED,
+#define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
+ _PC_NO_TRUNC,
+#define _PC_NO_TRUNC _PC_NO_TRUNC
+ _PC_VDISABLE,
+#define _PC_VDISABLE _PC_VDISABLE
+ _PC_SYNC_IO,
+#define _PC_SYNC_IO _PC_SYNC_IO
+ _PC_ASYNC_IO,
+#define _PC_ASYNC_IO _PC_ASYNC_IO
+ _PC_PRIO_IO,
+#define _PC_PRIO_IO _PC_PRIO_IO
+ _PC_SOCK_MAXBUF,
+#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
+ _PC_FILESIZEBITS,
+#define _PC_FILESIZEBITS _PC_FILESIZEBITS
+ _PC_REC_INCR_XFER_SIZE,
+#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
+ _PC_REC_MAX_XFER_SIZE,
+#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
+ _PC_REC_MIN_XFER_SIZE,
+#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
+ _PC_REC_XFER_ALIGN,
+#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
+ _PC_ALLOC_SIZE_MIN,
+#define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
+ _PC_SYMLINK_MAX,
+#define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
+ _PC_2_SYMLINKS
+#define _PC_2_SYMLINKS _PC_2_SYMLINKS
+ };
+
+/* Values for the argument to `sysconf'. */
+enum
+ {
+ _SC_ARG_MAX,
+#define _SC_ARG_MAX _SC_ARG_MAX
+ _SC_CHILD_MAX,
+#define _SC_CHILD_MAX _SC_CHILD_MAX
+ _SC_CLK_TCK,
+#define _SC_CLK_TCK _SC_CLK_TCK
+ _SC_NGROUPS_MAX,
+#define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
+ _SC_OPEN_MAX,
+#define _SC_OPEN_MAX _SC_OPEN_MAX
+ _SC_STREAM_MAX,
+#define _SC_STREAM_MAX _SC_STREAM_MAX
+ _SC_TZNAME_MAX,
+#define _SC_TZNAME_MAX _SC_TZNAME_MAX
+ _SC_JOB_CONTROL,
+#define _SC_JOB_CONTROL _SC_JOB_CONTROL
+ _SC_SAVED_IDS,
+#define _SC_SAVED_IDS _SC_SAVED_IDS
+ _SC_REALTIME_SIGNALS,
+#define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
+ _SC_PRIORITY_SCHEDULING,
+#define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
+ _SC_TIMERS,
+#define _SC_TIMERS _SC_TIMERS
+ _SC_ASYNCHRONOUS_IO,
+#define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
+ _SC_PRIORITIZED_IO,
+#define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
+ _SC_SYNCHRONIZED_IO,
+#define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
+ _SC_FSYNC,
+#define _SC_FSYNC _SC_FSYNC
+ _SC_MAPPED_FILES,
+#define _SC_MAPPED_FILES _SC_MAPPED_FILES
+ _SC_MEMLOCK,
+#define _SC_MEMLOCK _SC_MEMLOCK
+ _SC_MEMLOCK_RANGE,
+#define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
+ _SC_MEMORY_PROTECTION,
+#define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
+ _SC_MESSAGE_PASSING,
+#define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
+ _SC_SEMAPHORES,
+#define _SC_SEMAPHORES _SC_SEMAPHORES
+ _SC_SHARED_MEMORY_OBJECTS,
+#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
+ _SC_AIO_LISTIO_MAX,
+#define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
+ _SC_AIO_MAX,
+#define _SC_AIO_MAX _SC_AIO_MAX
+ _SC_AIO_PRIO_DELTA_MAX,
+#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
+ _SC_DELAYTIMER_MAX,
+#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
+ _SC_MQ_OPEN_MAX,
+#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
+ _SC_MQ_PRIO_MAX,
+#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
+ _SC_VERSION,
+#define _SC_VERSION _SC_VERSION
+ _SC_PAGESIZE,
+#define _SC_PAGESIZE _SC_PAGESIZE
+#define _SC_PAGE_SIZE _SC_PAGESIZE
+ _SC_RTSIG_MAX,
+#define _SC_RTSIG_MAX _SC_RTSIG_MAX
+ _SC_SEM_NSEMS_MAX,
+#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
+ _SC_SEM_VALUE_MAX,
+#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
+ _SC_SIGQUEUE_MAX,
+#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
+ _SC_TIMER_MAX,
+#define _SC_TIMER_MAX _SC_TIMER_MAX
+
+ /* Values for the argument to `sysconf'
+ corresponding to _POSIX2_* symbols. */
+ _SC_BC_BASE_MAX,
+#define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
+ _SC_BC_DIM_MAX,
+#define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
+ _SC_BC_SCALE_MAX,
+#define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
+ _SC_BC_STRING_MAX,
+#define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
+ _SC_COLL_WEIGHTS_MAX,
+#define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
+ _SC_EQUIV_CLASS_MAX,
+#define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX
+ _SC_EXPR_NEST_MAX,
+#define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
+ _SC_LINE_MAX,
+#define _SC_LINE_MAX _SC_LINE_MAX
+ _SC_RE_DUP_MAX,
+#define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
+ _SC_CHARCLASS_NAME_MAX,
+#define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX
+
+ _SC_2_VERSION,
+#define _SC_2_VERSION _SC_2_VERSION
+ _SC_2_C_BIND,
+#define _SC_2_C_BIND _SC_2_C_BIND
+ _SC_2_C_DEV,
+#define _SC_2_C_DEV _SC_2_C_DEV
+ _SC_2_FORT_DEV,
+#define _SC_2_FORT_DEV _SC_2_FORT_DEV
+ _SC_2_FORT_RUN,
+#define _SC_2_FORT_RUN _SC_2_FORT_RUN
+ _SC_2_SW_DEV,
+#define _SC_2_SW_DEV _SC_2_SW_DEV
+ _SC_2_LOCALEDEF,
+#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF
+
+ _SC_PII,
+#define _SC_PII _SC_PII
+ _SC_PII_XTI,
+#define _SC_PII_XTI _SC_PII_XTI
+ _SC_PII_SOCKET,
+#define _SC_PII_SOCKET _SC_PII_SOCKET
+ _SC_PII_INTERNET,
+#define _SC_PII_INTERNET _SC_PII_INTERNET
+ _SC_PII_OSI,
+#define _SC_PII_OSI _SC_PII_OSI
+ _SC_POLL,
+#define _SC_POLL _SC_POLL
+ _SC_SELECT,
+#define _SC_SELECT _SC_SELECT
+ _SC_UIO_MAXIOV,
+#define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
+ _SC_IOV_MAX = _SC_UIO_MAXIOV ,
+#define _SC_IOV_MAX _SC_IOV_MAX
+ _SC_PII_INTERNET_STREAM,
+#define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
+ _SC_PII_INTERNET_DGRAM,
+#define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
+ _SC_PII_OSI_COTS,
+#define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
+ _SC_PII_OSI_CLTS,
+#define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
+ _SC_PII_OSI_M,
+#define _SC_PII_OSI_M _SC_PII_OSI_M
+ _SC_T_IOV_MAX,
+#define _SC_T_IOV_MAX _SC_T_IOV_MAX
+
+ /* Values according to POSIX 1003.1c (POSIX threads). */
+ _SC_THREADS,
+#define _SC_THREADS _SC_THREADS
+ _SC_THREAD_SAFE_FUNCTIONS,
+#define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
+ _SC_GETGR_R_SIZE_MAX,
+#define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
+ _SC_GETPW_R_SIZE_MAX,
+#define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
+ _SC_LOGIN_NAME_MAX,
+#define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
+ _SC_TTY_NAME_MAX,
+#define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
+ _SC_THREAD_KEYS_MAX,
+#define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
+ _SC_THREAD_STACK_MIN,
+#define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
+ _SC_THREAD_THREADS_MAX,
+#define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
+ _SC_THREAD_ATTR_STACKADDR,
+#define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
+ _SC_THREAD_ATTR_STACKSIZE,
+#define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
+ _SC_THREAD_PRIORITY_SCHEDULING,
+#define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
+ _SC_THREAD_PRIO_INHERIT,
+#define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
+ _SC_THREAD_PRIO_PROTECT,
+#define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
+ _SC_THREAD_PROCESS_SHARED,
+#define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED
+
+ _SC_NPROCESSORS_CONF,
+#define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF
+ _SC_NPROCESSORS_ONLN,
+#define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN
+ _SC_PHYS_PAGES,
+#define _SC_PHYS_PAGES _SC_PHYS_PAGES
+ _SC_AVPHYS_PAGES,
+#define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES
+ _SC_ATEXIT_MAX,
+#define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
+ _SC_PASS_MAX,
+#define _SC_PASS_MAX _SC_PASS_MAX
+
+ _SC_XOPEN_VERSION,
+#define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
+ _SC_XOPEN_XCU_VERSION,
+#define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION
+ _SC_XOPEN_UNIX,
+#define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
+ _SC_XOPEN_CRYPT,
+#define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
+ _SC_XOPEN_ENH_I18N,
+#define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
+ _SC_XOPEN_SHM,
+#define _SC_XOPEN_SHM _SC_XOPEN_SHM
+
+ _SC_2_CHAR_TERM,
+#define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
+ _SC_2_C_VERSION,
+#define _SC_2_C_VERSION _SC_2_C_VERSION
+ _SC_2_UPE,
+#define _SC_2_UPE _SC_2_UPE
+
+ _SC_XOPEN_XPG2,
+#define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2
+ _SC_XOPEN_XPG3,
+#define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3
+ _SC_XOPEN_XPG4,
+#define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4
+
+ _SC_CHAR_BIT,
+#define _SC_CHAR_BIT _SC_CHAR_BIT
+ _SC_CHAR_MAX,
+#define _SC_CHAR_MAX _SC_CHAR_MAX
+ _SC_CHAR_MIN,
+#define _SC_CHAR_MIN _SC_CHAR_MIN
+ _SC_INT_MAX,
+#define _SC_INT_MAX _SC_INT_MAX
+ _SC_INT_MIN,
+#define _SC_INT_MIN _SC_INT_MIN
+ _SC_LONG_BIT,
+#define _SC_LONG_BIT _SC_LONG_BIT
+ _SC_WORD_BIT,
+#define _SC_WORD_BIT _SC_WORD_BIT
+ _SC_MB_LEN_MAX,
+#define _SC_MB_LEN_MAX _SC_MB_LEN_MAX
+ _SC_NZERO,
+#define _SC_NZERO _SC_NZERO
+ _SC_SSIZE_MAX,
+#define _SC_SSIZE_MAX _SC_SSIZE_MAX
+ _SC_SCHAR_MAX,
+#define _SC_SCHAR_MAX _SC_SCHAR_MAX
+ _SC_SCHAR_MIN,
+#define _SC_SCHAR_MIN _SC_SCHAR_MIN
+ _SC_SHRT_MAX,
+#define _SC_SHRT_MAX _SC_SHRT_MAX
+ _SC_SHRT_MIN,
+#define _SC_SHRT_MIN _SC_SHRT_MIN
+ _SC_UCHAR_MAX,
+#define _SC_UCHAR_MAX _SC_UCHAR_MAX
+ _SC_UINT_MAX,
+#define _SC_UINT_MAX _SC_UINT_MAX
+ _SC_ULONG_MAX,
+#define _SC_ULONG_MAX _SC_ULONG_MAX
+ _SC_USHRT_MAX,
+#define _SC_USHRT_MAX _SC_USHRT_MAX
+
+ _SC_NL_ARGMAX,
+#define _SC_NL_ARGMAX _SC_NL_ARGMAX
+ _SC_NL_LANGMAX,
+#define _SC_NL_LANGMAX _SC_NL_LANGMAX
+ _SC_NL_MSGMAX,
+#define _SC_NL_MSGMAX _SC_NL_MSGMAX
+ _SC_NL_NMAX,
+#define _SC_NL_NMAX _SC_NL_NMAX
+ _SC_NL_SETMAX,
+#define _SC_NL_SETMAX _SC_NL_SETMAX
+ _SC_NL_TEXTMAX,
+#define _SC_NL_TEXTMAX _SC_NL_TEXTMAX
+
+ _SC_XBS5_ILP32_OFF32,
+#define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
+ _SC_XBS5_ILP32_OFFBIG,
+#define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
+ _SC_XBS5_LP64_OFF64,
+#define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
+ _SC_XBS5_LPBIG_OFFBIG,
+#define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG
+
+ _SC_XOPEN_LEGACY,
+#define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY
+ _SC_XOPEN_REALTIME,
+#define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
+ _SC_XOPEN_REALTIME_THREADS,
+#define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS
+
+ _SC_ADVISORY_INFO,
+#define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
+ _SC_BARRIERS,
+#define _SC_BARRIERS _SC_BARRIERS
+ _SC_BASE,
+#define _SC_BASE _SC_BASE
+ _SC_C_LANG_SUPPORT,
+#define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT
+ _SC_C_LANG_SUPPORT_R,
+#define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R
+ _SC_CLOCK_SELECTION,
+#define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
+ _SC_CPUTIME,
+#define _SC_CPUTIME _SC_CPUTIME
+ _SC_THREAD_CPUTIME,
+#define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
+ _SC_DEVICE_IO,
+#define _SC_DEVICE_IO _SC_DEVICE_IO
+ _SC_DEVICE_SPECIFIC,
+#define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC
+ _SC_DEVICE_SPECIFIC_R,
+#define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R
+ _SC_FD_MGMT,
+#define _SC_FD_MGMT _SC_FD_MGMT
+ _SC_FIFO,
+#define _SC_FIFO _SC_FIFO
+ _SC_PIPE,
+#define _SC_PIPE _SC_PIPE
+ _SC_FILE_ATTRIBUTES,
+#define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES
+ _SC_FILE_LOCKING,
+#define _SC_FILE_LOCKING _SC_FILE_LOCKING
+ _SC_FILE_SYSTEM,
+#define _SC_FILE_SYSTEM _SC_FILE_SYSTEM
+ _SC_MONOTONIC_CLOCK,
+#define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
+ _SC_MULTI_PROCESS,
+#define _SC_MULTI_PROCESS _SC_MULTI_PROCESS
+ _SC_SINGLE_PROCESS,
+#define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS
+ _SC_NETWORKING,
+#define _SC_NETWORKING _SC_NETWORKING
+ _SC_READER_WRITER_LOCKS,
+#define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
+ _SC_SPIN_LOCKS,
+#define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
+ _SC_REGEXP,
+#define _SC_REGEXP _SC_REGEXP
+ _SC_REGEX_VERSION,
+#define _SC_REGEX_VERSION _SC_REGEX_VERSION
+ _SC_SHELL,
+#define _SC_SHELL _SC_SHELL
+ _SC_SIGNALS,
+#define _SC_SIGNALS _SC_SIGNALS
+ _SC_SPAWN,
+#define _SC_SPAWN _SC_SPAWN
+ _SC_SPORADIC_SERVER,
+#define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
+ _SC_THREAD_SPORADIC_SERVER,
+#define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
+ _SC_SYSTEM_DATABASE,
+#define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE
+ _SC_SYSTEM_DATABASE_R,
+#define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R
+ _SC_TIMEOUTS,
+#define _SC_TIMEOUTS _SC_TIMEOUTS
+ _SC_TYPED_MEMORY_OBJECTS,
+#define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
+ _SC_USER_GROUPS,
+#define _SC_USER_GROUPS _SC_USER_GROUPS
+ _SC_USER_GROUPS_R,
+#define _SC_USER_GROUPS_R _SC_USER_GROUPS_R
+ _SC_2_PBS,
+#define _SC_2_PBS _SC_2_PBS
+ _SC_2_PBS_ACCOUNTING,
+#define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
+ _SC_2_PBS_LOCATE,
+#define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
+ _SC_2_PBS_MESSAGE,
+#define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
+ _SC_2_PBS_TRACK,
+#define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
+ _SC_SYMLOOP_MAX,
+#define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
+ _SC_STREAMS,
+#define _SC_STREAMS _SC_STREAMS
+ _SC_2_PBS_CHECKPOINT,
+#define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT
+
+ _SC_V6_ILP32_OFF32,
+#define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
+ _SC_V6_ILP32_OFFBIG,
+#define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
+ _SC_V6_LP64_OFF64,
+#define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
+ _SC_V6_LPBIG_OFFBIG,
+#define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG
+
+ _SC_HOST_NAME_MAX,
+#define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
+ _SC_TRACE,
+#define _SC_TRACE _SC_TRACE
+ _SC_TRACE_EVENT_FILTER,
+#define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
+ _SC_TRACE_INHERIT,
+#define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
+ _SC_TRACE_LOG,
+#define _SC_TRACE_LOG _SC_TRACE_LOG
+
+ _SC_LEVEL1_ICACHE_SIZE,
+#define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE
+ _SC_LEVEL1_ICACHE_ASSOC,
+#define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC
+ _SC_LEVEL1_ICACHE_LINESIZE,
+#define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE
+ _SC_LEVEL1_DCACHE_SIZE,
+#define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE
+ _SC_LEVEL1_DCACHE_ASSOC,
+#define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC
+ _SC_LEVEL1_DCACHE_LINESIZE,
+#define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE
+ _SC_LEVEL2_CACHE_SIZE,
+#define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE
+ _SC_LEVEL2_CACHE_ASSOC,
+#define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC
+ _SC_LEVEL2_CACHE_LINESIZE,
+#define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE
+ _SC_LEVEL3_CACHE_SIZE,
+#define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE
+ _SC_LEVEL3_CACHE_ASSOC,
+#define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC
+ _SC_LEVEL3_CACHE_LINESIZE,
+#define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE
+ _SC_LEVEL4_CACHE_SIZE,
+#define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE
+ _SC_LEVEL4_CACHE_ASSOC,
+#define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC
+ _SC_LEVEL4_CACHE_LINESIZE,
+#define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE
+ /* Leave room here, maybe we need a few more cache levels some day. */
+
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+#define _SC_IPV6 _SC_IPV6
+ _SC_RAW_SOCKETS,
+#define _SC_RAW_SOCKETS _SC_RAW_SOCKETS
+
+ _SC_V7_ILP32_OFF32,
+#define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32
+ _SC_V7_ILP32_OFFBIG,
+#define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
+ _SC_V7_LP64_OFF64,
+#define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64
+ _SC_V7_LPBIG_OFFBIG,
+#define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
+
+ _SC_SS_REPL_MAX,
+#define _SC_SS_REPL_MAX _SC_SS_REPL_MAX
+
+ _SC_TRACE_EVENT_NAME_MAX,
+#define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX
+ _SC_TRACE_NAME_MAX,
+#define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX
+ _SC_TRACE_SYS_MAX,
+#define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX
+ _SC_TRACE_USER_EVENT_MAX,
+#define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX
+
+ _SC_XOPEN_STREAMS,
+#define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS
+
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+#define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT
+ _SC_THREAD_ROBUST_PRIO_PROTECT
+#define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT
+ };
+
+/* Values for the NAME argument to `confstr'. */
+enum
+ {
+ _CS_PATH, /* The default search path. */
+#define _CS_PATH _CS_PATH
+
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+#define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
+#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
+
+ _CS_GNU_LIBC_VERSION,
+#define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION
+ _CS_GNU_LIBPTHREAD_VERSION,
+#define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION
+
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+#define _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
+#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
+
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+#define _CS_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
+#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
+
+ _CS_LFS_CFLAGS = 1000,
+#define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
+ _CS_LFS_LDFLAGS,
+#define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
+ _CS_LFS_LIBS,
+#define _CS_LFS_LIBS _CS_LFS_LIBS
+ _CS_LFS_LINTFLAGS,
+#define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
+ _CS_LFS64_CFLAGS,
+#define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
+ _CS_LFS64_LDFLAGS,
+#define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
+ _CS_LFS64_LIBS,
+#define _CS_LFS64_LIBS _CS_LFS64_LIBS
+ _CS_LFS64_LINTFLAGS,
+#define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS
+
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
+ _CS_XBS5_ILP32_OFF32_LIBS,
+#define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+#define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
+ _CS_XBS5_LP64_OFF64_LIBS,
+#define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+#define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+#define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+#define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+#define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+
+ _CS_V6_ENV,
+#define _CS_V6_ENV _CS_V6_ENV
+ _CS_V7_ENV
+#define _CS_V7_ENV _CS_V7_ENV
+ };
+# 610 "/usr/include/unistd.h" 2 3
+
+
+/* Get file-specific configuration information about PATH. */
+extern long int pathconf (__const char *__path, int __name)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Get file-specific configuration about descriptor FD. */
+extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Get the value of the system variable NAME. */
+extern long int sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Get the value of the string-valued system variable NAME. */
+extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Get the process ID of the calling process. */
+extern __pid_t getpid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Get the process ID of the calling process's parent. */
+extern __pid_t getppid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Get the process group ID of the calling process.
+ This function is different on old BSD. */
+
+extern __pid_t getpgrp (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+/* Get the process group ID of process PID. */
+extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Set the process group ID of the process matching PID to PGID.
+ If PID is zero, the current process's process group ID is set.
+ If PGID is zero, the process ID of the process is used. */
+extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Both System V and BSD have `setpgrp' functions, but with different
+ calling conventions. The BSD function is the same as POSIX.1 `setpgid'
+ (above). The System V function takes no arguments and puts the calling
+ process in its on group like `setpgid (0, 0)'.
+
+ New programs should always use `setpgid' instead.
+
+ The default in GNU is to provide the System V function. The BSD
+ function is available under -D_BSD_SOURCE. */
+
+
+
+/* Set the process group ID of the calling process to its own PID.
+ This is exactly the same as `setpgid (0, 0)'. */
+extern int setpgrp (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Favor BSD. */
+# 684 "/usr/include/unistd.h" 3
+
+/* Use SVID or BSD. */
+
+/* Create a new session with the calling process as its leader.
+ The process group IDs of the session and the calling process
+ are set to the process ID of the calling process, which is returned. */
+extern __pid_t setsid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the session ID of the given process. */
+extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Get the real user ID of the calling process. */
+extern __uid_t getuid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Get the effective user ID of the calling process. */
+extern __uid_t geteuid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Get the real group ID of the calling process. */
+extern __gid_t getgid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Get the effective group ID of the calling process. */
+extern __gid_t getegid (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* If SIZE is zero, return the number of supplementary groups
+ the calling process is in. Otherwise, fill in the group IDs
+ of its supplementary groups in LIST and return the number written. */
+extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+/* Set the user ID of the calling process to UID.
+ If the calling process is the super-user, set the real
+ and effective user IDs, and the saved set-user-ID to UID;
+ if not, the effective user ID is set to UID. */
+extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Set the real user ID of the calling process to RUID,
+ and the effective user ID of the calling process to EUID. */
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Set the effective user ID of the calling process to UID. */
+extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use BSD. */
+
+/* Set the group ID of the calling process to GID.
+ If the calling process is the super-user, set the real
+ and effective group IDs, and the saved set-group-ID to GID;
+ if not, the effective group ID is set to GID. */
+extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Set the real group ID of the calling process to RGID,
+ and the effective group ID of the calling process to EGID. */
+extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Set the effective group ID of the calling process to GID. */
+extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use BSD. */
+
+# 773 "/usr/include/unistd.h" 3
+
+
+
+/* Clone the calling process, creating an exact copy.
+ Return -1 for errors, 0 to the new process,
+ and the process ID of the new process to the old process. */
+extern __pid_t fork (void) __attribute__ ((__nothrow__)) ;
+
+
+
+/* Clone the calling process, but without copying the whole address space.
+ The calling process is suspended until the new process exits or is
+ replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
+ and the process ID of the new process to the old process. */
+extern __pid_t vfork (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use BSD or XPG < 7. */
+
+
+/* Return the pathname of the terminal FD is open on, or NULL on errors.
+ The returned storage is good only until the next call to this function. */
+extern char *ttyname (int __fd) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Store at most BUFLEN characters of the pathname of the terminal FD is
+ open on in BUF. Return 0 on success, otherwise an error number. */
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+/* Return 1 if FD is a valid descriptor associated
+ with a terminal, zero if not. */
+extern int isatty (int __fd) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Return the index into the active-logins file (utmp) for
+ the controlling terminal. */
+extern int ttyslot (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Make a link to FROM named TO. */
+extern int link (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+
+/* Like link but relative paths in TO and FROM are interpreted relative
+ to FROMFD and TOFD respectively. */
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to, int __flags)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2, 4) )) ;
+
+
+
+/* Make a symbolic link to FROM named TO. */
+extern int symlink (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+
+/* Read the contents of the symbolic link PATH into no more than
+ LEN bytes of BUF. The contents are not null-terminated.
+ Returns the number of characters read, or -1 for errors. */
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 2) )) ;
+/* Use BSD. */
+
+
+/* Like symlink but a relative path in TO is interpreted relative to TOFD. */
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1, 3) )) ;
+
+/* Like readlink but a relative PATH is interpreted relative to FD. */
+extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2, 3) )) ;
+
+
+/* Remove the link NAME. */
+extern int unlink (__const char *__name) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Remove the link NAME relative to FD. */
+extern int unlinkat (int __fd, __const char *__name, int __flag)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (2) )) ;
+
+
+/* Remove the directory PATH. */
+extern int rmdir (__const char *__path) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Return the foreground process group ID of FD. */
+extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Set the foreground process group ID of FD set PGRP_ID. */
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Return the login name of the user.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern char *getlogin (void);
+
+/* Return at most NAME_LEN characters of the login name of the user in NAME.
+ If it cannot be determined or some other error occurred, return the error
+ code. Otherwise return 0.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+/* Set the login name returned by `getlogin'. */
+extern int setlogin (__const char *__name) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Get definitions and prototypes for functions to process the
+ arguments in ARGV (ARGC of them, minus the program name) for
+ options given in OPTS. */
+#define __need_getopt
+#include <getopt.h>
+# 1 "/usr/include/getopt.h" 1 3
+/* Declarations for getopt.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009,2010
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+
+
+
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+ standalone, or this is the first header included in the source file.
+ If we are being used with glibc, we need to include <features.h>, but
+ that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
+ not defined, include <ctype.h>, which will pull in <features.h> for us
+ if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
+ doesn't flood the namespace with stuff the way some other headers do.) */
+
+
+
+
+# 47 "/usr/include/getopt.h" 3
+
+
+
+
+
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns -1, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+ for unrecognized options. */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized. */
+
+extern int optopt;
+
+/* need getopt */
+# 121 "/usr/include/getopt.h" 3
+
+
+
+/* Get definitions and prototypes for functions to process the
+ arguments in ARGV (ARGC of them, minus the program name) for
+ options given in OPTS.
+
+ Return the option character from OPTS just read. Return -1 when
+ there are no more options. For unrecognized options, or options
+ missing arguments, `optopt' is set to the option letter, and '?' is
+ returned.
+
+ The OPTS string is a list of characters which are recognized option
+ letters, optionally followed by colons, specifying that that letter
+ takes an argument, to be placed in `optarg'.
+
+ If a letter in OPTS is followed by two colons, its argument is
+ optional. This behavior is specific to the GNU `getopt'.
+
+ The argument `--' causes premature termination of argument
+ scanning, explicitly telling `getopt' that there are no more
+ options.
+
+ If OPTS begins with `--', then non-option arguments are treated as
+ arguments to the option '0円'. This behavior is specific to the GNU
+ `getopt'. */
+
+
+/* Many other libraries have conflicting prototypes for getopt, with
+ differences in the consts, in stdlib.h. To avoid compilation
+ errors, only prototype getopt for the GNU C library. */
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+# 169 "/usr/include/getopt.h" 3
+
+/* not __GNU_LIBRARY__ *//* __GNU_LIBRARY__ */
+
+
+
+# 184 "/usr/include/getopt.h" 3
+
+
+
+
+
+
+/* Make sure we later can get all the definitions and declarations. */
+#undef __need_getopt
+
+/* getopt.h */
+# 894 "/usr/include/unistd.h" 2 3
+
+
+
+
+
+/* Put the name of the current host in no more than LEN bytes of NAME.
+ The result is null-terminated if LEN is large enough for the full
+ name and the terminator. */
+extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+
+
+/* Set the name of the current host to NAME, which is LEN bytes long.
+ This call is restricted to the super-user. */
+extern int sethostname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Set the current machine's Internet number to ID.
+ This call is restricted to the super-user. */
+extern int sethostid (long int __id) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Get and set the NIS (aka YP) domain name, if any.
+ Called just like `gethostname' and `sethostname'.
+ The NIS domain name is usually the empty string when not using NIS. */
+extern int getdomainname (char *__name, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+extern int setdomainname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Revoke access permissions to all processes currently communicating
+ with the control terminal, and then send a SIGHUP signal to the process
+ group of the control terminal. */
+extern int vhangup (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Revoke the access of all descriptors currently open on FILE. */
+extern int revoke (__const char *__file) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Enable statistical profiling, writing samples of the PC into at most
+ SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling
+ is enabled, the system examines the user PC and increments
+ SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536]. If SCALE is zero,
+ disable profiling. Returns zero on success, -1 on error. */
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+ size_t __offset, unsigned int __scale)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+
+/* Turn accounting on if NAME is an existing file. The system will then write
+ a record for each process as it terminates, to this file. If NAME is NULL,
+ turn accounting off. This call is restricted to the super-user. */
+extern int acct (__const char *__name) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Successive calls return the shells listed in `/etc/shells'. */
+extern char *getusershell (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+extern void endusershell (void) __attribute__ ((__nothrow__ , __leaf__ )) ; /* Discard cached info. */
+extern void setusershell (void) __attribute__ ((__nothrow__ , __leaf__ )) ; /* Rewind and re-read the file. */
+
+
+/* Put the program in the background, and dissociate from the controlling
+ terminal. If NOCHDIR is zero, do `chdir ("/")'. If NOCLOSE is zero,
+ redirects stdin, stdout, and stderr to /dev/null. */
+extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__ , __leaf__ )) ;
+/* Use BSD || X/Open. */
+
+
+
+/* Make PATH be the root directory (the starting point for absolute paths).
+ This call is restricted to the super-user. */
+extern int chroot (__const char *__path) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+
+/* Prompt with PROMPT and read a string from the terminal without echoing.
+ Uses /dev/tty if possible; otherwise stderr and stdin. */
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1) )) ;
+/* Use BSD || X/Open. */
+
+
+
+/* Make all changes done to FD actually appear on disk.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int fsync (int __fd);
+/* Use BSD || X/Open || Unix98. */
+
+
+
+
+
+
+
+
+
+
+
+/* Return identifier for the current host. */
+extern long int gethostid (void);
+
+/* Make all changes done to all files actually appear on disk. */
+extern void sync (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Return the number of bytes in a page. This is the system's page size,
+ which is not necessarily the same as the hardware page size. */
+extern int getpagesize (void) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+/* Return the maximum number of file descriptors
+ the current process could possibly have. */
+extern int getdtablesize (void) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+/* Use BSD || X/Open Unix. */
+
+
+
+
+/* Truncate FILE to LENGTH bytes. */
+
+extern int truncate (__const char *__file, __off_t __length)
+ __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__nonnull__ (1) )) ;
+# 1028 "/usr/include/unistd.h" 3
+
+
+
+
+
+
+/* Use BSD || X/Open Unix || POSIX 2008. */
+
+
+
+/* Truncate the file FD is open on to LENGTH bytes. */
+
+extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+
+
+
+
+
+
+
+
+/* Use BSD || X/Open Unix || POSIX 2003. */
+
+
+
+
+
+/* Set the end of accessible data space (aka "the break") to ADDR.
+ Returns zero on success and -1 for errors (with errno set). */
+extern int brk (void *__addr) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Increase or decrease the end of accessible data space by DELTA bytes.
+ If successful, returns the address the previous end of data space
+ (i.e. the beginning of the new space, if DELTA > 0);
+ returns (void *) -1 for errors (with errno set). */
+extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+
+/* Invoke `system call' number SYSNO, passing it the remaining arguments.
+ This is completely system-dependent, and not often useful.
+
+ In Unix, `syscall' sets `errno' for all errors and most calls return -1
+ for errors; in many systems you cannot pass arguments or get return
+ values for all system calls (`pipe', `fork', and `getppid' typically
+ among them).
+
+ In Mach, all system calls take normal arguments and always return an
+ error code (zero for success). */
+extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+/* Use misc. */
+
+
+
+/* NOTE: These declarations also appear in <fcntl.h>; be sure to keep both
+ files consistent. Some systems have them there and some here, and some
+ software depends on the macros being defined without including both. */
+
+/* `lockf' is a simpler interface to the locking facilities of `fcntl'.
+ LEN is always relative to the current file position.
+ The CMD argument is one of the following.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+
+#define F_ULOCK 0 /* Unlock a previously locked region. */
+#define F_LOCK 1 /* Lock a region for exclusive use. */
+#define F_TLOCK 2 /* Test and lock a region for exclusive use. */
+#define F_TEST 3 /* Test a region for other processes locks. */
+
+
+extern int lockf (int __fd, int __cmd, __off_t __len) ;
+
+
+
+
+
+
+
+
+
+
+
+/* Use misc and F_LOCK not already defined. */
+
+
+# 1131 "/usr/include/unistd.h" 3
+
+
+
+/* Synchronize at least the data part of a file with the underlying
+ media. */
+extern int fdatasync (int __fildes);
+/* Use POSIX199309 */
+
+
+/* XPG4.2 specifies that prototypes for the encryption functions must
+ be defined here. */
+# 1158 "/usr/include/unistd.h" 3
+
+
+
+/* The Single Unix specification demands this prototype to be here.
+ It is also found in <stdio.h>. */
+
+/* Return the name of the controlling terminal. */
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__ )) ;
+
+
+
+/* Define some macros helping to catch buffer overflows. */
+
+
+
+
+
+
+/* unistd.h */
+# 34 "local.h" 2
+
+
+
+
+extern int strcasecmp( const char *,
+ const char * );
+
+
+
+
+
+
+/* __VMS */
+# 60 "local.h"
+
+
+
+/********* End of Configurable stuff ***********/
+
+/* FL_PATH_MAX */
+
+
+
+
+
+
+
+
+#define FL_FLEN 256
+
+
+/* There are two ways to handle motion events, one is to constantly
+ * query the server for mouse position, and the other is to use
+ * motion events. The first way obviously is slow and expensive
+ * if runs across network. The latter however suffers with stepping
+ * events.
+ */
+
+/*#define NO_MSG_INFO */
+
+/* ifndef local.h } */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
+# 35 "flinternal.h" 2
+
+#include "ulib.h"
+# 1 "ulib.h" 1
+/*
+ *
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * \file ulib.h
+ *
+ * Macros and Prototypes for the utilities routines
+ */
+
+
+#define TC_ULIB_H
+
+#include <stdio.h> /* for FILE */
+#include <errno.h>
+# 1 "/usr/include/errno.h" 1 3
+/* Copyright (C) 1991,92,93,94,95,96,97,2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * ISO C99 Standard: 7.5 Errors <errno.h>
+ */
+
+
+
+/* The includer defined __need_Emath if he wants only the definitions
+ of EDOM and ERANGE, and not everything else. */
+
+#define _ERRNO_H 1
+#include <features.h>
+
+
+
+
+/* Get the error number constants from the system-specific file.
+ This file will test __need_Emath and _ERRNO_H. */
+#include <bits/errno.h>
+# 1 "/usr/include/x86_64-linux-gnu/bits/errno.h" 1 3
+/* Error constants. Linux specific version.
+ Copyright (C) 1996-1999, 2005, 2009 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+
+#undef EDOM
+#undef EILSEQ
+#undef ERANGE
+#include <linux/errno.h>
+# 1 "/usr/include/linux/errno.h" 1 3
+
+#define _LINUX_ERRNO_H
+
+#include <asm/errno.h>
+# 1 "/usr/include/x86_64-linux-gnu/asm/errno.h" 1 3
+#include <asm-generic/errno.h>
+# 1 "/usr/include/asm-generic/errno.h" 1 3
+
+#define _ASM_GENERIC_ERRNO_H
+
+#include <asm-generic/errno-base.h>
+# 1 "/usr/include/asm-generic/errno-base.h" 1 3
+
+#define _ASM_GENERIC_ERRNO_BASE_H
+
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define E2BIG 7 /* Argument list too long */
+#define ENOEXEC 8 /* Exec format error */
+#define EBADF 9 /* Bad file number */
+#define ECHILD 10 /* No child processes */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* Out of memory */
+#define EACCES 13 /* Permission denied */
+#define EFAULT 14 /* Bad address */
+#define ENOTBLK 15 /* Block device required */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENFILE 23 /* File table overflow */
+#define EMFILE 24 /* Too many open files */
+#define ENOTTY 25 /* Not a typewriter */
+#define ETXTBSY 26 /* Text file busy */
+#define EFBIG 27 /* File too large */
+#define ENOSPC 28 /* No space left on device */
+#define ESPIPE 29 /* Illegal seek */
+#define EROFS 30 /* Read-only file system */
+#define EMLINK 31 /* Too many links */
+#define EPIPE 32 /* Broken pipe */
+#define EDOM 33 /* Math argument out of domain of func */
+#define ERANGE 34 /* Math result not representable */
+
+
+# 4 "/usr/include/asm-generic/errno.h" 2 3
+
+
+#define EDEADLK 35 /* Resource deadlock would occur */
+#define ENAMETOOLONG 36 /* File name too long */
+#define ENOLCK 37 /* No record locks available */
+#define ENOSYS 38 /* Function not implemented */
+#define ENOTEMPTY 39 /* Directory not empty */
+#define ELOOP 40 /* Too many symbolic links encountered */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+#define ENOMSG 42 /* No message of desired type */
+#define EIDRM 43 /* Identifier removed */
+#define ECHRNG 44 /* Channel number out of range */
+#define EL2NSYNC 45 /* Level 2 not synchronized */
+#define EL3HLT 46 /* Level 3 halted */
+#define EL3RST 47 /* Level 3 reset */
+#define ELNRNG 48 /* Link number out of range */
+#define EUNATCH 49 /* Protocol driver not attached */
+#define ENOCSI 50 /* No CSI structure available */
+#define EL2HLT 51 /* Level 2 halted */
+#define EBADE 52 /* Invalid exchange */
+#define EBADR 53 /* Invalid request descriptor */
+#define EXFULL 54 /* Exchange full */
+#define ENOANO 55 /* No anode */
+#define EBADRQC 56 /* Invalid request code */
+#define EBADSLT 57 /* Invalid slot */
+
+#define EDEADLOCK EDEADLK
+
+#define EBFONT 59 /* Bad font file format */
+#define ENOSTR 60 /* Device not a stream */
+#define ENODATA 61 /* No data available */
+#define ETIME 62 /* Timer expired */
+#define ENOSR 63 /* Out of streams resources */
+#define ENONET 64 /* Machine is not on the network */
+#define ENOPKG 65 /* Package not installed */
+#define EREMOTE 66 /* Object is remote */
+#define ENOLINK 67 /* Link has been severed */
+#define EADV 68 /* Advertise error */
+#define ESRMNT 69 /* Srmount error */
+#define ECOMM 70 /* Communication error on send */
+#define EPROTO 71 /* Protocol error */
+#define EMULTIHOP 72 /* Multihop attempted */
+#define EDOTDOT 73 /* RFS specific error */
+#define EBADMSG 74 /* Not a data message */
+#define EOVERFLOW 75 /* Value too large for defined data type */
+#define ENOTUNIQ 76 /* Name not unique on network */
+#define EBADFD 77 /* File descriptor in bad state */
+#define EREMCHG 78 /* Remote address changed */
+#define ELIBACC 79 /* Can not access a needed shared library */
+#define ELIBBAD 80 /* Accessing a corrupted shared library */
+#define ELIBSCN 81 /* .lib section in a.out corrupted */
+#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
+#define ELIBEXEC 83 /* Cannot exec a shared library directly */
+#define EILSEQ 84 /* Illegal byte sequence */
+#define ERESTART 85 /* Interrupted system call should be restarted */
+#define ESTRPIPE 86 /* Streams pipe error */
+#define EUSERS 87 /* Too many users */
+#define ENOTSOCK 88 /* Socket operation on non-socket */
+#define EDESTADDRREQ 89 /* Destination address required */
+#define EMSGSIZE 90 /* Message too long */
+#define EPROTOTYPE 91 /* Protocol wrong type for socket */
+#define ENOPROTOOPT 92 /* Protocol not available */
+#define EPROTONOSUPPORT 93 /* Protocol not supported */
+#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
+#define EPFNOSUPPORT 96 /* Protocol family not supported */
+#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
+#define EADDRINUSE 98 /* Address already in use */
+#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
+#define ENETDOWN 100 /* Network is down */
+#define ENETUNREACH 101 /* Network is unreachable */
+#define ENETRESET 102 /* Network dropped connection because of reset */
+#define ECONNABORTED 103 /* Software caused connection abort */
+#define ECONNRESET 104 /* Connection reset by peer */
+#define ENOBUFS 105 /* No buffer space available */
+#define EISCONN 106 /* Transport endpoint is already connected */
+#define ENOTCONN 107 /* Transport endpoint is not connected */
+#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
+#define ETOOMANYREFS 109 /* Too many references: cannot splice */
+#define ETIMEDOUT 110 /* Connection timed out */
+#define ECONNREFUSED 111 /* Connection refused */
+#define EHOSTDOWN 112 /* Host is down */
+#define EHOSTUNREACH 113 /* No route to host */
+#define EALREADY 114 /* Operation already in progress */
+#define EINPROGRESS 115 /* Operation now in progress */
+#define ESTALE 116 /* Stale NFS file handle */
+#define EUCLEAN 117 /* Structure needs cleaning */
+#define ENOTNAM 118 /* Not a XENIX named type file */
+#define ENAVAIL 119 /* No XENIX semaphores available */
+#define EISNAM 120 /* Is a named type file */
+#define EREMOTEIO 121 /* Remote I/O error */
+#define EDQUOT 122 /* Quota exceeded */
+
+#define ENOMEDIUM 123 /* No medium found */
+#define EMEDIUMTYPE 124 /* Wrong medium type */
+#define ECANCELED 125 /* Operation Canceled */
+#define ENOKEY 126 /* Required key not available */
+#define EKEYEXPIRED 127 /* Key has expired */
+#define EKEYREVOKED 128 /* Key has been revoked */
+#define EKEYREJECTED 129 /* Key was rejected by service */
+
+/* for robust mutexes */
+#define EOWNERDEAD 130 /* Owner died */
+#define ENOTRECOVERABLE 131 /* State not recoverable */
+
+#define ERFKILL 132 /* Operation not possible due to RF-kill */
+
+#define EHWPOISON 133 /* Memory page has hardware error */
+
+
+# 1 "/usr/include/x86_64-linux-gnu/asm/errno.h" 2 3
+
+# 4 "/usr/include/linux/errno.h" 2 3
+
+
+
+
+# 25 "/usr/include/x86_64-linux-gnu/bits/errno.h" 2 3
+
+
+/* Linux has no ENOTSUP error code. */
+#define ENOTSUP EOPNOTSUPP
+
+/* Older Linux versions also had no ECANCELED error code. */
+
+
+
+
+/* Support for error codes to support robust mutexes was added later, too. */
+
+
+
+
+
+
+
+
+
+
+/* Function to get address of global `errno' variable. */
+extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__ )) __attribute__ ((__const__));
+
+
+/* When using threads, errno is a per-thread value. */
+#define errno (*__errno_location ())
+
+/* !__ASSEMBLER__ */
+/* _ERRNO_H */
+
+/* !_ERRNO_H && __need_Emath */
+
+
+
+
+
+
+
+# 36 "/usr/include/errno.h" 2 3
+
+#undef __need_Emath
+
+
+
+/* Declare the `errno' variable, unless it's defined as a macro by
+ bits/errno.h. This is the case in GNU, where it is a per-thread
+ variable. This redeclaration using the macro still works, but it
+ will be a function declaration without a prototype and may trigger
+ a -Wstrict-prototypes warning. */
+
+
+
+
+/* __USE_GNU */
+
+
+
+
+
+
+/* _ERRNO_H */
+
+
+
+/* _ERRNO_H */
+
+/* The Hurd <bits/errno.h> defines `error_t' as an enumerated type so
+ that printing `error_t' values in the debugger shows the names. We
+ might need this definition sometimes even if this file was included
+ before. */
+
+
+
+
+
+
+
+# 30 "ulib.h" 2
+
+
+
+/* !def FL_EXPORT */
+# 43 "ulib.h"
+
+
+
+/***************** Portable IO operations *******************{**/
+
+int fli_readint( FILE * );
+int fli_readpint( FILE * );
+int fli_readhexint( FILE * );
+int fli_fget4MSBF( FILE * );
+int fli_fput4MSBF( int,
+ FILE * );
+int fli_fget2LSBF( FILE * );
+int fli_fput2LSBF( int,
+ FILE * );
+int fli_fget2MSBF( FILE * );
+int fli_fput2MSBF( int,
+ FILE * );
+int fli_fget4LSBF( FILE *);
+int fli_fput4LSBF( int,
+ FILE * );
+
+
+/********** End of Portable IO *******************}**/
+
+char * fli_de_space( char * );
+char * fli_space_de( char * );
+char * fli_de_space_de( char * );
+char * fli_nuke_all_non_alnum( char * );
+
+
+/*********************************************************************
+ * Basic error handling routines
+ ********************************************************************/
+
+/* Message levels (verbosity). Error generating routine should
+ * have a (positive) control parameter specifying how loud
+ * to bark (i.e., amount of messages generated) */
+
+#define ML_ERR -1
+#define ML_WARN 0
+#define ML_INFO1 1
+#define ML_INFO2 2
+#define ML_DEBUG 3
+#define ML_TRACE 4
+
+FL_ERROR_FUNC fli_error_setup( int,
+ const char *,
+ int );
+
+extern FL_ERROR_FUNC efp_;
+extern FL_ERROR_FUNC user_error_function_;
+
+
+/* Define the actual names that will be used */
+
+#define M_err \
+ ( efp_ = fli_error_setup( ML_ERR, __FILE__, __LINE__ ) ), efp_
+
+#define M_warn \
+ ( efp_ = fli_error_setup( ML_WARN, __FILE__, __LINE__ ) ), efp_
+
+#define M_info \
+ ( efp_ = fli_error_setup( ML_INFO1, __FILE__, __LINE__ ) ), efp_
+
+#define M_info2 \
+ ( efp_ = fli_error_setup( ML_INFO2, __FILE__, __LINE__ ) ), efp_
+
+#define M_debug \
+ ( efp_ = fli_error_setup( ML_DEBUG, __FILE__, __LINE__ ) ), efp_
+
+#define M_trace \
+ ( efp_ = fli_error_setup( ML_TRACE, __FILE__, __LINE__ ) ), efp_
+
+
+/****** Misc. control routines **********/
+
+void fli_set_msg_threshold( int );
+
+const char *fli_get_syserror_msg( void );
+
+
+/* TC_ULIB_H */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
+# 36 "flinternal.h" 2
+
+
+
+/* macros and constants */
+
+/* FL_DEBUG controls some conditional compilations. Even if the code
+ * is compiled in, it still needs -debug level on the command line
+ * to activate the message output. FL_DEBUG less than ML_ERR probably
+ * is not a good idea. Only when making real production executables
+ * should FL_DEBUG be less than ML_ERR (say ML_ERR-1)
+ *
+ * ML_ERR -- print some error messages
+ * ML_WARN -- print some error messages
+ * ML_INFO1 -- some messages
+ * ML_INFO2 -- more messages
+ * ML_DEBUG -- debugging code compiled in
+ * ML_TRACE -- can be unbearable
+ */
+
+
+#define FL_DEBUG ML_WARN
+
+
+
+/* Mask for all possible events */
+
+#define AllEventsMask ( ( OwnerGrabButtonMask << 1 ) - 1 )
+
+
+/* There are two ways to handle interaction. One is to process object
+ * Q only if there are no more event pending. This can result in
+ * an event entered into object Q more than once if the connection
+ * is slow and clicking is rapid. If subsequently the object is
+ * hidden or deleted/freed, problem occurs as the callback will
+ * still be processed. To fix this, need to flush the object Q
+ * when hiding/deleting objects. Also if an object is entered
+ * multiple times, and its status changed each time, when the
+ * Q is handled, we get wrong status.
+ *
+ * The other way to handle the interaction is to process object
+ * Q as soon as the status of the object is changed. This is
+ * the correct behavior. However, a change in status is typically
+ * preceeded by a redraw (say mouse release on button), and due to
+ * the X buffering mechnism, the redraw probably not get shown yet
+ * when the callback is evoked. To fix this, an explicit flush
+ * is needed. This can be time consuming. Also objects that do
+ * not have callbacks may be handled out of order (after the one's
+ * having callbacks). */
+
+
+#define DELAYED_ACTION
+
+
+
+/* If we want to have gamma correction as a built-in feature.
+ * Probably useless */
+
+#define DO_GAMMA_CORRECTION
+
+
+/* XForms internal colormap */
+
+typedef struct {
+ const char * name;
+ FL_COLOR index;
+ unsigned short r;
+ unsigned short g;
+ unsigned short b;
+ unsigned short a;
+ int grayval;
+} FLI_IMAP;
+
+#define BadPixel FL_NoColor
+
+#define Clamp( v, vmin, vmax ) ( ( v ) < ( vmin ) ? \
+ ( vmin ) : ( ( v ) > ( vmax ) ? \
+ ( vmax ) :( v ) ) )
+
+#define IsValidClass( o, c ) ( ( o ) && ( o )->objclass == ( c ) )
+
+#define fli_safe_free( p ) \
+ do { if ( p ) { \
+ fl_free( p ); \
+ p = NULL; \
+ } \
+ } while( 0 )
+
+#define fli_class( i ) fl_state[ i ].vclass
+#define fli_depth( i ) fl_state[ i ].depth
+#define fli_visual( i ) fl_state[ i ].xvinfo->visual
+#define fli_colormap( i ) fl_state[ i ].colormap
+#define fli_map( i ) fl_state[ i ].colormap
+#define fli_dithered( i ) fl_state[ i ].dithered
+
+enum {
+ FLI_FIND_INPUT,
+ FLI_FIND_AUTOMATIC,
+ FLI_FIND_MOUSE,
+ FLI_FIND_CANVAS,
+ FLI_FIND_KEYSPECIAL,
+ FLI_FIND_RETURN
+};
+
+/* events.c or event related */
+
+void fli_obj_queue_delete( void );
+
+void fli_event_queue_delete( void );
+
+void fli_object_qenter( FL_OBJECT *,
+ int );
+
+void fli_filter_returns( FL_OBJECT * );
+
+FL_OBJECT * fli_object_qread( void );
+
+void fli_object_qflush( FL_FORM * );
+
+void fli_object_qflush_object( FL_OBJECT * );
+
+FL_OBJECT *fli_object_qtest( void );
+
+void fli_treat_user_events( void );
+
+void fli_treat_interaction_events( int );
+
+void fli_compress_event( XEvent *,
+ unsigned long );
+
+const char *fli_event_name( int );
+
+XEvent * fli_xevent_name( const char *,
+ const XEvent * );
+
+void fli_handle_idling( XEvent * xev,
+ long msec,
+ int do_idle_cb );
+
+/* Variables defined in handling.c */
+
+extern FL_FORM * mouseform; /* the current form under mouse */
+extern FL_FORM * keyform; /* keyboard focus form */
+
+extern FL_OBJECT * fli_pushobj;
+extern FL_OBJECT * fli_mouseobj;
+
+extern FL_Coord fli_mousex,
+ fli_mousey;
+extern unsigned int fli_keymask;
+
+extern unsigned int fli_query_age;
+
+
+/* Misc. utilitnes */
+
+FL_FORM * fli_find_event_form( XEvent * );
+
+void fli_print_version( int );
+
+/* from forms.c and object.c */
+
+void fli_scale_form( FL_FORM *,
+ double,
+ double );
+
+void fli_handle_form( FL_FORM *,
+ int, int,
+ XEvent * );
+
+FL_OBJECT *fli_end_group( void );
+
+void fli_handle_object( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord,
+ int,
+ XEvent *,
+ int );
+
+FL_OBJECT * fli_find_first( FL_FORM *,
+ int,
+ FL_Coord,
+ FL_Coord );
+
+void fli_show_object( FL_OBJECT * );
+
+void fli_recalc_intersections( FL_FORM * );
+
+FL_OBJECT * fli_find_last( FL_FORM *,
+ int,
+ FL_Coord,
+ FL_Coord );
+
+FL_OBJECT *fli_find_object( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord );
+
+FL_OBJECT *fli_find_object_backwards( FL_OBJECT *,
+ int,
+ FL_Coord,
+ FL_Coord );
+
+void fli_insert_object( FL_OBJECT *,
+ FL_OBJECT * );
+
+void fli_scale_object( FL_OBJECT *,
+ double ,
+ double );
+
+void fli_set_object_visibility( FL_OBJECT * obj,
+ int vis );
+
+
+int fli_mouse_wheel_to_keypress( int * ev,
+ int * key,
+ void * xev );
+
+void fli_notify_object( FL_OBJECT * obj,
+ int reason );
+
+/* double buffering etc. */
+
+void fli_free_flpixmap( FL_pixmap * );
+
+void fli_create_object_pixmap( FL_OBJECT * );
+
+void fli_show_object_pixmap( FL_OBJECT * );
+
+void fli_create_form_pixmap( FL_FORM * );
+
+void fli_show_form_pixmap( FL_FORM * );
+
+/* windowing support */
+
+void fli_default_xswa( void );
+
+Window fli_cmap_winopen( Window,
+ Colormap,
+ const char * );
+
+Window fli_create_window( Window,
+ Colormap,
+ const char * );
+
+void fli_create_gc( Window );
+
+enum {
+ FLI_COMMAND_PROP = 1,
+ FLI_PROP_SET = ( 1 << 10 ) /* really set */
+};
+
+void fli_set_winproperty( Window,
+ unsigned int );
+
+/* graphics related */
+
+void fli_init_colormap( int );
+
+void fli_free_colormap( int );
+
+void fli_dump_state_info( int,
+ const char * );
+
+void fli_init_stipples( void );
+
+void fli_draw_button( FL_OBJECT * );
+
+/* for fdesign */
+
+const char * fli_query_colorname( FL_COLOR );
+
+long fli_query_namedcolor( const char *s );
+
+void fli_free_xtext_workmem( void );
+
+int fli_get_pos_in_string( int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ int,
+ int,
+ FL_Coord,
+ FL_Coord,
+ const char *,
+ int *,
+ int *,
+ int * );
+
+int fli_drw_stringTAB( Window,
+ GC,
+ int,
+ int,
+ int,
+ int,
+ const char *,
+ int,
+ int );
+
+int fli_drw_string( int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ int,
+ FL_COLOR,
+ FL_COLOR,
+ FL_COLOR,
+ int,
+ int,
+ int,
+ int,
+ int,
+ const char *,
+ int,
+ int,
+ int,
+ FL_COLOR );
+
+int fli_get_maxpixel_line( void );
+
+int fli_get_string_widthTABfs( XFontStruct *,
+ const char *,
+ int );
+
+void fli_init_font( void );
+
+void fli_canonicalize_rect( FL_Coord *,
+ FL_Coord *,
+ FL_Coord *,
+ FL_Coord * );
+
+void fli_get_goodie_title( FL_FORM *,
+ const char * );
+
+void fli_add_q_icon( FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord );
+
+void fli_add_warn_icon( FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord );
+
+void fli_check_key_focus( const char *,
+ Window );
+
+void fli_free_cmdline_args( void );
+
+FL_RECT * fli_get_underline_rect( XFontStruct *,
+ FL_Coord,
+ FL_Coord,
+ const char *,
+ int );
+
+
+/* Group some WM stuff into a structure for easy maintainance */
+
+typedef struct {
+ unsigned int pos_request; /* USPOSITION or PPOSITION */
+} FLI_WM_STUFF;
+
+
+/* Routines in sldraw.c. */
+
+typedef struct {
+ FL_Coord x;
+ FL_Coord y;
+ FL_Coord w;
+ FL_Coord h;
+} FLI_SCROLLBAR_KNOB;
+
+enum {
+ FLI_SLIDER_NONE = 0,
+ FLI_SLIDER_BOX = 1,
+ FLI_SLIDER_KNOB = 2,
+ FLI_SLIDER_ALL = 3
+};
+
+
+void fli_calc_slider_size( FL_OBJECT *,
+ FLI_SCROLLBAR_KNOB * );
+
+void fli_drw_slider( FL_OBJECT *,
+ FL_COLOR,
+ FL_COLOR,
+ const char *,
+ int );
+
+void fli_drw_checkbox( int type,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h,
+ FL_COLOR col,
+ int bw );
+
+void fli_set_global_clipping( FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord );
+
+void fli_unset_global_clipping( void );
+
+void fli_set_additional_clipping( FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord );
+
+FL_RECT * fli_get_global_clip_rect( void );
+
+
+/* Application windows */
+
+typedef struct fli_win_ {
+ struct fli_win_ * next;
+ Window win;
+ FL_APPEVENT_CB pre_emptive; /* always gets called first if set */
+ FL_APPEVENT_CB callback[ 36 ];
+ void * pre_emptive_data;
+ void * user_data[ 36 ];
+ FL_APPEVENT_CB default_callback;
+ unsigned long mask;
+} FLI_WIN;
+
+extern FLI_WIN * fl_app_win;
+
+void fli_set_form_window( FL_FORM * );
+
+void fli_unmap_canvas_window( FL_OBJECT * );
+
+FL_APPEVENT_CB fli_set_preemptive_callback( Window,
+ FL_APPEVENT_CB,
+ void * );
+
+unsigned long fli_xevent_to_mask( int );
+
+int fli_initialize_program_visual( void );
+
+
+#define FLI_TIMER_RES 50 /* resolution of FL_STEP event */
+
+
+/* Currently only one idle procedure is permitted, so the next
+ * field is of no much use */
+
+typedef struct fli_idle_cb_ {
+ FL_APPEVENT_CB callback;
+ void * data;
+} FLI_IDLE_REC;
+
+typedef struct fli_io_event_ {
+ struct fli_io_event_ * next;
+ FL_IO_CALLBACK callback;
+ void * data;
+ unsigned int mask;
+ int source;
+} FLI_IO_REC;
+
+
+/* signals */
+
+
+typedef RETSIGTYPE ( * FLI_OSSIG_HANDLER )( int );
+
+
+typedef struct fli_signallist_ {
+ struct fli_signallist_ * next;
+ FL_SIGNAL_HANDLER callback;
+
+
+
+ FLI_OSSIG_HANDLER ocallback; /* default OS signal handler */
+
+ void * data;
+ int signum;
+ int caught;
+} FLI_SIGNAL_REC;
+
+void fli_remove_all_signal_callbacks( void );
+
+/* timeouts */
+
+typedef struct fli_timeout_ {
+ int id;
+ struct fli_timeout_ * next;
+ struct fli_timeout_ * prev;
+ long start_sec,
+ start_usec;
+ long ms_to_wait;
+ FL_TIMEOUT_CALLBACK callback;
+ void * data;
+} FLI_TIMEOUT_REC;
+
+void fli_remove_all_timeouts( void );
+
+/*
+ * Intenal controls.
+ */
+
+typedef struct fli_context_ {
+ FL_FORM_ATCLOSE atclose; /* what to do if WM_DELETE_WINDOW */
+ void * close_data;
+ FLI_IDLE_REC * idle_rec; /* idle callback record */
+ FLI_IO_REC * io_rec; /* async IO record */
+ FLI_SIGNAL_REC * signal_rec; /* list of app signals */
+ FLI_TIMEOUT_REC * timeout_rec; /* timeout callbacks */
+ int idle_delta; /* timer resolution */
+ int last_event; /* last event received */
+ long mouse_button; /* push/release record */
+ int pup_id; /* current active pup id */
+ FL_FORM * modal; /* current modal form */
+ long max_request_size; /* max protocol size */
+ int num_io;
+ int hscb,
+ vscb; /* default scrollbar */
+ long ext_request_size; /* extended request size */
+ int tooltip_time;
+
+ XIM xim; /* input method */
+ XIC xic; /* input context */
+
+
+
+
+ unsigned int navigate_mask; /* input field */
+ long reserverd[ 6 ];
+} FLI_CONTEXT;
+
+/* Some X info that helps to make the windowing system independent
+ * API work (fl_color() etc. */
+
+typedef struct {
+ Display * display;
+ Window win;
+ GC gc,
+ textgc;
+ GC miscgc;
+ int isRGBColor;
+ int isMBFont; /* multi-byte font */
+ unsigned long bktextcolor;
+ int newpix;
+ int fdesc; /* font descent */
+ int fasc; /* font ascent */
+ int fheight; /* font height */
+ Colormap colormap;
+ XFontStruct * fs;
+ unsigned long color; /* last color. cache */
+ unsigned long textcolor; /* last textcolor. cache */
+ unsigned long bkcolor;
+ int screen;
+} FLI_TARGET;
+
+
+typedef struct {
+ FL_FORM ** forms; /* all forms, visible and hidden */
+ int formnumb; /* number of visible forms */
+ int hidden_formnumb; /* number of hidden forms */
+ size_t auto_count;
+ int unmanaged_count;
+
+ FL_Coord mousex, /* last recorded mouse position */
+ mousey;
+ unsigned int keymask; /* state of buttons and modifier keys */
+ unsigned int query_age; /* age of recorded information */
+
+ FL_FORM * mouseform; /* the current form under the mouse */
+ FL_FORM * keyform; /* keyboard focus form */
+
+ FL_OBJECT * pushobj; /* latest pushed object */
+ FL_OBJECT * mouseobj; /* object under the mouse */
+} FLI_INTERNAL;
+
+extern FLI_INTERNAL fli_int;
+
+
+void fli_init_context( void );
+
+
+#include "extern.h"
+# 1 "extern.h" 1
+/*
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * \file extern.h
+ *
+ * This file is part of the XForms library package.
+ * Copyright (c) 1996-1998 T.C. Zhao and Mark Overmars
+ * All rights reserved.
+ *
+ * All global variables used in forms. Should not be used
+ * by application programs. There is no guarantee that these
+ * variables exist in future version of XForms
+ */
+
+
+#define FL_EXTERN_H_MAKING_FORMS_ONLY
+
+extern Pixmap fli_gray_pattern[ ];
+extern GC fli_bwgc[ ];
+extern GC fli_whitegc;
+extern XKeyboardControl fli_keybdcontrol;
+extern unsigned long fli_keybdmask;
+
+extern FL_OBJECT *fli_current_group;
+
+#define FLI_INACTIVE_PATTERN fli_gray_pattern[ 1 ]
+
+extern Display *fl_display;
+extern Window fl_root,
+ fl_vroot;
+extern int fl_screen;
+
+extern int fl_vmode;
+
+extern int fl_scrh,
+ fl_scrw;
+
+extern float fli_dpi;
+extern FL_IOPT fli_cntl;
+extern int fli_inverted_y;
+
+extern FLI_CONTEXT * fli_context;
+extern FLI_TARGET * flx;
+extern long fli_requested_vid;
+extern int fli_no_connection;
+extern char fli_curfnt[ 127 ];
+extern FLI_WIN *fli_app_win;
+
+extern void fli_drw_tbox( int,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_COLOR,
+ int );
+
+
+/* !def EXTERN.H */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
+# 617 "flinternal.h" 2
+
+
+
+void fli_watch_io( FLI_IO_REC *,
+ long );
+
+int fli_do_shortcut( FL_FORM *,
+ int,
+ FL_Coord,
+ FL_Coord,
+ XEvent * );
+
+int fli_test_lalign( int align,
+ const char * txt );
+
+void fli_get_hv_align( int,
+ int *,
+ int * );
+
+void fli_get_outside_align( int,
+ int,
+ int,
+ int,
+ int,
+ int *,
+ int *,
+ int * );
+
+void fli_init_symbols( void );
+
+void fli_release_symbols( void );
+
+int fli_handle_event_callbacks( XEvent * );
+
+
+/* Some macros to test how an object can be moved or resized, depending on
+ its gravity settings (ULC = uppler left hand cornner, LRC = lower right
+ hand corner) */
+
+#define ULC_POS_LEFT_FIXED( obj ) \
+ ( ( obj )->nwgravity == FL_NorthWest \
+ || ( obj )->nwgravity == FL_West \
+ || ( obj )->nwgravity == FL_SouthWest )
+
+#define ULC_POS_RIGHT_FIXED( obj ) \
+ ( ( obj )->nwgravity == FL_NorthEast \
+ || ( obj )->nwgravity == FL_East \
+ || ( obj )->nwgravity == FL_SouthEast )
+
+#define LRC_POS_LEFT_FIXED( obj ) \
+ ( ( obj )->segravity == FL_NorthWest \
+ || ( obj )->segravity == FL_West \
+ || ( obj )->segravity == FL_SouthWest )
+
+#define LRC_POS_RIGHT_FIXED( obj ) \
+ ( ( obj )->segravity == FL_NorthEast \
+ || ( obj )->segravity == FL_East \
+ || ( obj )->segravity == FL_SouthEast )
+
+#define HAS_FIXED_HORI_ULC_POS( obj ) \
+ ( ULC_POS_LEFT_FIXED( obj ) || ULC_POS_RIGHT_FIXED( obj ) )
+
+#define HAS_FIXED_HORI_LRC_POS( obj ) \
+ ( LRC_POS_LEFT_FIXED( obj ) || LRC_POS_RIGHT_FIXED( obj ) )
+
+#define HAS_FIXED_WIDTH( obj ) \
+ ( HAS_FIXED_HORI_ULC_POS( obj ) && HAS_FIXED_HORI_LRC_POS( obj ) )
+
+
+#define ULC_POS_TOP_FIXED( obj ) \
+ ( ( obj )->nwgravity == FL_NorthWest \
+ || ( obj )->nwgravity == FL_North \
+ || ( obj )->nwgravity == FL_NorthEast )
+
+#define ULC_POS_BOTTOM_FIXED( obj ) \
+ ( ( obj )->nwgravity == FL_SouthWest \
+ || ( obj )->nwgravity == FL_South \
+ || ( obj )->nwgravity == FL_SouthEast )
+
+#define LRC_POS_TOP_FIXED( obj ) \
+ ( ( obj )->segravity == FL_NorthWest \
+ || ( obj )->segravity == FL_North \
+ || ( obj )->segravity == FL_NorthEast )
+
+#define LRC_POS_BOTTOM_FIXED( obj ) \
+ ( ( obj )->segravity == FL_SouthWest \
+ || ( obj )->segravity == FL_South \
+ || ( obj )->segravity == FL_SouthEast )
+
+#define HAS_FIXED_VERT_ULC_POS( obj ) \
+ ( ULC_POS_TOP_FIXED( obj ) || ULC_POS_BOTTOM_FIXED( obj ) )
+
+#define HAS_FIXED_VERT_LRC_POS( obj ) \
+ ( LRC_POS_TOP_FIXED( obj ) || LRC_POS_BOTTOM_FIXED( obj ) )
+
+#define HAS_FIXED_HEIGHT( obj ) \
+ ( HAS_FIXED_VERT_ULC_POS( obj ) && HAS_FIXED_VERT_LRC_POS( obj ) )
+
+
+
+#define XK_PageUp XK_Prior
+#define XK_PageDn XK_Next
+
+#define XK_PageUp XK_Prior
+#define XK_PageDn XK_Next
+
+
+/* some header has XK_XP_Left etc */
+
+
+
+#define IsHome( k ) ( k == XK_Home || k == XK_Begin || k == XK_KP_Home )
+#define IsLeft( k ) ( k == XK_Left || k == XK_KP_Left )
+#define IsRight( k ) ( k == XK_Right || k == XK_KP_Right )
+#define IsUp( k ) ( k == XK_Up || k == XK_KP_Up )
+#define IsDown( k ) ( k == XK_Down || k == XK_KP_Down )
+#define IsEnd( k ) ( k == XK_End || k == XK_KP_End )
+#define IsPageDown( k ) ( k == XK_Next || k == XK_Page_Down || k == XK_KP_Page_Down )
+#define IsPageUp( k ) ( k == XK_Prior || k == XK_Page_Up || k==XK_KP_Page_Up)
+
+# 748 "flinternal.h"
+
+
+#define FLI_HALFPAGE_UP 0x10000000
+#define FLI_HALFPAGE_DOWN 0x20000000
+#define FLI_NLINES_UP 0x30000000
+#define FLI_NLINES_DOWN 0x40000000
+#define FLI_1LINE_UP 0x50000000
+#define FLI_1LINE_DOWN 0x60000000
+#define IsHalfPageUp( k ) ( ( k ) == FLI_HALFPAGE_UP )
+#define IsHalfPageDown( k ) ( ( k ) == FLI_HALFPAGE_DOWN )
+#define IsNLinesUp( k ) ( ( k ) == FLI_NLINES_UP )
+#define IsNLinesDown( k ) ( ( k ) == FLI_NLINES_DOWN )
+#define Is1LineUp( k ) ( ( k ) == FLI_1LINE_UP )
+#define Is1LineDown( k ) ( ( k ) == FLI_1LINE_DOWN )
+
+
+void fli_hide_and_get_region( FL_OBJECT *,
+ Region * );
+
+int fli_convert_shortcut( const char *,
+ long * );
+
+int fli_get_underline_pos( const char *,
+ const char * );
+
+int fli_get_visible_forms_index( FL_FORM * );
+
+void fli_recount_auto_objects( void );
+
+int fli_get_tabpixels( XFontStruct * );
+
+int fli_get_default_scrollbarsize( FL_OBJECT * );
+
+void fli_set_app_name( const char *,
+ const char * );
+
+void fli_hide_composite( FL_OBJECT *,
+ Region * );
+
+void fli_show_composite( FL_OBJECT * );
+
+void fli_deactivate_composite( FL_OBJECT * );
+
+void fli_activate_composite( FL_OBJECT * );
+
+void fli_delete_composite( FL_OBJECT * ob );
+
+void fli_free_composite( FL_OBJECT * ob );
+
+void fli_set_composite_gravity( FL_OBJECT *,
+ unsigned int,
+ unsigned int );
+
+void fli_set_composite_resize( FL_OBJECT *,
+ unsigned int );
+
+void fli_composite_has_been_resized( FL_OBJECT * );
+
+void fli_parse_goodies_label( FL_OBJECT *,
+ const char * );
+
+int fli_goodies_preemptive( FL_FORM *,
+ void * );
+
+void fli_get_goodies_font( int *,
+ int * );
+
+void fli_handle_goodie_font( FL_OBJECT *,
+ FL_OBJECT * );
+
+void fli_goodies_cleanup( void );
+
+void fli_msg_cleanup( void );
+
+void fli_alert_cleanup( void );
+
+void fli_choice_cleanup( void );
+
+void fli_question_cleanup( void );
+
+void fli_input_cleanup( void );
+
+void fli_sinput_cleanup( void );
+
+void fli_handle_timeouts( long * );
+
+#define FL_IS_NONSQRBOX( t ) ( t == FL_SHADOW_BOX \
+ || t == FL_NO_BOX \
+ || t == FL_RFLAT_BOX \
+ || t == FL_ROUNDED_BOX \
+ || t == FL_OVAL_BOX \
+ || t == FL_ROUNDED3D_UPBOX \
+ || t == FL_ROUNDED3D_DOWNBOX )
+
+enum {
+ FLI_TRIANGLE_UPBOX1,
+ FLI_TRIANGLE_UPBOX2,
+ FLI_TRIANGLE_UPBOX3,
+ FLI_TRIANGLE_UPBOX4,
+ FLI_TRIANGLE_UPBOX6,
+ FLI_TRIANGLE_UPBOX7,
+ FLI_TRIANGLE_UPBOX8,
+ FLI_TRIANGLE_UPBOX9,
+ FLI_TRIANGLE_DOWNBOX1,
+ FLI_TRIANGLE_DOWNBOX2,
+ FLI_TRIANGLE_DOWNBOX3,
+ FLI_TRIANGLE_DOWNBOX4,
+ FLI_TRIANGLE_DOWNBOX6,
+ FLI_TRIANGLE_DOWNBOX7,
+ FLI_TRIANGLE_DOWNBOX8,
+ FLI_TRIANGLE_DOWNBOX9
+};
+
+FL_RECT * fli_intersect_rects( const FL_RECT *,
+ const FL_RECT * );
+
+void fli_xyplot_nice_label( float,
+ int,
+ float,
+ char * );
+
+void fli_xyplot_compute_data_bounds( FL_OBJECT *,
+ int *,
+ int *,
+ int );
+
+int fli_xyplot_interpolate( FL_OBJECT *,
+ int,
+ int,
+ int );
+
+void fli_insert_composite_after( FL_OBJECT *,
+ FL_OBJECT * );
+
+void fli_add_composite( FL_OBJECT * );
+
+void fli_insert_composite( FL_OBJECT *,
+ FL_OBJECT * );
+
+int fli_is_watched_io( int );
+
+const char * fli_object_class_name( FL_OBJECT * );
+
+char * fli_read_line( FILE * fp );
+
+char * fli_sstrcpy( char * dest,
+ const char * src,
+ size_t n );
+
+void fli_set_form_icon_data( FL_FORM *,
+ char ** );
+
+char *fli_getcwd( char *,
+ int );
+
+void fli_replacepup_text( int,
+ int,
+ const char * );
+
+int fli_valuator_handle_drag( FL_OBJECT *,
+ double );
+
+int fli_valuator_handle_release( FL_OBJECT *,
+ double );
+
+void *fli_init_valuator( FL_OBJECT * );
+
+double fli_valuator_round_and_clamp( FL_OBJECT *,
+ double );
+
+double fli_clamp( double,
+ double,
+ double );
+
+void fli_inherit_attributes( FL_OBJECT *,
+ FL_OBJECT * );
+
+int fli_boxtype2frametype( int );
+
+void fli_xvisual2flstate( FL_State *,
+ XVisualInfo * );
+
+int fli_find_closest_color( int,
+ int,
+ int,
+ XColor *,
+ int,
+ unsigned long * );
+
+void fli_rgbmask_to_shifts( unsigned long,
+ unsigned int *,
+ unsigned int * );
+
+void fli_show_tooltip( const char *,
+ int,
+ int );
+
+void fli_hide_tooltip( void );
+
+int fli_is_tooltip_form( FL_FORM * );
+
+void fli_do_radio_push( FL_OBJECT *,
+ FL_Coord,
+ FL_Coord,
+ int,
+ void *,
+ int );
+
+long fli_getpid( void );
+
+void fli_xlinestyle( Display *,
+ GC,
+ int );
+
+#define FLI_BROKEN_BOX ( 1 << 10 )
+
+FLI_TARGET * fli_internal_init( void );
+
+void fli_switch_target( FLI_TARGET * );
+
+void fli_restore_target( void );
+
+void fli_draw_text_inside( int align,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ FL_Coord,
+ const char *,
+ int,
+ int,
+ FL_COLOR,
+ FL_COLOR,
+ int );
+
+/* Misc. stuff */
+
+void fli_add_vertex( FL_Coord x,
+ FL_Coord y );
+
+void fli_add_float_vertex( float x,
+ float y );
+
+void fli_reset_vertex( void );
+
+void fli_endpolygon( void );
+
+void fli_endclosedline( void );
+
+void fli_endline( void );
+
+const char * fli_get_xevent_name( const XEvent * );
+
+void fli_set_input_navigate( unsigned int mask );
+
+void fli_adjust_browser_scrollbar( FL_OBJECT * );
+
+FL_POPUP * fli_popup_add( Window,
+ const char *,
+ const char * );
+
+FL_POPUP_ENTRY * fli_popup_add_entries( FL_POPUP *,
+ const char *,
+ va_list,
+ const char *,
+ int );
+
+FL_POPUP_ENTRY * fli_popup_insert_entries( FL_POPUP *,
+ FL_POPUP_ENTRY *,
+ const char *,
+ va_list,
+ const char *,
+ int );
+
+FL_POPUP_ENTRY * fli_popup_insert_items( FL_POPUP *,
+ FL_POPUP_ENTRY *,
+ FL_POPUP_ITEM *,
+ const char * );
+
+void fli_popup_init( void );
+
+void fli_popup_finish( void );
+
+int fli_check_popup_exists( FL_POPUP * );
+
+int fli_check_popup_entry_exists( FL_POPUP_ENTRY * );
+
+FL_POPUP_RETURN * fli_set_popup_return( FL_POPUP_ENTRY * );
+
+void fli_popup_reset_counter( FL_POPUP * );
+
+void fli_free_cursors( void );
+
+void fli_free_fselectors( void );
+
+
+/* Some utility stuff */
+
+typedef struct {
+ int val;
+ const char * name;
+} FLI_VN_PAIR;
+
+int fli_get_vn_value( FLI_VN_PAIR * vn_pair,
+ const char * name );
+
+const char * fli_get_vn_name( FLI_VN_PAIR * vn_pair,
+ int val );
+
+
+
+#define IsTab( ksym ) ( ksym == XK_ISO_Left_Tab || ksym== XK_Tab )
+
+
+
+
+
+
+
+void fli_set_tab_color( FL_OBJECT * obj,
+ FL_COLOR col1,
+ FL_COLOR col2 );
+
+void fli_set_tab_lcolor( FL_OBJECT * obj,
+ FL_COLOR lcol );
+
+void fli_set_tab_lsize( FL_OBJECT * obj,
+ int lsize );
+
+void fli_set_tab_lstyle( FL_OBJECT * obj,
+ int lstyle );
+
+void fli_set_tab_lalign( FL_OBJECT * obj,
+ int align );
+
+void fli_set_tab_bw( FL_OBJECT * obj,
+ int bw );
+void fli_textcolor( FL_COLOR col );
+
+void fli_bk_textcolor( FL_COLOR col );
+
+char * fli_fix_dirname( char * dir );
+
+Cursor fli_get_cursor_byname( int name );
+
+void fli_hide_canvas( FL_OBJECT * ob );
+
+const char * fli_vclass_name( int n );
+
+int fli_vclass_val( const char * v );
+
+void fli_set_ul_property( int prop,
+ int thickness );
+
+int fli_is_valid_dir( const char * name );
+
+
+/* ! defined FL_INTERNAL_H */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
+# 35 "forms.c" 2
+
+#include "private/flvasprintf.h"
+# 1 "private/flvasprintf.h" 1
+/*
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+
+#define FLVASPRINTF_H
+
+
+
+
+
+#include <stdio.h>
+#include <stdarg.h>
+#include "flsnprintf.h"
+# 1 "private/flsnprintf.h" 1
+/*
+ * This file is part of the XForms library package.
+ *
+ * XForms is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1, or
+ * (at your option) any later version.
+ *
+ * XForms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XForms. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+/**
+ * \file flsnprintf.h
+ */
+
+
+#define FL_SNPRINTF_H
+
+#include <stdio.h>
+
+# 47 "private/flsnprintf.h"
+
+
+int fli_portable_snprintf( char *,
+ size_t,
+ const char *,
+ ... );
+
+int fli_portable_vsnprintf( char *,
+ size_t,
+ const char *,
+ va_list );
+
+#define fli_snprintf fli_portable_snprintf
+#define fli_vsnprintf fli_portable_vsnprintf
+
+/* HAVE_SNPRINTF */
+
+/* NOT FL_SNPRINTF_H */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
+# 28 "private/flvasprintf.h" 2
+
+
+
+
+
+
+
+
+
+/* Macro for allocating a buffer and filling it with a string
+ * constructed from a format string and an unspecified number
+ * of arguments. It expects a char pointer first (which will
+ * be set to the address of the memory allocated for the resulting
+ * string) and a (const) char pointer with a printf-like format
+ * string (if the pointer to the format string is NULL memory is
+ * obtained for the empty string). Of course, the function from
+ * which the macro is invoked from must be a variadic function,
+ * called with the appropriate number of types of arguments for
+ * the format string.
+ *
+ * On success the first argument will be set to a buffer long
+ * enough and containing the intended string. If there wasn't
+ * enough memory available an attempted is make to at least
+ * allocate memory for the empty string. If even this fails
+ * the first macro argument is set to NULL.
+ *
+ * Of course it's the responsibility of whatever invoked
+ * this macro to release the memory allocated here at the
+ * appropriate time.
+ *
+ * The best function to use here would be vasprintf(), which
+ * exactly does what we need. Older systems may not have it -
+ * in this case 'HAVE_VASPRINTF isn't defined. Unfortunately,
+ * we can't use the implementation from the flsnprintf.c file
+ * since it doesn't get compiled in the way this file is made
+ * up (and for good reasonsm the way the necessary va_copy()
+ * function gets defined is broken in more than one way). But
+ * we can use fli_vsnprintf() from that file, though with some
+ * difficulties.
+ *
+ * For such systems we need a way to not "use up" the va_list
+ * by initializing it and then passing it to some function
+ * (that's actually the rationale for using a macro here
+ * instead of a function!), so we must do the memory allo-
+ * cation here (if necessary repeatedly) and only call
+ * fli_vsnprintf().
+ *
+ * So the whole existence of this macro is due to backward
+ * compatibility with old (pre C99) compilers that may have
+ * a uncommon way of defining a va_list. Messy, isnt' it?
+ *
+ * BTW, all locally used variables have names starting with 'l1I_'
+ * since this is a prefix no sane person would ever use - we try to
+ * avoid compiler warnings about local variables shadowing already
+ * defined ones.
+ */
+
+# 110 "private/flvasprintf.h"
+
+
+#define EXPAND_FORMAT_STRING( buf, fmt ) \
+do { \
+ if ( ! fmt || ! *fmt ) \
+ buf = NULL; \
+ else if ( ! strchr( fmt, '%' ) ) \
+ { \
+ if ( ( buf = fl_malloc( strlen( fmt ) + 1 ) ) ) \
+ strcpy( buf, fmt ); \
+ } \
+ else \
+ { \
+ int l1I_min_needed = strlen( fmt ) + 1; \
+ int l1I_len = l1I_min_needed; \
+ char *l1I_p; \
+ \
+ for ( l1I_p = strchr( fmt, '%' ); l1I_p; \
+ l1I_p = strchr( ++l1I_p, '%' ) ) \
+ l1I_len += 16; \
+ \
+ if ( ( buf = fl_malloc( l1I_len ) ) ) \
+ { \
+ while ( 1 ) \
+ { \
+ va_list l1I_ap; \
+ int l1I_written; \
+ \
+ va_start( l1I_ap, fmt ); \
+ l1I_written = fli_vsnprintf( buf, l1I_len, fmt, l1I_ap ); \
+ va_end( l1I_ap ); \
+ \
+ /* Take care: older libc versions returned a negative \
+ value if the buffer wasn't large enough space while \
+ newer ones follow C99 and return the length of the \
+ string needed (without the trailing '0円') */ \
+ \
+ if ( l1I_written > -1 && l1I_len > l1I_written ) \
+ { \
+ if ( l1I_len != l1I_written + 1 ) \
+ { \
+ l1I_p = buf; \
+ if ( ! ( buf = fl_realloc( l1I_p, \
+ l1I_written + 1 ) ) ) \
+ buf = l1I_p; \
+ } \
+ break; \
+ } \
+ \
+ l1I_len = l1I_written < 0 ? \
+ ( 2 * l1I_len ) : ( l1I_written + 16 ); \
+ l1I_p = buf; \
+ if ( ! ( buf = fl_realloc( l1I_p, l1I_len ) ) ) \
+ { \
+ fl_free( l1I_p ); \
+ break; \
+ } \
+ } \
+ } \
+ } \
+ \
+ if ( ! buf && ( buf = fl_malloc( 1 ) ) ) \
+ *buf = '0円'; \
+} while ( 0 )
+
+
+
+
+
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
+# 36 "forms.c" 2
+
+
+
+#define PointToPixel( a ) FL_crnd( ( a ) * fli_dpi / 72.0 )
+#define MMToPixel( a ) FL_crnd( ( a ) * fli_dpi / 25.4 )
+#define CMMToPixel( a ) FL_crnd( ( a ) * fli_dpi / 2540.0 )
+#define CPointToPixel( a ) FL_crnd( ( a ) * fli_dpi / 7200.0 )
+
+static FL_FORM * create_new_form( FL_Coord,
+ FL_Coord );
+static void force_visible( FL_FORM * );
+static void set_form_property( FL_FORM *,
+ unsigned int );
+static void get_decoration_sizes_from_wm( Atom ,
+ FL_FORM *,
+ int *,
+ int *,
+ int *,
+ int * );
+static void get_decorations_sizes_from_parent( FL_FORM *,
+ int *,
+ int *,
+ int *,
+ int * );
+
+
+static FL_FORM * fli_mainform;
+static int nomainform;
+static int reopened_group = 0;
+
+FL_FORM * fli_fast_free_object = ((void *)0) ; /* exported to objects.c */
+
+static int has_initial;
+
+
+/***************************************
+ * Returns the index of a form in the list of visible forms
+ * (or -1 if the form isn't in this list)
+ ***************************************/
+
+int
+fli_get_visible_forms_index( FL_FORM * form )
+{
+ int i;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ if ( fli_int.forms[ i ] == form )
+ return i;
+
+ return -1;
+}
+
+
+/***************************************
+ * Returns the index of a form in the list of hidden forms
+ * (or -1 if the form isn't in this list)
+ ***************************************/
+
+static int
+get_hidden_forms_index( FL_FORM * form )
+{
+ int i;
+
+ for ( i = fli_int.formnumb;
+ i < fli_int.formnumb + fli_int.hidden_formnumb; i++ )
+ if ( fli_int.forms[ i ] == form )
+ return i;
+
+ return -1;
+}
+
+
+/***************************************
+ * Extend the list of forms by one element and appends the
+ * new forms address (listing it as invisible)
+ ***************************************/
+
+static void
+add_form_to_hidden_list( FL_FORM * form )
+{
+ fli_int.forms = realloc( fli_int.forms,
+ ( fli_int.formnumb + fli_int.hidden_formnumb + 1 )
+ * sizeof *fli_int.forms );
+ fli_int.forms[ fli_int.formnumb + fli_int.hidden_formnumb++ ] = form;
+}
+
+
+/***************************************
+ * Moves a form from the list of hidden to the list of visible forms
+ ***************************************/
+
+static int
+move_form_to_visible_list( FL_FORM * form )
+{
+ int i;
+
+ /* Find the index of the hidden form */
+
+ if ( fli_int.hidden_formnumb == 0
+ || ( i = get_hidden_forms_index( form ) ) < 0 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 137 ) ), efp_ ( "move_form_to_visble_list", "Form not in hidden list" );
+ return -1;
+ }
+
+ /* If it's not at the very start of the hidden list exchange it
+ with the one at the start */
+
+ if ( i != fli_int.formnumb )
+ {
+ fli_int.forms[ i ] = fli_int.forms[ fli_int.formnumb ];
+ fli_int.forms[ fli_int.formnumb ] = form;
+ }
+
+ fli_int.hidden_formnumb--;
+
+ if ( form->num_auto_objects > 0 )
+ fli_int.auto_count++;
+
+ return ++fli_int.formnumb;
+}
+
+
+/***************************************
+ * Moves a form from the list of visible to the list of hidden forms
+ ***************************************/
+
+static int
+move_form_to_hidden_list( FL_FORM * form )
+{
+ int i;
+
+ /* Find the index of the form to be moved to the hidden list */
+
+ if ( fli_int.formnumb == 0
+ || ( i = fli_get_visible_forms_index( form ) ) < 0 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 173 ) ), efp_ ( "move_form_to_hidden_list", "Form not in visible list" );
+ return -1;
+ }
+
+ /* Unless the form is the last in the visible list exchange it with
+ the form at the end of the visible list */
+
+ if ( i != --fli_int.formnumb )
+ {
+ fli_int.forms[ i ] = fli_int.forms[ fli_int.formnumb ];
+ fli_int.forms[ fli_int.formnumb ] = form;
+ }
+
+ fli_int.hidden_formnumb++;
+
+ if ( form->num_auto_objects > 0 )
+ {
+ if ( fli_int.auto_count == 0 )
+ ( efp_ = fli_error_setup( -1 , "forms.c", 191 ) ), efp_ ( "move_form_to_hidden_list", "Bad auto count" );
+ else
+ fli_int.auto_count--;
+ }
+
+ return fli_int.formnumb;
+}
+
+
+/***************************************
+ * Removes a form from the list of hidden forms,
+ * shortening the list in the process
+ ***************************************/
+
+int
+remove_form_from_hidden_list( FL_FORM * form )
+{
+ int i;
+
+ /* Find the index of the form to be removed completely from the
+ hidden list */
+
+ if ( fli_int.hidden_formnumb == 0
+ || ( i = get_hidden_forms_index( form ) ) < 0 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 216 ) ), efp_ ( "remove_form_from_hidden_list", "Form not in hidden list" );
+ return -1;
+ }
+
+ /* If it's not the form at the end of the hidden list exchange it with
+ the one at the end */
+
+ if ( i != fli_int.formnumb + --fli_int.hidden_formnumb )
+ fli_int.forms[ i ] =
+ fli_int.forms[ fli_int.formnumb + fli_int.hidden_formnumb ];
+
+ /* Shorten the list of visible and hidden forms by one element */
+
+ fli_int.forms = fl_realloc( fli_int.forms,
+ ( fli_int.formnumb + fli_int.hidden_formnumb )
+ * sizeof *fli_int.forms );
+
+ return fli_int.formnumb;
+}
+
+
+/***************************************
+ * Returns the (visible) form that's shown in 'win'
+ ***************************************/
+
+FL_FORM *
+fl_win_to_form( Window win )
+{
+ int i;
+
+ if ( win == 0L )
+ return ((void *)0) ;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ if ( fli_int.forms[ i ]->window == win )
+ return fli_int.forms[ i ];
+
+ return ((void *)0) ;
+}
+
+
+/***************************************
+ * Creates a new, empty form
+ ***************************************/
+
+static FL_FORM *
+create_new_form( FL_Coord w,
+ FL_Coord h )
+{
+ FL_FORM *form;
+
+ form = fl_calloc( 1, sizeof *form );
+
+ /* Convert non-pixel unit into pixles */
+
+ switch ( fli_cntl.coordUnit )
+ {
+ case FL_COORD_PIXEL :
+ break;
+
+ case FL_COORD_MM :
+ w = ( ( FL_Coord ) ( ( ( w ) * fli_dpi / 25.4 ) > 0 ? ( ( ( w ) * fli_dpi / 25.4 ) + 0.5 ) : ( ( ( w ) * fli_dpi / 25.4 ) - 0.5 ) ) ) ;
+ h = ( ( FL_Coord ) ( ( ( h ) * fli_dpi / 25.4 ) > 0 ? ( ( ( h ) * fli_dpi / 25.4 ) + 0.5 ) : ( ( ( h ) * fli_dpi / 25.4 ) - 0.5 ) ) ) ;
+ break;
+
+ case FL_COORD_POINT :
+ w = ( ( FL_Coord ) ( ( ( w ) * fli_dpi / 72.0 ) > 0 ? ( ( ( w ) * fli_dpi / 72.0 ) + 0.5 ) : ( ( ( w ) * fli_dpi / 72.0 ) - 0.5 ) ) ) ;
+ h = ( ( FL_Coord ) ( ( ( h ) * fli_dpi / 72.0 ) > 0 ? ( ( ( h ) * fli_dpi / 72.0 ) + 0.5 ) : ( ( ( h ) * fli_dpi / 72.0 ) - 0.5 ) ) ) ;
+ break;
+
+ case FL_COORD_centiPOINT :
+ w = ( ( FL_Coord ) ( ( ( w ) * fli_dpi / 7200.0 ) > 0 ? ( ( ( w ) * fli_dpi / 7200.0 ) + 0.5 ) : ( ( ( w ) * fli_dpi / 7200.0 ) - 0.5 ) ) ) ;
+ h = ( ( FL_Coord ) ( ( ( h ) * fli_dpi / 7200.0 ) > 0 ? ( ( ( h ) * fli_dpi / 7200.0 ) + 0.5 ) : ( ( ( h ) * fli_dpi / 7200.0 ) - 0.5 ) ) ) ;
+ break;
+
+ case FL_COORD_centiMM :
+ w = ( ( FL_Coord ) ( ( ( w ) * fli_dpi / 2540.0 ) > 0 ? ( ( ( w ) * fli_dpi / 2540.0 ) + 0.5 ) : ( ( ( w ) * fli_dpi / 2540.0 ) - 0.5 ) ) ) ;
+ h = ( ( FL_Coord ) ( ( ( h ) * fli_dpi / 2540.0 ) > 0 ? ( ( ( h ) * fli_dpi / 2540.0 ) + 0.5 ) : ( ( ( h ) * fli_dpi / 2540.0 ) - 0.5 ) ) ) ;
+ break;
+
+ default :
+ ( efp_ = fli_error_setup( -1 , "forms.c", 297 ) ), efp_ ( "create_new_form", "Unknown unit: %d, using pixel",
+ fli_cntl.coordUnit );
+ fli_cntl.coordUnit = FL_COORD_PIXEL;
+ }
+
+ /* Initialize pointers and non-zero defaults */
+
+ form->w_hr = form->w = w;
+ form->h_hr = form->h = h;
+
+ form->handle_dec_x = 0;
+ form->handle_dec_y = 0;
+
+ form->num_auto_objects = 0;
+ form->deactivated = 1;
+ form->form_callback = ((void *)0) ;
+ form->compress_mask = (1L<<15) | (1L<<13)
+ | (1L<<6) ;
+ form->key_callback = ((void *)0) ;
+ form->push_callback = ((void *)0) ;
+ form->crossing_callback = ((void *)0) ;
+ form->focusobj = ((void *)0) ;
+ form->first = ((void *)0) ;
+ form->last = ((void *)0) ;
+ form->hotx = form->hoty = -1;
+ form->use_pixmap = fli_cntl.doubleBuffer;
+ form->label = ((void *)0) ;
+ form->flpixmap = ((void *)0) ;
+ form->u_vdata = ((void *)0) ;
+ form->close_callback = ((void *)0) ;
+ form->close_data = ((void *)0) ;
+ form->icon_pixmap = form->icon_mask = 0L ;
+ form->in_redraw = 0;
+ form->needs_full_redraw = 1;
+
+ return form;
+}
+
+
+/***************************************
+ * Starts a form definition
+ ***************************************/
+
+FL_FORM *
+fl_bgn_form( int type,
+ FL_Coord w,
+ FL_Coord h )
+{
+ if ( ! fli_no_connection && ! flx->display )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 347 ) ), efp_ ( "fl_bgn_form", "Missing or failed call of fl_initialize()" );
+ exit( 1 );
+ }
+
+ /* Check that we're not already in a form definition - the error is
+ a serious one and can't be fixed easily as it might be due to a
+ bad recursion */
+
+ if ( fl_current_form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 357 ) ), efp_ ( "fl_bgn_form", "You forgot to call fl_end_form" );
+ exit( 1 );
+ }
+
+ /* Create a new form */
+
+ fl_current_form = create_new_form( w, h );
+
+ /* Add it to the list of still hidden forms */
+
+ add_form_to_hidden_list( fl_current_form );
+
+ /* Each form has an empty box, covering the whole form as its first
+ object */
+
+ fl_add_box( type, 0, 0, w, h, "" );
+
+ return fl_current_form;
+}
+
+
+/***************************************
+ * Ends a form definition
+ ***************************************/
+
+void
+fl_end_form( void )
+{
+ FL_FORM * f = fl_current_form;
+
+ if ( ! fl_current_form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 389 ) ), efp_ ( "fl_end_form", "No current form" );
+ return;
+ }
+
+ if ( fli_current_group )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 395 ) ), efp_ ( "fl_end_form", "You forgot to call fl_end_group." );
+ fl_end_group( );
+ }
+
+ fl_current_form = ((void *)0) ;
+
+ /* Now is the proper time for calculating the overlaps of objects */
+
+ fli_recalc_intersections( f );
+
+ if ( f->visible && ! f->frozen )
+ fl_redraw_form( f );
+}
+
+
+/***************************************
+ * Reopens a form for adding further objects
+ ***************************************/
+
+FL_FORM *
+fl_addto_form( FL_FORM * form )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 419 ) ), efp_ ( "fl_addto_form", "NULL form" );
+ return ((void *)0) ;
+ }
+
+ /* We can't open a form for adding objects when another form has already
+ been opened for the same purpose */
+
+ if ( fl_current_form && fl_current_form != form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 428 ) ), efp_ ( "fl_addto_form", "You forgot to call fl_end_form" );
+ return ((void *)0) ;
+ }
+
+ if ( fl_current_form )
+ ( efp_ = fli_error_setup( 0 , "forms.c", 433 ) ), efp_ ( "fl_addto_form", "Form was never closed." );
+
+ return fl_current_form = form;
+}
+
+
+/***************************************
+ * Starts a group definition by adding an object of type FL_BEGIN_GROUP
+ ***************************************/
+
+FL_OBJECT *
+fl_bgn_group( void )
+{
+ static int id = 1;
+
+ if ( ! fl_current_form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 450 ) ), efp_ ( "fl_bgn_group", "NULL form" );
+ return ((void *)0) ;
+ }
+
+ if ( fli_current_group )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 456 ) ), efp_ ( "fl_bgn_group", "You forgot to call fl_end_group." );
+ fl_end_group( );
+ }
+
+ fli_current_group = fl_make_object( 10000 , 0, 0, 10, 10, 0,
+ "", ((void *)0) );
+ fli_current_group->group_id = id++;
+
+ /* Temporarily set the object class to something invalid since
+ fl_add_object() will not add objects of class FL_BEGIN_GROUP */
+
+ fli_current_group->objclass = FL_INVALID_CLASS;
+ fl_add_object( fl_current_form, fli_current_group );
+ fli_current_group->objclass = 10000 ;
+
+ return fli_current_group;
+}
+
+
+/***************************************
+ * Ends a group definition by adding an object of type FL_END_GROUP
+ ***************************************/
+
+FL_OBJECT *
+fli_end_group( void )
+{
+ FL_OBJECT *obj;
+ int id;
+
+ if ( ! fl_current_form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 487 ) ), efp_ ( "fl_end_group", "NULL form" );
+ return ((void *)0) ;
+ }
+
+ if ( ! fli_current_group )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 493 ) ), efp_ ( "fl_end_group", "NULL group." );
+ return ((void *)0) ;
+ }
+
+ obj = fli_current_group;
+ id = obj->group_id;
+ fli_current_group = ((void *)0) ;
+
+ if ( ! reopened_group )
+ {
+ obj = fl_make_object( 20000 , 0, 0, 0, 0, 0, "", ((void *)0) );
+ obj->group_id = id;
+
+ /* Temporarily set the object class to something invalid since
+ fl_add_object() will not add objects of class FL_END_GROUP */
+
+ obj->objclass = FL_INVALID_CLASS;
+ fl_add_object( fl_current_form, obj );
+ obj->objclass = 20000 ;
+ }
+
+ if ( reopened_group == 2 )
+ fl_end_form( );
+
+ reopened_group = 0;
+
+ return obj;
+}
+
+
+/***************************************
+ * Necessary since the public interface function for ending a group
+ * doesn't have a return value
+ ***************************************/
+
+void
+fl_end_group( void )
+{
+ fli_end_group( );
+}
+
+
+/***************************************
+ * "Freezes" all (shown) forms
+ ***************************************/
+
+void
+fl_freeze_all_forms( void )
+{
+ int i;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ fl_freeze_form( fli_int.forms[ i ] );
+}
+
+
+/***************************************
+ * "Unfreezes" all (shown) forms
+ ***************************************/
+
+void
+fl_unfreeze_all_forms( void )
+{
+ int i;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ fl_unfreeze_form( fli_int.forms[ i ] );
+}
+
+
+/***************************************
+ * Corrects the shape of the form based on the shape of its window
+ ***************************************/
+
+static void
+reshape_form( FL_FORM * form )
+{
+ FL_Coord w,
+ h,
+ dummy;
+ int top,
+ right,
+ bottom,
+ left;
+
+ if ( ( ! form->handle_dec_x && ! form->handle_dec_y )
+ || form->wm_border == FL_NOBORDER )
+ {
+ fl_get_wingeometry( form->window, &form->x, &form->y, &w, &h );
+ fl_set_form_size( form, w, h );
+ return;
+ }
+
+ fl_get_decoration_sizes( form, &top, &right, &bottom, &left );
+
+ if ( form->handle_dec_x && ! form->handle_dec_y )
+ {
+ fl_get_wingeometry( form->window, &dummy, &form->y, &w, &h );
+ form->x -= left;
+ }
+ else if ( ! form->handle_dec_x && form->handle_dec_y )
+ {
+ fl_get_wingeometry( form->window, &form->x, &dummy, &w, &h );
+ form->y -= bottom;
+ }
+ else
+ {
+ fl_get_wingeometry( form->window, &dummy, &dummy, &w, &h );
+ form->x -= left;
+ form->y -= bottom;
+ }
+
+ XMoveWindow( flx->display, form->window, form->x, form->y );
+ fl_set_form_size( form, w, h );
+}
+
+
+/***************************************
+ * Scale a form with the given scaling factors and take care of object
+ * gravity. This one differs from fl_scale_form() in that we don't
+ * reshape the window in any way. Most useful as a follow up to a
+ * ConfigureNotify event
+ ***************************************/
+
+void
+fli_scale_form( FL_FORM * form,
+ double xsc,
+ double ysc )
+{
+ FL_OBJECT *obj;
+ double neww = form->w_hr * xsc,
+ newh = form->h_hr * ysc;
+
+ if ( ( ( neww - form->w ) > 0 ? ( neww - form->w ) : ( - ( neww - form->w ) ) ) < 1 && ( ( newh - form->h ) > 0 ? ( newh - form->h ) : ( - ( newh - form->h ) ) ) < 1 )
+ return;
+
+ form->w_hr = neww;
+ form->h_hr = newh;
+
+ form->w = ( ( FL_Coord ) ( ( neww ) > 0 ? ( ( neww ) + 0.5 ) : ( ( neww ) - 0.5 ) ) ) ;
+ form->h = ( ( FL_Coord ) ( ( newh ) > 0 ? ( ( newh ) + 0.5 ) : ( ( newh ) - 0.5 ) ) ) ;
+
+ if ( form->hotx >= 0 || form->hoty >= 0 )
+ {
+ form->hotx = form->hotx * xsc;
+ form->hoty = form->hoty * ysc;
+ }
+
+ /* Need to handle different resizing request */
+
+ for ( obj = form->first; obj; obj = obj->next )
+ {
+ double oldw = obj->fl2 - obj->fl1;
+ double oldh = obj->ft2 - obj->ft1;
+
+ /* Special case to keep the center of gravity of objects that have
+ no gravity set and aren't to be resized */
+
+ if ( obj->resize == FL_RESIZE_NONE
+ && obj->segravity == FL_NoGravity
+ && obj->nwgravity == FL_NoGravity )
+ {
+ obj->fl1 += ( xsc - 1 ) * ( obj->fl1 + 0.5 * oldw );
+ obj->ft1 += ( ysc - 1 ) * ( obj->ft1 + 0.5 * oldh );
+ obj->fr1 = neww - obj->fl1;
+ obj->fb1 = newh - obj->ft1;
+
+ obj->fl2 = obj->fl1 + oldw;
+ obj->ft2 = obj->ft1 + oldh;
+ obj->fr2 = neww - obj->fl2;
+ obj->fb2 = newh - obj->ft2;
+ }
+ else
+ {
+ /* In all other cases we recalculate the position of the upper left
+ hand and the lower right hand corner of the object relative to
+ all the borders of the form enclosing it, taking gravity and
+ resizing setting into account. The results sometimes can be
+ unexpected but hopefully are logically correct;-) */
+
+ if ( ( ( obj )->nwgravity == FL_NorthWest || ( obj )->nwgravity == FL_West || ( obj )->nwgravity == FL_SouthWest ) )
+ obj->fr1 = neww - obj->fl1;
+ else if ( ( ( obj )->nwgravity == FL_NorthEast || ( obj )->nwgravity == FL_East || ( obj )->nwgravity == FL_SouthEast ) )
+ obj->fl1 = neww - obj->fr1;
+
+ if ( ( ( obj )->segravity == FL_NorthWest || ( obj )->segravity == FL_West || ( obj )->segravity == FL_SouthWest ) )
+ obj->fr2 = neww - obj->fl2;
+ else if ( ( ( obj )->segravity == FL_NorthEast || ( obj )->segravity == FL_East || ( obj )->segravity == FL_SouthEast ) )
+ obj->fl2 = neww - obj->fr2;
+
+ if ( ! ( ( ( obj )->nwgravity == FL_NorthWest || ( obj )->nwgravity == FL_West || ( obj )->nwgravity == FL_SouthWest ) || ( ( obj )->nwgravity == FL_NorthEast || ( obj )->nwgravity == FL_East || ( obj )->nwgravity == FL_SouthEast ) ) )
+ {
+ if ( ( ( ( obj )->segravity == FL_NorthWest || ( obj )->segravity == FL_West || ( obj )->segravity == FL_SouthWest ) || ( ( obj )->segravity == FL_NorthEast || ( obj )->segravity == FL_East || ( obj )->segravity == FL_SouthEast ) ) )
+ {
+ if ( obj->resize & FL_RESIZE_X )
+ obj->fl1 = obj->fl2 - xsc * oldw;
+ else
+ obj->fl1 = obj->fl2 - oldw;
+ }
+ else
+ obj->fl1 *= xsc;
+
+ obj->fr1 = neww - obj->fl1;
+ }
+
+ if ( ! ( ( ( obj )->segravity == FL_NorthWest || ( obj )->segravity == FL_West || ( obj )->segravity == FL_SouthWest ) || ( ( obj )->segravity == FL_NorthEast || ( obj )->segravity == FL_East || ( obj )->segravity == FL_SouthEast ) ) )
+ {
+ if ( obj->resize & FL_RESIZE_X )
+ obj->fl2 = obj->fl1 + xsc * oldw;
+ else
+ obj->fl2 = obj->fl1 + oldw;
+
+ obj->fr2 = neww - obj->fl2;
+ }
+
+ if ( ( ( obj )->nwgravity == FL_NorthWest || ( obj )->nwgravity == FL_North || ( obj )->nwgravity == FL_NorthEast ) )
+ obj->fb1 = newh - obj->ft1;
+ else if ( ( ( obj )->nwgravity == FL_SouthWest || ( obj )->nwgravity == FL_South || ( obj )->nwgravity == FL_SouthEast ) )
+ obj->ft1 = newh - obj->fb1;
+
+ if ( ( ( obj )->segravity == FL_NorthWest || ( obj )->segravity == FL_North || ( obj )->segravity == FL_NorthEast ) )
+ obj->fb2 = newh - obj->ft2;
+ else if ( ( ( obj )->segravity == FL_SouthWest || ( obj )->segravity == FL_South || ( obj )->segravity == FL_SouthEast ) )
+ obj->ft2 = newh - obj->fb2;
+
+ if ( ! ( ( ( obj )->nwgravity == FL_NorthWest || ( obj )->nwgravity == FL_North || ( obj )->nwgravity == FL_NorthEast ) || ( ( obj )->nwgravity == FL_SouthWest || ( obj )->nwgravity == FL_South || ( obj )->nwgravity == FL_SouthEast ) ) )
+ {
+ if ( ( ( ( obj )->segravity == FL_NorthWest || ( obj )->segravity == FL_North || ( obj )->segravity == FL_NorthEast ) || ( ( obj )->segravity == FL_SouthWest || ( obj )->segravity == FL_South || ( obj )->segravity == FL_SouthEast ) ) )
+ {
+ if ( obj->resize & FL_RESIZE_Y )
+ obj->ft1 = obj->ft2 - ysc * oldh;
+ else
+ obj->ft1 = obj->ft2 - oldh;
+ }
+ else
+ obj->ft1 *= ysc;
+
+ obj->fb1 = newh - obj->ft1;
+ }
+
+ if ( ! ( ( ( obj )->segravity == FL_NorthWest || ( obj )->segravity == FL_North || ( obj )->segravity == FL_NorthEast ) || ( ( obj )->segravity == FL_SouthWest || ( obj )->segravity == FL_South || ( obj )->segravity == FL_SouthEast ) ) )
+ {
+ if ( obj->resize & FL_RESIZE_Y )
+ obj->ft2 = obj->ft1 + ysc * oldh;
+ else
+ obj->ft2 = obj->ft1 + oldh;
+
+ obj->fb2 = newh - obj->ft2;
+ }
+ }
+
+ obj->x = ( ( FL_Coord ) ( ( obj->fl1 ) > 0 ? ( ( obj->fl1 ) + 0.5 ) : ( ( obj->fl1 ) - 0.5 ) ) ) ;
+ obj->y = ( ( FL_Coord ) ( ( obj->ft1 ) > 0 ? ( ( obj->ft1 ) + 0.5 ) : ( ( obj->ft1 ) - 0.5 ) ) ) ;
+ obj->w = ( ( FL_Coord ) ( ( obj->fl2 - obj->fl1 ) > 0 ? ( ( obj->fl2 - obj->fl1 ) + 0.5 ) : ( ( obj->fl2 - obj->fl1 ) - 0.5 ) ) ) ;
+ obj->h = ( ( FL_Coord ) ( ( obj->ft2 - obj->ft1 ) > 0 ? ( ( obj->ft2 - obj->ft1 ) + 0.5 ) : ( ( obj->ft2 - obj->ft1 ) - 0.5 ) ) ) ;
+ }
+
+ /* Only notify objects now - parent objects might have to adjust
+ sizes and positions of child objects and when objects get the
+ resize notice immediately after resizing above then the parent
+ object gets it first, sets a different size for the child, which
+ then is overwritten */
+
+ for ( obj = form->first; obj; obj = obj->next )
+ fli_handle_object( obj, FL_RESIZED, 0, 0, 0, ((void *)0) , 0 );
+
+ fli_recalc_intersections( form );
+}
+
+
+/***************************************
+ * Externally visible routine to scale a form. Needs to reshape the window.
+ ***************************************/
+
+void
+fl_scale_form( FL_FORM * form,
+ double xsc,
+ double ysc )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 774 ) ), efp_ ( "fl_scale_form", "NULL form" );
+ return;
+ }
+
+ if ( ( ( FL_Coord ) ( ( form->w_hr * xsc ) > 0 ? ( ( form->w_hr * xsc ) + 0.5 ) : ( ( form->w_hr * xsc ) - 0.5 ) ) ) == form->w
+ && ( ( FL_Coord ) ( ( form->h_hr * ysc ) > 0 ? ( ( form->h_hr * ysc ) + 0.5 ) : ( ( form->h_hr * ysc ) - 0.5 ) ) ) == form->h )
+ return;
+
+ fli_scale_form( form, xsc, ysc );
+
+ /* Resize the window */
+
+ if ( form->visible == FL_VISIBLE )
+ fl_winresize( form->window, form->w, form->h );
+}
+
+
+/***************************************
+ * Sets lower limits for the width and height of a form
+ ***************************************/
+
+void
+fl_set_form_minsize( FL_FORM * form,
+ FL_Coord w,
+ FL_Coord h )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 802 ) ), efp_ ( "fl_set_form_minsize", "Null form" );
+ return;
+ }
+
+ fl_winminsize( form->window, w, h );
+}
+
+
+/***************************************
+ * Sets upper limits for the width and height of a form
+ ***************************************/
+
+void
+fl_set_form_maxsize( FL_FORM * form,
+ FL_Coord w,
+ FL_Coord h )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 821 ) ), efp_ ( "fl_set_form_maxsize", "NULL form" );
+ return;
+ }
+
+ fl_winmaxsize( form->window, w, h );
+}
+
+
+/***************************************
+ * Switches double buffering for forms on or off (with double buffering
+ * on we draw first to a pixmap for the form before copying that to the
+ * forms window - can reduces flickering)
+ ***************************************/
+
+void
+fl_set_form_dblbuffer( FL_FORM * form,
+ int yesno )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 841 ) ), efp_ ( "fl_set_form_dblbuffer", "NULL form" );
+ return;
+ }
+
+ if ( form->use_pixmap == yesno )
+ return;
+
+ /* If the form is currently frozen the redraw on unfreeze will only
+ draw those objects that have been changed and thus have their
+ 'redraw' flag set. But when switching double buffering on there's
+ no pixmap yet that already contains the non-modified objects. Thus
+ in this case we must make sure all objects of the form get redrawn. */
+
+ if ( yesno && form->frozen )
+ form->needs_full_redraw = 1;
+
+ form->use_pixmap = yesno;
+}
+
+
+/***************************************
+ * Sets the size of a form
+ ***************************************/
+
+void
+fl_set_form_size( FL_FORM * form,
+ FL_Coord w,
+ FL_Coord h )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 872 ) ), efp_ ( "fl_set_form_size", "NULL form" );
+ return;
+ }
+
+ if ( w != form->w || h != form->h )
+ fl_scale_form( form, w / form->w_hr, h / form->h_hr );
+}
+
+
+/***************************************
+ * Sets the position of a form
+ ***************************************/
+
+void
+fl_set_form_position( FL_FORM * form,
+ FL_Coord x,
+ FL_Coord y )
+{
+ FL_Coord oldx,
+ oldy;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 895 ) ), efp_ ( "fl_set_form_position", "NULL form" );
+ return;
+ }
+
+ oldx = form->x;
+ oldy = form->y;
+
+ /* Negative values for x or y are interpreted as meaning that the
+ position is that of the right or bottom side of the form relative
+ to the right or bottom side to the screen. May have to be corrected
+ for the right or bottom border decoration widths. */
+
+ if ( x >= 0 )
+ {
+ form->x = x;
+ form->handle_dec_x = 0;
+ }
+ else
+ {
+ form->x = fl_scrw - form->w + x;
+ form->handle_dec_x = 1;
+ }
+
+ if ( y >= 0 )
+ {
+ form->y = y;
+ form->handle_dec_y = 0;
+ }
+ else
+ {
+ form->y = fl_scrh - form->h + y;
+ form->handle_dec_y = 1;
+ }
+
+ /* If the form is already shown move it */
+
+ if ( form->visible == FL_VISIBLE )
+ {
+ int bottom = 0,
+ left = 0,
+ dummy;
+
+ if ( ( form->handle_dec_x || form->handle_dec_y )
+ && form->wm_border != FL_NOBORDER )
+ {
+ fl_get_decoration_sizes( form, &dummy, &dummy, &bottom, &left );
+
+ if ( form->handle_dec_x )
+ form->x -= left;
+
+ if ( form->handle_dec_y )
+ form->y -= bottom;
+ }
+
+ form->handle_dec_x = form->handle_dec_y = 0;
+
+ if ( oldx != form->x || oldy != form->y )
+ XMoveWindow( flx->display, form->window, form->x, form->y );
+ }
+}
+
+
+/***************************************
+ * Sets the background color of the form - a bit of a hack since it
+ * actually uses the first or second object of the form...
+ ***************************************/
+
+void
+fl_set_form_background_color( FL_FORM * form,
+ FL_COLOR color )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 968 ) ), efp_ ( "fl_set_forms_background_color", "NULL form" );
+ return;
+ }
+
+ /* If the empty box that all forms get as their first object on creation
+ does not exist anymore we can't set a background color */
+
+ if ( ! form->first )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 977 ) ), efp_ ( "fl_set_forms_background_color", "Form has no background" );
+ return;
+ }
+
+ /* If there's no other object except the empty box or the first object
+ isn't an empty box anymore set the color for this first object, otherwise
+ for the next object. */
+
+ if ( ! form->first->next || form->first->boxtype != FL_NO_BOX )
+ fl_set_object_color( form->first, color, form->first->col2 );
+ else
+ fl_set_object_color( form->first->next, color,
+ form->first->next->col2 );
+}
+
+
+/***************************************
+ * Returns the background color used for the form
+ ***************************************/
+
+FL_COLOR
+fl_get_form_background_color( FL_FORM * form )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1002 ) ), efp_ ( "fl_get_forms_background_color", "NULL form" );
+ return FL_COL1;
+ }
+
+ /* If the empty box that all forms get as their first object on creation
+ does not exist anymore we can't set a background color */
+
+ if ( ! form->first )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1011 ) ), efp_ ( "fl_get_forms_background_color", "Form has no background" );
+ return FL_COL1;
+ }
+
+ if ( form->first->boxtype != FL_NO_BOX || ! form->first->next )
+ return form->first->col1;
+ else
+ return form->first->next->col1;
+}
+
+
+/***************************************
+ * Sets the position of the hotspot of a form
+ ***************************************/
+
+void
+fl_set_form_hotspot( FL_FORM * form,
+ FL_Coord x,
+ FL_Coord y )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1033 ) ), efp_ ( "fl_set_form_hotspot", "NULL form" );
+ return;
+ }
+
+ form->hotx = x;
+ form->hoty = y;
+}
+
+
+/***************************************
+ * Sets the position of the hotspot of a form
+ * to the center of one of its objects
+ ***************************************/
+
+void
+fl_set_form_hotobject( FL_FORM * form,
+ FL_OBJECT * obj )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1053 ) ), efp_ ( "fl_set_form_hotobject", "NULL form" );
+ return;
+ }
+
+ if ( ! obj )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1059 ) ), efp_ ( "fl_set_form_hotobject", "NULL object" );
+ return;
+ }
+
+ if ( obj->form != form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1065 ) ), efp_ ( "fl_set_form_hotobject", "Object not part of form" );
+ return;
+ }
+
+ fl_set_form_hotspot( form, obj->x + obj->w / 2, obj->y + obj->h / 2 );
+}
+
+
+/***************************************
+ * Try to make sure a form is completely visible on the screen
+ ***************************************/
+
+static void
+force_visible( FL_FORM * form )
+{
+ if ( form->x > fl_scrw - form->w )
+ form->x = fl_scrw - form->w;
+
+ if ( form->x < 0 )
+ form->x = 0;
+
+ if ( form->y > fl_scrh - form->h )
+ form->y = fl_scrh - form->h;
+
+ if ( form->y < 0 )
+ form->y = 0;
+}
+
+
+/***************************************
+ * Sets the name (label) of the form. If the form
+ * is shown it's also the form's window title.
+ ***************************************/
+
+void
+fl_set_form_title( FL_FORM * form,
+ const char * name )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1105 ) ), efp_ ( "fl_set_form_title", "NULL form" );
+ return;
+ }
+
+ if ( form->label != name )
+ {
+ if ( form->label )
+ fl_free( form->label );
+ form->label = fl_strdup( name ? name : "" );
+ }
+
+ if ( form->window )
+ fl_wintitle( form->window, form->label );
+}
+
+
+/***************************************
+ * Sets the name (label) of the form using a format string
+ ***************************************/
+
+void
+fl_set_form_title_f( FL_FORM * form,
+ const char * fmt,
+ ... )
+{
+ char *buf;
+
+ do { if ( ! fmt || ! * fmt ) buf = ((void *)0) ; else if ( ! strchr( fmt , '%' ) ) { if ( ( buf = fl_malloc( strlen( fmt ) + 1 ) ) ) strcpy( buf , fmt ); } else { int l1I_min_needed = strlen( fmt ) + 1; int l1I_len = l1I_min_needed; char *l1I_p; for ( l1I_p = strchr( fmt , '%' ); l1I_p; l1I_p = strchr( ++l1I_p, '%' ) ) l1I_len += 16; if ( ( buf = fl_malloc( l1I_len ) ) ) { while ( 1 ) { va_list l1I_ap; int l1I_written; __builtin_va_start( l1I_ap , fmt ) ; l1I_written = fli_portable_vsnprintf ( buf , l1I_len, fmt , l1I_ap ); __builtin_va_end( l1I_ap ) ; if ( l1I_written > -1 && l1I_len > l1I_written ) { if ( l1I_len != l1I_written + 1 ) { l1I_p = buf ; if ( ! ( buf = fl_realloc( l1I_p, l1I_written + 1 ) ) ) buf = l1I_p; } break; } l1I_len = l1I_written < 0 ? ( 2 * l1I_len ) : ( l1I_written + 16 ); l1I_p = buf ; if ( ! ( buf = fl_realloc( l1I_p, l1I_len ) ) ) { fl_free( l1I_p ); break; } } } } if ( ! buf && ( buf = fl_malloc( 1 ) ) ) * buf = '0円'; } while ( 0 ) ;
+ fl_set_form_title( form, buf );
+ fl_free( buf );
+}
+
+
+/***************************************
+ * Creates the window for a form (but doesn't show it yet, use
+ * fl_show_form_window() for that), returns the window handle
+ ***************************************/
+
+Window
+fl_prepare_form_window( FL_FORM * form,
+ int place,
+ int border,
+ const char * name )
+{
+ long screenw,
+ screenh,
+ dont_fix_size = 0;
+ FL_Coord mx,
+ my;
+
+ if ( border == 0 )
+ border = FL_FULLBORDER;
+
+ if ( fl_current_form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1160 ) ), efp_ ( "fl_prepare_form_window", "You forgot to call fl_end_form() %s",
+ name ? name : "" );
+ fl_current_form = ((void *)0) ;
+ }
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1167 ) ), efp_ ( "fl_prepare_form", "NULL form" );
+ return 0L ;
+ }
+
+ if ( form->visible != FL_INVISIBLE )
+ return form->window;
+
+ /* Try to move the form from the part of the list for hidden forms to
+ that at the start for visible forms */
+
+ move_form_to_visible_list( form );
+
+ if ( form->label != name )
+ {
+ if ( form->label )
+ fl_free( form->label );
+ form->label = fl_strdup( name ? name : "" );
+ }
+
+ if ( border == FL_NOBORDER )
+ fli_int.unmanaged_count++;
+
+ form->wm_border = border;
+ form->deactivated = 0;
+ screenw = fl_scrw;
+ screenh = fl_scrh;
+
+ fl_get_mouse( &mx, &my, &fli_int.keymask );
+
+ if ( ( dont_fix_size = place & FL_FREE_SIZE ) )
+ place &= ~ FL_FREE_SIZE;
+
+ if ( place == FL_PLACE_SIZE )
+ fl_winsize ( form->w, form->h );
+ else if ( place == FL_PLACE_ASPECT )
+ fl_winaspect( 0, form->w, form->h );
+ else if ( place == FL_PLACE_POSITION )
+ {
+ fl_winposition ( form->x, form->y );
+ fl_initial_winsize( form->w, form->h );
+ }
+ else if ( place != FL_PLACE_FREE )
+ {
+ FL_Coord nmx,
+ nmy;
+
+ switch ( place )
+ {
+ case FL_PLACE_CENTER:
+ case ( FL_PLACE_CENTER | FL_FREE_SIZE ) :
+ form->x = ( screenw - form->w ) / 2;
+ form->y = ( screenh - form->h ) / 2;
+ break;
+
+ case FL_PLACE_MOUSE:
+ form->x = mx - form->w / 2;
+ form->y = my - form->h / 2;
+ break;
+
+ case FL_PLACE_FULLSCREEN:
+ form->x = 0;
+ form->y = 0;
+ fl_set_form_size( form, screenw, screenh );
+ break;
+
+ case FL_PLACE_HOTSPOT:
+ if ( form->hotx < 0 || form->hoty < 0 ) /* not set */
+ {
+ form->hotx = form->w / 2;
+ form->hoty = form->h / 2;
+ }
+
+ form->x = mx - form->hotx;
+ form->y = my - form->hoty;
+
+ force_visible( form );
+
+ nmx = form->x + form->hotx;
+ nmy = form->y + form->hoty;
+
+ if ( nmx != mx || nmy != my )
+ fl_set_mouse( nmx, nmy );
+
+ break;
+
+ case FL_PLACE_GEOMETRY :
+ if ( form->x < 0 )
+ {
+ form->x = screenw - form->w + form->x;
+ form->handle_dec_x = 1;
+ }
+ if ( form->y < 0 )
+ {
+ form->y = screenh - form->h + form->y;
+ form->handle_dec_y = 1;
+ }
+ break;
+ }
+
+ /* Final check. Make sure form is visible */
+
+ if ( place != FL_PLACE_GEOMETRY )
+ force_visible( form );
+
+ if ( dont_fix_size && place != FL_PLACE_GEOMETRY )
+ fl_initial_wingeometry( form->x, form->y, form->w, form->h );
+ else
+ fl_wingeometry ( form->x, form->y, form->w, form->h );
+ }
+ else if ( place == FL_PLACE_FREE )
+ {
+ fl_initial_winsize( form->w, form->h );
+ if ( has_initial )
+ fl_initial_wingeometry( form->x, form->y, form->w, form->h );
+ }
+ else
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1284 ) ), efp_ ( "fl_prepare_form_window", "Unknown requests: %d", place );
+ fl_initial_wingeometry( form->x, form->y, form->w, form->h );
+ }
+
+ /* Window managers typically do not allow dragging transient windows */
+
+ if ( border != FL_FULLBORDER )
+ {
+ if ( place == FL_PLACE_ASPECT || place == FL_PLACE_FREE )
+ {
+ form->x = mx - form->w / 2;
+ form->y = my - form->h / 2;
+ force_visible( form );
+ fl_winposition ( form->x, form->y );
+ }
+
+ if ( border == FL_NOBORDER )
+ fl_noborder( );
+ else
+ fl_transient( );
+ }
+
+ if ( place == FL_PLACE_ICONIC )
+ fl_initial_winstate( 3 );
+ if ( form->icon_pixmap )
+ fl_winicon( 0, form->icon_pixmap, form->icon_mask );
+
+ has_initial = 0;
+ fli_init_colormap( fl_vmode );
+
+ form->window = fli_create_window( fl_root, fl_state[ fl_vmode ].colormap , name );
+ fl_winicontitle( form->window, name );
+
+ if ( border == FL_FULLBORDER || form->prop & FLI_COMMAND_PROP )
+ set_form_property( form, FLI_COMMAND_PROP );
+
+ return form->window;
+}
+
+
+/***************************************
+ ***************************************/
+
+Window
+fl_prepare_form_window_f( FL_FORM * form,
+ int place,
+ int border,
+ const char * fmt,
+ ... )
+{
+ Window w;
+ char *buf;
+
+ do { if ( ! fmt || ! * fmt ) buf = ((void *)0) ; else if ( ! strchr( fmt , '%' ) ) { if ( ( buf = fl_malloc( strlen( fmt ) + 1 ) ) ) strcpy( buf , fmt ); } else { int l1I_min_needed = strlen( fmt ) + 1; int l1I_len = l1I_min_needed; char *l1I_p; for ( l1I_p = strchr( fmt , '%' ); l1I_p; l1I_p = strchr( ++l1I_p, '%' ) ) l1I_len += 16; if ( ( buf = fl_malloc( l1I_len ) ) ) { while ( 1 ) { va_list l1I_ap; int l1I_written; __builtin_va_start( l1I_ap , fmt ) ; l1I_written = fli_portable_vsnprintf ( buf , l1I_len, fmt , l1I_ap ); __builtin_va_end( l1I_ap ) ; if ( l1I_written > -1 && l1I_len > l1I_written ) { if ( l1I_len != l1I_written + 1 ) { l1I_p = buf ; if ( ! ( buf = fl_realloc( l1I_p, l1I_written + 1 ) ) ) buf = l1I_p; } break; } l1I_len = l1I_written < 0 ? ( 2 * l1I_len ) : ( l1I_written + 16 ); l1I_p = buf ; if ( ! ( buf = fl_realloc( l1I_p, l1I_len ) ) ) { fl_free( l1I_p ); break; } } } } if ( ! buf && ( buf = fl_malloc( 1 ) ) ) * buf = '0円'; } while ( 0 ) ;
+ w = fl_prepare_form_window( form, place, border, buf );
+ fl_free( buf );
+ return w;
+}
+
+
+/***************************************
+ * Maps (displays) a form's window created with fl_prepare_form_window()
+ ***************************************/
+
+Window
+fl_show_form_window( FL_FORM * form )
+{
+ FL_OBJECT *obj;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1355 ) ), efp_ ( "fl_show_form_window", "NULL form" );
+ return 0L ;
+ }
+
+ if ( form->window == 0L || form->visible != FL_INVISIBLE )
+ return form->window;
+
+ fl_winshow( form->window );
+ form->visible = FL_VISIBLE;
+ reshape_form( form );
+ fl_redraw_form( form );
+
+ /* TODO: somehow formbrowser objects get drawn incorrectly the first
+ time round so, for the time being, we redraw it once again... */
+
+ for ( obj = form->first; obj; obj = obj->next )
+ if ( obj->objclass == FL_FORMBROWSER )
+ fl_redraw_object( obj );
+
+ if ( ! form->focusobj )
+ for ( obj = form->first; obj; obj = obj->next )
+ if ( obj->input && obj->active )
+ {
+ fl_set_focus_object( form, obj );
+ break;
+ }
+
+ return form->window;
+}
+
+
+/***************************************
+ * Makes a new form visible by creating a window for it
+ * and mapping it. Returns the form's window handle.
+ ***************************************/
+
+Window
+fl_show_form( FL_FORM * form,
+ int place,
+ int border,
+ const char * name )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1399 ) ), efp_ ( "fl_show_form", "NULL form" );
+ return 0L ;
+ }
+
+ fl_prepare_form_window( form, place, border, name );
+ form->in_redraw = 0;
+ return fl_show_form_window( form );
+}
+
+
+/***************************************
+ ***************************************/
+
+Window
+fl_show_form_f( FL_FORM * form,
+ int place,
+ int border,
+ const char * fmt,
+ ... )
+{
+ Window w;
+ char *buf;
+
+ do { if ( ! fmt || ! * fmt ) buf = ((void *)0) ; else if ( ! strchr( fmt , '%' ) ) { if ( ( buf = fl_malloc( strlen( fmt ) + 1 ) ) ) strcpy( buf , fmt ); } else { int l1I_min_needed = strlen( fmt ) + 1; int l1I_len = l1I_min_needed; char *l1I_p; for ( l1I_p = strchr( fmt , '%' ); l1I_p; l1I_p = strchr( ++l1I_p, '%' ) ) l1I_len += 16; if ( ( buf = fl_malloc( l1I_len ) ) ) { while ( 1 ) { va_list l1I_ap; int l1I_written; __builtin_va_start( l1I_ap , fmt ) ; l1I_written = fli_portable_vsnprintf ( buf , l1I_len, fmt , l1I_ap ); __builtin_va_end( l1I_ap ) ; if ( l1I_written > -1 && l1I_len > l1I_written ) { if ( l1I_len != l1I_written + 1 ) { l1I_p = buf ; if ( ! ( buf = fl_realloc( l1I_p, l1I_written + 1 ) ) ) buf = l1I_p; } break; } l1I_len = l1I_written < 0 ? ( 2 * l1I_len ) : ( l1I_written + 16 ); l1I_p = buf ; if ( ! ( buf = fl_realloc( l1I_p, l1I_len ) ) ) { fl_free( l1I_p ); break; } } } } if ( ! buf && ( buf = fl_malloc( 1 ) ) ) * buf = '0円'; } while ( 0 ) ;
+ w = fl_show_form( form, place, border, buf );
+ fl_free( buf );
+ return w;
+}
+
+
+/***************************************
+ * Hides a particular form by unmapping and destroying its window
+ ***************************************/
+
+static void
+close_form_window( Window win )
+{
+ XEvent xev;
+
+ XUnmapWindow( flx->display, win );
+ XDestroyWindow( flx->display, win );
+ XSync( flx->display, 0 );
+
+ while ( XCheckWindowEvent( flx->display, win, ( ( (1L<<24) << 1 ) - 1 ) , &xev ) )
+ fli_xevent_name( "Eaten", &xev );
+
+ /* Give subwindows a chance to handle destroy event promptly, take care
+ the window of the form doesn't exist anymore! */
+
+ while ( XCheckTypedEvent( flx->display, 17 , &xev ) )
+ {
+ FL_FORM *form;
+
+ if ( ( form = fli_find_event_form( &xev ) ) )
+ {
+ form->window = 0L ;
+ fl_hide_form( form );
+ }
+ else
+ fl_XPutBackEvent( &xev );
+ }
+}
+
+
+/***************************************
+ ***************************************/
+
+static FL_FORM *
+property_set( unsigned int prop )
+{
+ int i;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ if ( fli_int.forms[ i ]->prop & prop
+ && fli_int.forms[ i ]->prop & FLI_PROP_SET )
+ return fli_int.forms[ i ];
+
+ return ((void *)0) ;
+}
+
+
+/***************************************
+ ***************************************/
+
+static void
+set_form_property( FL_FORM * form,
+ unsigned int prop )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1489 ) ), efp_ ( "set_form_property", "NULL form" );
+ return;
+ }
+
+ if ( property_set( prop ) )
+ return;
+
+ if ( ! ( prop & FLI_COMMAND_PROP ) )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1498 ) ), efp_ ( "set_form_property", "Unknown form property request %u",
+ prop );
+ return;
+ }
+
+ if ( form->window )
+ {
+ fli_set_winproperty( form->window, FLI_COMMAND_PROP );
+ form->prop |= FLI_PROP_SET;
+ }
+
+ form->prop |= FLI_COMMAND_PROP;
+ fli_mainform = form;
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_hide_form( FL_FORM * form )
+{
+ Window owin;
+ FL_OBJECT *o;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1525 ) ), efp_ ( "fl_hide_form", "NULL form" );
+ return;
+ }
+
+ if ( fli_get_visible_forms_index( form ) < 0 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1531 ) ), efp_ ( "fl_hide_form", "Hiding unknown form" );
+ return;
+ }
+
+ if ( form->visible == FL_BEING_HIDDEN )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1537 ) ), efp_ ( "fl_hide_form", "Recursive call?" );
+ return;
+ }
+
+ form->visible = FL_BEING_HIDDEN;
+ fli_set_form_window( form );
+
+ /* Checking mouseobj->form is necessary as it might be deleted from a
+ form */
+
+ if ( fli_int.mouseobj && fli_int.mouseobj->form == form )
+ {
+ fli_handle_object( fli_int.mouseobj, FL_LEAVE, 0, 0, 0, ((void *)0) , 1 );
+ fli_int.mouseobj = ((void *)0) ;
+ }
+
+ if ( fli_int.pushobj && fli_int.pushobj->form == form )
+ {
+ fli_handle_object( fli_int.pushobj, FL_RELEASE, 0, 0, 0, ((void *)0) , 1 );
+ fli_int.pushobj = ((void *)0) ;
+ }
+
+ if ( form->focusobj )
+ {
+ fli_handle_object( form->focusobj, FL_UNFOCUS, 0, 0, 0, ((void *)0) , 0 );
+ form->focusobj = ((void *)0) ;
+ }
+
+ /* Get canvas objects to unmap their windows (but only for those that
+ aren't childs, those will be dealt with by their parents) */
+
+ for ( o = form->first; o; o = o->next )
+ if ( ( o->objclass == FL_CANVAS || o->objclass == FL_GLCANVAS )
+ && ! o->parent )
+ fli_unmap_canvas_window( o );
+
+
+ fli_object_qflush( form );
+
+
+ /* Free backing store pixmap but keep the pointer */
+
+ fli_free_flpixmap( form->flpixmap );
+
+ if ( fli_int.mouseform && fli_int.mouseform->window == form->window )
+ fli_int.mouseform = ((void *)0) ;
+
+ form->deactivated = 1;
+ form->visible = FL_INVISIBLE;
+ owin = form->window;
+ form->window = 0L ;
+
+ fli_hide_tooltip( );
+
+ /* If the forms window is None it already has been closed */
+
+ if ( owin )
+ close_form_window( owin );
+
+ if ( flx->win == owin )
+ flx->win = 0L ;
+
+ /* Move the form from the part of the list for visible forms to the
+ part of hidden forms at the end of the array */
+
+ move_form_to_hidden_list( form );
+
+ if ( form->wm_border == FL_NOBORDER )
+ {
+ fli_int.unmanaged_count--;
+ if ( fli_int.unmanaged_count < 0 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1609 ) ), efp_ ( "fl_hide_form", "Bad unmanaged count" );
+ fli_int.unmanaged_count = 0;
+ }
+ }
+
+ /* Need to re-establish command property */
+
+ if ( fli_int.formnumb && form->prop & FLI_COMMAND_PROP )
+ set_form_property( *fli_int.forms, FLI_COMMAND_PROP );
+
+ if ( form == fli_int.keyform )
+ fli_int.keyform = ((void *)0) ;
+}
+
+
+/***************************************
+ * Frees the memory used by a form, together with all its objects.
+ ***************************************/
+
+void
+fl_free_form( FL_FORM * form )
+{
+ /* Check whether ok to free */
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1635 ) ), efp_ ( "fl_free_form", "NULL form" );
+ return;
+ }
+
+ if ( form->visible == FL_VISIBLE )
+ {
+ ( efp_ = fli_error_setup( 0 , "forms.c", 1641 ) ), efp_ ( "fl_free_form", "Freeing visible form" );
+ fl_hide_form( form );
+ }
+
+ if ( get_hidden_forms_index( form ) < 0 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1647 ) ), efp_ ( "fl_free_form", "Freeing unknown form" );
+ return;
+ }
+
+ /* Free all objects of the form */
+
+ fli_fast_free_object = form;
+
+ while ( form->first )
+ fl_free_object( form->first );
+
+ fli_fast_free_object = ((void *)0) ;
+
+ if ( form->flpixmap )
+ {
+ fli_free_flpixmap( form->flpixmap );
+ fl_free( form->flpixmap );
+ }
+
+ if ( form->label )
+ {
+ fl_free( form->label );
+ form->label = ((void *)0) ;
+ }
+
+ if ( form == fli_mainform )
+ fli_mainform = ((void *)0) ;
+
+ /* Free the form and remove it from the list of existing forms */
+
+ fl_free( form );
+
+ remove_form_from_hidden_list( form );
+}
+
+
+/***************************************
+ * Returns if a form is active
+ ***************************************/
+
+int
+fl_form_is_activated( FL_FORM * form )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1692 ) ), efp_ ( "fl_form_is_activated", "NULL form" );
+ return 0;
+ }
+
+ return form->deactivated == 0;
+}
+
+
+/***************************************
+ * Activates a form (form only becomes activated if this function has
+ * been called as many times as fl_deactive_form()).
+ ***************************************/
+
+void
+fl_activate_form( FL_FORM * form )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1710 ) ), efp_ ( "fl_activate_form", "NULL form" );
+ return;
+ }
+
+ if ( form->deactivated )
+ {
+ form->deactivated--;
+
+ if ( ! form->deactivated && form->activate_callback )
+ form->activate_callback( form, form->activate_data );
+ }
+
+ if ( form->child )
+ fl_activate_form( form->child );
+}
+
+
+/***************************************
+ * Deactivates a form (re-activation requires as many calls of
+ * fl_activate_form() as there were calls of fl_deactivate_form()).
+ ***************************************/
+
+void
+fl_deactivate_form( FL_FORM * form )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1737 ) ), efp_ ( "fl_deactivate_form", "NULL form" );
+ return;
+ }
+
+ if ( ! form->deactivated
+ && fli_int.mouseobj
+ && fli_int.mouseobj->form == form )
+ fli_handle_object( fli_int.mouseobj, FL_LEAVE, 0, 0, 0, ((void *)0) , 1 );
+
+ if ( ! form->deactivated && form->deactivate_callback )
+ form->deactivate_callback( form, form->deactivate_data );
+
+ form->deactivated++;
+
+ if ( form->child )
+ fl_deactivate_form( form->child );
+}
+
+
+/***************************************
+ * Installs handler to be called on (final) re-activation of the form
+ ***************************************/
+
+FL_FORM_ATACTIVATE
+fl_set_form_atactivate( FL_FORM * form,
+ FL_FORM_ATACTIVATE cb,
+ void * data )
+{
+ FL_FORM_ATACTIVATE old = ((void *)0) ;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1769 ) ), efp_ ( "fl_set_form_atactivate", "NULL form" );
+ return ((void *)0) ;
+ }
+
+ old = form->activate_callback;
+ form->activate_callback = cb;
+ form->activate_data = data;
+
+ return old;
+}
+
+
+/***************************************
+ * Installs handler to be called on (first) deactivation of the form
+ ***************************************/
+
+FL_FORM_ATDEACTIVATE
+fl_set_form_atdeactivate( FL_FORM * form,
+ FL_FORM_ATDEACTIVATE cb,
+ void * data )
+{
+ FL_FORM_ATDEACTIVATE old = ((void *)0) ;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1794 ) ), efp_ ( "fl_set_form_atdeactivate", "NULL form" );
+ return ((void *)0) ;
+ }
+
+ old = form->deactivate_callback;
+ form->deactivate_callback = cb;
+ form->deactivate_data = data;
+
+ return old;
+}
+
+
+/***************************************
+ * Activates all forms
+ ***************************************/
+
+void
+fl_activate_all_forms( void )
+{
+ int i;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ fl_activate_form( fli_int.forms[ i ] );
+}
+
+
+/***************************************
+ * Deactivates all forms
+ ***************************************/
+
+void
+fl_deactivate_all_forms( void )
+{
+ int i;
+
+ for ( i = 0; i < fli_int.formnumb; i++ )
+ fl_deactivate_form( fli_int.forms[ i ] );
+}
+
+
+/***************************************
+ * Installs handler to be called on close of the form
+ ***************************************/
+
+FL_FORM_ATCLOSE
+fl_set_form_atclose( FL_FORM * form,
+ FL_FORM_ATCLOSE fmclose,
+ void * data )
+{
+ FL_FORM_ATCLOSE old;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1847 ) ), efp_ ( "fl_set_form_atclose", "NULL form" );
+ return ((void *)0) ;
+ }
+
+ old = form->close_callback;
+ form->close_callback = fmclose;
+ form->close_data = data;
+
+ return old;
+}
+
+
+/***************************************
+ * Installs handler to be called on end of application by the user
+ * using some window manager method to close a window
+ ***************************************/
+
+FL_FORM_ATCLOSE
+fl_set_atclose( FL_FORM_ATCLOSE fmclose,
+ void * data )
+{
+ FL_FORM_ATCLOSE old = fli_context->atclose;
+
+ fli_context->atclose = fmclose;
+ fli_context->close_data = data;
+
+ return old;
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_set_form_geometry( FL_FORM * form,
+ FL_Coord x,
+ FL_Coord y,
+ FL_Coord w,
+ FL_Coord h )
+{
+ fl_set_form_position( form, x, y );
+ fl_set_form_size( form, w, h );
+
+ /* This alters the windowing defaults */
+
+ fl_initial_wingeometry( form->x, form->y, form->w, form->h );
+ has_initial = 1;
+}
+
+
+/***************************************
+ * Register pre-emptive event handlers
+ ***************************************/
+
+FL_RAW_CALLBACK
+fl_register_raw_callback( FL_FORM * form,
+ unsigned long mask,
+ FL_RAW_CALLBACK rcb )
+{
+ FL_RAW_CALLBACK old_rcb = ((void *)0) ;
+ int valid = 0;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1911 ) ), efp_ ( "fl_register_raw_callback", "Null form" );
+ return ((void *)0) ;
+ }
+
+ if ( ( mask & ( (1L<<0) | (1L<<1) | (1L<<2) | (1L<<3) | (1L<<4) | (1L<<5) | (1L<<13) | (1L<<6) ) ) == ( (1L<<0) | (1L<<1) | (1L<<2) | (1L<<3) | (1L<<4) | (1L<<5) | (1L<<13) | (1L<<6) ) )
+ {
+ old_rcb = form->all_callback;
+ form->evmask = mask;
+ form->all_callback = rcb;
+ return old_rcb;
+ }
+
+ if ( mask & ( (1L<<0) | (1L<<1) ) )
+ {
+ form->evmask |= mask & ( (1L<<0) | (1L<<1) );
+ old_rcb = form->key_callback;
+ form->key_callback = rcb;
+ valid = 1;
+ }
+
+ if ( mask & ( (1L<<2) | (1L<<3) ) )
+ {
+ form->evmask |= mask & ( (1L<<2) | (1L<<3) );
+ old_rcb = form->push_callback;
+ form->push_callback = rcb;
+ valid = 1;
+ }
+
+ if ( mask & ( (1L<<4) | (1L<<5) ) )
+ {
+ form->evmask |= mask & ( (1L<<4) | (1L<<5) );
+ old_rcb = form->crossing_callback;
+ form->crossing_callback = rcb;
+ valid = 1;
+ }
+
+ if ( mask & ( (1L<<13) | (1L<<6) ) )
+ {
+ form->evmask |= mask & ( (1L<<13) | (1L<<6) );
+ old_rcb = form->motion_callback;
+ form->motion_callback = rcb;
+ valid = 1;
+ }
+
+ if ( ! valid ) /* unsupported mask */
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1956 ) ), efp_ ( "fl_register_raw_callback", "Unsupported mask 0x%x", mask );
+
+ return old_rcb;
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_set_form_event_cmask( FL_FORM * form,
+ unsigned long cmask )
+{
+ if ( form )
+ form->compress_mask = cmask;
+}
+
+
+/***************************************
+ ***************************************/
+
+unsigned long
+fl_get_form_event_cmask( FL_FORM * form )
+{
+ return form ? form->compress_mask : 0UL;
+}
+
+
+/***************************************
+ * Sets the callback routine for the form
+ ***************************************/
+
+void
+fl_set_form_callback( FL_FORM * form,
+ FL_FORMCALLBACKPTR callback,
+ void * d )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 1995 ) ), efp_ ( "fl_set_form_callback", "NULL form" );
+ return;
+ }
+
+ form->form_callback = callback;
+ form->form_cb_data = d;
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_set_form_icon( FL_FORM * form,
+ Pixmap p,
+ Pixmap m )
+{
+ if ( ! form )
+ return;
+
+ form->icon_pixmap = p;
+ form->icon_mask = m;
+ if ( form->window )
+ fl_winicon( form->window, p, m );
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_set_app_mainform( FL_FORM * form )
+{
+ fli_mainform = form;
+ set_form_property( form, FLI_COMMAND_PROP );
+}
+
+
+/***************************************
+ ***************************************/
+
+FL_FORM *
+fl_get_app_mainform( void )
+{
+ return nomainform ? ((void *)0) : fli_mainform;
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_set_app_nomainform( int flag )
+{
+ nomainform = flag;
+}
+
+
+/***************************************
+ * Does a rescale of a form without taking into
+ * account object gravity or resize settings
+ ***************************************/
+
+static void
+simple_form_rescale( FL_FORM * form,
+ double scale )
+{
+ FL_OBJECT *obj;
+
+ form->w_hr *= scale;
+ form->h_hr *= scale;
+
+ form->w = ( ( FL_Coord ) ( ( form->w_hr ) > 0 ? ( ( form->w_hr ) + 0.5 ) : ( ( form->w_hr ) - 0.5 ) ) ) ;
+ form->h = ( ( FL_Coord ) ( ( form->h_hr ) > 0 ? ( ( form->h_hr ) + 0.5 ) : ( ( form->h_hr ) - 0.5 ) ) ) ;
+
+ for ( obj = form->first; obj; obj = obj->next )
+ if ( obj->objclass != 10000 && obj->objclass != 20000 )
+ fli_scale_object( obj, scale, scale );
+
+ fli_recalc_intersections( form );
+
+ fl_redraw_form( form );
+}
+
+
+/***************************************
+ * Checks if the label of an object fits into it (after x- and
+ * y-margin have been added). If not, all objects and the form
+ * are enlarged by the necessary factor (but never by more than
+ * a factor of 1.5).
+ ***************************************/
+
+void
+fl_fit_object_label( FL_OBJECT * obj,
+ FL_Coord xmargin,
+ FL_Coord ymargin )
+{
+ int sw,
+ sh,
+ osize,
+ bw;
+ double factor,
+ xfactor,
+ yfactor;
+
+ if ( fli_no_connection )
+ return;
+
+ if ( fl_is_outside_lalign( obj->align )
+ || obj->type == 10000
+ || obj->type == 20000
+ || obj->parent
+ || ! obj->label
+ || ! *obj->label
+ || *obj->label == '@' )
+ return;
+
+ fl_get_string_dimension( obj->lstyle, obj->lsize, obj->label,
+ strlen( obj->label ), &sw, &sh );
+
+ bw = ( obj->boxtype == FL_UP_BOX
+ || obj->boxtype == FL_DOWN_BOX
+ || obj->boxtype == FL_EMBOSSED_BOX ) ?
+ ( ( obj->bw ) > 0 ? ( obj->bw ) : ( - ( obj->bw ) ) ) : 1;
+
+ if ( obj->boxtype == FL_EMBOSSED_BOX )
+ bw += bw > 2 ? bw - 2 : 1;
+
+ if ( obj->objclass == FL_BUTTON
+ && ( obj->type == FL_RETURN_BUTTON
+ || obj->type == FL_MENU_BUTTON ) )
+ sw += ( ( 0.6 * obj->h ) < ( 0.6 * obj->w ) ? ( 0.6 * obj->h ) : ( 0.6 * obj->w ) ) - 1;
+
+ if ( obj->objclass == FL_BUTTON && obj->type == FL_LIGHTBUTTON )
+ sw += ( ( FL_Coord ) 12 ) + 1;
+
+ if ( sw <= obj->w - 2 * ( bw + xmargin )
+ && sh <= obj->h - 2 * ( bw + ymargin ) )
+ return;
+
+ if ( ( osize = obj->w - 2 * ( bw + xmargin ) ) <= 0 )
+ osize = 1;
+ xfactor = ( double ) sw / osize;
+
+ if ( ( osize = obj->h - 2 * ( bw + ymargin ) ) <= 0 )
+ osize = 1;
+ yfactor = ( double ) sh / osize;
+
+ factor = ( ( xfactor ) > ( yfactor ) ? ( xfactor ) : ( yfactor ) ) ;
+
+ factor = ( ( factor ) < ( 1.0 ) ? ( 1.0 ) : ( ( factor ) > ( 1.5 ) ? ( 1.5 ) : ( factor ) ) ) ;
+
+ /* Scale all objects without taking care of gravity etc. */
+
+ if ( factor > 1.0 )
+ simple_form_rescale( obj->form, factor );
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fli_recount_auto_objects( void )
+{
+ int i;
+
+ for ( fli_int.auto_count = i = 0; i < fli_int.formnumb; i++ )
+ if ( fli_int.forms[ i ]->num_auto_objects > 0 )
+ fli_int.auto_count++;
+}
+
+
+/***************************************
+ * Reopens a group to allow addition of further objects
+ ***************************************/
+
+FL_OBJECT *
+fl_addto_group( FL_OBJECT * group )
+{
+ if ( ! group )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2177 ) ), efp_ ( "fl_addto_group", "NULL group." );
+ return ((void *)0) ;
+ }
+
+ if ( group->objclass != 10000 )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2183 ) ), efp_ ( "fl_addto_group", "Parameter is not a group object." );
+ return ((void *)0) ;
+ }
+
+ if ( fl_current_form && fl_current_form != group->form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2189 ) ), efp_ ( "fl_addto_group",
+ "Can't switch to a group on a different form" );
+ return ((void *)0) ;
+ }
+
+ if ( fli_current_group && fli_current_group != group )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2196 ) ), efp_ ( "fl_addto_group", "You forgot to call fl_end_group" );
+ return ((void *)0) ;
+ }
+
+ if ( fli_current_group )
+ ( efp_ = fli_error_setup( 0 , "forms.c", 2201 ) ), efp_ ( "fl_addto_group", "Group was never closed" );
+
+ reopened_group = fl_current_form ? 1 : 2;
+ fl_current_form = group->form;
+ return fli_current_group = group;
+}
+
+
+/***************************************
+ * Returns if a form is visible
+ ***************************************/
+
+int
+fl_form_is_visible( FL_FORM * form )
+{
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( 0 , "forms.c", 2218 ) ), efp_ ( "fl_form_is_visible", "NULL form" );
+ return FL_INVISIBLE;
+ }
+
+ return form->window ? form->visible : FL_INVISIBLE;
+}
+
+
+/***************************************
+ * Similar to fit_object_label(), but will do it for all objects and
+ * has a smaller maximum magnification factor (1.25 instead of 1.5).
+ * Mainly intended for compensation for font size variations.
+ ***************************************/
+
+double
+fl_adjust_form_size( FL_FORM * form )
+{
+ FL_OBJECT * obj;
+ double xfactor,
+ yfactor,
+ max_factor,
+ factor;
+ int sw,
+ sh,
+ osize,
+ bw;
+
+ if ( fli_no_connection )
+ return 1.0;
+
+ max_factor = factor = 1.0;
+ for ( obj = form->first; obj; obj = obj->next )
+ {
+ if ( fl_is_outside_lalign( obj->align )
+ || obj->type == 10000
+ || obj->type == 20000
+ || obj->parent
+ || ! obj->label
+ || ! *obj->label
+ || *obj->label == '@' )
+ continue;
+
+ fl_get_string_dimension( obj->lstyle, obj->lsize, obj->label,
+ strlen( obj->label ), &sw, &sh );
+
+ bw = ( obj->boxtype == FL_UP_BOX
+ || obj->boxtype == FL_DOWN_BOX
+ || obj->boxtype == FL_EMBOSSED_BOX ) ?
+ ( ( obj->bw ) > 0 ? ( obj->bw ) : ( - ( obj->bw ) ) ) : 1;
+
+ if ( obj->boxtype == FL_EMBOSSED_BOX )
+ bw += bw > 2 ? bw - 2 : 1;
+
+ if ( obj->objclass == FL_BUTTON
+ && ( obj->type == FL_RETURN_BUTTON
+ || obj->type == FL_MENU_BUTTON ) )
+ sw += ( ( 0.6 * obj->h ) < ( 0.6 * obj->w ) ? ( 0.6 * obj->h ) : ( 0.6 * obj->w ) ) - 1;
+
+ if ( obj->objclass == FL_BUTTON && obj->type == FL_LIGHTBUTTON )
+ sw += ( ( FL_Coord ) 12 ) + 1;
+
+ if ( sw <= obj->w - 2 * ( bw + 1 )
+ && sh <= obj->h - 2 * ( bw + 1 ))
+ continue;
+
+ if ( ( osize = obj->w - 2 * ( bw + 1 ) ) <= 0 )
+ osize = 1;
+ xfactor = ( double ) sw / osize;
+
+ if ( ( osize = obj->h - 2 * ( bw + 1 ) ) <= 0 )
+ osize = 1;
+ yfactor = ( double ) sh / osize;
+
+ if ( ( factor = ( ( xfactor ) > ( yfactor ) ? ( xfactor ) : ( yfactor ) ) ) > max_factor )
+ max_factor = factor;
+ }
+
+ /* Don't scale down and don't scale up by more than a factor of 1.25 */
+
+ max_factor = ( ( max_factor ) < ( 1.0 ) ? ( 1.0 ) : ( ( max_factor ) > ( 1.25 ) ? ( 1.25 ) : ( max_factor ) ) ) ;
+
+ /* Scale all objects without taking care of gravity etc. */
+
+ if ( max_factor > 1.0 )
+ simple_form_rescale( form, max_factor );
+
+ return max_factor;
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_raise_form( FL_FORM * form )
+{
+ if ( form && form->window )
+ XRaiseWindow( fl_display, form->window );
+ else
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2317 ) ), efp_ ( "fl_raise_form", "NULL form or form window not shown" );
+}
+
+
+/***************************************
+ ***************************************/
+
+void
+fl_lower_form( FL_FORM * form )
+{
+ if ( form && form->window )
+ XLowerWindow( fl_display, form->window );
+ else
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2330 ) ), efp_ ( "fl_lower_form", "NULL form or forn window not shown" );
+}
+
+
+/***************************************
+ * Returns the sizes of the "decorations" the window manager puts around
+ * a forms window. Returns 0 on success and 1 if the form isn't visible
+ * or it's a form embedded into another form.
+ * This tries to use the "_NET_FRAME_EXTENTS" atom which resonably recent
+ * window managers in principle should set. For those window managers that
+ * don't have that atom we try it with the old trick of searching up for
+ * the enclosing parent window and using the geometry of this window (but
+ * note: this doesn't work with window managers that don't reparent the
+ * windows they manage, and we can't recognize that).
+ ***************************************/
+
+int
+fl_get_decoration_sizes( FL_FORM * form,
+ int * top,
+ int * right,
+ int * bottom,
+ int * left )
+{
+ Atom a;
+
+ if ( ! form
+ || ! form->window
+ || form->visible != FL_VISIBLE
+ || form->parent )
+ return 1;
+
+ /* If the window manager knows about the '_NET_FRAME_EXTENTS' atom ask
+ for the settings for the forms window, otherwise try by looking for
+ the size of the enclosing parent window */
+
+ if ( ( a = XInternAtom( fl_display , "_NET_FRAME_EXTENTS", 1 ) )
+ != 0L )
+ get_decoration_sizes_from_wm( a, form, top, right, bottom, left );
+ else
+ get_decorations_sizes_from_parent( form, top, right, bottom, left );
+
+ return 0;
+}
+
+
+/***************************************
+ * Gets the decorations sizes via the _NET_FRAME_EXTENTS atom.
+ ***************************************/
+
+static
+void
+get_decoration_sizes_from_wm( Atom a,
+ FL_FORM * form,
+ int * top,
+ int * right,
+ int * bottom,
+ int * left )
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long bytes_after;
+ static unsigned char *prop;
+
+ XGetWindowProperty( fl_display , form->window, a, 0,
+ 4, 0 , ((Atom) 6) ,
+ &actual_type, &actual_format, &nitems,
+ &bytes_after, &prop );
+
+ /* If no properties are returne the window probably has no decorations */
+
+ if ( actual_type == ((Atom) 6)
+ && actual_format == 32
+ && nitems == 4 )
+ {
+ *top = ( ( long * ) prop )[ 2 ];
+ *right = ( ( long * ) prop )[ 1 ];
+ *bottom = ( ( long * ) prop )[ 3 ];
+ *left = ( ( long * ) prop )[ 0 ];
+ }
+ else
+ *top = *right =*bottom = *left = 0;
+}
+
+
+/***************************************
+ * Tries to get the size of the decorations of a form the traditional
+ * way, asuming that the form window is the child of a parent window
+ * that encloses also the decoration windows (assuming that the window
+ * manager reparents the windows it manages, otherwise we'll report
+ * back zero sized decorations without any chance of figuring out that
+ * this is wrong;-(
+ ***************************************/
+
+static
+void
+get_decorations_sizes_from_parent( FL_FORM * form,
+ int * top,
+ int * right,
+ int * bottom,
+ int * left )
+{
+ Window cur_win = form->window;
+ Window root;
+ Window parent;
+ Window *childs = ((void *)0) ;
+ XWindowAttributes win_attr;
+ XWindowAttributes frame_attr;
+ Window wdummy;
+ unsigned int udummy;
+
+ /* Get the coordinates and size of the form's window */
+
+ XGetWindowAttributes( fl_display , cur_win, &win_attr );
+
+ /* Try to get its parent window */
+
+ XQueryTree( fl_display , cur_win, &root, &parent, &childs,
+ &udummy );
+
+ /* Childs aren't used, get rid of them */
+
+ if ( childs )
+ {
+ XFree( childs );
+ childs = ((void *)0) ;
+ }
+
+ /* If there's no parent or the parent window is the root window
+ we've got to assume that there are no decorations */
+
+ if ( ! parent || parent == root )
+ {
+ *top = *right =*bottom = *left = 0;
+ return;
+ }
+
+ /* Now translate the form window's coordiates (that are relative to
+ its parent) to that relative to the root window and then find the
+ top-most parent that isn't the root window itself */
+
+ XTranslateCoordinates( fl_display , parent, root,
+ win_attr.x, win_attr.y,
+ &win_attr.x, &win_attr.y, &wdummy );
+
+ while ( parent && parent != root )
+ {
+ cur_win = parent;
+ XQueryTree( fl_display , cur_win, &root, &parent, &childs,
+ &udummy );
+
+ if ( childs )
+ {
+ XFree( childs );
+ childs = ((void *)0) ;
+ }
+ }
+
+ /* Get the cordinates and sizes of the top-most window... */
+
+ XGetWindowAttributes( fl_display , cur_win, &frame_attr );
+
+ /* ...and finally calculate the decoration sizes */
+
+ *top = win_attr.y - frame_attr.y;
+ *left = win_attr.x - frame_attr.x;
+ *bottom = frame_attr.height - win_attr.height - *top;
+ *right = frame_attr.width - win_attr.width - *left;
+}
+
+
+/***************************************
+ * Returns if a form window is in iconified state
+ ***************************************/
+
+int
+fl_form_is_iconified( FL_FORM * form )
+{
+ XWindowAttributes xwa;
+
+ if ( ! form )
+ {
+ ( efp_ = fli_error_setup( -1 , "forms.c", 2512 ) ), efp_ ( "fl_form_is_iconified", "NULL form" );
+ return 0;
+ }
+
+ if ( ! form->window || form->visible == FL_INVISIBLE )
+ return 0;
+
+ XGetWindowAttributes( fl_display , form->window, &xwa );
+
+ return xwa.map_state != 2 ;
+}
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/lib/fd/cmdbr.h b/lib/fd/cmdbr.h
index 2ddeced..8495e05 100644
--- a/lib/fd/cmdbr.h
+++ b/lib/fd/cmdbr.h
@@ -25,7 +25,7 @@
#ifndef FD_cmd_h_
#define FD_cmd_h_
-#include "include/forms.h"
+#include "../include/forms.h"
/* Callbacks, globals and object handlers */
diff --git a/lib/fonts.c b/lib/fonts.c
index fa770f1..f08a92c 100644
--- a/lib/fonts.c
+++ b/lib/fonts.c
@@ -62,7 +62,7 @@ static char * get_fname( const char *,
*
*/
-static const char *fnts[ FL_MAXFONTS ] =
+static const char *default_fonts[ ] =
{
"-*-helvetica-medium-r-*-*-*-?-*-*-p-*-*-*",
"-*-helvetica-bold-r-*-*-*-?-*-*-p-*-*-*",
@@ -83,6 +83,8 @@ static const char *fnts[ FL_MAXFONTS ] =
"-*-charter-bold-r-*-*-*-?-*-*-*-*-*-*",
"-*-charter-medium-i-*-*-*-?-*-*-*-*-*-*",
"-*-charter-bold-i-*-*-*-?-*-*-*-*-*-*",
+
+ NULL
};
static FL_FONT fl_fonts[ FL_MAXFONTS ];
@@ -105,8 +107,8 @@ static const char *cv_fname( const char * );
void
fli_init_font( void )
{
- FL_FONT *flf = fl_fonts;
- const char *const *f = fnts;
+ FL_FONT *flf;
+ const char *const *f = default_fonts;
static int initialized;
if ( initialized )
@@ -114,10 +116,10 @@ fli_init_font( void )
initialized = 1;
- /* If fl_set_font_name() is called before fl_initialize(), we need to
- keep the change */
+ /* If fl_set_font_name() has been called before fl_initialize() we need
+ to keep the changes */
- for ( ; *f; f++, flf++ )
+ for ( flf = fl_fonts, f = default_fonts; *f; f++, flf++ )
if ( ! *flf->fname )
strcpy( flf->fname, *f );
@@ -218,7 +220,8 @@ fl_set_font_name( int n,
int i;
for ( i = 0; i < flf->nsize; i++ )
- XFreeFont( flx->display, flf->fs[ i ] );
+ if ( flf->size[ i ] > 0 )
+ XFreeFont( flx->display, flf->fs[ i ] );
*flf->fname = '0円';
}
@@ -252,6 +255,20 @@ fl_set_font_name_f( int n,
/***************************************
+ * Returns the name of the indexed font
+ ***************************************/
+
+const char *
+fl_get_font_name( int n )
+{
+ if ( n < 0 || n >= FL_MAXFONTS )
+ return NULL;
+
+ return fl_fonts[ n ].fname;
+}
+
+
+/***************************************
* List built-in fonts
***************************************/
@@ -288,11 +305,22 @@ try_get_font_struct( int numb,
FL_FONT *flf = fl_fonts;
XFontStruct *fs = NULL;
int n = 0,
- i;
+ i,
+ is_subst = 0;
if ( special_style( numb ) )
numb %= FL_SHADOW_STYLE;
+ /* Avoid trying to use negative or zero font size */
+
+ if ( size <= 0 )
+ {
+ M_info( "try_get_font_struct",
+ "Bad font size requested (%d), using %d istead",
+ size, size < 0 ? -size : 1 );
+ size = size < 0 ? -size : 1;
+ }
+
flf = fl_fonts + numb;
if ( numb < 0 || numb >= FL_MAXFONTS || ! *flf->fname )
@@ -315,56 +343,40 @@ try_get_font_struct( int numb,
strcpy( fli_curfnt, get_fname( flf->fname, size ) );
- /* Search for requested size */
+ /* Search for requested size in the cached fonts - fonts with "negative
+ sizes" are replacement fonts found before */
- for ( fs = NULL, i = 0; i < flf->nsize; i++ )
- if ( size == flf->size[ i ] )
- {
+ for ( fs = NULL, i = 0; ! fs && i < flf->nsize; i++ )
+ if ( size == abs( flf->size[ i ] ) )
fs = flf->fs[ i ];
-#if FL_DEBUG >= ML_DEBUG
- M_debug( "try_get_font_struct", "Cache hit: %s",
- fl_cur_fontname );
-#endif
- }
- /* If requested font is not found or cache is full, get the destination
- cache for this size */
+ /* Return it if font has already been loaded (i.e. is in the cache) */
- if ( ! fs && flf->nsize == FL_MAX_FONTSIZES )
- {
- XFreeFont( flx->display, flf->fs[ FL_MAX_FONTSIZES - 1 ] );
- flf->nsize--;
- }
+ if ( fs )
+ return fs;
- /* Font is not cached, try to load it */
+ /* Try to load the font */
- if ( ! fs )
- {
- n = flf->nsize;
- flf->fs[ n ] = XLoadQueryFont( flx->display, fli_curfnt );
+ fs = XLoadQueryFont( flx->display, fli_curfnt );
- if ( ( fs = flf->fs[ n ] ) )
- {
- flf->size[ n ] = size;
- flf->nsize++;
- }
- }
-
- if ( ! fs && with_fail )
- return NULL;
-
- /* Didn't get it. Try to find a substitute */
+ /* If that didn't work try to find a replacement font, i.e. an already
+ loaded font with the nearest size or, if there's none, the very most
+ basic font. */
if ( ! fs )
{
- int mdiff = 1000,
- k = -1;
+ int mdiff = INT_MAX,
+ k;
- M_warn( "try_get_font_struct", "Can't load %s", fli_curfnt );
+ if ( with_fail )
+ return NULL;
- /* Search for a replacement */
+ M_warn( "try_get_font_struct", "Can't load %s, using subsitute",
+ fli_curfnt );
- for ( i = 0; i < flf->nsize; i++ )
+ /* Search for a replacement with the nearest size */
+
+ for ( k = -1, i = 0; i < flf->nsize; i++ )
{
if ( mdiff > FL_abs( size - flf->size[ i ] ) )
{
@@ -373,16 +385,26 @@ try_get_font_struct( int numb,
}
}
- fs = k == -1 ? ( flx->fs ? flx->fs : defaultfs ) : flf->fs[ k ];
+ if ( k != -1 )
+ fs = flf->fs[ k ];
+ else
+ fs = flx->fs ? flx->fs : defaultfs;
- /* If we did not get it this time, we won't get it next time either,
- so replace it with whatever we found */
+ is_subst = 1;
+ }
- flf->size[ flf->nsize ] = size;
- flf->fs[ flf->nsize ] = fs;
- flf->nsize++;
+ /* If cache is full make space at the end */
+
+ if ( flf->nsize == FL_MAX_FONTSIZES )
+ {
+ if ( flf->size[ FL_MAX_FONTSIZES - 1 ] > 0 )
+ XFreeFont( flx->display, flf->fs[ FL_MAX_FONTSIZES - 1 ] );
+ flf->nsize--;
}
+ flf->fs[ flf->nsize ] = fs;
+ flf->size[ flf->nsize++ ] = is_subst ? - size : size;
+
/* Here we are guranteed a valid font handle although there is no
gurantee the font handle corresponds to the font requested */
diff --git a/lib/include/Basic.h b/lib/include/Basic.h
index 347f23e..42ff722 100644
--- a/lib/include/Basic.h
+++ b/lib/include/Basic.h
@@ -1350,6 +1350,8 @@ FL_EXPORT int fl_set_font_name_f( int n,
const char * fmt,
... );
+FL_EXPORT const char * fl_get_font_name( int n );
+
FL_EXPORT void fl_set_font( int numb,
int size );
diff --git a/lib/private/flvasprintf.h b/lib/private/flvasprintf.h
index 9d7b8ce..3c8094d 100644
--- a/lib/private/flvasprintf.h
+++ b/lib/private/flvasprintf.h
@@ -25,7 +25,7 @@
#include <stdio.h>
#include <stdarg.h>
-#include "private/flsnprintf.h"
+#include "flsnprintf.h"
#if defined ( HAVE_VASPRINTF ) && ! defined ( HAVE_DECL_VASPRINTF )
int
diff --git a/lib/private/pbrowser.h b/lib/private/pbrowser.h
index ac23984..74cdd52 100644
--- a/lib/private/pbrowser.h
+++ b/lib/private/pbrowser.h
@@ -27,8 +27,8 @@
#ifndef PBROWSER_H_
#define PBROWSER_H_
-#include "private/ptbox.h"
-#include "private/pscrollbar.h"
+#include "ptbox.h"
+#include "pscrollbar.h"
typedef struct {
diff --git a/lib/private/pscrollbar.h b/lib/private/pscrollbar.h
index ebded25..ee6b2ae 100644
--- a/lib/private/pscrollbar.h
+++ b/lib/private/pscrollbar.h
@@ -22,7 +22,7 @@
#ifndef PSCROLLBAR_H_
#define PSCROLLBAR_H_
-#include "private/pslider.h"
+#include "pslider.h"
typedef struct {
FL_OBJECT * slider;
generated by cgit v1.2.3 (git 2.25.1) at 2025年11月25日 21:29:58 +0000

AltStyle によって変換されたページ (->オリジナル) /