summaryrefslogtreecommitdiff
path: root/xinput_ivy.h
diff options
context:
space:
mode:
Diffstat (limited to 'xinput_ivy.h')
-rw-r--r--xinput_ivy.h3249
1 files changed, 3249 insertions, 0 deletions
diff --git a/xinput_ivy.h b/xinput_ivy.h
new file mode 100644
index 0000000..c0d71a5
--- /dev/null
+++ b/xinput_ivy.h
@@ -0,0 +1,3249 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ANSI C code generated by SmartEiffel The GNU Eiffel Compiler, Eiffel tools and libraries
+Release 2.4 (??? September ??th 2007) [????]
+Copyright (C), 1994-2002 - INRIA - LORIA - ESIAL UHP Nancy 1 - FRANCE
+Copyright (C), 2003-2005 - INRIA - LORIA - IUT Charlemagne Nancy 2 - FRANCE
+D.COLNET, P.RIBET, C.ADRIAN, V.CROIZIER F.MERIZEN - SmartEiffel@loria.fr
+http://SmartEiffel.loria.fr
+C Compiler options used: -pipe -O3 -fomit-frame-pointer
+*/
+
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+/*
+ This file (SmartEiffel/sys/runtime/base.h) contains all basic Eiffel
+ type definitions.
+ This file is automatically included in the header for all modes of
+ compilation: -boost, -no_check, -require_check, -ensure_check, ...
+ This file is also included in the header of any cecil file (when the
+ -cecil option is used).
+ This file is also included in the header file of C++ wrappers (when
+ using the external "C++" clause).
+*/
+
+#ifndef _BASE_H
+#define _BASE_H
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) /* VC8+ */
+# ifndef _CRT_SECURE_NO_DEPRECATE
+# define _CRT_SECURE_NO_DEPRECATE
+# endif
+# ifndef _CRT_NONSTDC_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+# endif
+#endif /* VC8+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <float.h>
+#include <setjmp.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#if defined __USE_POSIX || defined __unix__ || defined _POSIX_C_SOURCE
+# include <unistd.h>
+#endif
+#if !defined(WIN32) && \
+ (defined(WINVER) || defined(_WIN32_WINNT) || defined(_WIN32) || \
+ defined(__WIN32__) || defined(__TOS_WIN__) || defined(_MSC_VER))
+# define WIN32 1
+#endif
+#ifdef WIN32
+# include <windows.h>
+#else
+# ifndef O_RDONLY
+# include <sys/file.h>
+# endif
+# ifndef O_RDONLY
+# define O_RDONLY 0000
+# endif
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER < 1600) /* MSVC older than v10 */
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed int int32_t;
+typedef signed __int64 int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned __int64 uint64_t;
+# define PRId8 "d"
+# define PRId16 "d"
+# define PRId32 "d"
+# define PRId64 "I64d"
+# define INT8_C(c) c
+# define INT16_C(c) c
+# define INT32_C(c) c
+# define INT64_C(c) c ## i64
+#elif defined(__WATCOMC__) && (__WATCOMC__ <= 1220) /* WATCOM 12.2 or lower */
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed long int int32_t;
+typedef signed __int64 int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned long int uint32_t;
+typedef unsigned __int64 uint64_t;
+# define PRId8 "d"
+# define PRId16 "d"
+# define PRId32 "d"
+# define PRId64 "Ld"
+# define INT8_C(c) c
+# define INT16_C(c) c
+# define INT32_C(c) c ## L
+# define INT64_C(c) c ## i64
+#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x600) /* Borland before 6.0 */
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed long int int32_t;
+typedef signed __int64 int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned long int uint32_t;
+typedef unsigned __int64 uint64_t;
+# define PRId8 "d"
+# define PRId16 "d"
+# define PRId32 "ld"
+# define PRId64 "I64Ld"
+# define INT8_C(c) c
+# define INT16_C(c) c
+# define INT32_C(c) c ## L
+# define INT64_C(c) c ## i64
+#elif defined(__FreeBSD__) && (__FreeBSD__ < 5) /* FreeBSD before 5.0 */ && !defined (_SYS_INTTYPES_H_)
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed long int int32_t;
+typedef signed long long int int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned long int uint32_t;
+typedef unsigned long long int uint64_t;
+#elif defined(__CYGWIN__) && defined(__BIT_TYPES_DEFINED__) /* Cygwin defines intxx_t in sys/types.h instead of inttypes.h */
+# include <cygwin/version.h>
+# if defined(CYGWIN_VERSION_DLL_MAJOR) && (CYGWIN_VERSION_DLL_MAJOR<1005)
+typedef unsigned char uint8_t;
+typedef __uint16_t uint16_t;
+typedef __uint32_t uint32_t;
+typedef __uint64_t uint64_t;
+# endif
+#elif defined(SASC)
+# error("Too old SAS/C compiler, sorry.");
+#elif defined(__SASC__)
+# if (__SASC__ < 750 ) /* SAS/C before 7.50 */
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed long int int32_t;
+typedef signed long long int int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned long int uint32_t;
+typedef unsigned long long int uint64_t;
+# endif
+#else
+# include <inttypes.h>
+# if !defined(INT8_MAX) && defined(INT16_MAX)
+/* int8_t is not mandatory */
+typedef int_least8_t int8_t;
+# endif
+#endif
+
+#if !defined(PRId16)
+# define PRId8 "d"
+# define PRId16 "d"
+# define PRId32 "ld"
+# define PRId64 "lld"
+#elif !defined(PRId8)
+# define PRId8 "d"
+#endif
+#if !defined(INT16_C)
+# define INT8_C(c) c
+# define INT16_C(c) c
+# define INT32_C(c) c ## L
+# define INT64_C(c) c ## LL
+#elif !defined(INT8_C)
+# define INT8_C(c) c
+#endif
+#if !defined(INT16_MIN)
+# define INT8_MIN (-INT8_C(127)-1)
+# define INT8_MAX (INT8_C(127))
+# define INT16_MIN (-INT16_C(32767)-1)
+# define INT16_MAX (INT16_C(32767))
+# define INT32_MIN (-INT32_C(2147483647)-1)
+# define INT32_MAX (INT32_C(2147483647))
+# define INT64_MIN (-INT64_C(9223372036854775807)-1)
+# define INT64_MAX (INT64_C(9223372036854775807))
+#elif !defined(INT8_MIN)
+# define INT8_MIN (-INT8_C(127)-1)
+#endif
+
+
+/*
+ Endian stuff
+*/
+#if defined(BSD) && (BSD >= 199103)
+# include <machine/endian.h>
+#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
+/* bi-endian processor, current mode should be find in machine/endian.h file */
+# include <machine/endian.h>
+#elif defined(linux)
+# include <endian.h>
+#endif
+
+
+
+#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER)
+# define BYTE_ORDER __BYTE_ORDER
+#endif
+
+#if !defined(LITTLE_ENDIAN) && defined(__LITTLE_ENDIAN)
+# define LITTLE_ENDIAN __LITTLE_ENDIAN
+#endif
+
+#if !defined(BIG_ENDIAN) && defined(__BIG_ENDIAN)
+# define BIG_ENDIAN __BIG_ENDIAN
+#endif
+
+#if !defined(LITTLE_ENDIAN)
+# define LITTLE_ENDIAN 1234 /* LSB first (vax, pc) */
+#endif
+#if !defined(BIG_ENDIAN)
+# define BIG_ENDIAN 4321 /* MSB first (IBM, net) */
+#endif
+#if !defined(PDP_ENDIAN)
+# define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */
+#endif
+
+#if !defined(BYTE_ORDER) && defined(BIT_ZERO_ON_RIGHT)
+# define BYTE_ORDER LITTLE_ENDIAN
+#elif !defined(BYTE_ORDER) && defined(BIT_ZERO_ON_LEFT)
+# define BYTE_ORDER BIG_ENDIAN
+#elif !defined(BYTE_ORDER)
+
+/* ARM */
+# if defined(__ARMEL__)
+# define BYTE_ORDER LITTLE_ENDIAN
+# elif defined(__ARMEB__)
+# define BYTE_ORDER BIG_ENDIAN
+# elif defined(__arm__)
+# error "ARMs are bi-endian processors. Endianness is unknown for this system, please drop an e-mail to SmartEiffel@loria.fr"
+# endif
+
+/* HP RISC */
+# if defined(__hppa__) || defined(__hppa) || defined(__hp9000) || \
+ defined(__hp9000s300) || defined(hp9000s300) || \
+ defined(__hp9000s700) || defined(hp9000s700) || \
+ defined(__hp9000s800) || defined(hp9000s800) || defined(hp9000s820)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* IBM */
+# if defined(ibm032) || defined(ibm370) || defined(_IBMR2) || \
+ defined(IBM370) || defined(__MVS__)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* Intel x86 */
+# if defined(i386) || defined(__i386__) || defined(__i386) || \
+ defined(_M_IX86) || defined(_X86_) || defined(__THW_INTEL) || \
+ defined(sun386)
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+/* Intel Itanium */
+# if defined(__ia64__) || defined(_IA64) || defined(__IA64__) || \
+ defined(_M_IA64)
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+/* Nationnal Semiconductor 32000 serie */
+# if defined(ns32000)
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+/* Motorola 68000 */
+# if defined(mc68000) || defined(is68k) || defined(macII) || defined(m68k)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* MIPS */
+# if defined(MIPSEL) || defined(_MIPSEL)
+# define BYTE_ORDER LITTLE_ENDIAN
+# elif defined(MIPSEB) || defined(_MIPSEB)
+# define BYTE_ORDER BIG_ENDIAN
+# elif defined(__mips__) || defined(__mips) || defined(__MIPS__)
+# error "MIPS are bi-endian processors. Endianness is unknown for this system, please drop an e-mail to SmartEiffel@loria.fr"
+# endif
+
+/* Power PC */
+/* this processor is bi-endian, how to know if little-endian is set? */
+# if defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) || \
+ defined(__ppc__) || defined(__ppc) || defined(_M_PPC) || \
+ defined(__PPC) || defined(__PPC__)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* Pyramid 9810 */
+# if defined(pyr)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* RS/6000 */
+# if defined(__THW_RS6000) || defined(_IBMR2) || defined(_POWER) || \
+ defined(_ARCH_PWR) || defined(_ARCH_PWR2)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* SPARC */
+# if defined(__sparc__) || defined(sparc) || defined(__sparc)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* CCI Tahoe */
+# if defined(tahoe)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+
+/* VAX */
+# if defined(vax) || defined(VAX) || defined(__vax__) || defined(_vax_) || \
+ defined(__vax) || defined(__VAX)
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+/* ELATE is a virtual OS with a little endian Virtual Processor */
+# if defined(__ELATE__)
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+/* Miscellaneous little endian */
+# if defined(wrltitan)
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+
+/* Miscellaneous big endian */
+# if defined(apollo) || defined(__convex__) || defined(_CRAY) || defined(sel)
+# define BYTE_ORDER BIG_ENDIAN
+# endif
+#endif
+
+
+#if !defined(BYTE_ORDER)
+# error "Unknown byte order. Add your system in above macros once you know your system type. Please drop an e-mail to SmartEiffel@loria.fr"
+#endif
+#if (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN)
+# error "Only little-endian and big-endian are valid at this time. Please drop an e-mail to SmartEiffel@loria.fr"
+#endif
+
+
+/*
+ Byte swapping stuff
+*/
+extern void copy_swap_16(const uint16_t *src, uint16_t *dest, int count);
+
+
+/* Because ANSI C EXIT_* are not always defined: */
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+
+/*
+ On Linux glibc systems, we need to use sig.* versions of jmp_buf,
+ setjmp and longjmp to preserve the signal handling context.
+ Currently, the way I figured to detect this is if _SIGSET_H_types has
+ been defined in /usr/include/setjmp.h.
+
+ NOTE: with gcc, -ansi is used for SmartEiffel generated files EXCEPT in
+ -no_split mode. ANSI only recognizes the non-sig versions.
+*/
+#if (defined(_SIGSET_H_types) && !defined(__STRICT_ANSI__))
+# define JMP_BUF sigjmp_buf
+# define SETJMP(x) sigsetjmp( (x), 1)
+# define LONGJMP siglongjmp
+#else
+# define JMP_BUF jmp_buf
+# define SETJMP(x) setjmp( (x) )
+# define LONGJMP longjmp
+#endif
+
+/*
+ Type to store reference objects Id:
+ */
+typedef int Tid;
+typedef struct S0 T0;
+struct S0{Tid id;};
+
+/*
+ The default channel used to print runtime error messages:
+*/
+#define SE_ERR stderr
+
+/*
+ Eiffel type INTEGER_8 is #1:
+*/
+typedef int8_t T1;
+#define EIF_INTEGER_8 T1
+#define M1 (INT8_C(0))
+#define EIF_INTEGER_8_BITS (CHAR_BIT)
+#define EIF_MINIMUM_INTEGER_8 (INT8_MIN)
+#define EIF_MAXIMUM_INTEGER_8 (INT8_MAX)
+
+/*
+ Eiffel type INTEGER_16 is #10:
+*/
+typedef int16_t T10;
+#define EIF_INTEGER_16 T10
+#define M10 (INT16_C(0))
+#define EIF_INTEGER_16_BITS (CHAR_BIT*sizeof(T10t))
+#define EIF_MINIMUM_INTEGER_16 (INT16_MIN) /*-32768*/
+#define EIF_MAXIMUM_INTEGER_16 (INT16_MAX) /*+32767*/
+
+/*
+ Eiffel type INTEGER or INTEGER_32 is #2:
+*/
+typedef int32_t T2;
+#define EIF_INTEGER T2
+#define EIF_INTEGER_32 T2
+#define M2 (INT32_C(0))
+#define EIF_INTEGER_BITS ((T2)(CHAR_BIT*sizeof(T2)))
+#define EIF_INTEGER_32_BITS EIF_INTEGER_BITS
+#define EIF_MINIMUM_INTEGER (INT32_MIN)
+#define EIF_MAXIMUM_INTEGER (INT32_MAX)
+
+/*
+ Eiffel type INTEGER_64 is #11:
+*/
+typedef int64_t T11;
+#define EIF_INTEGER_64 T11
+#define M11 (INT64_C(0))
+#define EIF_INTEGER_64_BITS (CHAR_BIT*sizeof(T11))
+#define EIF_MINIMUM_INTEGER_64 (INT64_MIN)
+#define EIF_MAXIMUM_INTEGER_64 (INT64_MAX)
+
+/*
+ Eiffel type CHARACTER is #3:
+*/
+typedef unsigned char T3;
+#define EIF_CHARACTER T3
+#define M3 (0)
+#define EIF_CHARACTER_BITS (CHAR_BIT)
+#define EIF_MINIMUM_CHARACTER_CODE (0)
+#define EIF_MAXIMUM_CHARACTER_CODE (255)
+#define T3code(x) ((T10)(x))
+#define T3to_integer(x) ((signed char)(x))
+#define T3to_integer_8(x) ((signed char)(x))
+#define T3to_bit(x) (x)
+
+/*
+ Eiffel type REAL_32 is #4:
+*/
+typedef float T4;
+typedef T4 real32_t;
+#define EIF_REAL_32 T4
+#define M4 (0.0)
+#define EIF_MINIMUM_REAL_32 (-(FLT_MAX))
+#define EIF_MAXIMUM_REAL_32 (FLT_MAX)
+
+/*
+ Eiffel type REAL or REAL_64 is #5:
+*/
+typedef double T5;
+typedef T5 real64_t;
+#define EIF_REAL_64 T5
+#define M5 (0.0)
+#define EIF_MINIMUM_REAL_64 (-(DBL_MAX))
+#define EIF_MINIMUM_REAL (EIF_MINIMUM_REAL_64)
+#define EIF_MAXIMUM_REAL_64 (DBL_MAX)
+#define EIF_MAXIMUM_REAL (EIF_MAXIMUM_REAL_64)
+
+/*
+ Eiffel type REAL_EXTENDED is #12:
+*/
+typedef long double T12;
+typedef T12 real_extended_t;
+#define EIF_REAL_EXTENDED T12
+#define M12 (0.0)
+#define EIF_MINIMUM_REAL_EXTENDED (-(DBL_MAX))
+#define EIF_MAXIMUM_REAL_EXTENDED (DBL_MAX)
+
+/*
+ Eiffel type BOOLEAN is #6:
+*/
+typedef char T6;
+#define EIF_BOOLEAN T6
+#define M6 (0)
+#define EIF_BOOLEAN_BITS (CHAR_BIT)
+
+/*
+ Eiffel type POINTER is #8:
+*/
+typedef void* T8;
+#define EIF_POINTER T8
+/* Sometimes, NULL is defined as 0 */
+#define M8 ((void*)NULL)
+#define EIF_POINTER_BITS (CHAR_BIT*sizeof(void*))
+
+/*
+ To use type STRING on the C side:
+*/
+#define EIF_STRING T7*
+
+/*
+ Some Other EIF_* defined in ETL:
+*/
+#define eif_access(x) ((char*)(x))
+#define EIF_REFERENCE T0*
+#define EIF_OBJ T0*
+#define EIF_OBJECT EIF_OBJ
+
+/*
+ Wrappers for `malloc' and `calloc':
+*/
+void* se_malloc(size_t size);
+void* se_calloc(size_t nmemb, size_t size);
+void* se_realloc(void* src, size_t size);
+
+/*
+ die method.
+ */
+void se_die(int code);
+
+/*
+ Runtime hooks. They allow different runtime modules to be quite independant. In time, they will also allow
+ thread-safe operations.
+
+ Currently known modules:
+ - boost
+ - no_check
+ - sedb
+ - gc
+ - print stack
+ - profile
+ - plugins
+
+ However, currently only profile uses this method. It will be extended to other modules later.
+
+ The currently defined hooks are described in the enum below (the names should be self-explanatory).
+ */
+typedef enum {
+ SE_HANDLE_EXCEPTION_SET, /* called when an exception handler is set, prior to SETJMP */
+ SE_HANDLE_EXCEPTION_CLEAR, /* called when a feature with an exception handler normally returns */
+ SE_HANDLE_EXCEPTION_THROWN, /* called when an exception is thrown, prior to the LONGJMP */
+ SE_HANDLE_ENTER_GC, /* called when gc_start() begins */
+ SE_HANDLE_EXIT_GC, /* called when gc_start() ends */
+ SE_HANDLE_ENTER_PRINT_STACK, /* called when se_print_run_time_stack() begins */
+ SE_HANDLE_EXIT_PRINT_STACK, /* called when se_print_run_time_stack() ends */
+ SE_HANDLE_NO_MORE_MEMORY, /* called by se_alloc() and co */
+ SE_HANDLE_SEDB_BREAK, /* called when sedb stops the program */
+ SE_HANDLE_SEDB_CONTINUE, /* called when sedb continues the program */
+ SE_HANDLE_RUNTIME_ERROR, /* called when a runtime error is raised and not caught by an exception. Cannot be raised in boost mode. */
+ SE_HANDLE_DIE_WITH_CODE, /* called when the program is stopped by the die_with_code feature. The data points to the int code. */
+ SE_HANDLE_NORMAL_EXIT /* called when the program correctly terminates. The data is null. */
+} se_handler_action_t;
+
+extern int handlers_count;
+typedef void se_runtime_handler_t(se_handler_action_t action, void*data);
+void register_handler(se_runtime_handler_t*handler);
+void _handle(se_handler_action_t action, void*data);
+
+#define handle(action,data) do{if(handlers_count>0)_handle(action,data);}while(0)
+
+#endif /* #ifndef _BASE_H */
+#define SE_BOOST 1
+#define SE_GC_LIB 1
+/* C Header Pass 1: */
+typedef union _se_agent se_agent;
+typedef struct _se_agent0 se_agent0;
+typedef struct S110 T110;
+typedef struct S120 T120;
+typedef struct S189 T189;
+typedef T0 T202;
+typedef struct S246 T246;
+typedef struct S176 T176;
+typedef struct S128 T128;
+typedef struct S286 T286;
+typedef struct S277 T277;
+typedef struct S271 T271;
+typedef struct S268 T268;
+typedef struct S266 T266;
+typedef struct S265 T265;
+typedef struct S264 T264;
+typedef struct S139 T139;
+typedef struct S142 T142;
+typedef struct S141 T141;
+typedef struct S258 T258;
+typedef struct S256 T256;
+typedef struct S216 T216;
+typedef struct S254 T254;
+typedef struct S253 T253;
+typedef struct S252 T252;
+typedef struct S249 T249;
+typedef struct S245 T245;
+typedef struct S244 T244;
+typedef struct S243 T243;
+typedef struct S146 T146;
+typedef struct S148 T148;
+typedef struct S147 T147;
+typedef struct S236 T236;
+typedef struct S235 T235;
+typedef struct S234 T234;
+typedef struct S232 T232;
+typedef struct S230 T230;
+typedef struct S228 T228;
+typedef struct S227 T227;
+typedef struct S226 T226;
+typedef struct S225 T225;
+typedef struct S158 T158;
+typedef struct S54 T54;
+typedef struct S223 T223;
+typedef struct S222 T222;
+typedef struct S221 T221;
+typedef struct S67 T67;
+typedef struct S7 T7;
+typedef struct S218 T218;
+typedef struct S217 T217;
+typedef struct S215 T215;
+typedef struct S214 T214;
+typedef struct S213 T213;
+typedef struct S211 T211;
+typedef struct S208 T208;
+typedef struct S207 T207;
+typedef struct S206 T206;
+typedef struct S131 T131;
+typedef struct S130 T130;
+typedef struct S72 T72;
+typedef struct S53 T53;
+typedef void*T46;
+typedef struct S175 T175;
+typedef struct S205 T205;
+typedef int T143;
+typedef struct S204 T204;
+typedef struct S43 T43;
+typedef struct S69 T69;
+typedef struct S70 T70;
+typedef struct S64 T64;
+typedef struct S25 T25;
+/* C Header Pass 2: */
+typedef T0**T293;
+#define M293 NULL
+typedef T0**T292;
+#define M292 NULL
+typedef T0**T291;
+#define M291 NULL
+typedef T0**T290;
+#define M290 NULL
+typedef T0**T289;
+#define M289 NULL
+typedef T0**T288;
+#define M288 NULL
+typedef T0**T287;
+#define M287 NULL
+typedef T0**T284;
+#define M284 NULL
+typedef T0**T281;
+#define M281 NULL
+typedef T0**T276;
+#define M276 NULL
+typedef T0**T270;
+#define M270 NULL
+typedef T0**T267;
+#define M267 NULL
+typedef T0**T263;
+#define M263 NULL
+typedef T0**T262;
+#define M262 NULL
+typedef T0**T261;
+#define M261 NULL
+typedef T0**T260;
+#define M260 NULL
+typedef T0**T259;
+#define M259 NULL
+typedef T0**T257;
+#define M257 NULL
+typedef T0**T255;
+#define M255 NULL
+typedef T0**T251;
+#define M251 NULL
+typedef T2*T250;
+#define M250 NULL
+typedef T0**T247;
+#define M247 NULL
+typedef T0**T239;
+#define M239 NULL
+typedef T0**T238;
+#define M238 NULL
+typedef T0**T237;
+#define M237 NULL
+typedef T0**T220;
+#define M220 NULL
+typedef T0**T219;
+#define M219 NULL
+typedef T8*T212;
+#define M212 NULL
+typedef T3*T9;
+#define M9 NULL
+/* C Header Pass 3: */
+struct S189{T11 _time_memory;};
+int se_cmpT189(T189 o1,T189 o2);
+struct S176{T189 _time;T2 _microsecond;};
+int se_cmpT176(T176 o1,T176 o2);
+/* C Header Pass 4: */
+struct S110{Tid id;T0* _stream;};
+extern T110 M110;
+struct S120{Tid id;T0* _input_stream;};
+extern T120 M120;
+extern T189 M189;
+extern T176 M176;
+struct S286{Tid id;T0* _item;};
+extern T286 M286;
+struct S277{Tid id;T0* _item;};
+extern T277 M277;
+struct S271{Tid id;T0* _item;};
+extern T271 M271;
+struct S268{Tid id;T0* _item;};
+extern T268 M268;
+struct S266{T0* _item;T8 _key;T0* _next;};
+extern T266 M266;
+struct S265{Tid id;T0* _item;};
+extern T265 M265;
+struct S264{T0* _item;T2 _key;T0* _next;};
+extern T264 M264;
+struct S258{Tid id;T0* _item;};
+extern T258 M258;
+struct S256{T0* _item;T0* _key;T0* _next;};
+extern T256 M256;
+struct S254{T290 _storage;T2 _capacity;T2 _upper;};
+extern T254 M254;
+struct S253{Tid id;T0* _item;};
+extern T253 M253;
+struct S252{T2 _item;T2 _key;T0* _next;};
+extern T252 M252;
+struct S249{Tid id;T0* _item;};
+extern T249 M249;
+struct S246{T0* _item;T0* _key;T0* _next;};
+extern T246 M246;
+struct S245{Tid id;T0* _item;};
+extern T245 M245;
+struct S244{T289 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T244 M244;
+struct S243{Tid id;T0* _item;};
+extern T243 M243;
+struct S147{T6 _queryable;T2 _timeout;T176 _expiration;T6 _expiration_valid;T6 _current_time_valid;T8 _read_set;T2 _read_size;T8 _write_set;T2 _write_size;T8 _exception_set;T2 _exception_size;T2 _highest;};
+extern T147 M147;
+struct S236{T288 _storage;T2 _capacity;T2 _upper;};
+extern T236 M236;
+struct S235{T287 _storage;T2 _capacity;T2 _upper;};
+extern T235 M235;
+struct S234{T284 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T234 M234;
+struct S232{T281 _storage;T2 _capacity;T2 _upper;};
+extern T232 M232;
+struct S230{T276 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T230 M230;
+struct S228{T270 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T228 M228;
+struct S227{T267 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T227 M227;
+struct S226{T263 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T226 M226;
+struct S225{T262 _storage;T2 _capacity;T2 _upper;};
+extern T225 M225;
+struct S158{T0* _container;};
+extern T158 M158;
+struct S54{T0* _filter;T9 _buffer;T2 _capacity;};
+extern T54 M54;
+struct S139{T2 _key_count;T2 _minimum_code;T2 _maximum_code;};
+extern T139 M139;
+struct S223{T261 _storage;T2 _capacity;T2 _upper;};
+extern T223 M223;
+struct S142{T2 _buttons_count;};
+extern T142 M142;
+struct S222{T260 _storage;T2 _capacity;T2 _upper;};
+extern T222 M222;
+struct S141{T6 _absolute;T2 _motion_buffer_size;T0* _minimums;T0* _maximums;T0* _resolutions;};
+extern T141 M141;
+struct S221{T259 _storage;T2 _capacity;T2 _upper;};
+extern T221 M221;
+struct S218{T257 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T218 M218;
+struct S217{T255 _storage;T2 _capacity;T2 _upper;};
+extern T217 M217;
+struct S216{T0* _callbacks;T2 _last;T2 _index;};
+extern T216 M216;
+struct S215{T251 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T215 M215;
+struct S214{T250 _storage;T2 _capacity;T2 _upper;};
+extern T214 M214;
+struct S213{T250 _storage;T2 _capacity;T2 _upper;T2 _lower;T2 _storage_lower;};
+extern T213 M213;
+struct S211{T247 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T211 M211;
+struct S208{T239 _buckets;T2 _capacity;T2 _count;T2 _cache_user;T0* _free_nodes;};
+extern T208 M208;
+struct S146{Tid id;T0* _stream_exception;T0* _can_read;T6 _is_connected;T2 _filtered_descriptor;T8 _delete_function;T8 _read_function;T8 _data;};
+extern T146 M146;
+struct S207{T238 _storage;T2 _capacity;T2 _upper;};
+extern T207 M207;
+struct S206{T237 _storage;T2 _capacity;T2 _upper;};
+extern T206 M206;
+struct S148{T0* _job_list;T0* _finished_jobs;T0* _ready_jobs;T0* _events;T6 _pause;T6 _break;};
+extern T148 M148;
+struct S131{Tid id;T0* _can_read;T2 _descriptor;};
+extern T131 M131;
+struct S130{T0* _loop_stack;T6 _stop;T0* _vision;T0* _event_catcher_stack;};
+extern T130 M130;
+struct S128{Tid id;T2 _priority;T6 _done;T2 _current_event_type;T0* _widget;T0* _event;T0* _pointer_move_event;T0* _geometry_change_event;T0* _extension_devices;T0* _graphic_connection;T6 _suspend;T0* _event_catcher_found;};
+extern T128 M128;
+struct S72{T8 _widget;T2 _pos_y;T2 _pos_x;T0* _layout;T2 _width;T2 _height;T2 _min_height;T2 _min_width;T2 _std_width;T2 _std_height;T0* _child;};
+extern T72 M72;
+struct S53{T0* _filter;T2 _buffer_position;T9 _buffer;T2 _capacity;};
+extern T53 M53;
+extern T46 M46;
+struct S175{T0* _devices;};
+extern T175 M175;
+struct S205{T220 _storage;T2 _capacity;T2 _upper;};
+extern T205 M205;
+extern T143 M143;
+struct S204{T219 _storage;T2 _capacity;T2 _upper;};
+extern T204 M204;
+struct S67{T2 _device_id;T0* _name;T0* _type;T6 _is_current_pointer;T6 _is_current_keyboard;T6 _is_available_extension;T0* _key_capabilities;T0* _button_capabilities;T0* _axes_capabilities;T8 _x_device;T0* _actions;T0* _events_indexes;T0* _events_id;T8 _events_classes;};
+extern T67 M67;
+struct S43{T0* _filter;};
+extern T43 M43;
+struct S69{T0* _xinput_ivy;T2 _y_offset;T2 _x_offset;T5 _prediction_time;T2 _ignored_counter;T2 _ignore_rate;T0* _button_message_header;T0* _pointer_message_header;T2 _old_presure;T0* _y_history;T0* _x_history;T0* _time_history;T2 _predicted_y;T2 _predicted_x;T5 _a2y;T5 _a2x;T5 _t0;T5 _y2;T5 _x2;T5 _s2y;T5 _s2x;T5 _s2yn;T5 _s2xn;T5 _t1;T5 _t2;};
+extern T69 M69;
+struct S7{T9 _storage;T2 _count;T2 _capacity;};
+extern T7 M7;
+struct S70{Tid id;T2 _priority;T6 _started;T0* _pattern_list;T0* _callback_list;T2 _destination_count;T0* _tmp_client_list;T6 _done;T0* _events_set;T0* _ivy_clients;T0* _application_name_;T0* _ready_message_;};
+extern T70 M70;
+struct S64{T2 _display_width;T2 _display_height;T0* _loop_stack;T0* _event_catcher;T0* _graphic_connection;T0* _widget;};
+extern T64 M64;
+struct S25{T0* _ivy_bus;T0* _application_name;T0* _device_id;T0* _screen;int _x11;T2 _left_pad_position;T2 _right_pad_position;T0* _ivy;};
+extern T25 M25;
+extern char*s25_0;
+extern char*s25_21190322;
+extern char*s25_314746909;
+extern char*s69_190991;
+extern char*s69_475;
+extern char*s13_1432888418;
+extern char*s69_697;
+extern char*s69_1961093439;
+extern char*s69_104371129;
+extern char*s25_44143;
+extern char*s69_104371267;
+extern char*s69_1699147265;
+extern char*s13_1210;
+extern char*s69_1756148648;
+extern char*s69_1756148653;
+extern char*s25_1948078333;
+extern char*s69_1461;
+extern char*s69_1466;
+extern char*s69_23436791;
+extern char*s25_1666922512;
+extern char*s69_56246305;
+extern char*s25_1957581;
+extern char*s25_1403610646;
+extern char*s69_4725661;
+extern char*s69_4725666;
+extern char*s69_4738061;
+extern char*s25_1213754110;
+extern char*s25_765567725;
+extern char*s69_2179769;
+extern char*s25_751291742;
+extern char*s25_1554692325;
+extern char*s25_357338863;
+extern char*s69_2676;
+extern char*s69_1874520032;
+extern char*s69_1619665677;
+extern char*s25_1491411490;
+extern char*s25_4487261;
+extern char*s69_1940108584;
+extern char*s25_694149733;
+extern char*s64_1686724329;
+extern char*s69_586741066;
+extern char*s25_703548632;
+extern char*s25_89639;
+extern char*s69_15980;
+extern char*s69_397440;
+extern char*s25_69208946;
+extern char*s69_188916;
+extern char*s25_447643634;
+extern char*s69_2057747851;
+extern char*s25_3479972;
+extern char*s25_557679246;
+extern char*s25_1638797568;
+extern char*s25_1260406502;
+extern char*s69_22702411;
+extern char*s69_22702416;
+extern char*s25_946366;
+extern char*s69_1501987274;
+extern char*s25_382517595;
+extern char*s69_952626;
+extern char*s69_2112369621;
+extern char*s69_10739017;
+extern char*s69_10739024;
+extern char*s69_10739030;
+extern char*s70_202554;
+extern char*s143_1472358418;
+extern char*s25_1959886733;
+extern char*s69_1257860908;
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#define SE_BOOST 1
+void se_print_run_time_stack (void);
+void se_signal_handler(int sig);
+#define FSOC_SIZE 8192
+#define RSOC_SIZE 32768
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+/*
+ This file (SmartEiffel/sys/runtime/gc_lib.h) is automatically included
+ when the Garbage Collector is used (default, unless option -no_gc has
+ been selected).
+*/
+
+#define SE_GC_LIB 1
+
+#define SE_GC_LOW_MEMORY_STRATEGY 0
+#define SE_GC_HIGH_MEMORY_STRATEGY 1
+#define SE_GC_DEFAULT_MEMORY_STRATEGY 2
+extern int se_gc_strategy;
+
+
+#define RSOH_UNMARKED 15253
+#define RSOH_FREE 1
+#define RSOH_MARKED 2
+
+
+#define FSOH_UNMARKED ((void *) 1)
+#define FSOH_MARKED ((void *) 2)
+
+/* To codify the state and the type of some Memory Chunk, we are
+ using the following definitions :
+*/
+#define FSO_FREE_CHUNK (-2)
+#define RSO_FREE_CHUNK (-1)
+#define RSO_USED_CHUNK ( 0)
+#define FSO_STORE_CHUNK ( 1)
+#define FSO_USED_CHUNK ( 2)
+#define FREE_CHUNK(x) ((x)<0)
+
+/* Minimum size for a store area in a ReSizable Objects Chunk :
+ */
+#define RSOC_MIN_STORE 512
+
+/* The default channel used to print -gc_info flag information :
+*/
+#define SE_GCINFO SE_ERR
+
+extern int collector_counter; /* MEMORY.collector_counter */
+
+typedef struct s_mch mch; /* Memory Chunk Header. */
+typedef struct s_fsoc fsoc; /* Fixed Size Objects Chunk. */
+typedef union u_rsoh rsoh; /* ReSizable Object Header. */
+typedef struct s_fll_rsoh fll_rsoh;
+typedef struct s_rsoc rsoc; /* ReSizable Objects Chunk. */
+typedef struct s_na_env na_env; /* Native Array ENVironment. */
+
+
+struct s_mch{
+ unsigned int size; /* In number of bytes (actual argument of malloc).*/
+ int state_type; /* One value in : RSO_USED_CHUNK,
+ FREE_CHUNK, FSO_STORE_CHUNK, FSO_USED_CHUNK */
+ void(*amfp)(mch*,void*); /* Align Mark Function Pointer. */
+ void(*swfp)(mch*); /* SWeep Function Pointer. */
+};
+
+struct s_fsoc{
+ mch header; /* Common header for fsoc and rsoc. */
+ fsoc* next; /* The next one when in free list (fsocfl). */
+ int count_minus_one;
+ double first_object;
+};
+
+typedef struct _rso_header rso_header;
+
+struct _rso_header{
+ unsigned int size;
+ int magic_flag; /* RSOH_MARKED when used,
+ RSOH_FREE when free,
+ else RSOH_UNMARKED */
+};
+
+typedef union u_fso_header fso_header;
+
+union u_fso_header{
+ void* flag;
+ void* next;/* accurately typed as gcXX* in actual fso headers */
+};
+
+union u_rsoh{
+ rso_header header;
+ double padding;
+};
+
+struct s_fll_rsoh {
+ rso_header rsoh_field;
+ fll_rsoh* nextflol;
+};
+
+struct s_rsoc{
+ mch header; /* Common header for fsoc and rsoc. */
+ unsigned int isize; /* Initial size (at malloc time) to detect split chunks. */
+ rsoc* next; /* Next one when in free list (rsocfl) or in na_env->chunk_list. */
+ fll_rsoh*free_list_of_large; /* Intra. free list. */
+ na_env*nae;
+ rsoh first_header;
+};
+
+struct s_na_env{
+ unsigned int store_left;
+ rsoh* store;
+ rsoc*store_chunk;
+ rsoc*chunk_list; /*List of chunks of that type that have a non-null free_list_of_large*/
+ void (*gc_mark)(T0*);
+ int space_used;
+};
+
+extern void**stack_bottom;
+extern mch**gcmt;
+extern int gcmt_max;
+extern int gcmt_used;
+extern int gc_is_off;
+extern fsoc* fsocfl;
+extern unsigned int fsoc_count;
+extern unsigned int rsoc_count;
+extern void*gcmt_tail_addr;
+
+void gc_sweep(void);
+void gc_mark(void* p);
+mch* gc_find_chunk(void* p);
+int gc_stack_size(void);
+int garbage_delayed(void);
+void gc_update_ceils(void);
+char*new_na(na_env*nae,unsigned int size);
+unsigned int fsocfl_count(void);
+unsigned int rsocfl_count(void);
+void gc_dispose_before_exit(void);
+void mark_stack_and_registers (void);
+fsoc* gc_fsoc_get1(void);
+fsoc* gc_fsoc_get2(void);
+
+int gc_memory_used(void);
+/*The generic se_agent0 definition:*/
+struct _se_agent0{
+Tid id;
+Tid creation_mold_id;
+void(*afp)(se_agent*);void(*gc_mark_agent_mold)(se_agent*);
+int(*eq)(se_agent*,se_agent*);
+};
+#include "X11/extensions/XInput.h"
+
+#define x_list_input_devices(list_size) (XListInputDevices(dpy, list_size))
+// XDeviceInfo * XListInputDevices(Display * display, int * returned_list_size);
+
+
+#define x_device_info_id(device_list, index) (((XDeviceInfo *)device_list)[index].id)
+//XID x_device_info_id(XDeviceInfo * device_list, int index)
+
+#define x_device_info_type(device_list, index) (((XDeviceInfo *)device_list)[index].type)
+//Atom x_device_info_type(XDeviceInfo * device_list, int index)
+
+#define x_device_info_name(device_list, index) (((XDeviceInfo *)device_list)[index].name)
+//char * x_device_info_name(XDeviceInfo * device_list, int index)
+
+#define x_device_info_num_classes(device_list, index) (((XDeviceInfo *)device_list)[index].num_classes)
+//int x_device_info_num_classes(XDeviceInfo * device_list, int index)
+
+#define x_device_info_class_info(device_list, index) (((XDeviceInfo *)device_list)[index].inputclassinfo)
+//XAnyClassPtr x_device_info_class_info(XDeviceInfo * device_list, int index)
+
+#define x_next_class_info(class_info) ((XAnyClassPtr)((char *)class_info + ((XAnyClassPtr)class_info)->length))
+//XAnyClassPtr x_next_class_info(XAnyClassPtr class_info)
+
+#define x_is_key_class_info(class_info) (((XAnyClassPtr)class_info)->class == KeyClass)
+//bool x_is_key_class_info(XAnyClassPtr class_info)
+
+#define x_is_button_class_info(class_info) (((XAnyClassPtr)class_info)->class == ButtonClass)
+//bool x_is_button_class_info(XAnyClassPtr class_info)
+
+#define x_is_valuator_class_info(class_info) (((XAnyClassPtr)class_info)->class == ValuatorClass)
+//bool x_is_valuator_class_info(XAnyClassPtr class_info)
+
+#define x_device_info_is_pointer(device_list, index) (((XDeviceInfo *)device_list)[index].use == IsXPointer)
+//bool x_device_info_is_pointer(XDeviceInfo * device_list, int index)
+
+#define x_device_info_is_keyboard(device_list, index) (((XDeviceInfo *)device_list)[index].use == IsXKeyboard)
+//bool x_device_info_is_keyboard(XDeviceInfo * device_list, int index)
+
+#define x_device_info_is_available_extension(device_list, index) (((XDeviceInfo *)device_list)[index].use == IsXExtensionDevice)
+//bool x_device_info_is_available_extension(XDeviceInfo * device_list, int index)
+
+#define x_button_info_num_buttons(info) (((XButtonInfo *)info)->num_buttons)
+//short x_button_info_num_buttons(XButtonInfo * info)
+
+#define x_valuator_info_minimum(info, index) (((XValuatorInfo *)info)->axes[index].min_value)
+//int x_valuator_info_minimum(XValuatorInfo * info, int index)
+
+#define x_valuator_info_maximum(info, index) (((XValuatorInfo *)info)->axes[index].max_value)
+//int x_valuator_info_maximum(XValuatorInfo * info, int index)
+
+#define x_valuator_info_resolution(info, index) (((XValuatorInfo *)info)->axes[index].resolution)
+//int x_valuator_info_resolution(XValuatorInfo * info, int index)
+
+#define x_open_device(device_id) XOpenDevice(dpy, device_id)
+//XDevice * x_open_device(XID device_id)
+
+#define x_close_device(device) XCloseDevice(dpy, device)
+//void x_close_device(XDevice * device)
+
+#define x_device_motion_event_data(index) (((XDeviceMotionEvent*)&last_event)->axis_data[index])
+//int x_device_motion_event_data(int index)
+
+#define x_device_proximity_event_data(index) (((XProximityNotifyEvent*)&last_event)->axis_data[index])
+//int x_device_proximity_event_data(int index)
+
+#define x_device_button_event_number (((XDeviceButtonEvent*)&last_event)->button)
+//int x_device_button_event_number
+
+#define x_device_event_time (((XDeviceButtonEvent*)&last_event)->time)
+//int x_device_event_time
+
+extern void x_key_info_init(XKeyInfo *info, int *min_k, int *max_k, int *num_k);
+
+extern void x_valuator_info_init(XValuatorInfo *info, int *nb_axes, int *is_absolute, int *buf_size);
+
+extern void * x_device_init_events(XDevice * device, int * events_id);
+// Result is XEventClass *
+
+void x_device_select_events(void * window, XEventClass * events_classes);
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#ifdef WIN32
+# include <winuser.h>
+# include <mmsystem.h> /* needed for timeGetTime() */
+void vision_init(void);
+# ifndef WM_MOUSEWHEEL
+# define WM_MOUSEWHEEL 0x20A
+# endif
+#else
+# include <X11/Xlib.h>
+# include <X11/Xutil.h>
+# include <X11/Xatom.h>
+#endif
+
+#ifndef VISION_DEBUG
+# define vision_check_call(x) (x)
+# define vision_check(x)
+#else
+
+/* Executes x; if it returns zero, exits. */
+#define vision_check_call(x) \
+ do { \
+ if (!(x)) { \
+ fprintf(stderr, "Call failed line %d in %s (call was: \"%s\")\n", __LINE__, __FILE__, #x); exit(1); \
+ } \
+ } while (0)
+
+/* If x is non-zero, exits. */
+#define vision_check(x) \
+ do { \
+ if (!(x)) { \
+ fprintf(stderr, "Check failed line %d in %s (test was: \"%s\")\n", __LINE__, __FILE__, #x); exit(1); \
+ } \
+ } while (0)
+
+#endif
+
+
+#define basic_vision_init _basic_vision_init()
+#define basic_vision_next_event _basic_vision_next_event()
+#define basic_vision_character _basic_vision_character()
+#define basic_vision_key _basic_vision_key()
+extern int _basic_vision_init(void);
+extern int _basic_vision_next_event(void);
+extern int _basic_vision_character(void);
+extern int basic_vision_get_keysym(char*);
+extern void *basic_vision_get_color(int *r, int *g, int *b);
+
+#ifdef WIN32
+ extern HDC hdc;
+ extern const char *CLASSNAME;
+ extern HINSTANCE main_hInstance;
+ extern int main_nCmdShow;
+ extern MSG last_message;
+ extern HANDLE sem_thread_finished_work;
+ extern HANDLE sem_new_window;
+ extern void display_error(int num);
+ enum commands {CREATE_WINDOW = 1, SET_TITLE, CLEAR_AREA, MAP_WINDOW, MOVE_WINDOW, SET_FOCUS};
+ struct cmd_list {struct cmd_list * next; enum commands cmd_type; int param1; int param2; int param3; int param4; int param5; int param6;};
+ extern volatile struct cmd_list *first_cmd;
+ extern volatile struct cmd_list *first_free_cmd;
+ extern HANDLE sem_cmd_ready;
+
+ /* paint message informations */
+ extern PAINTSTRUCT paintstruct;
+
+ extern RECT windowRect; /* new window size definition */
+ extern DWORD message_thread_id;
+ extern int decorated_window_x_offset;
+ extern int decorated_window_y_offset;
+ extern int decorated_window_width_offset;
+ extern int decorated_window_height_offset;
+
+# define basic_vision_real_event (last_message.message)
+# define basic_vision_flush ((void)0)
+# define basic_vision_display_width (GetSystemMetrics(SM_CXSCREEN))
+# define basic_vision_display_height (GetSystemMetrics(SM_CYSCREEN))
+# define basic_vision_event_widget ((void *)(last_message.hwnd))
+# define basic_vision_pointer_x ((short)LOWORD(last_message.lParam))
+# define basic_vision_pointer_y ((short)HIWORD(last_message.lParam))
+# define basic_vision_pointer_x_root (last_message.pt.x)
+# define basic_vision_pointer_y_root (last_message.pt.y)
+# define basic_vision_event_time (last_message.time)
+# define basic_vision_expose_x (paintstruct.rcPaint.left)
+# define basic_vision_expose_y (paintstruct.rcPaint.top)
+# define basic_vision_expose_width (paintstruct.rcPaint.right-paintstruct.rcPaint.left)
+# define basic_vision_expose_height (paintstruct.rcPaint.bottom-paintstruct.rcPaint.top)
+# define basic_vision_geometry_x (windowRect.left)
+# define basic_vision_geometry_y (windowRect.top)
+# define basic_vision_geometry_width (windowRect.right)
+# define basic_vision_geometry_height (windowRect.bottom)
+# define basic_vision_geometry_border (GetSystemMetrics(SM_CXBORDER)) /* --TODO: X and Y may have different values */
+# define basic_vision_is_left_down (GetAsyncKeyState(button_swapped?VK_RBUTTON:VK_LBUTTON)>>15)
+# define basic_vision_is_middle_down (GetAsyncKeyState(VK_MBUTTON)>>15)
+# define basic_vision_is_right_down (GetAsyncKeyState(button_swapped?VK_LBUTTON:VK_RBUTTON)>>15)
+
+# define basic_vision_extension_device_id (fprintf(stderr, "No extension currently available for Windows.\n"))
+
+extern int button_swapped;
+
+#else
+ extern Display *dpy; /* X server connection */
+ extern XEvent last_event;
+
+ extern Atom atom_DELWIN;
+ extern Atom atom_PROTOCOLS;
+
+# define basic_vision_real_event (last_event.type)
+# define basic_vision_flush XFlush(dpy)
+# define basic_vision_display_width (DisplayWidth(dpy,DefaultScreen(dpy)))
+# define basic_vision_display_height (DisplayHeight(dpy,DefaultScreen(dpy)))
+# define basic_vision_event_widget ((void *)(last_event.xany.window))
+# define basic_vision_pointer_x (((XButtonEvent*)&last_event)->x)
+# define basic_vision_pointer_y (((XButtonEvent*)&last_event)->y)
+# define basic_vision_pointer_x_root (((XButtonEvent*)&last_event)->x_root)
+# define basic_vision_pointer_y_root (((XButtonEvent*)&last_event)->y_root)
+# define basic_vision_event_time (((XButtonEvent*)&last_event)->time)
+# define basic_vision_expose_x (((XExposeEvent*)&last_event)->x)
+# define basic_vision_expose_y (((XExposeEvent*)&last_event)->y)
+# define basic_vision_expose_width (((XExposeEvent*)&last_event)->width)
+# define basic_vision_expose_height (((XExposeEvent*)&last_event)->height)
+# define basic_vision_geometry_x (((XConfigureEvent*)&last_event)->x)
+# define basic_vision_geometry_y (((XConfigureEvent*)&last_event)->y)
+# define basic_vision_geometry_width (((XConfigureEvent*)&last_event)->width)
+# define basic_vision_geometry_height (((XConfigureEvent*)&last_event)->height)
+# define basic_vision_geometry_border (((XConfigureEvent*)&last_event)->border_width)
+# define basic_vision_is_left_down ((((XCrossingEvent*)&last_event)->state & Button1Mask) != 0 )
+# define basic_vision_is_middle_down ((((XCrossingEvent*)&last_event)->state & Button2Mask) != 0 )
+# define basic_vision_is_right_down ((((XCrossingEvent*)&last_event)->state & Button3Mask) != 0 )
+
+/* For X Input extension */
+# define basic_vision_extension_device_id (((XMotionEvent*)&last_event)->root) /* TRICK (should be deviceid of Device Events */
+
+#endif
+
+int vision_available(void);
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#include <errno.h>
+
+#define text_file_read_open(p) (fopen(((char*)(p)),"r"))
+#define text_file_write_open(p) (fopen(((char*)(p)),"w"))
+#define text_file_write_append(p) (fopen(((char*)(p)),"a"))
+#define text_file_read_write_open(p) (fopen(((char*)(p)),"r+"))
+#define text_file_read_write_append(p) (fopen(((char*)(p)),"a+"))
+#define binary_file_read_open(p) (fopen(((char*)(p)),"rb"))
+#define binary_file_write_open(p) (fopen(((char*)(p)),"wb"))
+#define binary_file_write_append(p) (fopen(((char*)(p)),"ab"))
+#define io_fclose(p) (fclose((FILE*)(p)))
+#define io_flush(p) (fflush((FILE*)(p)))
+#define io_getc(f) (getc(((FILE*)(f))))
+#define io_putc(b, f) (putc((b),((FILE*)(f))))
+#define io_ungetc(b, f) (ungetc((b), (FILE*)(f)))
+#define io_fread(b, n, f) (fread((void *)(b),(size_t)(1), (size_t)(n),(FILE*)(f)))
+#define io_fwrite(b, n, f) (fwrite((void *)(b),(size_t)(1), (size_t)(n),(FILE*)(f)))
+#define io_feof(f) (feof(((FILE*)(f))))
+#define io_rename(o, n) (rename(((char*)(o)),((char*)(n))))
+#define io_remove(f) (remove(((char*)(f))))
+#define io_fseek(f, o) (fseek((FILE*)(f),(o),SEEK_SET))
+#define io_ftell(f) ((EIF_INTEGER_64)ftell((FILE*)(f)))
+
+#if defined __USE_POSIX || defined __unix__ || defined _POSIX_C_SOURCE
+# define read_stdin(b, s) (read(STDIN_FILENO, b, s))
+#else
+ extern int read_stdin(EIF_CHARACTER *buffer, int size);
+#endif
+
+extern void io_copy(char*source, char*target);
+extern int io_file_exists(char*source);
+extern int io_same_physical_file(char*path1,char*path2);
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#include <time.h>
+
+#define basic_time ((EIF_INTEGER_64)time(NULL))
+EIF_REAL_64 time_difftime(time_t t2, time_t t1);
+EIF_INTEGER time_getyear(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_getmonth(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_getday(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_gethour(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_getminute(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_getsecond(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_getyday(time_t t, EIF_INTEGER m);
+EIF_INTEGER time_getwday(time_t t, EIF_INTEGER m);
+EIF_BOOLEAN time_is_summer_time_used(time_t t);
+EIF_INTEGER_64 time_mktime(EIF_INTEGER year, EIF_INTEGER mon,
+ EIF_INTEGER mday, EIF_INTEGER hour,
+ EIF_INTEGER min, EIF_INTEGER sec);
+void time_add_second(EIF_INTEGER_64 *t, EIF_INTEGER s);
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#define sprintf_pointer(buffer, pointer) sprintf((char*)(buffer),"%p",pointer)
+void sprintf_real_64(EIF_CHARACTER* b, EIF_CHARACTER m, int32_t f, real64_t r);
+void sprintf_real_extended(EIF_CHARACTER* b, EIF_CHARACTER m, int32_t f, real_extended_t r);
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#define pointer_hash_code(p) (((unsigned int)(unsigned long)(p))>>1)
+#define pointer_to_any(p) ((T0*)(p))
+#define pointer_plus(p, o) (((char*)(p))+o)
+
+#define x_get_atom_name(atom) XGetAtomName(dpy, (Atom)atom)
+
+extern int x_query_extension(char * extension_name);
+
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#ifdef WIN32
+/*# include <windows.h> done in base.h */
+# ifndef _MSC_VER
+# include <winsock2.h>
+# endif
+ extern int win32_msg;
+ extern int win32_msg_ready;
+ extern HANDLE sem_msg_ready;
+#else
+# include <sys/time.h>
+/*# include <unistd.h> done in base.h */
+/*# include <sys/types.h> done in base.h */
+#endif
+
+#ifdef WIN32
+# define sequencer_watch(set, fd) do { \
+ if ((fd)==-1) win32_msg=1; else FD_SET((SOCKET)fd, (fd_set*)(set)); \
+} while(0)
+#else
+# define sequencer_watch(set, fd) FD_SET(fd, (fd_set*)(set))
+#endif
+
+
+#ifdef WIN32
+/****TODO: fd evaluated twice. */
+# define sequencer_is_ready(set, fd) (EIF_BOOLEAN)(((fd)==-1)?win32_msg_ready:FD_ISSET(fd, (fd_set*)(set)))
+#else
+# define sequencer_is_ready(set, fd) FD_ISSET(fd, (fd_set*)(set))
+#endif
+
+
+#ifdef WIN32
+# define sequencer_reset(set) do{win32_msg=0;win32_msg_ready=FALSE;FD_ZERO((fd_set*)(set));}while(0)
+#else
+# define sequencer_reset(set) FD_ZERO((fd_set*)(set))
+#endif
+
+#define sequencer_create_set (_sequencer_create_set())
+EIF_POINTER _sequencer_create_set(void);
+int sequencer_wait(int n, fd_set *read_set, int read_size, fd_set *write_set, int write_size, fd_set *exception_set, int exception_size, int s, int us);
+
+#define sequencer_descriptor(file) (fileno((FILE *)(file)))
+#include "Ivy/ivy.h"
+#include "Ivy/ivyloop.h"
+#include "Ivy/ivysocket.h"
+
+extern void ivy_init(char * application_name, char * ready_text, void * eiffel_object, void * channel_up_callback, void * channel_down_callback, void * agent_call_callback);
+
+extern void * bind_message(char * pattern, void * agent);
+
+#define send_message(txt) IvySendMsg("%s", txt)
+#define IvyIdle IvyIdle()
+#define read_callback(read_func, channel, descriptor, data) ((void (*)(void *, int, void *))read_func)(channel, descriptor, data)
+#define delete_callback(delete_func, data) ((void (*)(void *))delete_func)(data)
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#ifndef WIN32
+# include <sys/time.h>
+#endif
+
+extern EIF_INTEGER basic_microsecond_microsecond;
+extern EIF_INTEGER_64 basic_microsecond_time;
+#define basic_microsecond_update (_basic_microsecond_update())
+void _basic_microsecond_update(void);
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#ifdef WIN32
+extern void new_window(void);
+
+typedef struct window_description_s window_description;
+struct window_description_s {
+ HWND Current;
+ HBRUSH background;
+ HBITMAP background_pixmap; /* if non-void, use this pixmap for background
+ painting. Useful for Win95 only */
+ struct window_description_s *parent;
+ int marked;
+ int min_width;
+ int max_width;
+ int min_height;
+ int max_height;
+ int decorated;
+};
+
+extern window_description screen_desc;
+
+# define basic_window_root_id NULL
+#else
+# define basic_window_root_id ((void*)DefaultRootWindow(dpy))
+#endif
+
+
+extern void * basic_window_create(int x, int y, int width, int height, void * parent, int decorate);
+
+extern void * basic_window_get_drawing_widget(void *window);
+
+extern char* basic_window_get_title(void *window);
+
+extern void basic_window_free_title(void *title);
+
+extern void basic_window_set_title(void *window, void *title);
+
+extern void basic_window_set_bg_color(void *window, void *color);
+
+extern void basic_window_set_bg_pixmap(void *window, void *pixmap);
+
+extern void basic_window_clear_no_expose(void *window);
+
+extern void basic_window_clear_area_no_expose(void *window, int x, int y, int w, int h);
+
+extern void basic_window_clear_area(void *window, int x, int y, int w, int h);
+
+extern void basic_window_set_kbd_focus(void *window);
+
+extern void basic_window_map(void *window);
+
+extern void basic_window_unmap(void *window);
+
+extern void basic_window_set_geometry(void *window,int x, int y, int w, int h);
+
+extern void basic_window_set_requisition(void *window, int min_w, int min_h, int max_w, int max_h);
+
+extern void basic_window_set_position(void *window, int x, int y);
+
+extern void basic_window_set_size(void *window, int x, int y, int width, int height);
+extern unsigned int fsoc_count_ceil;
+extern unsigned int rsoc_count_ceil;
+/*INTEGER_16*/T2 r10to_integer_32(T10 C);
+/*INTEGER_16*/T3 r10decimal_digit(T10 C);
+/*INTEGER_16*/void r10append_in(T10 C,T0* a1);
+extern T9 oBC101sprintf_buffer;
+/*REAL_64*/void r5append_in_format(T5 C,T0* a1,T2 a2);
+/*POINTER*/T2 r8hash_code(T8 C);
+/*INTEGER_32*/T6 r2in_range(T2 C,T2 a1,T2 a2);
+/*INTEGER_32*/T2 r2max(T2 C,T2 a1);
+/*INTEGER_32*/T3 r2decimal_digit(T2 C);
+/*INTEGER_32*/void r2append_in(T2 C,T0* a1);
+/*INTEGER_32*/T10 r2high_16(T2 C);
+/*CHARACTER*/T6 r3_ix_6261(T3 C,T3 a1);
+/*CHARACTER*/T6 r3_ix_6061(T3 C,T3 a1);
+/*CHARACTER*/T6 r3is_digit(T3 C);
+/*CHARACTER*/T1 r3value(T3 C);
+/*CHARACTER*/T6 r3is_separator(T3 C);
+/*CHARACTER*/T1 r3decimal_value(T3 C);
+/*BOOLEAN*/T6 r6_ix_or(T6 C,T6 a1);
+/*NATIVE_ARRAY[PROCEDURE[TUPLE[X_INPUT_DEVICE]]]*/void r290clear_all(T290 C,T2 a1);
+/*NATIVE_ARRAY[PROCEDURE[TUPLE[X_INPUT_DEVICE]]]*/T290 r290realloc(T290 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[PROCEDURE[TUPLE[X_INPUT_DEVICE]]]*/void r290copy_from(T290 C,T290 a1,T2 a2);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]]*/void r289clear_all(T289 C,T2 a1);
+/*NATIVE_ARRAY[JOB]*/void r288clear_all(T288 C,T2 a1);
+/*NATIVE_ARRAY[JOB]*/void r288remove(T288 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[JOB]*/T288 r288realloc(T288 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[JOB]*/void r288copy_from(T288 C,T288 a1,T2 a2);
+/*NATIVE_ARRAY[EVENT_CATCHER]*/void r287clear_all(T287 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[SIGNAL_0,SENSITIVE]]*/void r284clear_all(T284 C,T2 a1);
+/*NATIVE_ARRAY[DICTIONARY[SIGNAL_0,SENSITIVE]]*/void r281clear_all(T281 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]]*/void r276clear_all(T276 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]]*/void r270clear_all(T270 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[SENSITIVE,POINTER]]*/void r267clear_all(T267 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[EXTENSION_DEVICE,INTEGER_32]]*/void r263clear_all(T263 C,T2 a1);
+/*NATIVE_ARRAY[TOPLEVEL_WINDOW]*/void r262clear_all(T262 C,T2 a1);
+/*NATIVE_ARRAY[KEY_RANGE]*/void r261clear_all(T261 C,T2 a1);
+/*NATIVE_ARRAY[KEY_RANGE]*/T261 r261realloc(T261 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[KEY_RANGE]*/void r261copy_from(T261 C,T261 a1,T2 a2);
+/*NATIVE_ARRAY[BUTTON_RANGE]*/void r260clear_all(T260 C,T2 a1);
+/*NATIVE_ARRAY[BUTTON_RANGE]*/T260 r260realloc(T260 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[BUTTON_RANGE]*/void r260copy_from(T260 C,T260 a1,T2 a2);
+/*NATIVE_ARRAY[AXES_RANGE]*/void r259clear_all(T259 C,T2 a1);
+/*NATIVE_ARRAY[AXES_RANGE]*/T259 r259realloc(T259 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[AXES_RANGE]*/void r259copy_from(T259 C,T259 a1,T2 a2);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]]*/void r257clear_all(T257 C,T2 a1);
+/*NATIVE_ARRAY[SIGNAL_1[X_INPUT_DEVICE]]*/void r255clear_all(T255 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[INTEGER_32,INTEGER_32]]*/void r251clear_all(T251 C,T2 a1);
+/*NATIVE_ARRAY[INTEGER_32]*/void r250set_slice_with(T250 C,T2 a1,T2 a2,T2 a3);
+/*NATIVE_ARRAY[INTEGER_32]*/void r250clear_all(T250 C,T2 a1);
+/*NATIVE_ARRAY[INTEGER_32]*/void r250set_all_with(T250 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[INTEGER_32]*/T250 r250realloc(T250 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[INTEGER_32]*/void r250copy_from(T250 C,T250 a1,T2 a2);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[POINTER,STRING]]*/void r247clear_all(T247 C,T2 a1);
+/*NATIVE_ARRAY[HASHED_DICTIONARY_NODE[PROCEDURE[TUPLE[FAST_ARRAY[STRING]]],STRING]]*/void r239clear_all(T239 C,T2 a1);
+/*NATIVE_ARRAY[IVY_CLIENT]*/void r238clear_all(T238 C,T2 a1);
+/*NATIVE_ARRAY[IVY_CLIENT]*/void r238clear(T238 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[IVY_CLIENT]*/void r238remove(T238 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[IVY_CLIENT]*/T238 r238realloc(T238 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[IVY_CLIENT]*/void r238copy_from(T238 C,T238 a1,T2 a2);
+/*NATIVE_ARRAY[IVY_CLIENT]*/T2 r238fast_index_of(T238 C,T0* a1,T2 a2,T2 a3);
+/*NATIVE_ARRAY[LOOP_ITEM]*/void r237clear_all(T237 C,T2 a1);
+/*NATIVE_ARRAY[LOOP_ITEM]*/T237 r237realloc(T237 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[LOOP_ITEM]*/void r237copy_from(T237 C,T237 a1,T2 a2);
+/*NATIVE_ARRAY[X_INPUT_DEVICE]*/void r220clear_all(T220 C,T2 a1);
+/*NATIVE_ARRAY[STRING]*/void r219clear_all(T219 C,T2 a1);
+/*NATIVE_ARRAY[STRING]*/void r219clear(T219 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[STRING]*/T219 r219realloc(T219 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[STRING]*/void r219copy_from(T219 C,T219 a1,T2 a2);
+/*NATIVE_ARRAY[CHARACTER]*/void r9clear_all(T9 C,T2 a1);
+/*NATIVE_ARRAY[CHARACTER]*/T9 r9realloc(T9 C,T2 a1,T2 a2);
+/*NATIVE_ARRAY[CHARACTER]*/void r9copy_from(T9 C,T9 a1,T2 a2);
+/*NATIVE_ARRAY[CHARACTER]*/T2 r9fast_index_of(T9 C,T3 a1,T2 a2,T2 a3);
+/*NATIVE_ARRAY[CHARACTER]*/void r9copy_at(T9 C,T2 a1,T9 a2,T2 a3);
+/*NATIVE_ARRAY[CHARACTER]*/T6 r9fast_memcmp(T9 C,T9 a1,T2 a2);
+T7*create7from_external(T8 a1);
+/*STRING*/void r7put(T7* C,T3 a1,T2 a2);
+/*STRING*/void r7remove_between(T7* C,T2 a1,T2 a2);
+/*STRING*/T6 r7is_equal(T7* C,T0* a1);
+/*STRING*/void r7append(T7* C,T0* a1);
+/*STRING*/void r7copy(T7* C,T0* a1);
+/*STRING*/T6 r7is_real(T7* C);
+/*STRING*/T2 r7index_of(T7* C,T3 a1,T2 a2);
+/*STRING*/T6 r7is_integer(T7* C);
+/*STRING*/void r7remove_tail(T7* C,T2 a1);
+/*STRING*/T0* r7twin(T7* C);
+/*STRING*/void r7extend(T7* C,T3 a1);
+/*STRING*/T2 r7hash_code(T7* C);
+/*STRING*/void r7remove_last(T7* C);
+/*STRING*/void r7add_last(T7* C,T3 a1);
+/*STRING*/void r7ensure_capacity(T7* C,T2 a1);
+/*STRING*/void r7from_external_copy(T7* C,T8 a1);
+/*STRING*/void r7from_external(T7* C,T8 a1);
+/*STRING*/T8 r7to_external(T7* C);
+/*STRING*/T2 r7to_integer(T7* C);
+/*STRING*/void r7remove_head(T7* C,T2 a1);
+/*STRING*/void r7swap(T7* C,T2 a1,T2 a2);
+/*STRING*/T2 r7first_index_of(T7* C,T3 a1);
+/*STRING*/T5 r7to_real(T7* C);
+/*FAST_ARRAY[PROCEDURE[TUPLE[X_INPUT_DEVICE]]]*/void r254make(T254* C,T2 a1);
+/*FAST_ARRAY[PROCEDURE[TUPLE[X_INPUT_DEVICE]]]*/void r254add_last(T254* C,T0* a1);
+/*FAST_ARRAY[PROCEDURE[TUPLE[X_INPUT_DEVICE]]]*/void r254mark_native_arrays(T254* C);
+/*FAST_ARRAY[JOB]*/void r236remove(T236* C,T2 a1);
+/*FAST_ARRAY[JOB]*/void r236make(T236* C,T2 a1);
+/*FAST_ARRAY[JOB]*/void r236add_last(T236* C,T0* a1);
+/*FAST_ARRAY[JOB]*/T6 r236is_empty(T236* C);
+/*FAST_ARRAY[JOB]*/void r236mark_native_arrays(T236* C);
+/*FAST_ARRAY[JOB]*/void r236add(T236* C,T0* a1,T2 a2);
+/*FAST_ARRAY[JOB]*/void r236move(T236* C,T2 a1,T2 a2,T2 a3);
+/*FAST_ARRAY[EVENT_CATCHER]*/void r235make(T235* C,T2 a1);
+/*FAST_ARRAY[EVENT_CATCHER]*/void r235mark_native_arrays(T235* C);
+/*FAST_ARRAY[DICTIONARY[SIGNAL_0,SENSITIVE]]*/void r232make(T232* C,T2 a1);
+/*FAST_ARRAY[DICTIONARY[SIGNAL_0,SENSITIVE]]*/void r232mark_native_arrays(T232* C);
+/*FAST_ARRAY[TOPLEVEL_WINDOW]*/void r225make(T225* C,T2 a1);
+/*FAST_ARRAY[TOPLEVEL_WINDOW]*/void r225mark_native_arrays(T225* C);
+/*FAST_ARRAY[KEY_RANGE]*/void r223make(T223* C,T2 a1);
+/*FAST_ARRAY[KEY_RANGE]*/void r223add_last(T223* C,T0* a1);
+/*FAST_ARRAY[KEY_RANGE]*/void r223mark_native_arrays(T223* C);
+/*FAST_ARRAY[BUTTON_RANGE]*/void r222make(T222* C,T2 a1);
+/*FAST_ARRAY[BUTTON_RANGE]*/void r222add_last(T222* C,T0* a1);
+/*FAST_ARRAY[BUTTON_RANGE]*/void r222mark_native_arrays(T222* C);
+/*FAST_ARRAY[AXES_RANGE]*/void r221make(T221* C,T2 a1);
+/*FAST_ARRAY[AXES_RANGE]*/void r221add_last(T221* C,T0* a1);
+/*FAST_ARRAY[AXES_RANGE]*/void r221mark_native_arrays(T221* C);
+/*FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]]*/void r217make(T217* C,T2 a1);
+/*FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]]*/void r217mark_native_arrays(T217* C);
+/*FAST_ARRAY[INTEGER_32]*/void r214make(T214* C,T2 a1);
+/*FAST_ARRAY[INTEGER_32]*/T2 r214count(T214* C);
+/*FAST_ARRAY[IVY_CLIENT]*/void r207copy(T207* C,T0* a1);
+/*FAST_ARRAY[IVY_CLIENT]*/void r207remove(T207* C,T2 a1);
+/*FAST_ARRAY[IVY_CLIENT]*/void r207make(T207* C,T2 a1);
+/*FAST_ARRAY[IVY_CLIENT]*/void r207add_last(T207* C,T0* a1);
+/*FAST_ARRAY[IVY_CLIENT]*/void r207mark_native_arrays(T207* C);
+/*FAST_ARRAY[IVY_CLIENT]*/T2 r207fast_index_of(T207* C,T0* a1,T2 a2);
+/*FAST_ARRAY[LOOP_ITEM]*/void r206remove_last(T206* C);
+/*FAST_ARRAY[LOOP_ITEM]*/void r206make(T206* C,T2 a1);
+/*FAST_ARRAY[LOOP_ITEM]*/void r206add_last(T206* C,T0* a1);
+/*FAST_ARRAY[LOOP_ITEM]*/T0* r206last(T206* C);
+/*FAST_ARRAY[LOOP_ITEM]*/T6 r206is_empty(T206* C);
+/*FAST_ARRAY[LOOP_ITEM]*/void r206mark_native_arrays(T206* C);
+/*FAST_ARRAY[X_INPUT_DEVICE]*/void r205make(T205* C,T2 a1);
+/*FAST_ARRAY[X_INPUT_DEVICE]*/void r205mark_native_arrays(T205* C);
+/*FAST_ARRAY[STRING]*/void r204make(T204* C,T2 a1);
+/*FAST_ARRAY[STRING]*/void r204add_last(T204* C,T0* a1);
+/*FAST_ARRAY[STRING]*/void r204with_capacity(T204* C,T2 a1);
+/*FAST_ARRAY[STRING]*/void r204mark_native_arrays(T204* C);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[SIGNAL_0,SENSITIVE]]*/void r286set_item(T286* C,T0* a1);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]]*/void r277set_item(T277* C,T0* a1);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]]*/void r271set_item(T271* C,T0* a1);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[SENSITIVE,POINTER]]*/void r268set_item(T268* C,T0* a1);
+/*HASHED_DICTIONARY_NODE[SENSITIVE,POINTER]*/void r266make(T266* C,T0* a1,T8 a2,T0* a3);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[EXTENSION_DEVICE,INTEGER_32]]*/void r265set_item(T265* C,T0* a1);
+/*HASHED_DICTIONARY_NODE[EXTENSION_DEVICE,INTEGER_32]*/void r264make(T264* C,T0* a1,T2 a2,T0* a3);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]]*/void r258set_item(T258* C,T0* a1);
+/*HASHED_DICTIONARY_NODE[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/void r256make(T256* C,T0* a1,T0* a2,T0* a3);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[INTEGER_32,INTEGER_32]]*/void r253set_item(T253* C,T0* a1);
+/*HASHED_DICTIONARY_NODE[INTEGER_32,INTEGER_32]*/void r252make(T252* C,T2 a1,T2 a2,T0* a3);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[POINTER,STRING]]*/void r249set_item(T249* C,T0* a1);
+/*HASHED_DICTIONARY_NODE[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/void r246make(T246* C,T0* a1,T0* a2,T0* a3);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]]*/void r245set_item(T245* C,T0* a1);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/T2 r244prime_capacity(T2 a1);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/T2 r244prime_number_ceiling(T2 a1);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/T6 r244should_increase_capacity(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/T0* r244new_node(T244* C,T0* a1,T0* a2,T0* a3);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/void r244add(T244* C,T0* a1,T0* a2);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/T0* r244fast_reference_at(T244* C,T0* a1);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/void r244special_common_dictionary(T244* C,T0* a1);
+/*HASHED_DICTIONARY[WEAK_REFERENCE[ANY_HASHED_DICTIONARY_NODE],STRING]*/void r244increase_capacity(T244* C);
+/*WEAK_REFERENCE[HASHED_DICTIONARY_NODE[PROCEDURE[TUPLE[FAST_ARRAY[STRING]]],STRING]]*/void r243set_item(T243* C,T0* a1);
+/*HASHED_DICTIONARY[SIGNAL_0,SENSITIVE]*/void r234make(T234* C);
+/*HASHED_DICTIONARY[SIGNAL_0,SENSITIVE]*/T0* r234reference_at(T234* C,T0* a1);
+/*HASHED_DICTIONARY[SIGNAL_0,SENSITIVE]*/T6 r234key_safe_equal(T0* a1,T0* a2);
+extern T0*oBC136common_free_nodes;
+extern int fBC136common_free_nodes;
+/*HASHED_DICTIONARY[SIGNAL_0,SENSITIVE]*/T0* r234common_free_nodes(void);
+/*HASHED_DICTIONARY[SIGNAL_0,SENSITIVE]*/void r234create_with_capacity(T234* C,T2 a1);
+/*HASHED_DICTIONARY[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]*/void r230make(T230* C);
+/*HASHED_DICTIONARY[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]*/T0* r230reference_at(T230* C,T0* a1);
+/*HASHED_DICTIONARY[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]*/T6 r230key_safe_equal(T0* a1,T0* a2);
+/*HASHED_DICTIONARY[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]*/T0* r230common_free_nodes(void);
+/*HASHED_DICTIONARY[SIGNAL_2[INTEGER_32,INTEGER_32],SENSITIVE]*/void r230create_with_capacity(T230* C,T2 a1);
+/*HASHED_DICTIONARY[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]*/void r228make(T228* C);
+/*HASHED_DICTIONARY[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]*/T0* r228reference_at(T228* C,T0* a1);
+/*HASHED_DICTIONARY[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]*/T6 r228key_safe_equal(T0* a1,T0* a2);
+/*HASHED_DICTIONARY[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]*/T0* r228common_free_nodes(void);
+/*HASHED_DICTIONARY[SIGNAL_4[INTEGER_32,INTEGER_32,INTEGER_32,INTEGER_32],SENSITIVE]*/void r228create_with_capacity(T228* C,T2 a1);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/void r227make(T227* C);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T2 r227prime_capacity(T2 a1);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T2 r227prime_number_ceiling(T2 a1);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T6 r227should_increase_capacity(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T0* r227reference_at(T227* C,T8 a1);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T6 r227key_safe_equal(T8 a1,T8 a2);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T0* r227common_free_nodes(void);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/T0* r227new_node(T227* C,T0* a1,T8 a2,T0* a3);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/void r227add(T227* C,T0* a1,T8 a2);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/void r227create_with_capacity(T227* C,T2 a1);
+/*HASHED_DICTIONARY[SENSITIVE,POINTER]*/void r227increase_capacity(T227* C);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/void r226put(T226* C,T0* a1,T2 a2);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/void r226make(T226* C);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T2 r226prime_capacity(T2 a1);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T2 r226prime_number_ceiling(T2 a1);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T6 r226should_increase_capacity(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T0* r226reference_at(T226* C,T2 a1);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T6 r226key_safe_equal(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T0* r226common_free_nodes(void);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/T0* r226new_node(T226* C,T0* a1,T2 a2,T0* a3);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/void r226create_with_capacity(T226* C,T2 a1);
+/*HASHED_DICTIONARY[EXTENSION_DEVICE,INTEGER_32]*/void r226increase_capacity(T226* C);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/void r218make(T218* C);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T2 r218prime_capacity(T2 a1);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T2 r218prime_number_ceiling(T2 a1);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T0* r218reference_at(T218* C,T0* a1);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T6 r218should_increase_capacity(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T0* r218common_free_nodes(void);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T6 r218key_safe_equal(T0* a1,T0* a2);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/T0* r218new_node(T218* C,T0* a1,T0* a2,T0* a3);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/void r218add(T218* C,T0* a1,T0* a2);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/void r218create_with_capacity(T218* C,T2 a1);
+/*HASHED_DICTIONARY[FAST_ARRAY[SIGNAL_1[X_INPUT_DEVICE]],SENSITIVE]*/void r218increase_capacity(T218* C);
+/*SIGNAL_1[X_INPUT_DEVICE]*/void r216make(T216* C);
+/*SIGNAL_1[X_INPUT_DEVICE]*/void r216emit(T216* C,T0* a1);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/void r215put(T215* C,T2 a1,T2 a2);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/void r215make(T215* C);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T2 r215at(T215* C,T2 a1);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T2 r215prime_capacity(T2 a1);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T2 r215prime_number_ceiling(T2 a1);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T6 r215should_increase_capacity(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T6 r215key_safe_equal(T2 a1,T2 a2);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T0* r215common_free_nodes(void);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/T0* r215new_node(T215* C,T2 a1,T2 a2,T0* a3);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/void r215create_with_capacity(T215* C,T2 a1);
+/*HASHED_DICTIONARY[INTEGER_32,INTEGER_32]*/void r215increase_capacity(T215* C);
+/*RING_ARRAY[INTEGER_32]*/void r213put(T213* C,T2 a1,T2 a2);
+/*RING_ARRAY[INTEGER_32]*/void r213clear_all(T213* C);
+/*RING_ARRAY[INTEGER_32]*/void r213set_all_with(T213* C,T2 a1);
+/*RING_ARRAY[INTEGER_32]*/T2 r213wrap_point(T213* C);
+/*RING_ARRAY[INTEGER_32]*/void r213make_space_for_one(T213* C);
+/*RING_ARRAY[INTEGER_32]*/void r213squeeze_bubble(T213* C,T2 a1,T2 a2,T2 a3,T2 a4);
+/*RING_ARRAY[INTEGER_32]*/T2 r213storage_upper(T213* C);
+/*RING_ARRAY[INTEGER_32]*/T2 r213storage_index(T213* C,T2 a1);
+/*RING_ARRAY[INTEGER_32]*/void r213make(T213* C,T2 a1,T2 a2);
+/*RING_ARRAY[INTEGER_32]*/void r213add_last(T213* C,T2 a1);
+/*RING_ARRAY[INTEGER_32]*/T2 r213count(T213* C);
+/*RING_ARRAY[INTEGER_32]*/T6 r213is_empty(T213* C);
+/*RING_ARRAY[INTEGER_32]*/T2 r213item(T213* C,T2 a1);
+/*RING_ARRAY[INTEGER_32]*/void r213remove_first(T213* C);
+/*RING_ARRAY[INTEGER_32]*/void r213move(T213* C,T2 a1,T2 a2,T2 a3);
+/*HASHED_DICTIONARY[POINTER,STRING]*/void r211make(T211* C);
+/*HASHED_DICTIONARY[POINTER,STRING]*/T0* r211common_free_nodes(void);
+/*HASHED_DICTIONARY[POINTER,STRING]*/void r211create_with_capacity(T211* C,T2 a1);
+/*HASHED_DICTIONARY[PROCEDURE[TUPLE[FAST_ARRAY[STRING]]],STRING]*/void r208make(T208* C);
+/*HASHED_DICTIONARY[PROCEDURE[TUPLE[FAST_ARRAY[STRING]]],STRING]*/T0* r208common_free_nodes(void);
+/*HASHED_DICTIONARY[PROCEDURE[TUPLE[FAST_ARRAY[STRING]]],STRING]*/void r208create_with_capacity(T208* C,T2 a1);
+/*STREAM_EXCEPTION*/void r110expect(T110* C,T0* a1);
+/*STREAM_EXCEPTION*/T6 r110occurred(T110* C,T0* a1);
+/*STREAM_EXCEPTION*/void r110make(T110* C,T0* a1);
+/*CAN_READ_DATA_FROM_STREAM*/void r120expect(T120* C,T0* a1);
+/*CAN_READ_DATA_FROM_STREAM*/T6 r120occurred(T120* C,T0* a1);
+/*CAN_READ_DATA_FROM_STREAM*/void r120make(T120* C,T0* a1);
+/*TIME*/T6 r189_ix_60(T189* C,T189 a1);
+/*TIME*/T5 r189elapsed_seconds(T189* C,T189 a1);
+/*MICROSECOND_TIME*/T6 r176_ix_60(T176* C,T176 a1);
+/*MICROSECOND_TIME*/T5 r176elapsed_seconds(T176* C,T176 a1);
+/*MICROSECOND_TIME*/void r176update(T176* C);
+/*EVENTS_SET*/void r147reset(T147* C);
+/*EVENTS_SET*/void r147expect(T147* C,T0* a1);
+/*EVENTS_SET*/void r147make(T147* C);
+/*EVENTS_SET*/void r147when_data(T147* C,T0* a1);
+/*EVENTS_SET*/T6 r147is_data(T147* C,T0* a1);
+/*EVENTS_SET*/void r147when_exception(T147* C,T0* a1);
+/*EVENTS_SET*/T6 r147event_occurred(T147* C,T0* a1);
+/*EVENTS_SET*/T6 r147is_exception(T147* C,T0* a1);
+/*EVENTS_SET*/void r147wait(T147* C);
+/*ROOT_LAYOUT*/void r158set_container(T158* C,T0* a1);
+/*STD_INPUT*/void r54make(T54* C);
+/*STD_INPUT*/void r54dispose(T54* C);
+/*KEY_RANGE*/void r139make(T139* C,T8 a1);
+/*BUTTON_RANGE*/void r142make(T142* C,T8 a1);
+/*AXES_RANGE*/void r141make(T141* C,T8 a1);
+/*IVY_CLIENT*/T2 r146descriptor(T146* C);
+/*IVY_CLIENT*/T0* r146event_can_read(T146* C);
+/*IVY_CLIENT*/void r146make(T146* C,T2 a1,T8 a2,T8 a3,T8 a4);
+/*IVY_CLIENT*/void r146process_incomming_data(T146* C);
+/*IVY_CLIENT*/void r146disconnect(T146* C);
+/*IVY_CLIENT*/void r146dispose(T146* C);
+/*IVY_CLIENT*/T0* r146event_exception(T146* C);
+T148*create148make(void);
+/*LOOP_ITEM*/void r148add_job(T148* C,T0* a1);
+/*LOOP_ITEM*/void r148run(T148* C);
+/*LOOP_ITEM*/void r148make(T148* C);
+/*GRAPHIC_CONNECTION*/T0* r131event_can_read(T131* C);
+/*GRAPHIC_CONNECTION*/void r131set_descriptor(T131* C,T2 a1);
+/*GRAPHIC_CONNECTION*/T2 r131filtered_descriptor(T131* C);
+/*GRAPHIC_CONNECTION*/void r131dispose(T131* C);
+/*VISION_LOOP_STACK*/T0* r130current_loop(T130* C);
+/*VISION_LOOP_STACK*/void r130add_job(T130* C,T0* a1);
+/*VISION_LOOP_STACK*/void r130run(T130* C);
+/*VISION_LOOP_STACK*/void r130make(T130* C);
+/*VISION_LOOP_STACK*/void r130_P_129_make(T130* C);
+/*EVENT_CATCHER*/void r128add_extension(T128* C,T0* a1);
+/*EVENT_CATCHER*/T0* r128search_widget(T128* C,T8 a1);
+/*EVENT_CATCHER*/void r128prepare(T128* C,T0* a1);
+/*EVENT_CATCHER*/void r128emit_event(T128* C,T0* a1,T2 a2);
+/*EVENT_CATCHER*/T6 r128is_ready(T128* C,T0* a1);
+/*EVENT_CATCHER*/void r128continue(T128* C);
+extern T0*oBC26vision;
+extern int fBC26vision;
+/*EVENT_CATCHER*/T0* r128vision(void);
+extern T0*oBC13io;
+/*EVENT_CATCHER*/void r128make(T128* C,T0* a1);
+/*ROOT_WINDOW*/void r72default_create(T72* C);
+/*ROOT_WINDOW*/T0* r72vision(void);
+/*ROOT_WINDOW*/T2 r72hash_code(T72* C);
+/*ROOT_WINDOW*/void r72container_init(T72* C);
+/*STD_OUTPUT*/void r53filtered_flush(T53* C);
+/*STD_OUTPUT*/void r53filtered_put_character(T53* C,T3 a1);
+extern T0*oBC13std_output;
+extern int fBC13std_output;
+/*STD_OUTPUT*/T0* r53std_output(void);
+/*STD_OUTPUT*/void r53se_atexit(void);
+/*STD_OUTPUT*/void r53make(T53* C);
+/*STD_OUTPUT*/void r53write_buffer(T53* C);
+/*STD_OUTPUT*/void r53flush(T53* C);
+/*STD_OUTPUT*/void r53put_string(T53* C,T0* a1);
+/*STD_OUTPUT*/void r53put_line(T53* C,T0* a1);
+/*STD_OUTPUT*/void r53dispose(T53* C);
+extern T0*oBC13std_input;
+extern int fBC13std_input;
+/*STD_INPUT_OUTPUT*/T0* r46std_input(void);
+/*STD_INPUT_OUTPUT*/T0* r46std_output(void);
+/*STD_INPUT_OUTPUT*/void r46disconnect(void);
+/*STD_INPUT_OUTPUT*/T6 r46is_connected(void);
+/*STD_INPUT_OUTPUT*/void r46put_string(T0* a1);
+/*STD_INPUT_OUTPUT*/void r46dispose(void);
+/*X_INPUT_EXTENSION*/void r175make(T175* C);
+/*X11*/void r143default_create(void);
+extern T0*oBC143x_input_extension;
+extern int fBC143x_input_extension;
+/*X11*/T0* r143x_input_extension(void);
+/*X11*/T6 r143has_x_input_extension(void);
+/*X11*/T0* r143get_atom_name(T2 a1);
+/*X11*/T0* r143vision(void);
+/*X_INPUT_DEVICE*/void r67handle_event(T67* C,T2 a1,T0* a2);
+/*X_INPUT_DEVICE*/T0* r67vision(void);
+/*X_INPUT_DEVICE*/void r67when_proximity_out(T67* C,T0* a1,T0* a2);
+/*X_INPUT_DEVICE*/void r67connect(T67* C);
+/*X_INPUT_DEVICE*/void r67when_button_released(T67* C,T0* a1,T0* a2);
+/*X_INPUT_DEVICE*/void r67when_event(T67* C,T2 a1,T0* a2,T0* a3);
+/*X_INPUT_DEVICE*/void r67make(T67* C,T8 a1,T2 a2);
+/*X_INPUT_DEVICE*/void r67when_moved(T67* C,T0* a1,T0* a2);
+/*X_INPUT_DEVICE*/T2 r67proximity_axis_data(T2 a1);
+/*X_INPUT_DEVICE*/void r67when_button_pressed(T67* C,T0* a1,T0* a2);
+/*X_INPUT_DEVICE*/T2 r67motion_axis_data(T2 a1);
+/*X_INPUT_DEVICE*/void r67when_proximity_in(T67* C,T0* a1,T0* a2);
+/*STD_ERROR*/void r43put_string(T0* a1);
+/*STD_ERROR*/void r43put_line(T0* a1);
+/*STD_ERROR*/void r43dispose(T43* C);
+/*WACOM_POINTER*/T0* r69type_to_name(T2 a1);
+/*WACOM_POINTER*/T5 r69mean(T0* a1);
+/*WACOM_POINTER*/void r69update_predicted_position(T69* C,T5 a1,T5 a2,T5 a3);
+/*WACOM_POINTER*/T0* r69twin(T69* C);
+/*WACOM_POINTER*/void r69make(T69* C,T0* a1);
+/*WACOM_POINTER*/void r69print_data_in(T69* C,T0* a1,T2 a2,T2 a3,T2 a4,T2 a5,T2 a6,T2 a7,T2 a8,T0* a9);
+/*WACOM_POINTER*/void r69set_message_header(T69* C,T0* a1);
+/*WACOM_POINTER*/void r69button(T69* C,T6 a1,T0* a2);
+/*WACOM_POINTER*/void r69proximity(T69* C,T6 a1,T0* a2);
+/*WACOM_POINTER*/T2 r69device_to_screen_y(T69* C,T2 a1);
+/*WACOM_POINTER*/T2 r69device_to_screen_x(T69* C,T2 a1);
+/*WACOM_POINTER*/void r69move(T69* C,T0* a1);
+/*IVY*/void r70prepare(T70* C,T0* a1);
+/*IVY*/T6 r70is_ready(T70* C,T0* a1);
+/*IVY*/void r70continue(T70* C);
+/*IVY*/void r70channel_down(T70* C,T0* a1);
+/*IVY*/void r70callback_runner(T0* a1,T2 a2,T212 a3);
+/*IVY*/T0* r70channel_up(T70* C,T2 a1,T8 a2,T8 a3,T8 a4);
+/*IVY*/void r70send_message(T70* C,T0* a1);
+/*IVY*/void r70make(T70* C,T0* a1);
+/*IVY*/void r70start(T70* C,T0* a1);
+extern T0*oBC64root_window;
+extern int fBC64root_window;
+/*VISION*/T0* r64root_window(void);
+extern T0*oBC13std_error;
+/*VISION*/void r64crash(T64* C);
+/*VISION*/void r64not_yet_implemented(T64* C);
+/*VISION*/void r64start(T64* C);
+/*VISION*/void r64register(T64* C,T0* a1);
+/*VISION*/void r64graphic_init(T64* C);
+typedef struct _se_agenT25C25l194c40 se_agenT25C25l194c40;
+struct _se_agenT25C25l194c40{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l194c40*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l194c40*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T6 c1;};
+typedef struct _se_agent_eqC69C6_r69proximity se_agent_eqC69C6_r69proximity;
+struct _se_agent_eqC69C6_r69proximity{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;T6 c1;};
+/*agent creation*/T0*agenT25C25l194c40(T0* c0,T6 c1);
+void gc_mark_agenT25C25l194c40(se_agenT25C25l194c40*u);
+/*agent equality*/int eq_agent_eqC69C6_r69proximity(se_agent*u1, se_agent*u2);
+typedef struct _se_agenT25C25l193c39 se_agenT25C25l193c39;
+struct _se_agenT25C25l193c39{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l193c39*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l193c39*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T6 c1;};
+/*agent creation*/T0*agenT25C25l193c39(T0* c0,T6 c1);
+void gc_mark_agenT25C25l193c39(se_agenT25C25l193c39*u);
+typedef struct _se_agenT25C25l192c42 se_agenT25C25l192c42;
+struct _se_agenT25C25l192c42{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l192c42*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l192c42*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T6 c1;};
+typedef struct _se_agent_eqC69C6_r69button se_agent_eqC69C6_r69button;
+struct _se_agent_eqC69C6_r69button{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;T6 c1;};
+/*agent creation*/T0*agenT25C25l192c42(T0* c0,T6 c1);
+void gc_mark_agenT25C25l192c42(se_agenT25C25l192c42*u);
+/*agent equality*/int eq_agent_eqC69C6_r69button(se_agent*u1, se_agent*u2);
+typedef struct _se_agenT25C25l191c41 se_agenT25C25l191c41;
+struct _se_agenT25C25l191c41{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l191c41*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l191c41*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T6 c1;};
+/*agent creation*/T0*agenT25C25l191c41(T0* c0,T6 c1);
+void gc_mark_agenT25C25l191c41(se_agenT25C25l191c41*u);
+typedef struct _se_agenT25C25l190c32 se_agenT25C25l190c32;
+struct _se_agenT25C25l190c32{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l190c32*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l190c32*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;};
+typedef struct _se_agent_eqC69_r69move se_agent_eqC69_r69move;
+struct _se_agent_eqC69_r69move{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;};
+/*agent creation*/T0*agenT25C25l190c32(T0* c0);
+void gc_mark_agenT25C25l190c32(se_agenT25C25l190c32*u);
+/*agent equality*/int eq_agent_eqC69_r69move(se_agent*u1, se_agent*u2);
+typedef struct _se_agenT25C25l173c38 se_agenT25C25l173c38;
+struct _se_agenT25C25l173c38{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l173c38*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l173c38*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T0* c1;};
+typedef struct _se_agent_eqC25C7_r25pad_button_released se_agent_eqC25C7_r25pad_button_released;
+struct _se_agent_eqC25C7_r25pad_button_released{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;T0* c1;};
+/*agent creation*/T0*agenT25C25l173c38(T0* c0,T0* c1);
+void gc_mark_agenT25C25l173c38(se_agenT25C25l173c38*u);
+/*agent equality*/int eq_agent_eqC25C7_r25pad_button_released(se_agent*u1, se_agent*u2);
+typedef struct _se_agenT25C25l172c37 se_agenT25C25l172c37;
+struct _se_agenT25C25l172c37{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l172c37*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l172c37*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T0* c1;};
+typedef struct _se_agent_eqC25C7_r25pad_button_pressed se_agent_eqC25C7_r25pad_button_pressed;
+struct _se_agent_eqC25C7_r25pad_button_pressed{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;T0* c1;};
+/*agent creation*/T0*agenT25C25l172c37(T0* c0,T0* c1);
+void gc_mark_agenT25C25l172c37(se_agenT25C25l172c37*u);
+/*agent equality*/int eq_agent_eqC25C7_r25pad_button_pressed(se_agent*u1, se_agent*u2);
+typedef struct _se_agenT25C25l167c36 se_agenT25C25l167c36;
+struct _se_agenT25C25l167c36{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l167c36*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l167c36*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T0* c1;};
+typedef struct _se_agent_eqC25C7_r25left_slider_out se_agent_eqC25C7_r25left_slider_out;
+struct _se_agent_eqC25C7_r25left_slider_out{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;T0* c1;};
+/*agent creation*/T0*agenT25C25l167c36(T0* c0,T0* c1);
+void gc_mark_agenT25C25l167c36(se_agenT25C25l167c36*u);
+/*agent equality*/int eq_agent_eqC25C7_r25left_slider_out(se_agent*u1, se_agent*u2);
+typedef struct _se_agenT25C25l166c28 se_agenT25C25l166c28;
+struct _se_agenT25C25l166c28{Tid id;
+int creation_mold_id;
+void(*afp)(se_agenT25C25l166c28*,T0*);
+void(*gc_mark_agent_mold)(se_agenT25C25l166c28*);
+int (*eq)(se_agent*,se_agent*);
+T0* c0;T0* c1;};
+typedef struct _se_agent_eqC25C7_r25slider_event se_agent_eqC25C7_r25slider_event;
+struct _se_agent_eqC25C7_r25slider_event{Tid id;
+int creation_mold_id;
+void*afp;
+void*gc_mark_agent_mold;
+void*eq;
+T0* c0;T0* c1;};
+/*agent creation*/T0*agenT25C25l166c28(T0* c0,T0* c1);
+void gc_mark_agenT25C25l166c28(se_agenT25C25l166c28*u);
+/*agent equality*/int eq_agent_eqC25C7_r25slider_event(se_agent*u1, se_agent*u2);
+/*XINPUT_IVY*/T0* r25std_output(void);
+/*XINPUT_IVY*/T0* r25vision(void);
+/*XINPUT_IVY*/T6 r25decode_options(T25* C);
+/*XINPUT_IVY*/void r25list_devices(T25* C);
+/*XINPUT_IVY*/void r25print_help(void);
+/*XINPUT_IVY*/T6 r25init_pad(T25* C,T0* a1);
+/*XINPUT_IVY*/void r25left_slider_out(T25* C,T0* a1,T0* a2);
+/*XINPUT_IVY*/void r25pad_button_pressed(T25* C,T0* a1,T0* a2);
+/*XINPUT_IVY*/void r25pad_button_released(T25* C,T0* a1,T0* a2);
+/*XINPUT_IVY*/T2 r25argument_count(void);
+/*XINPUT_IVY*/void r25make(T25* C);
+/*XINPUT_IVY*/T0* r25subscribe_input(T25* C,T0* a1);
+/*XINPUT_IVY*/T6 r25init_wacom_pointer(T25* C,T0* a1,T0* a2);
+/*XINPUT_IVY*/void r25slider_event(T25* C,T0* a1,T0* a2);
+extern T0*oBC30command_arguments;
+extern int fBC30command_arguments;
+/*XINPUT_IVY*/T0* r25command_arguments(void);
+void agent_launcher(/*agent*/T0*a);
+void agent_launcher_FAST_ARRAY__STRING__(/*agent*/T0*a,T0* a1);
+void agent_launcher_INTEGER_32_INTEGER_32(/*agent*/T0*a,T2 a1,T2 a2);
+void agent_launcher_INTEGER_32_INTEGER_32_INTEGER_32_INTEGER_32(/*agent*/T0*a,T2 a1,T2 a2,T2 a3,T2 a4);
+void agent_launcher_X_INPUT_DEVICE(/*agent*/T0*a,T0* a1);
+union _se_agent{T0 s0;se_agent0 u0;
+se_agenT25C25l166c28 uagenT25C25l166c28;
+se_agenT25C25l167c36 uagenT25C25l167c36;
+se_agenT25C25l172c37 uagenT25C25l172c37;
+se_agenT25C25l173c38 uagenT25C25l173c38;
+se_agenT25C25l190c32 uagenT25C25l190c32;
+se_agenT25C25l191c41 uagenT25C25l191c41;
+se_agenT25C25l192c42 uagenT25C25l192c42;
+se_agenT25C25l193c39 uagenT25C25l193c39;
+se_agenT25C25l194c40 uagenT25C25l194c40;
+};
+/*
+-- ------------------------------------------------------------------------------------------------------------
+-- Copyright notice below. Please read.
+--
+-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P. - University of Nancy 1 - FRANCE
+-- Copyright(C) 2003-2005: INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne - University of Nancy 2 - FRANCE
+--
+-- Authors: Dominique COLNET, Philippe RIBET, Cyril ADRIAN, Vincent CROIZIER, Frederic MERIZEN
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
+-- documentation files (the "Software"), to deal in the Software without restriction, including without
+-- limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+-- the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
+-- conditions:
+--
+-- The above copyright notice and this permission notice shall be included in all copies or substantial
+-- portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+-- LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
+-- EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+-- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+-- OR OTHER DEALINGS IN THE SOFTWARE.
+--
+-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
+-- ------------------------------------------------------------------------------------------------------------
+*/
+#define SE_AGENTS 1
+#define EIF_AGENT se_agent*
+
+se_agent* new_agent(Tid id);
+
+#ifdef SE_GC_LIB
+
+ typedef struct B_agent gc_agent;
+
+ struct B_agent {
+ se_agent object;
+ union {
+ void *flag;
+ gc_agent *next;
+ } header;
+ };
+
+ extern gc_agent *store_agent;
+ extern gc_agent *gc_free_agent;
+ extern int store_left_agent;
+ extern fsoc *store_chunk_agent;
+ extern fsoc H_agent;
+ extern int gc_info_nb_agent;
+
+ void gc_align_mark_agent(fsoc *c, gc_agent* a);
+ void gc_sweep_agent(fsoc *c);
+
+#endif
+extern T0*ms69_1874520032;
+extern T0*ms25_0bc25c15l360;
+extern T0*ms69_22702416;
+extern T0*ms69_22702411;
+extern T0*ms69_190991;
+extern T0*ms143_1472358418;
+extern T0*ms69_15980;
+extern T0*ms25_0bc25;
+extern T0*ms69_188916;
+extern T0*ms25_0bc69;
+extern T0*ms25_0bc69c15l93;
+extern T0*ms69_1501987274;
+extern T0*ms25_1403610646;
+extern T0*ms25_0;
+extern T0*ms69_10739030;
+extern T0*ms69_10739024;
+extern T0*ms69_10739017;
+extern T0*ms25_1959886733;
+extern T0*ms25_0bc25c15;
+extern T0*ms25_3479972;
+extern T0*ms25_21190322;
+extern T0*ms69_1756148648;
+extern T0*ms69_1756148653;
+extern T0*ms69_1619665677;
+extern T0*ms69_104371129;
+extern T0*ms69_104371267;
+extern T0*ms25_314746909;
+extern T0*ms25_1638797568;
+extern T0*ms69_1961093439;
+extern T0*ms69_1699147265;
+extern T0*ms69_23436791;
+extern T0*ms25_4487261bc69;
+extern T0*ms25_694149733;
+extern T0*ms69_4738061;
+extern T0*ms69_2112369621;
+extern T0*ms25_557679246;
+extern T0*ms69_1940108584;
+extern T0*ms69_952626;
+extern T0*ms69_1461;
+extern T0*ms69_1466;
+extern T0*ms69_4725666;
+extern T0*ms69_4725661;
+extern T0*ms69_56246305;
+extern T0*ms69_2676;
+extern T0*ms25_4487261;
+extern T0*ms69_1257860908;
+extern T0*ms69_56246305bc69;
+extern T0*ms25_1403610646bc25;
+extern T0*ms69_2057747851;
+extern T0*ms25_0bc69c16;
+extern T0*ms25_0bc69c15;
+extern T0*ms69_586741066;
+extern T0*ms25_946366;
+extern T0*ms69_475;
+extern T0*ms69_697;
+T0*se_ms(int c,char*e);
+T0*se_string(char*e);
+void se_msi1(void);
+void se_msi2(void);
+void W70callback_runner(void* C,void* a1,T2 a2,T212 a3);
+void manifest_string_mark1(void);
+void once_function_mark(void);
+void gc_start(void);
+typedef struct B110 gc110;
+struct B110{T110 object;union {void*flag;gc110*next;} header;};
+extern gc110*store110;
+extern int store_left110;
+extern fsoc*store_chunk110;
+extern gc110*gc_free110;
+typedef struct B120 gc120;
+struct B120{T120 object;union {void*flag;gc120*next;} header;};
+extern gc120*store120;
+extern int store_left120;
+extern fsoc*store_chunk120;
+extern gc120*gc_free120;
+extern na_env na_env293;
+extern na_env na_env292;
+extern na_env na_env291;
+extern na_env na_env290;
+extern na_env na_env289;
+extern na_env na_env288;
+extern na_env na_env287;
+typedef struct B286 gc286;
+struct B286{T286 object;union {void*flag;gc286*next;} header;};
+extern gc286*store286;
+extern int store_left286;
+extern fsoc*store_chunk286;
+extern gc286*gc_free286;
+extern na_env na_env284;
+extern na_env na_env281;
+typedef struct B277 gc277;
+struct B277{T277 object;union {void*flag;gc277*next;} header;};
+extern gc277*store277;
+extern int store_left277;
+extern fsoc*store_chunk277;
+extern gc277*gc_free277;
+extern na_env na_env276;
+typedef struct B271 gc271;
+struct B271{T271 object;union {void*flag;gc271*next;} header;};
+extern gc271*store271;
+extern int store_left271;
+extern fsoc*store_chunk271;
+extern gc271*gc_free271;
+extern na_env na_env270;
+typedef struct B268 gc268;
+struct B268{T268 object;union {void*flag;gc268*next;} header;};
+extern gc268*store268;
+extern int store_left268;
+extern fsoc*store_chunk268;
+extern gc268*gc_free268;
+extern na_env na_env267;
+typedef struct B266 gc266;
+struct B266{T266 object;union {void*flag;gc266*next;} header;};
+extern gc266*store266;
+extern int store_left266;
+extern fsoc*store_chunk266;
+extern gc266*gc_free266;
+typedef struct B265 gc265;
+struct B265{T265 object;union {void*flag;gc265*next;} header;};
+extern gc265*store265;
+extern int store_left265;
+extern fsoc*store_chunk265;
+extern gc265*gc_free265;
+typedef struct B264 gc264;
+struct B264{T264 object;union {void*flag;gc264*next;} header;};
+extern gc264*store264;
+extern int store_left264;
+extern fsoc*store_chunk264;
+extern gc264*gc_free264;
+extern na_env na_env263;
+extern na_env na_env262;
+extern na_env na_env261;
+extern na_env na_env260;
+extern na_env na_env259;
+typedef struct B258 gc258;
+struct B258{T258 object;union {void*flag;gc258*next;} header;};
+extern gc258*store258;
+extern int store_left258;
+extern fsoc*store_chunk258;
+extern gc258*gc_free258;
+extern na_env na_env257;
+typedef struct B256 gc256;
+struct B256{T256 object;union {void*flag;gc256*next;} header;};
+extern gc256*store256;
+extern int store_left256;
+extern fsoc*store_chunk256;
+extern gc256*gc_free256;
+extern na_env na_env255;
+typedef struct B254 gc254;
+struct B254{T254 object;union {void*flag;gc254*next;} header;};
+extern gc254*store254;
+extern int store_left254;
+extern fsoc*store_chunk254;
+extern gc254*gc_free254;
+typedef struct B253 gc253;
+struct B253{T253 object;union {void*flag;gc253*next;} header;};
+extern gc253*store253;
+extern int store_left253;
+extern fsoc*store_chunk253;
+extern gc253*gc_free253;
+typedef struct B252 gc252;
+struct B252{T252 object;union {void*flag;gc252*next;} header;};
+extern gc252*store252;
+extern int store_left252;
+extern fsoc*store_chunk252;
+extern gc252*gc_free252;
+extern na_env na_env251;
+extern na_env na_env250;
+typedef struct B249 gc249;
+struct B249{T249 object;union {void*flag;gc249*next;} header;};
+extern gc249*store249;
+extern int store_left249;
+extern fsoc*store_chunk249;
+extern gc249*gc_free249;
+extern na_env na_env247;
+typedef struct B246 gc246;
+struct B246{T246 object;union {void*flag;gc246*next;} header;};
+extern gc246*store246;
+extern int store_left246;
+extern fsoc*store_chunk246;
+extern gc246*gc_free246;
+typedef struct B245 gc245;
+struct B245{T245 object;union {void*flag;gc245*next;} header;};
+extern gc245*store245;
+extern int store_left245;
+extern fsoc*store_chunk245;
+extern gc245*gc_free245;
+typedef struct B244 gc244;
+struct B244{T244 object;union {void*flag;gc244*next;} header;};
+extern gc244*store244;
+extern int store_left244;
+extern fsoc*store_chunk244;
+extern gc244*gc_free244;
+typedef struct B243 gc243;
+struct B243{T243 object;union {void*flag;gc243*next;} header;};
+extern gc243*store243;
+extern int store_left243;
+extern fsoc*store_chunk243;
+extern gc243*gc_free243;
+extern na_env na_env239;
+extern na_env na_env238;
+extern na_env na_env237;
+typedef struct B147 gc147;
+struct B147{T147 object;union {void*flag;gc147*next;} header;};
+extern gc147*store147;
+extern int store_left147;
+extern fsoc*store_chunk147;
+extern gc147*gc_free147;
+typedef struct B236 gc236;
+struct B236{T236 object;union {void*flag;gc236*next;} header;};
+extern gc236*store236;
+extern int store_left236;
+extern fsoc*store_chunk236;
+extern gc236*gc_free236;
+typedef struct B235 gc235;
+struct B235{T235 object;union {void*flag;gc235*next;} header;};
+extern gc235*store235;
+extern int store_left235;
+extern fsoc*store_chunk235;
+extern gc235*gc_free235;
+typedef struct B234 gc234;
+struct B234{T234 object;union {void*flag;gc234*next;} header;};
+extern gc234*store234;
+extern int store_left234;
+extern fsoc*store_chunk234;
+extern gc234*gc_free234;
+typedef struct B232 gc232;
+struct B232{T232 object;union {void*flag;gc232*next;} header;};
+extern gc232*store232;
+extern int store_left232;
+extern fsoc*store_chunk232;
+extern gc232*gc_free232;
+typedef struct B230 gc230;
+struct B230{T230 object;union {void*flag;gc230*next;} header;};
+extern gc230*store230;
+extern int store_left230;
+extern fsoc*store_chunk230;
+extern gc230*gc_free230;
+typedef struct B228 gc228;
+struct B228{T228 object;union {void*flag;gc228*next;} header;};
+extern gc228*store228;
+extern int store_left228;
+extern fsoc*store_chunk228;
+extern gc228*gc_free228;
+typedef struct B227 gc227;
+struct B227{T227 object;union {void*flag;gc227*next;} header;};
+extern gc227*store227;
+extern int store_left227;
+extern fsoc*store_chunk227;
+extern gc227*gc_free227;
+typedef struct B226 gc226;
+struct B226{T226 object;union {void*flag;gc226*next;} header;};
+extern gc226*store226;
+extern int store_left226;
+extern fsoc*store_chunk226;
+extern gc226*gc_free226;
+typedef struct B225 gc225;
+struct B225{T225 object;union {void*flag;gc225*next;} header;};
+extern gc225*store225;
+extern int store_left225;
+extern fsoc*store_chunk225;
+extern gc225*gc_free225;
+typedef struct B158 gc158;
+struct B158{T158 object;union {void*flag;gc158*next;} header;};
+extern gc158*store158;
+extern int store_left158;
+extern fsoc*store_chunk158;
+extern gc158*gc_free158;
+typedef struct B54 gc54;
+struct B54{T54 object;union {void*flag;gc54*next;} header;};
+extern gc54*store54;
+extern int store_left54;
+extern fsoc*store_chunk54;
+extern gc54*gc_free54;
+typedef struct B139 gc139;
+struct B139{T139 object;union {void*flag;gc139*next;} header;};
+extern gc139*store139;
+extern int store_left139;
+extern fsoc*store_chunk139;
+extern gc139*gc_free139;
+typedef struct B223 gc223;
+struct B223{T223 object;union {void*flag;gc223*next;} header;};
+extern gc223*store223;
+extern int store_left223;
+extern fsoc*store_chunk223;
+extern gc223*gc_free223;
+typedef struct B142 gc142;
+struct B142{T142 object;union {void*flag;gc142*next;} header;};
+extern gc142*store142;
+extern int store_left142;
+extern fsoc*store_chunk142;
+extern gc142*gc_free142;
+typedef struct B222 gc222;
+struct B222{T222 object;union {void*flag;gc222*next;} header;};
+extern gc222*store222;
+extern int store_left222;
+extern fsoc*store_chunk222;
+extern gc222*gc_free222;
+typedef struct B141 gc141;
+struct B141{T141 object;union {void*flag;gc141*next;} header;};
+extern gc141*store141;
+extern int store_left141;
+extern fsoc*store_chunk141;
+extern gc141*gc_free141;
+typedef struct B221 gc221;
+struct B221{T221 object;union {void*flag;gc221*next;} header;};
+extern gc221*store221;
+extern int store_left221;
+extern fsoc*store_chunk221;
+extern gc221*gc_free221;
+extern na_env na_env220;
+extern na_env na_env219;
+typedef struct B218 gc218;
+struct B218{T218 object;union {void*flag;gc218*next;} header;};
+extern gc218*store218;
+extern int store_left218;
+extern fsoc*store_chunk218;
+extern gc218*gc_free218;
+typedef struct B217 gc217;
+struct B217{T217 object;union {void*flag;gc217*next;} header;};
+extern gc217*store217;
+extern int store_left217;
+extern fsoc*store_chunk217;
+extern gc217*gc_free217;
+typedef struct B216 gc216;
+struct B216{T216 object;union {void*flag;gc216*next;} header;};
+extern gc216*store216;
+extern int store_left216;
+extern fsoc*store_chunk216;
+extern gc216*gc_free216;
+typedef struct B215 gc215;
+struct B215{T215 object;union {void*flag;gc215*next;} header;};
+extern gc215*store215;
+extern int store_left215;
+extern fsoc*store_chunk215;
+extern gc215*gc_free215;
+typedef struct B214 gc214;
+struct B214{T214 object;union {void*flag;gc214*next;} header;};
+extern gc214*store214;
+extern int store_left214;
+extern fsoc*store_chunk214;
+extern gc214*gc_free214;
+typedef struct B213 gc213;
+struct B213{T213 object;union {void*flag;gc213*next;} header;};
+extern gc213*store213;
+extern int store_left213;
+extern fsoc*store_chunk213;
+extern gc213*gc_free213;
+extern na_env na_env212;
+typedef struct B211 gc211;
+struct B211{T211 object;union {void*flag;gc211*next;} header;};
+extern gc211*store211;
+extern int store_left211;
+extern fsoc*store_chunk211;
+extern gc211*gc_free211;
+typedef struct B208 gc208;
+struct B208{T208 object;union {void*flag;gc208*next;} header;};
+extern gc208*store208;
+extern int store_left208;
+extern fsoc*store_chunk208;
+extern gc208*gc_free208;
+typedef struct B146 gc146;
+struct B146{T146 object;union {void*flag;gc146*next;} header;};
+extern gc146*store146;
+extern int store_left146;
+extern fsoc*store_chunk146;
+extern gc146*gc_free146;
+typedef struct B207 gc207;
+struct B207{T207 object;union {void*flag;gc207*next;} header;};
+extern gc207*store207;
+extern int store_left207;
+extern fsoc*store_chunk207;
+extern gc207*gc_free207;
+typedef struct B206 gc206;
+struct B206{T206 object;union {void*flag;gc206*next;} header;};
+extern gc206*store206;
+extern int store_left206;
+extern fsoc*store_chunk206;
+extern gc206*gc_free206;
+typedef struct B148 gc148;
+struct B148{T148 object;union {void*flag;gc148*next;} header;};
+extern gc148*store148;
+extern int store_left148;
+extern fsoc*store_chunk148;
+extern gc148*gc_free148;
+typedef struct B131 gc131;
+struct B131{T131 object;union {void*flag;gc131*next;} header;};
+extern gc131*store131;
+extern int store_left131;
+extern fsoc*store_chunk131;
+extern gc131*gc_free131;
+typedef struct B130 gc130;
+struct B130{T130 object;union {void*flag;gc130*next;} header;};
+extern gc130*store130;
+extern int store_left130;
+extern fsoc*store_chunk130;
+extern gc130*gc_free130;
+typedef struct B128 gc128;
+struct B128{T128 object;union {void*flag;gc128*next;} header;};
+extern gc128*store128;
+extern int store_left128;
+extern fsoc*store_chunk128;
+extern gc128*gc_free128;
+typedef struct B72 gc72;
+struct B72{T72 object;union {void*flag;gc72*next;} header;};
+extern gc72*store72;
+extern int store_left72;
+extern fsoc*store_chunk72;
+extern gc72*gc_free72;
+typedef struct B53 gc53;
+struct B53{T53 object;union {void*flag;gc53*next;} header;};
+extern gc53*store53;
+extern int store_left53;
+extern fsoc*store_chunk53;
+extern gc53*gc_free53;
+typedef struct B46 gc46;
+struct B46{T46 object;union {void*flag;gc46*next;} header;};
+extern gc46*store46;
+extern int store_left46;
+extern fsoc*store_chunk46;
+extern gc46*gc_free46;
+typedef struct B175 gc175;
+struct B175{T175 object;union {void*flag;gc175*next;} header;};
+extern gc175*store175;
+extern int store_left175;
+extern fsoc*store_chunk175;
+extern gc175*gc_free175;
+typedef struct B205 gc205;
+struct B205{T205 object;union {void*flag;gc205*next;} header;};
+extern gc205*store205;
+extern int store_left205;
+extern fsoc*store_chunk205;
+extern gc205*gc_free205;
+typedef struct B204 gc204;
+struct B204{T204 object;union {void*flag;gc204*next;} header;};
+extern gc204*store204;
+extern int store_left204;
+extern fsoc*store_chunk204;
+extern gc204*gc_free204;
+
+#define gc_mark202(x) (((se_agent0*)(x))->gc_mark_agent_mold((se_agent*)(x)))
+
+typedef struct B67 gc67;
+struct B67{T67 object;union {void*flag;gc67*next;} header;};
+extern gc67*store67;
+extern int store_left67;
+extern fsoc*store_chunk67;
+extern gc67*gc_free67;
+typedef struct B43 gc43;
+struct B43{T43 object;union {void*flag;gc43*next;} header;};
+extern gc43*store43;
+extern int store_left43;
+extern fsoc*store_chunk43;
+extern gc43*gc_free43;
+typedef struct B69 gc69;
+struct B69{T69 object;union {void*flag;gc69*next;} header;};
+extern gc69*store69;
+extern int store_left69;
+extern fsoc*store_chunk69;
+extern gc69*gc_free69;
+extern na_env na_env9;
+typedef struct B7 gc7;
+struct B7{T7 object;union {void*flag;gc7*next;} header;};
+extern gc7*store7;
+extern int store_left7;
+extern fsoc*store_chunk7;
+extern gc7*gc_free7;
+typedef struct B70 gc70;
+struct B70{T70 object;union {void*flag;gc70*next;} header;};
+extern gc70*store70;
+extern int store_left70;
+extern fsoc*store_chunk70;
+extern gc70*gc_free70;
+typedef struct B64 gc64;
+struct B64{T64 object;union {void*flag;gc64*next;} header;};
+extern gc64*store64;
+extern int store_left64;
+extern fsoc*store_chunk64;
+extern gc64*gc_free64;
+typedef struct B25 gc25;
+struct B25{T25 object;union {void*flag;gc25*next;} header;};
+extern gc25*store25;
+extern int store_left25;
+extern fsoc*store_chunk25;
+extern gc25*gc_free25;
+void gc_sweep110(fsoc*c);
+void gc_mark110(T110*o);
+void gc_align_mark110(fsoc*c,gc110*p);
+extern fsoc H110;
+T110*new110(void);
+void gc_sweep120(fsoc*c);
+void gc_mark120(T120*o);
+void gc_align_mark120(fsoc*c,gc120*p);
+extern fsoc H120;
+T120*new120(void);
+void gc_mark293(T293 o);
+T293 new293(unsigned int size);
+void gc_mark292(T292 o);
+T292 new292(unsigned int size);
+void gc_mark291(T291 o);
+T291 new291(unsigned int size);
+void gc_mark290(T290 o);
+T290 new290(unsigned int size);
+void gc_mark289(T289 o);
+T289 new289(unsigned int size);
+void gc_mark288(T288 o);
+T288 new288(unsigned int size);
+void gc_mark287(T287 o);
+T287 new287(unsigned int size);
+void gc_sweep286(fsoc*c);
+void gc_update_weak_ref_item_polymorph(T0** item);
+void gc_mark286(T286*o);
+void gc_align_mark286(fsoc*c,gc286*p);
+extern fsoc H286;
+T286*new286(void);
+void gc_mark284(T284 o);
+T284 new284(unsigned int size);
+void gc_mark281(T281 o);
+T281 new281(unsigned int size);
+void gc_sweep277(fsoc*c);
+void gc_mark277(T277*o);
+void gc_align_mark277(fsoc*c,gc277*p);
+extern fsoc H277;
+T277*new277(void);
+void gc_mark276(T276 o);
+T276 new276(unsigned int size);
+void gc_sweep271(fsoc*c);
+void gc_mark271(T271*o);
+void gc_align_mark271(fsoc*c,gc271*p);
+extern fsoc H271;
+T271*new271(void);
+void gc_mark270(T270 o);
+T270 new270(unsigned int size);
+void gc_sweep268(fsoc*c);
+void gc_update_weak_ref_item268(T268* wr);
+void gc_mark268(T268*o);
+void gc_align_mark268(fsoc*c,gc268*p);
+extern fsoc H268;
+T268*new268(void);
+void gc_mark267(T267 o);
+T267 new267(unsigned int size);
+void gc_sweep266(fsoc*c);
+void gc_mark266(T266*o);
+void gc_align_mark266(fsoc*c,gc266*p);
+extern fsoc H266;
+T266*new266(void);
+void gc_sweep265(fsoc*c);
+void gc_update_weak_ref_item265(T265* wr);
+void gc_mark265(T265*o);
+void gc_align_mark265(fsoc*c,gc265*p);
+extern fsoc H265;
+T265*new265(void);
+void gc_sweep264(fsoc*c);
+void gc_mark264(T264*o);
+void gc_align_mark264(fsoc*c,gc264*p);
+extern fsoc H264;
+T264*new264(void);
+void gc_mark263(T263 o);
+T263 new263(unsigned int size);
+void gc_mark262(T262 o);
+T262 new262(unsigned int size);
+void gc_mark261(T261 o);
+T261 new261(unsigned int size);
+void gc_mark260(T260 o);
+T260 new260(unsigned int size);
+void gc_mark259(T259 o);
+T259 new259(unsigned int size);
+void gc_sweep258(fsoc*c);
+void gc_update_weak_ref_item258(T258* wr);
+void gc_mark258(T258*o);
+void gc_align_mark258(fsoc*c,gc258*p);
+extern fsoc H258;
+T258*new258(void);
+void gc_mark257(T257 o);
+T257 new257(unsigned int size);
+void gc_sweep256(fsoc*c);
+void gc_mark256(T256*o);
+void gc_align_mark256(fsoc*c,gc256*p);
+extern fsoc H256;
+T256*new256(void);
+void gc_mark255(T255 o);
+T255 new255(unsigned int size);
+void gc_sweep254(fsoc*c);
+void gc_mark254(T254*o);
+void gc_align_mark254(fsoc*c,gc254*p);
+extern fsoc H254;
+T254*new254(void);
+void gc_sweep253(fsoc*c);
+void gc_update_weak_ref_item253(T253* wr);
+void gc_mark253(T253*o);
+void gc_align_mark253(fsoc*c,gc253*p);
+extern fsoc H253;
+T253*new253(void);
+void gc_sweep252(fsoc*c);
+void gc_mark252(T252*o);
+void gc_align_mark252(fsoc*c,gc252*p);
+extern fsoc H252;
+T252*new252(void);
+void gc_mark251(T251 o);
+T251 new251(unsigned int size);
+void gc_mark250(T250 o);
+T250 new250(unsigned int size);
+void gc_sweep249(fsoc*c);
+void gc_mark249(T249*o);
+void gc_align_mark249(fsoc*c,gc249*p);
+extern fsoc H249;
+T249*new249(void);
+void gc_mark247(T247 o);
+T247 new247(unsigned int size);
+void gc_sweep246(fsoc*c);
+void gc_mark246(T246*o);
+void gc_align_mark246(fsoc*c,gc246*p);
+extern fsoc H246;
+T246*new246(void);
+void gc_sweep245(fsoc*c);
+void gc_update_weak_ref_item245(T245* wr);
+void gc_mark245(T245*o);
+void gc_align_mark245(fsoc*c,gc245*p);
+extern fsoc H245;
+T245*new245(void);
+void gc_sweep244(fsoc*c);
+void gc_mark244(T244*o);
+void gc_align_mark244(fsoc*c,gc244*p);
+extern fsoc H244;
+T244*new244(void);
+void gc_sweep243(fsoc*c);
+void gc_mark243(T243*o);
+void gc_align_mark243(fsoc*c,gc243*p);
+extern fsoc H243;
+T243*new243(void);
+void gc_mark239(T239 o);
+T239 new239(unsigned int size);
+void gc_mark238(T238 o);
+T238 new238(unsigned int size);
+void gc_mark237(T237 o);
+T237 new237(unsigned int size);
+void gc_sweep147(fsoc*c);
+void gc_mark147(T147*o);
+void gc_align_mark147(fsoc*c,gc147*p);
+extern fsoc H147;
+T147*new147(void);
+void gc_sweep236(fsoc*c);
+void gc_mark236(T236*o);
+void gc_align_mark236(fsoc*c,gc236*p);
+extern fsoc H236;
+T236*new236(void);
+void gc_sweep235(fsoc*c);
+void gc_mark235(T235*o);
+void gc_align_mark235(fsoc*c,gc235*p);
+extern fsoc H235;
+T235*new235(void);
+void gc_sweep234(fsoc*c);
+void gc_mark234(T234*o);
+void gc_align_mark234(fsoc*c,gc234*p);
+extern fsoc H234;
+T234*new234(void);
+void gc_sweep232(fsoc*c);
+void gc_mark232(T232*o);
+void gc_align_mark232(fsoc*c,gc232*p);
+extern fsoc H232;
+T232*new232(void);
+void gc_sweep230(fsoc*c);
+void gc_mark230(T230*o);
+void gc_align_mark230(fsoc*c,gc230*p);
+extern fsoc H230;
+T230*new230(void);
+void gc_sweep228(fsoc*c);
+void gc_mark228(T228*o);
+void gc_align_mark228(fsoc*c,gc228*p);
+extern fsoc H228;
+T228*new228(void);
+void gc_sweep227(fsoc*c);
+void gc_mark227(T227*o);
+void gc_align_mark227(fsoc*c,gc227*p);
+extern fsoc H227;
+T227*new227(void);
+void gc_sweep226(fsoc*c);
+void gc_mark226(T226*o);
+void gc_align_mark226(fsoc*c,gc226*p);
+extern fsoc H226;
+T226*new226(void);
+void gc_sweep225(fsoc*c);
+void gc_mark225(T225*o);
+void gc_align_mark225(fsoc*c,gc225*p);
+extern fsoc H225;
+T225*new225(void);
+void gc_sweep158(fsoc*c);
+void gc_mark158(T158*o);
+void gc_align_mark158(fsoc*c,gc158*p);
+extern fsoc H158;
+T158*new158(void);
+void gc_sweep54(fsoc*c);
+void gc_mark54(T54*o);
+void gc_align_mark54(fsoc*c,gc54*p);
+extern fsoc H54;
+T54*new54(void);
+void gc_sweep139(fsoc*c);
+void gc_mark139(T139*o);
+void gc_align_mark139(fsoc*c,gc139*p);
+extern fsoc H139;
+T139*new139(void);
+void gc_sweep223(fsoc*c);
+void gc_mark223(T223*o);
+void gc_align_mark223(fsoc*c,gc223*p);
+extern fsoc H223;
+T223*new223(void);
+void gc_sweep142(fsoc*c);
+void gc_mark142(T142*o);
+void gc_align_mark142(fsoc*c,gc142*p);
+extern fsoc H142;
+T142*new142(void);
+void gc_sweep222(fsoc*c);
+void gc_mark222(T222*o);
+void gc_align_mark222(fsoc*c,gc222*p);
+extern fsoc H222;
+T222*new222(void);
+void gc_sweep141(fsoc*c);
+void gc_mark141(T141*o);
+void gc_align_mark141(fsoc*c,gc141*p);
+extern fsoc H141;
+T141*new141(void);
+void gc_sweep221(fsoc*c);
+void gc_mark221(T221*o);
+void gc_align_mark221(fsoc*c,gc221*p);
+extern fsoc H221;
+T221*new221(void);
+void gc_mark220(T220 o);
+T220 new220(unsigned int size);
+void gc_mark219(T219 o);
+T219 new219(unsigned int size);
+void gc_sweep218(fsoc*c);
+void gc_mark218(T218*o);
+void gc_align_mark218(fsoc*c,gc218*p);
+extern fsoc H218;
+T218*new218(void);
+void gc_sweep217(fsoc*c);
+void gc_mark217(T217*o);
+void gc_align_mark217(fsoc*c,gc217*p);
+extern fsoc H217;
+T217*new217(void);
+void gc_sweep216(fsoc*c);
+void gc_mark216(T216*o);
+void gc_align_mark216(fsoc*c,gc216*p);
+extern fsoc H216;
+T216*new216(void);
+void gc_sweep215(fsoc*c);
+void gc_mark215(T215*o);
+void gc_align_mark215(fsoc*c,gc215*p);
+extern fsoc H215;
+T215*new215(void);
+void gc_sweep214(fsoc*c);
+void gc_mark214(T214*o);
+void gc_align_mark214(fsoc*c,gc214*p);
+extern fsoc H214;
+T214*new214(void);
+void gc_sweep213(fsoc*c);
+void gc_mark213(T213*o);
+void gc_align_mark213(fsoc*c,gc213*p);
+extern fsoc H213;
+T213*new213(void);
+void gc_mark212(T212 o);
+T212 new212(unsigned int size);
+void gc_sweep211(fsoc*c);
+void gc_mark211(T211*o);
+void gc_align_mark211(fsoc*c,gc211*p);
+extern fsoc H211;
+T211*new211(void);
+void gc_sweep208(fsoc*c);
+void gc_mark208(T208*o);
+void gc_align_mark208(fsoc*c,gc208*p);
+extern fsoc H208;
+T208*new208(void);
+void gc_sweep146(fsoc*c);
+void gc_mark146(T146*o);
+void gc_align_mark146(fsoc*c,gc146*p);
+extern fsoc H146;
+T146*new146(void);
+void gc_sweep207(fsoc*c);
+void gc_mark207(T207*o);
+void gc_align_mark207(fsoc*c,gc207*p);
+extern fsoc H207;
+T207*new207(void);
+void gc_sweep206(fsoc*c);
+void gc_mark206(T206*o);
+void gc_align_mark206(fsoc*c,gc206*p);
+extern fsoc H206;
+T206*new206(void);
+void gc_sweep148(fsoc*c);
+void gc_mark148(T148*o);
+void gc_align_mark148(fsoc*c,gc148*p);
+extern fsoc H148;
+T148*new148(void);
+void gc_sweep131(fsoc*c);
+void gc_mark131(T131*o);
+void gc_align_mark131(fsoc*c,gc131*p);
+extern fsoc H131;
+T131*new131(void);
+void gc_sweep130(fsoc*c);
+void gc_mark130(T130*o);
+void gc_align_mark130(fsoc*c,gc130*p);
+extern fsoc H130;
+T130*new130(void);
+void gc_sweep128(fsoc*c);
+void gc_mark128(T128*o);
+void gc_align_mark128(fsoc*c,gc128*p);
+extern fsoc H128;
+T128*new128(void);
+void gc_sweep72(fsoc*c);
+void gc_mark72(T72*o);
+void gc_align_mark72(fsoc*c,gc72*p);
+extern fsoc H72;
+T72*new72(void);
+void gc_sweep53(fsoc*c);
+void gc_mark53(T53*o);
+void gc_align_mark53(fsoc*c,gc53*p);
+extern fsoc H53;
+T53*new53(void);
+void gc_sweep46(fsoc*c);
+void gc_mark46(T46*o);
+void gc_align_mark46(fsoc*c,gc46*p);
+extern fsoc H46;
+T46*new46(void);
+void gc_sweep175(fsoc*c);
+void gc_mark175(T175*o);
+void gc_align_mark175(fsoc*c,gc175*p);
+extern fsoc H175;
+T175*new175(void);
+void gc_sweep205(fsoc*c);
+void gc_mark205(T205*o);
+void gc_align_mark205(fsoc*c,gc205*p);
+extern fsoc H205;
+T205*new205(void);
+void gc_sweep204(fsoc*c);
+void gc_mark204(T204*o);
+void gc_align_mark204(fsoc*c,gc204*p);
+extern fsoc H204;
+T204*new204(void);
+void gc_sweep67(fsoc*c);
+void gc_mark67(T67*o);
+void gc_align_mark67(fsoc*c,gc67*p);
+extern fsoc H67;
+T67*new67(void);
+void gc_sweep43(fsoc*c);
+void gc_mark43(T43*o);
+void gc_align_mark43(fsoc*c,gc43*p);
+extern fsoc H43;
+T43*new43(void);
+void gc_sweep69(fsoc*c);
+void gc_mark69(T69*o);
+void gc_align_mark69(fsoc*c,gc69*p);
+extern fsoc H69;
+T69*new69(void);
+void gc_mark9(T9 o);
+T9 new9(unsigned int size);
+void gc_sweep7(fsoc*c);
+void gc_mark7(T7*o);
+void gc_align_mark7(fsoc*c,gc7*p);
+extern fsoc H7;
+T7*new7(void);
+void gc_sweep70(fsoc*c);
+void gc_mark70(T70*o);
+void gc_align_mark70(fsoc*c,gc70*p);
+extern fsoc H70;
+T70*new70(void);
+void gc_sweep64(fsoc*c);
+void gc_mark64(T64*o);
+void gc_align_mark64(fsoc*c,gc64*p);
+extern fsoc H64;
+T64*new64(void);
+void gc_sweep25(fsoc*c);
+void gc_mark25(T25*o);
+void gc_align_mark25(fsoc*c,gc25*p);
+extern fsoc H25;
+T25*new25(void);
+void Xgc_mark242(T0*o);
+void Xgc_mark49(T0*o);
+void Xgc_mark71(T0*o);
+extern T25*eiffel_root_object;
+extern int se_argc;
+extern char**se_argv;
+#define SE_MAXID 294
+extern T7*g[];
+extern T7*t[];
+extern int se_strucT[];
+void se_atexit(void);
+void initialize_eiffel_runtime(int argc,char*argv[]);
+int main(int argc,char*argv[]);
+void X71prepare(T0*C,T0* a1);
+T2 X71priority(T0*C);
+T6 X71done(T0*C);
+T6 X71is_ready(T0*C,T0* a1);
+void X71continue(T0*C);
+void X109expect(T0*C,T0* a1);
+T6 X109occurred(T0*C,T0* a1);
+T2 X49descriptor(T0*C);
+T2 X49filtered_descriptor(T0*C);
+
+#ifdef __cplusplus
+}
+#endif